UNPKG

@uniswap/v4-core

Version:

🦄 Core smart contracts of Uniswap v4

1 lines • 751 kB
{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"MIN_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"REMOVE_LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SWAP_PARAMS","inputs":[],"outputs":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}],"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":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"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":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"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":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"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":"testIsValidHookAddress_invalid_zeroAddressWithDynamicFee","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_afterAddLiquidity_invalidReturn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_afterDonate_invalidReturn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_afterInitialize_invalidReturn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_afterRemoveLiquidity_invalidReturn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_afterSwap_invalidReturn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_beforeAddLiquidity_invalidReturn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_beforeAfterAddLiquidity_beforeAfterRemoveLiquidity_succeedsWithHook","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_beforeAfterAddLiquidity_calledWithPositiveLiquidityDelta","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_beforeAfterRemoveLiquidity_calledWithPositiveLiquidityDelta","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_beforeAfterRemoveLiquidity_calledWithZeroLiquidityDelta","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_beforeDonate_invalidReturn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_beforeInitialize_invalidReturn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_beforeRemoveLiquidity_invalidReturn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_beforeSwap_invalidReturn","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_callHook_revertsWithBubbleUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_callHook_revertsWithInternalErrorFailedHookCall","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_donate_succeedsWithHook","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_isValidHookAddress_invalid_returnsDeltaWithoutHookFlag","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookAddress_failsAllHooks","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"},{"name":"mask","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_validateHookAddress_failsNoHooks","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"},{"name":"mask","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_validateHookPermissions_afterAddLiquidity","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_afterDonate","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_afterInitialize","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_afterRemoveLiquidity","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_afterSwap","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_allHooks","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_beforeAddLiquidity","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_beforeAfterRemoveLiquidity","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_beforeAndAfterAddLiquidity","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_beforeAndAfterDonate","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_beforeAndAfterInitialize","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_beforeAndAfterSwap","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_beforeDonate","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_beforeInitialize","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_beforeInitializeAfterAddLiquidity","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_beforeRemoveLiquidity","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_beforeSwap","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_validateHookPermissions_noHooks","inputs":[{"name":"addr","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_initialize_succeedsWithHook","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_isValidHookAddress_invalid_noFlagsNoDynamicFee","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_isValidHookAddress_valid_anyFlags","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_isValidHookAddress_valid_noFlagsWithDynamicFee","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_isValidHookAddress_zeroAddress_fixedFee","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_swap_succeedsWithHook","inputs":[],"outputs":[],"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":"0x60806040523461016457600160ff19600c541617600c55600160ff19601f541617601f555f606061002e610168565b607719815260786020820152670de0b6b3a7640000604082015201526378ffff8865ffffffffffff196020541617602055670de0b6b3a76400006021555f6022555f606061007a610168565b607719815260786020820152670de0b6b3a763ffff19604082015201526378ffff8865ffffffffffff196023541617602355670de0b6b3a763ffff196024555f6025556040516060810181811060018060401b038211176101505760409081526001808352606319602084018190526bb504f333f9de6484597d89b39383018490526026805460ff1916909217909155602755602880546001600160a01b03199081169093179055604280548316600e17905560438054909216614000600160a01b03179091555162022fd99081620001888239f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b60405190608082016001600160401b038111838210176101505760405256fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c9081623a45cd1461787e57508063046d0f19146176545780630a9254e414615ee45780631151811d14615e0e578063147f845414615b9d578063183eea9a146157755780631ed7831c146156cc57806321d76b1e1461551657806324ece83e1461504e57806328a7c2f414614ffb5780632ade388014614dcf57806339cd201314614d6e5780633e5e3c2314614cc55780633f7286f414614c1c57806342a725b814614b8a578063465282a614614ab45780634e3b12a81461498657806353c4f75e14614858578063542524dd146148095780635b744e97146144f2578063613f798b146143fe57806365b6ae64146141cc57806366ae1f4414613fbb57806366d9a9a014613e605780636c6b7dca14610d5257806377c21fbf14613d6c5780637c2e01c814613ae45780637de637e5146136a9578063849fc1a7146134b057806385226c8114613408578063890dd434146131f55780638ae02a4214612e3c57806390dc7f3c14612e04578063916a17c614612d2f578063933a761b14612c1d57806393ad73ed14612bb85780639b1cd85614612667578063a7c599b514612591578063a80f8669146124b0578063a8f8d68b14612366578063acb7a9f014611fd3578063ae51563814611eb2578063aecc54f414611c1d578063afbc51c214611b8a578063b0464fdc14611ab5578063b1a73b8a14611a4d578063b5508aa9146119a5578063ba414fa614611962578063c7b8e15d14611922578063cc93ff5e146112a6578063ccf87872146111a3578063ceb16ecb14610d57578063cf0fe21714610d52578063dc512e0114610887578063e09b35d914610a8b578063e1bca0fc14610979578063e20c9f71146108c0578063e49a919414610887578063f432d22e1461073d578063f781664d14610600578063fa7626d4146105bf578063fa818728146104675763fc47d19a0361000f57346104645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457610461600160c073ffffffffffffffffffffffffffffffffffffffff61032b617bec565b60435416161761039d604051610340816181bc565b8581528560208201528560408201528560608201528560808201528560a08201528360c08201528360e08201528561010082015285610120820152856101408201528561016082015285610180820152856101a08201528261898e565b6103ac61200082161515618be9565b6103bb61100082161515618be9565b6103ca61080082161515618be9565b6103d961040082161515618be9565b6103e861020082161515618be9565b6103f761010082161515618be9565b610405608082161515618b6d565b610413604082161515618b6d565b610421602082161515618be9565b61042f601082161515618be9565b61043d600882161515618be9565b61044b600482161515618be9565b610459600282161515618be9565b161515618be9565b80f35b80fd5b50346104645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610464576104616001603073ffffffffffffffffffffffffffffffffffffffff6104bb617bec565b60435416161761052d6040516104d0816181bc565b8581528560208201528560408201528560608201528560808201528560a08201528560c08201528560e08201528361010082015283610120820152856101408201528561016082015285610180820152856101a08201528261898e565b61053c61200082161515618be9565b61054b61100082161515618be9565b61055a61080082161515618be9565b61056961040082161515618be9565b61057861020082161515618be9565b61058761010082161515618be9565b610595608082161515618be9565b6105a3604082161515618be9565b6105b1602082161515618b6d565b61042f601082161515618b6d565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457602060ff601f54166040519015158152f35b50346104645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457610461600161020073ffffffffffffffffffffffffffffffffffffffff610655617bec565b6043541616176106c760405161066a816181bc565b8581528560208201528560408201528560608201528360808201528560a08201528560c08201528560e08201528561010082015285610120820152856101408201528561016082015285610180820152856101a08201528261898e565b6106d661200082161515618be9565b6106e561100082161515618be9565b6106f461080082161515618be9565b61070361040082161515618be9565b61071261020082161515618b6d565b61072161010082161515618be9565b61072f608082161515618be9565b610413604082161515618be9565b50346104645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610464576104616001602073ffffffffffffffffffffffffffffffffffffffff610791617bec565b6043541616176108036040516107a6816181bc565b8581528560208201528560408201528560608201528560808201528560a08201528560c08201528560e08201528361010082015285610120820152856101408201528561016082015285610180820152856101a08201528261898e565b61081261200082161515618be9565b61082161100082161515618be9565b61083061080082161515618be9565b61083f61040082161515618be9565b61084e61020082161515618be9565b61085d61010082161515618be9565b61086b608082161515618be9565b610879604082161515618be9565b610421602082161515618b6d565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610464576104616001618b6d565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104645760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b81811061094d576109498561093d818703826181f5565b60405191829182617c0f565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610926565b50346104645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457610461600161100073ffffffffffffffffffffffffffffffffffffffff6109ce617bec565b604354161617610a406040516109e3816181bc565b8581528360208201528560408201528560608201528560808201528560a08201528560c08201528560e08201528561010082015285610120820152856101408201528561016082015285610180820152856101a08201528261898e565b610a4f61200082161515618be9565b610a5e61100082161515618b6d565b610a6d61080082161515618be9565b610a7c61040082161515618be9565b61071261020082161515618be9565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104645773ffffffffffffffffffffffffffffffffffffffff60305416610180826020610be060405194610aea85876181f5565b61014d86527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08501958636858301376040519485809481937f234266d7000000000000000000000000000000000000000000000000000000008352610bbf6004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b606460a484015260c860c484015261010060e4840152610104830190617c5e565b03925af18015610cef57610d1f575b5073ffffffffffffffffffffffffffffffffffffffff604454169183604051937faf57c1840000000000000000000000000000000000000000000000000000000085528185600481845afa948515610d1457600495610c6f918491610cfa575b5060405190610c5e87836181f5565b61014d825285366020840137618c5b565b604051948580927f70b28eda0000000000000000000000000000000000000000000000000000000082525afa908115610cef57610461938592610ccb575b50610cbb60405193846181f5565b61014d8352366020840137618c5b565b610ce89192503d8087833e610ce081836181f5565b810190618397565b905f610cad565b6040513d86823e3d90fd5b610d0e91503d8086833e610ce081836181f5565b5f610c4f565b6040513d84823e3d90fd5b6020813d602011610d4a575b81610d38602093836181f5565b81010312610d465751610bef565b5f80fd5b3d9150610d2b565b617db6565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104645780602073ffffffffffffffffffffffffffffffffffffffff602b541660c4604051809481937f6276cbbe000000000000000000000000000000000000000000000000000000008352610e486004840173ffffffffffffffffffffffffffffffffffffffff603c54168152603d5473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff603e5416910152565b6c0100000000000000000000000060a48401525af18015610d1457611176575b508073ffffffffffffffffffffffffffffffffffffffff602b5416602060a0604051610e9381618168565b73ffffffffffffffffffffffffffffffffffffffff603c54168152603d5473ffffffffffffffffffffffffffffffffffffffff81168483015262ffffff81841c16604083015260b81c60020b606082015273ffffffffffffffffffffffffffffffffffffffff603e54166080820152206040518281019182526006604082015260408152610f226060826181f5565b5190206024604051809481937f1e2eaeaf00000000000000000000000000000000000000000000000000000000835260048301525afa908115610d14578291611141575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561113e5773ffffffffffffffffffffffffffffffffffffffff604051917f98296c540000000000000000000000000000000000000000000000000000000083521660048201526c0100000000000000000000000060248201528181604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015610d1457611129575b505073ffffffffffffffffffffffffffffffffffffffff60445416604051907f50cd07eb000000000000000000000000000000000000000000000000000000008252828083600481855afa91821561111c576004938293611100575b5061107f60405161106c60a0826181f5565b607b815260809485366020840137618c5b565b604051938480927f0a2d58270000000000000000000000000000000000000000000000000000000082525afa80156110f5576104619284916110db575b50604051916110cc60a0846181f5565b607b8352366020840137618c5b565b6110ef91503d8086833e610ce081836181f5565b5f6110bc565b6040513d85823e3d90fd5b6111159193503d8084833e610ce081836181f5565b915f61105a565b50604051903d90823e3d90fd5b81611133916181f5565b61046457805f610ffe565b50fd5b9150506020813d60201161116e575b8161115d602093836181f5565b81010312610d46578190515f610f66565b3d9150611150565b6111979060203d60201161119c575b61118f81836181f5565b8101906182b1565b610e68565b503d611185565b50346104645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457610461600161040073ffffffffffffffffffffffffffffffffffffffff6111f8617bec565b60435416161761126a60405161120d816181bc565b8581528560208201528560408201528360608201528560808201528560a08201528560c08201528560e08201528561010082015285610120820152856101408201528561016082015285610180820152856101a08201528261898e565b61127961200082161515618be9565b61128861100082161515618be9565b61129761080082161515618be9565b610a7c61040082161515618b6d565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610464578073ffffffffffffffffffffffffffffffffffffffff60365416803b1561113e578180916044604051809481937f40c10f19000000000000000000000000000000000000000000000000000000008352306004840152670de0b6b3a764000060248401525af18015610d145761190d575b50602073ffffffffffffffffffffffffffffffffffffffff60365416604473ffffffffffffffffffffffffffffffffffffffff602c541660405194859384927f095ea7b30000000000000000000000000000000000000000000000000000000084526004840152670de0b6b3a764000060248401525af18015610d14576118e0575b5073ffffffffffffffffffffffffffffffffffffffff602c54166040516113ee816181d9565b828152603c6020820152670de0b6b3a76400006040820152826060820152611486602060a0936040519061142286836181f5565b606f82527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0860194853685850137876040518096819582947f5a6bcfda00000000000000000000000000000000000000000000000000000000845260048401618412565b03925af18015610cef576118b1575b5073ffffffffffffffffffffffffffffffffffffffff6044541683604051917fdb6d76a20000000000000000000000000000000000000000000000000000000083528183600481845afa928315610d1457600493611513918491611897575b506040519061150388836181f5565b606f825286366020840137618c5b565b604051928380927fb85164660000000000000000000000000000000000000000000000000000000082525afa8015610cef5761156f91859161187d575b506040519061155f85836181f5565b606f825283366020840137618c5b565b73ffffffffffffffffffffffffffffffffffffffff602c54169060405190611596826181d9565b848252603c6020830152846040830152846060830152611627602061010094604051906115c387836181f5565b60de82527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0870195863685850137896040518096819582947f5a6bcfda00000000000000000000000000000000000000000000000000000000845260048401618412565b03925af1801561187257611843575b5073ffffffffffffffffffffffffffffffffffffffff60445416936040517fdb6d76a20000000000000000000000000000000000000000000000000000000081528681600481895afa801561181e576116af918891611829575b506040519061169f84836181f5565b606f825284366020840137618c5b565b604051917fb85164660000000000000000000000000000000000000000000000000000000083528683600481895afa90811561181e5761170d938892611802575b506116fe60405193846181f5565b606f8352366020840137618c5b565b83604051937f4d081c7e0000000000000000000000000000000000000000000000000000000085528185600481845afa948515610d14576004956117719184916117e8575b506040519061176187836181f5565b60de825285366020840137618c5b565b604051948580927f7e472fb20000000000000000000000000000000000000000000000000000000082525afa908115610cef576104619385926117cc575b506117bd60405193846181f5565b60de8352366020840137618c5b565b6117e19192503d8087833e610ce081836181f5565b905f6117af565b6117fc91503d8086833e610ce081836181f5565b5f611752565b6118179192503d808a833e610ce081836181f5565b905f6116f0565b6040513d89823e3d90fd5b61183d91503d808a833e610ce081836181f5565b5f611690565b6020813d60201161186a575b8161185c602093836181f5565b81010312610d465751611636565b3d915061184f565b6040513d88823e3d90fd5b61189191503d8087833e610ce081836181f5565b5f611550565b6118ab91503d8086833e610ce081836181f5565b5f6114f4565b6020813d6020116118d8575b816118ca602093836181f5565b81010312610d465751611495565b3d91506118bd565b6119019060203d602011611906575b6118f981836181f5565b8101906183fa565b6113c8565b503d6118ef565b81611917916181f5565b61046457805f611346565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457506040516401000276a48152602090f35b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457602061199b618889565b6040519015158152f35b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610464576019546119e0816184ca565b916119ee60405193846181f5565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b838310611a3057604051806109498782618047565b600160208192611a3f856184e2565b815201920192019190611a1b565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457606060ff6026541660275473ffffffffffffffffffffffffffffffffffffffff6028541690604051921515835260208301526040820152f35b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457601c54611af0816184ca565b91611afe60405193846181f5565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b838310611b40576040518061094987826180c4565b60026020600192604051611b53816181a0565b73ffffffffffffffffffffffffffffffffffffffff8654168152611b788587016185e5565b83820152815201920192019190611b2b565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610464576104616001611bc781618b6d565b611bd081618b6d565b611bd981618b6d565b611be281618b6d565b611beb81618b6d565b611bf481618b6d565b611bfd81618b6d565b611c0681618b6d565b611c0f81618b6d565b611c1881618b6d565b618b6d565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610464578073ffffffffffffffffffffffffffffffffffffffff60445416803b1561113e578180916044604051809481937f5941b5bb0000000000000000000000000000000000000000000000000000000083527fdc98354e0000000000000000000000000000000000000000000000000000000060048401527fdeadbeef0000000000000000000000000000000000000000000000000000000060248401525af18015610d1457611e9d575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561046457806040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f1e048e1d000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610d1457611e88575b50602073ffffffffffffffffffffffffffffffffffffffff602b541660c4604051809481937f6276cbbe000000000000000000000000000000000000000000000000000000008352611e496004840173ffffffffffffffffffffffffffffffffffffffff603c54168152603d5473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff603e5416910152565b6c0100000000000000000000000060a48401525af18015610d1457611e6c575080f35b611e849060203d60201161119c5761118f81836181f5565b5080f35b81611e92916181f5565b61046457805f611d87565b81611ea7916181f5565b61046457805f611cf5565b50346104645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457610461600161030073ffffffffffffffffffffffffffffffffffffffff611f07617bec565b604354161617611f79604051611f1c816181bc565b8581528560208201528560408201528560608201528360808201528360a08201528560c08201528560e08201528561010082015285610120820152856101408201528561016082015285610180820152856101a08201528261898e565b611f8861200082161515618be9565b611f9761100082161515618be9565b611fa661080082161515618be9565b611fb561040082161515618be9565b611fc461020082161515618b6d565b61072161010082161515618b6d565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610464578073ffffffffffffffffffffffffffffffffffffffff60445416803b1561113e578180916044604051809481937f5941b5bb0000000000000000000000000000000000000000000000000000000083527f575e24b40000000000000000000000000000000000000000000000000000000060048401527fdeadbeef0000000000000000000000000000000000000000000000000000000060248401525af18015610d1457612351575b5050737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561046457806040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f1e048e1d000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610d145761233c575b506122e973ffffffffffffffffffffffffffffffffffffffff602f54166c0100000000000000000000003c9073ffffffffffffffffffffffffffffffffffffffff6040519261218b84618184565b85845260646020850152166040830152604051906121a8826181a0565b60018252600160208301526122d160209586946122fd6040516121cb88826181f5565b8381527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe088013689830137604051988997889687957f2229d0b400000000000000000000000000000000000000000000000000000000875261229d6004880173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b8051151560a4880152602081015160c48801526040015173ffffffffffffffffffffffffffffffffffffffff1660e4870152565b80511515610104860152602001511515610124850152565b610160610144840152610164830190617c5e565b03925af180156110f55761230f578280f35b8161232e92903d10612335575b61232681836181f5565b8101906182ca565b505f808280f35b503d61231c565b81612346916181f5565b61046457805f61213d565b8161235b916181f5565b61046457805f6120ab565b50346104645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610464576104616001601073ffffffffffffffffffffffffffffffffffffffff6123ba617bec565b60435416161761242c6040516123cf816181bc565b8581528560208201528560408201528560608201528560808201528560a08201528560c08201528560e08201528561010082015283610120820152856101408201528561016082015285610180820152856101a08201528261898e565b61243b61200082161515618be9565b61244a61100082161515618be9565b61245961080082161515618be9565b61246861040082161515618be9565b61247761020082161515618be9565b61248661010082161515618be9565b612494608082161515618be9565b6124a2604082161515618be9565b6105b1602082161515618be9565b50346104645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457610461600173ffffffffffffffffffffffffffffffffffffffff612502617bec565b6043541616612573604051612516816181bc565b8581528560208201528560408201528560608201528560808201528560a08201528560c08201528560e08201528561010082015285610120820152856101408201528561016082015285610180820152856101a08201528261898e565b61258261200082161515618be9565b610a5e61100082161515618be9565b50346104645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457610461600161300073ffffffffffffffffffffffffffffffffffffffff6125e6617bec565b6043541616176126586040516125fb816181bc565b8381528360208201528560408201528560608201528560808201528560a08201528560c08201528560e08201528561010082015285610120820152856101408201528561016082015285610180820152856101a08201528261898e565b610a4f61200082161515618b6d565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610464578073ffffffffffffffffffffffffffffffffffffffff60445416803b1561113e578180916044604051809481937f5941b5bb0000000000000000000000000000000000000000000000000000000083527f6c2bbe7e0000000000000000000000000000000000000000000000000000000060048401527fdeadbeef0000000000000000000000000000000000000000000000000000000060248401525af18015610d1457612ba3575b5073ffffffffffffffffffffffffffffffffffffffff60365416803b1561113e578180916044604051809481937f40c10f19000000000000000000000000000000000000000000000000000000008352306004840152670de0b6b3a764000060248401525af18015610d1457612b8e575b50602073ffffffffffffffffffffffffffffffffffffffff60365416604473ffffffffffffffffffffffffffffffffffffffff602c541660405194859384927f095ea7b30000000000000000000000000000000000000000000000000000000084526004840152670de0b6b3a764000060248401525af18015610d1457612b71575b5073ffffffffffffffffffffffffffffffffffffffff602c54168160209181836129776040519361286383866181f5565b8385527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301948536858301376040519485809481937f5a6bcfda0000000000000000000000000000000000000000000000000000000083526129366004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b61296360a484016020548060020b825260181c60020b602082015260215460408201526060602254910152565b610140610124840152610144830190617c5e565b03925af180156110f557612b43575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15612b3f57604051907fc31eb0e00000000000000000000000000000000000000000000000000000000082527f1e048e1d000000000000000000000000000000000000000000000000000000006004830152828260248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156110f55784928491612b24575b50506122fd9073ffffffffffffffffffffffffffffffffffffffff602c54169060405190612a4985836181f5565b85825236858301376040519485809481937f5a6bcfda000000000000000000000000000000000000000000000000000000008352612af76004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b61296360a484016023548060020b825260181c60020b602082015260245460408201526060602554910152565b8192935090612b32916181f5565b612b3f578290825f612a1b565b5080fd5b91508282813d8311612b6a575b612b5a81836181f5565b81010312610d4657839151612986565b503d612b50565b612b899060203d602011611906576118f981836181f5565b612832565b81612b98916181f5565b61046457805f6127b0565b81612bad916181f5565b61046457805f61273f565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610464576020805460215460225460408051600285810b825260189590951c90940b94840194909452928201526060810191909152608090f35b50346104645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457610461600161010073ffffffffffffffffffffffffffffffffffffffff612c72617bec565b604354161617612ce4604051612c87816181bc565b8581528560208201528560408201528560608201528560808201528360a08201528560c08201528560e08201528561010082015285610120820152856101408201528561016082015285610180820152856101a08201528261898e565b612cf361200082161515618be9565b612d0261100082161515618be9565b612d1161080082161515618be9565b612d2061040082161515618be9565b611fc461020082161515618be9565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457601d54612d6a816184ca565b91612d7860405193846181f5565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b838310612dba576040518061094987826180c4565b60026020600192604051612dcd816181a0565b73ffffffffffffffffffffffffffffffffffffffff8654168152612df28587016185e5565b83820152815201920192019190612da5565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610464576104615f618be9565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610464578073ffffffffffffffffffffffffffffffffffffffff60445416803b1561113e578180916044604051809481937f5941b5bb0000000000000000000000000000000000000000000000000000000083527f259982e50000000000000000000000000000000000000000000000000000000060048401527fdeadbeef0000000000000000000000000000000000000000000000000000000060248401525af18015610d14576131e0575b5073ffffffffffffffffffffffffffffffffffffffff60365416803b1561113e578180916044604051809481937f40c10f19000000000000000000000000000000000000000000000000000000008352306004840152670de0b6b3a764000060248401525af18015610d14576131cb575b50602073ffffffffffffffffffffffffffffffffffffffff60365416604473ffffffffffffffffffffffffffffffffffffffff602c541660405194859384927f095ea7b30000000000000000000000000000000000000000000000000000000084526004840152670de0b6b3a764000060248401525af18015610d14576131ae575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561046457806040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f1e048e1d000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610d1457613199575b506122fd9073ffffffffffffffffffffffffffffffffffffffff602c541660209283916040516130c884826181f5565b8481527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840136858301376040519485809481937f5a6bcfda0000000000000000000000000000000000000000000000000000000083526129366004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b816131a3916181f5565b61046457805f613098565b6131c69060203d602011611906576118f981836181f5565b613007565b816131d5916181f5565b61046457805f612f85565b816131ea916181f5565b61046457805f612f14565b50346104645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104645773ffffffffffffffffffffffffffffffffffffffff613242617bec565b6043541616600173ffffffffffffffffffffffffffffffffffffffff604254161b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116133db576104619173ffffffffffffffffffffffffffffffffffffffff60019216176133176040516132ba816181bc565b8381528360208201528360408201528360608201528360808201528360a08201528360c08201528360e08201528361010082015283610120820152836101408201528361016082015283610180820152836101a08201528261898e565b61332661200082161515618b6d565b61333561100082161515618b6d565b61334461080082161515618b6d565b61335361040082161515618b6d565b61336261020082161515618b6d565b61337161010082161515618b6d565b61337f608082161515618b6d565b61338d604082161515618b6d565b61339b602082161515618b6d565b6133a9601082161515618b6d565b6133b7600882161515618b6d565b6133c5600482161515618b6d565b6133d3600282161515618b6d565b161515618b6d565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457601a54613443816184ca565b9161345160405193846181f5565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b83831061349357604051806109498782618047565b6001602081926134a2856184e2565b81520192019201919061347e565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610464578073ffffffffffffffffffffffffffffffffffffffff60445416803b1561113e578180916044604051809481937f5941b5bb0000000000000000000000000000000000000000000000000000000083527f21d0ee700000000000000000000000000000000000000000000000000000000060048401527fdeadbeef0000000000000000000000000000000000000000000000000000000060248401525af18015610d1457612ba3575073ffffffffffffffffffffffffffffffffffffffff60365416803b1561113e578180916044604051809481937f40c10f19000000000000000000000000000000000000000000000000000000008352306004840152670de0b6b3a764000060248401525af18015610d1457612b8e5750602073ffffffffffffffffffffffffffffffffffffffff60365416604473ffffffffffffffffffffffffffffffffffffffff602c541660405194859384927f095ea7b30000000000000000000000000000000000000000000000000000000084526004840152670de0b6b3a764000060248401525af18015610d1457612b71575073ffffffffffffffffffffffffffffffffffffffff602c54168160209181836129776040519361286383866181f5565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104645773ffffffffffffffffffffffffffffffffffffffff602c5416604051906136fe826181d9565b828252603c6020830152670de0b6b3a76400006040830152826060830152613796602060a0926040519061373285836181f5565b606f82527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0850195863685850137876040518096819582947f5a6bcfda00000000000000000000000000000000000000000000000000000000845260048401618412565b03925af18015610cef57613ab5575b508273ffffffffffffffffffffffffffffffffffffffff60365416803b15612b3f578180916044604051809481937f40c10f19000000000000000000000000000000000000000000000000000000008352306004840152670de0b6b3a764000060248401525af18015610d1457613a9c575b50602073ffffffffffffffffffffffffffffffffffffffff60365416604473ffffffffffffffffffffffffffffffffffffffff602c541660405194859384927f095ea7b30000000000000000000000000000000000000000000000000000000084526004840152670de0b6b3a764000060248401525af18015610cef57613a7f575b50613948602073ffffffffffffffffffffffffffffffffffffffff602c5416604051906138c5826181d9565b868252603c838301527ffffffffffffffffffffffffffffffffffffffffffffffffff21f494c589c000060408301528660608301526040519161390886846181f5565b606f8352863685850137876040518096819582947f5a6bcfda00000000000000000000000000000000000000000000000000000000845260048401618412565b03925af18015610cef57613a50575b5073ffffffffffffffffffffffffffffffffffffffff604454169183604051937f4d081c7e0000000000000000000000000000000000000000000000000000000085528185600481845afa948515610d14576004956139d6918491613a36575b50604051906139c687836181f5565b606f825285366020840137618c5b565b604051948580927f7e472fb20000000000000000000000000000000000000000000000000000000082525afa908115610cef57610461938592613a2157506116fe60405193846181f5565b6118179192503d8087833e610ce081836181f5565b613a4a91503d8086833e610ce081836181f5565b5f6139b7565b6020813d602011613a77575b81613a69602093836181f5565b81010312610d465751613957565b3d9150613a5c565b613a979060203d602011611906576118f981836181f5565b613899565b81613aa6916181f5565b613ab157825f613817565b8280fd5b6020813d602011613adc575b81613ace602093836181f5565b81010312610d4657516137a5565b3d9150613ac1565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610464578073ffffffffffffffffffffffffffffffffffffffff60445416803b1561113e578180916044604051809481937f5941b5bb0000000000000000000000000000000000000000000000000000000083527f9f063efc0000000000000000000000000000000000000000000000000000000060048401527fdeadbeef0000000000000000000000000000000000000000000000000000000060248401525af18015610d14576131e0575073ffffffffffffffffffffffffffffffffffffffff60365416803b1561113e578180916044604051809481937f40c10f19000000000000000000000000000000000000000000000000000000008352306004840152670de0b6b3a764000060248401525af18015610d14576131cb5750602073ffffffffffffffffffffffffffffffffffffffff60365416604473ffffffffffffffffffffffffffffffffffffffff602c541660405194859384927f095ea7b30000000000000000000000000000000000000000000000000000000084526004840152670de0b6b3a764000060248401525af18015610d14576131ae5750737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561046457806040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f1e048e1d000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610d145761319957506122fd9073ffffffffffffffffffffffffffffffffffffffff602c541660209283916040516130c884826181f5565b50346104645760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457610461600161080073ffffffffffffffffffffffffffffffffffffffff613dc1617bec565b604354161617613e33604051613dd6816181bc565b8581528560208201528360408201528560608201528560808201528560a08201528560c08201528560e08201528561010082015285610120820152856101408201528561016082015285610180820152856101a08201528261898e565b613e4261200082161515618be9565b613e5161100082161515618be9565b610a6d61080082161515618b6d565b503461046457807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046457601b54613e9b816184ca565b613ea860405191826181f5565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b838310613f8057868587604051928392602084019060208552518091526040840160408260051b8601019392905b828210613f1557505050500390f35b91936020613f70827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0600195979984950301865288519083613f608351604084526040840190617c5e565b9201519084818403910152617d61565b9601920192018594939192613f06565b60026020600192604051613f93816181a0565b613f9c866184e2565b8152613fa98587016185e5565b83820152815201920192019190613ed8565b50346104645761ffff73ffffffffffffffffffffffffffffffffffffffff613fe236617d05565b8383613ff48160429795975416617ca1565b169116901c1691604354161690737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15613ab157826040517f4c63e56200000000000000000000000000000000000000000000000000000000815282151560048201528181602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa8015610d14576141b7575b505017816040517fe65af6a0000000000000000000000000000000000000000000000000000000006020820152826024820152602481526140b46044826181f5565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15612b3f578161410f91604051809381927ff28dceb3000000000000000000000000000000000000000000000000000000008352602060048401526024830190617c5e565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610d14576141a2575b506104618260405190614146826181bc565b8382528360208301528360408301528360608301528360808301528360a08301528360c08301528360e08301528361010083015283610120830152836101408301528361016083015283610180830152836101a083015261898e565b816141ac916181f5565b612b3f57815f614134565b816141c1916181f5565b613ab157825f614072565b50346104645773ffffffffffffffffffffffffffffffffffffffff6141f036617d05565b91906043541616908261ffff808073ffffffffffffffffffffffffffffffffffffffff6142208160425416617ca1565b161c16921691737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15612b3f57604051907f4c63e56200000000000000000000000000000000000000000000000000000000825283106004820152818