From e666420dbe6616d9dfb1ceeb1b9f830072110896 Mon Sep 17 00:00:00 2001 From: Ryan Hall Date: Mon, 6 May 2024 14:37:45 -0400 Subject: [PATCH] LM-20-add-zero-value-checks-in-setter-functions-in-rebalancer (#806) ## Motivation Add zero checks to setter functions to avoid misconfiguration ## Solution Zero checks in setter functions :) --- contracts/.changeset/rich-emus-occur.md | 5 +++++ .../gas-snapshots/liquiditymanager.gas-snapshot | 13 +++++++------ .../src/v0.8/liquiditymanager/LiquidityManager.sol | 5 ++++- .../liquiditymanager/test/LiquidityManager.t.sol | 5 +++++ .../generated/liquiditymanager/liquiditymanager.go | 2 +- ...ated-wrapper-dependency-versions-do-not-edit.txt | 2 +- 6 files changed, 23 insertions(+), 9 deletions(-) create mode 100644 contracts/.changeset/rich-emus-occur.md diff --git a/contracts/.changeset/rich-emus-occur.md b/contracts/.changeset/rich-emus-occur.md new file mode 100644 index 0000000000..896acb632d --- /dev/null +++ b/contracts/.changeset/rich-emus-occur.md @@ -0,0 +1,5 @@ +--- +"@chainlink/contracts-ccip": patch +--- + +add zero checks for setters in LM diff --git a/contracts/gas-snapshots/liquiditymanager.gas-snapshot b/contracts/gas-snapshots/liquiditymanager.gas-snapshot index 36b337a93e..eedcd2405f 100644 --- a/contracts/gas-snapshots/liquiditymanager.gas-snapshot +++ b/contracts/gas-snapshots/liquiditymanager.gas-snapshot @@ -2,10 +2,10 @@ LiquidityManager__report:test_EmptyReportReverts() (gas: 11161) LiquidityManager_addLiquidity:test_addLiquiditySuccess() (gas: 284740) LiquidityManager_rebalanceLiquidity:test_InsufficientLiquidityReverts() (gas: 19585) LiquidityManager_rebalanceLiquidity:test_InvalidRemoteChainReverts() (gas: 197560) -LiquidityManager_rebalanceLiquidity:test_rebalanceBetweenPoolsSuccess() (gas: 8766133) -LiquidityManager_rebalanceLiquidity:test_rebalanceBetweenPoolsSuccess_AlreadyFinalized() (gas: 8575758) -LiquidityManager_rebalanceLiquidity:test_rebalanceBetweenPools_MultiStageFinalization() (gas: 8570966) -LiquidityManager_rebalanceLiquidity:test_rebalanceBetweenPools_NativeRewrap() (gas: 8488731) +LiquidityManager_rebalanceLiquidity:test_rebalanceBetweenPoolsSuccess() (gas: 8797105) +LiquidityManager_rebalanceLiquidity:test_rebalanceBetweenPoolsSuccess_AlreadyFinalized() (gas: 8591256) +LiquidityManager_rebalanceLiquidity:test_rebalanceBetweenPools_MultiStageFinalization() (gas: 8586464) +LiquidityManager_rebalanceLiquidity:test_rebalanceBetweenPools_NativeRewrap() (gas: 8504229) LiquidityManager_rebalanceLiquidity:test_rebalanceLiquiditySuccess() (gas: 384964) LiquidityManager_removeLiquidity:test_InsufficientLiquidityReverts() (gas: 191737) LiquidityManager_removeLiquidity:test_OnlyOwnerReverts() (gas: 10967) @@ -14,8 +14,9 @@ LiquidityManager_setCrossChainRebalancer:test_OnlyOwnerReverts() (gas: 17027) LiquidityManager_setCrossChainRebalancer:test_ZeroAddressReverts() (gas: 21630) LiquidityManager_setCrossChainRebalancer:test_ZeroChainSelectorReverts() (gas: 13105) LiquidityManager_setCrossChainRebalancer:test_setCrossChainRebalancerSuccess() (gas: 162333) -LiquidityManager_setLocalLiquidityContainer:test_OnlyOwnerReverts() (gas: 11008) -LiquidityManager_setLocalLiquidityContainer:test_setLocalLiquidityContainerSuccess() (gas: 3288832) +LiquidityManager_setLocalLiquidityContainer:test_OnlyOwnerReverts() (gas: 11030) +LiquidityManager_setLocalLiquidityContainer:test_ReverstWhen_CalledWithTheZeroAddress() (gas: 10621) +LiquidityManager_setLocalLiquidityContainer:test_setLocalLiquidityContainerSuccess() (gas: 3288855) LiquidityManager_setMinimumLiquidity:test_OnlyOwnerReverts() (gas: 10925) LiquidityManager_setMinimumLiquidity:test_setMinimumLiquiditySuccess() (gas: 36434) LiquidityManager_withdrawNative:test_OnlyOwnerReverts() (gas: 13115) diff --git a/contracts/src/v0.8/liquiditymanager/LiquidityManager.sol b/contracts/src/v0.8/liquiditymanager/LiquidityManager.sol index 37cacfb3ec..0455bc3c54 100644 --- a/contracts/src/v0.8/liquiditymanager/LiquidityManager.sol +++ b/contracts/src/v0.8/liquiditymanager/LiquidityManager.sol @@ -154,7 +154,7 @@ contract LiquidityManager is ILiquidityManager, OCR3Base { revert ZeroChainSelector(); } - if (address(token) == address(0)) { + if (address(token) == address(0) || address(localLiquidityContainer) == address(0)) { revert ZeroAddress(); } i_localToken = token; @@ -515,6 +515,9 @@ contract LiquidityManager is ILiquidityManager, OCR3Base { /// @notice Sets the local liquidity container. /// @dev Only the owner can call this function. function setLocalLiquidityContainer(ILiquidityContainer localLiquidityContainer) external onlyOwner { + if (address(localLiquidityContainer) == address(0)) { + revert ZeroAddress(); + } s_localLiquidityContainer = localLiquidityContainer; emit LiquidityContainerSet(address(localLiquidityContainer)); diff --git a/contracts/src/v0.8/liquiditymanager/test/LiquidityManager.t.sol b/contracts/src/v0.8/liquiditymanager/test/LiquidityManager.t.sol index 1f346f21a7..4978e28ed8 100644 --- a/contracts/src/v0.8/liquiditymanager/test/LiquidityManager.t.sol +++ b/contracts/src/v0.8/liquiditymanager/test/LiquidityManager.t.sol @@ -816,6 +816,11 @@ contract LiquidityManager_setLocalLiquidityContainer is LiquidityManagerSetup { s_liquidityManager.setLocalLiquidityContainer(LockReleaseTokenPool(address(1))); } + + function test_ReverstWhen_CalledWithTheZeroAddress() external { + vm.expectRevert(LiquidityManager.ZeroAddress.selector); + s_liquidityManager.setLocalLiquidityContainer(LockReleaseTokenPool(address(0))); + } } contract LiquidityManager_setMinimumLiquidity is LiquidityManagerSetup { diff --git a/core/gethwrappers/liquiditymanager/generated/liquiditymanager/liquiditymanager.go b/core/gethwrappers/liquiditymanager/generated/liquiditymanager/liquiditymanager.go index 4302945032..08c6ea1dd6 100644 --- a/core/gethwrappers/liquiditymanager/generated/liquiditymanager/liquiditymanager.go +++ b/core/gethwrappers/liquiditymanager/generated/liquiditymanager/liquiditymanager.go @@ -47,7 +47,7 @@ type LiquidityManagerCrossChainRebalancer struct { var LiquidityManagerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"localChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"contractILiquidityContainer\",\"name\":\"localLiquidityContainer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minimumLiquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"expected\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"actual\",\"type\":\"bytes32\"}],\"name\":\"ConfigDigestMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyReport\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"ForkedChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"}],\"name\":\"InsufficientLiquidity\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"message\",\"type\":\"string\"}],\"name\":\"InvalidConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidRemoteChain\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"latestSequenceNumber\",\"type\":\"uint64\"}],\"name\":\"NonIncreasingSequenceNumber\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonUniqueSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OracleCannotBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignaturesOutOfRegistration\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedTransmitter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actual\",\"type\":\"uint256\"}],\"name\":\"WrongMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WrongNumberOfSignatures\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroChainSelector\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"previousConfigBlockNumber\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"configCount\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"onchainConfig\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"contractIBridgeAdapter\",\"name\":\"localBridge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"remoteRebalancer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"CrossChainRebalancerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"ocrSeqNum\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"bridgeSpecificData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"FinalizationFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"ocrSeqNum\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"bridgeSpecificData\",\"type\":\"bytes\"}],\"name\":\"FinalizationStepCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LiquidityAddedToContainer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newLiquidityContainer\",\"type\":\"address\"}],\"name\":\"LiquidityContainerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remover\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"LiquidityRemovedFromContainer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"ocrSeqNum\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"fromChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"toChainSelector\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"bridgeSpecificData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"bridgeReturnData\",\"type\":\"bytes\"}],\"name\":\"LiquidityTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"MinimumLiquiditySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"NativeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"}],\"name\":\"Transmitted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllCrossChainRebalancers\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"remoteRebalancer\",\"type\":\"address\"},{\"internalType\":\"contractIBridgeAdapter\",\"name\":\"localBridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"internalType\":\"structILiquidityManager.CrossChainRebalancerArgs[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"}],\"name\":\"getCrossChainRebalancer\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"remoteRebalancer\",\"type\":\"address\"},{\"internalType\":\"contractIBridgeAdapter\",\"name\":\"localBridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"internalType\":\"structLiquidityManager.CrossChainRebalancer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"currentLiquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLocalLiquidityContainer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedDestChains\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTransmitters\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"i_localToken\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDetails\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"blockNumber\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestConfigDigestAndEpoch\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"scanLogs\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"configDigest\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nativeBridgeFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"bridgeSpecificPayload\",\"type\":\"bytes\"}],\"name\":\"rebalanceLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"shouldWrapNative\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"bridgeSpecificPayload\",\"type\":\"bytes\"}],\"name\":\"receiveLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"remoteRebalancer\",\"type\":\"address\"},{\"internalType\":\"contractIBridgeAdapter\",\"name\":\"localBridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"internalType\":\"structILiquidityManager.CrossChainRebalancerArgs\",\"name\":\"crossChainLiqManager\",\"type\":\"tuple\"}],\"name\":\"setCrossChainRebalancer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"remoteRebalancer\",\"type\":\"address\"},{\"internalType\":\"contractIBridgeAdapter\",\"name\":\"localBridge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"remoteChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"internalType\":\"structILiquidityManager.CrossChainRebalancerArgs[]\",\"name\":\"crossChainRebalancers\",\"type\":\"tuple[]\"}],\"name\":\"setCrossChainRebalancers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractILiquidityContainer\",\"name\":\"localLiquidityContainer\",\"type\":\"address\"}],\"name\":\"setLocalLiquidityContainer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minimumLiquidity\",\"type\":\"uint256\"}],\"name\":\"setMinimumLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"signers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"transmitters\",\"type\":\"address[]\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"onchainConfig\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"offchainConfigVersion\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"offchainConfig\",\"type\":\"bytes\"}],\"name\":\"setOCR3Config\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[3]\",\"name\":\"reportContext\",\"type\":\"bytes32[3]\"},{\"internalType\":\"bytes\",\"name\":\"report\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"rs\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"ss\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"rawVs\",\"type\":\"bytes32\"}],\"name\":\"transmit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"addresspayable\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"withdrawNative\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60e06040523480156200001157600080fd5b506040516200481238038062004812833981016040819052620000349162000218565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be8162000154565b505046608052506001600160401b038316600003620000f05760405163f89d762960e01b815260040160405180910390fd5b6001600160a01b038416620001185760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0393841660a0526001600160401b039290921660c052600b80546001600160a01b03191691909316179091556008556200027d565b336001600160a01b03821603620001ae5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6001600160a01b03811681146200021557600080fd5b50565b600080600080608085870312156200022f57600080fd5b84516200023c81620001ff565b60208601519094506001600160401b03811681146200025a57600080fd5b60408601519093506200026d81620001ff565b6060959095015193969295505050565b60805160a05160c051614518620002fa60003960008181612efe01526130d20152600081816103ec015281816106c5015281816108980152818161090f01528181611480015281816115cf01528181612d9301528181612e5d01528181612f85015261302301526000818161176c01526117b801526145186000f3fe60806040526004361061019a5760003560e01c8063791781f5116100e1578063afcb95d71161008a578063b8ca8dd811610064578063b8ca8dd8146105f8578063f2fde38b14610618578063f8c2d8fa14610638578063fe65d5af1461065857600080fd5b8063afcb95d714610572578063b1dc65a4146105b8578063b7e7fa05146105d857600080fd5b806383d34afe116100bb57806383d34afe146105125780638da5cb5b146105275780639c8f9f231461055257600080fd5b8063791781f51461049557806379ba5097146104c057806381ff7048146104d557600080fd5b806351c6590a11610143578063666cab8d1161011d578063666cab8d146104335780636a11ee9014610455578063706bf6451461047557600080fd5b806351c6590a146102a8578063568446e7146102c85780636511d919146103da57600080fd5b80633275636e116101745780633275636e14610246578063348759c11461026657806350a197d71461028857600080fd5b80630910a510146101a6578063181f5a77146101ce578063282567b41461022457600080fd5b366101a157005b600080fd5b3480156101b257600080fd5b506101bb61067a565b6040519081526020015b60405180910390f35b3480156101da57600080fd5b506102176040518060400160405280601a81526020017f4c69717569646974794d616e6167657220312e302e302d64657600000000000081525081565b6040516101c591906136a9565b34801561023057600080fd5b5061024461023f3660046136c3565b610735565b005b34801561025257600080fd5b506102446102613660046136dc565b610782565b34801561027257600080fd5b5061027b610796565b6040516101c591906136f4565b34801561029457600080fd5b506102446102a33660046137b6565b610822565b3480156102b457600080fd5b506102446102c33660046136c3565b61087e565b3480156102d457600080fd5b5061038b6102e3366004613827565b6040805160808101825260008082526020820181905291810182905260608101919091525067ffffffffffffffff166000908152600960209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff908116825260018301548116938201939093526002909101549182169281019290925274010000000000000000000000000000000000000000900460ff161515606082015290565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020808501518216908301528383015116918101919091526060918201511515918101919091526080016101c5565b3480156103e657600080fd5b5061040e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c5565b34801561043f57600080fd5b50610448610a33565b6040516101c59190613893565b34801561046157600080fd5b50610244610470366004613ad2565b610aa1565b34801561048157600080fd5b50610244610490366004613b9f565b6112b9565b3480156104a157600080fd5b50600b5473ffffffffffffffffffffffffffffffffffffffff1661040e565b3480156104cc57600080fd5b50610244611330565b3480156104e157600080fd5b506004546002546040805163ffffffff808516825264010000000090940490931660208401528201526060016101c5565b34801561051e57600080fd5b506008546101bb565b34801561053357600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661040e565b34801561055e57600080fd5b5061024461056d3660046136c3565b61142d565b34801561057e57600080fd5b50600254600454604080516001815260208101939093526801000000000000000090910467ffffffffffffffff16908201526060016101c5565b3480156105c457600080fd5b506102446105d3366004613c01565b611629565b3480156105e457600080fd5b506102446105f3366004613cb8565b611ca3565b34801561060457600080fd5b50610244610613366004613d2d565b611ceb565b34801561062457600080fd5b50610244610633366004613b9f565b611de0565b34801561064457600080fd5b50610244610653366004613d5d565b611df1565b34801561066457600080fd5b5061066d611e44565b6040516101c59190613da8565b600b546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526000917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561070c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107309190613e3d565b905090565b61073d61200e565b600880549082905560408051828152602081018490527ff97e758c8b3d81df7b0e1b7327a6a7fcf09a41536b2d274b9103015d715f11eb910160405180910390a15050565b61078a61200e565b61079381612091565b50565b6060600a80548060200260200160405190810160405280929190818152602001828054801561081857602002820191906000526020600020906000905b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190600801906020826007010492830192600103820291508084116107d35790505b5050505050905090565b61082a61200e565b610877858584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525089925067ffffffffffffffff915061248d9050565b5050505050565b6108c073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016333084612712565b600b546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303816000875af115801561095a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e9190613e56565b50600b546040517feb521a4c0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff9091169063eb521a4c90602401600060405180830381600087803b1580156109eb57600080fd5b505af11580156109ff573d6000803e3d6000fd5b50506040518392503391507f5414b81d05ac3542606f164e16a9a107d05d21e906539cc5ceb61d7b6b707eb590600090a350565b6060600780548060200260200160405190810160405280929190818152602001828054801561081857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a6d575050505050905090565b855185518560ff16601f831115610b19576040517f89a6198900000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f746f6f206d616e79207369676e6572730000000000000000000000000000000060448201526064015b60405180910390fd5b80600003610b83576040517f89a6198900000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f66206d75737420626520706f73697469766500000000000000000000000000006044820152606401610b10565b818314610c11576040517f89a61989000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6f7261636c6520616464726573736573206f7574206f6620726567697374726160448201527f74696f6e000000000000000000000000000000000000000000000000000000006064820152608401610b10565b610c1c816003613ea2565b8311610c84576040517f89a6198900000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661756c74792d6f7261636c65206620746f6f206869676800000000000000006044820152606401610b10565b610c8c61200e565b60065460005b81811015610d88576005600060068381548110610cb157610cb1613ebf565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905560078054600592919084908110610d2157610d21613ebf565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169055610d8181613eee565b9050610c92565b50895160005b818110156111615760008c8281518110610daa57610daa613ebf565b6020026020010151905060006002811115610dc757610dc7613f26565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260056020526040902054610100900460ff166002811115610e0657610e06613f26565b14610e6d576040517f89a6198900000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f7265706561746564207369676e657220616464726573730000000000000000006044820152606401610b10565b73ffffffffffffffffffffffffffffffffffffffff8116610eba576040517fd6c62c9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260ff83168152602081016001905273ffffffffffffffffffffffffffffffffffffffff821660009081526005602090815260409091208251815460ff9091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082168117835592840151919283917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001617610100836002811115610f6a57610f6a613f26565b021790555090505060008c8381518110610f8657610f86613ebf565b6020026020010151905060006002811115610fa357610fa3613f26565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260056020526040902054610100900460ff166002811115610fe257610fe2613f26565b14611049576040517f89a6198900000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f7265706561746564207472616e736d69747465722061646472657373000000006044820152606401610b10565b73ffffffffffffffffffffffffffffffffffffffff8116611096576040517fd6c62c9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260ff84168152602081016002905273ffffffffffffffffffffffffffffffffffffffff821660009081526005602090815260409091208251815460ff9091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082168117835592840151919283917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000161761010083600281111561114657611146613f26565b021790555090505050508061115a90613eee565b9050610d8e565b508a516111759060069060208e019061357d565b5089516111899060079060208d019061357d565b506003805460ff838116610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909216908c16171790556004805461120f9146913091906000906111e19063ffffffff16613f55565b91906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff168e8e8e8e8e8e6127f4565b600260000181905550600060048054906101000a900463ffffffff169050436004806101000a81548163ffffffff021916908363ffffffff1602179055507f1591690b8638f5fb2dbec82ac741805ac5da8b45dc5263f4875b0496fdce4e0581600260000154600460009054906101000a900463ffffffff168f8f8f8f8f8f6040516112a399989796959493929190613f78565b60405180910390a1505050505050505050505050565b6112c161200e565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f07dc474694ac40123aadcd2445f1b38d2eb353edd9319dcea043548ab34990ec90600090a250565b60015473ffffffffffffffffffffffffffffffffffffffff1633146113b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610b10565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b61143561200e565b600b546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526000917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156114c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114eb9190613e3d565b905081811015611531576040517fa17e11d50000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610b10565b600b546040517f0a861f2a0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff90911690630a861f2a90602401600060405180830381600087803b15801561159d57600080fd5b505af11580156115b1573d6000803e3d6000fd5b506115f892505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169050338461289f565b604051829033907f2bda316674f8d73d289689d7a3acdf8e353b7a142fb5a68ac2aa475104039c1890600090a35050565b60045460208901359067ffffffffffffffff680100000000000000009091048116908216116116ac57600480546040517f6e376b6600000000000000000000000000000000000000000000000000000000815267ffffffffffffffff80851693820193909352680100000000000000009091049091166024820152604401610b10565b6116b78888836128f5565b600480547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff166801000000000000000067ffffffffffffffff8416021790556040805160608101825260025480825260035460ff808216602085015261010090910416928201929092528a359182146117695780516040517f93df584c000000000000000000000000000000000000000000000000000000008152600481019190915260248101839052604401610b10565b467f0000000000000000000000000000000000000000000000000000000000000000146117ea576040517f0f01ce850000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006004820152466024820152604401610b10565b6040805183815267ffffffffffffffff851660208201527fe893c2681d327421d89e1cb54fbe64645b4dcea668d6826130b62cf4c6eefea2910160405180910390a1602081015161183c90600161400e565b60ff168714611877576040517f71253a2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8685146118b0576040517fa75d88af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526005602090815260408083208151808301909252805460ff808216845292939192918401916101009091041660028111156118f3576118f3613f26565b600281111561190457611904613f26565b905250905060028160200151600281111561192157611921613f26565b14801561196857506007816000015160ff168154811061194357611943613ebf565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1633145b61199e576040517fda0f08e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060006119ac866020613ea2565b6119b7896020613ea2565b6119c38c610144614027565b6119cd9190614027565b6119d79190614027565b9050368114611a1b576040517f8e1192e100000000000000000000000000000000000000000000000000000000815260048101829052366024820152604401610b10565b5060008a8a604051611a2e92919061403a565b604051908190038120611a45918e9060200161404a565b604051602081830303815290604052805190602001209050611a65613607565b8860005b81811015611c925760006001858a8460208110611a8857611a88613ebf565b611a9591901a601b61400e565b8f8f86818110611aa757611aa7613ebf565b905060200201358e8e87818110611ac057611ac0613ebf565b9050602002013560405160008152602001604052604051611afd949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015611b1f573d6000803e3d6000fd5b5050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081015173ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152848220848601909552845460ff8082168652939750919550929392840191610100909104166002811115611ba257611ba2613f26565b6002811115611bb357611bb3613f26565b9052509050600181602001516002811115611bd057611bd0613f26565b14611c07576040517fca31867a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051859060ff16601f8110611c1e57611c1e613ebf565b602002015115611c5a576040517ff67bc7c400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600185826000015160ff16601f8110611c7557611c75613ebf565b9115156020909202015250611c8b905081613eee565b9050611a69565b505050505050505050505050505050565b611cab61200e565b60005b81811015611ce657611cd6838383818110611ccb57611ccb613ebf565b905060a00201612091565b611cdf81613eee565b9050611cae565b505050565b611cf361200e565b60008173ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114611d4d576040519150601f19603f3d011682016040523d82523d6000602084013e611d52565b606091505b5050905080611d8d576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805184815273ffffffffffffffffffffffffffffffffffffffff841660208201527f6b84d241b711af111ecfa0e518239e6ca212da442a76548fe8a1f4e77518256a910160405180910390a1505050565b611de861200e565b61079381612ab4565b611df961200e565b61087785858567ffffffffffffffff86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ba992505050565b600a5460609060008167ffffffffffffffff811115611e6557611e656138a6565b604051908082528060200260200182016040528015611edc57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611e835790505b50905060005b82811015612007576000600a8281548110611eff57611eff613ebf565b6000918252602080832060048304015460039092166008026101000a90910467ffffffffffffffff1680835260098252604092839020835160808082018652825473ffffffffffffffffffffffffffffffffffffffff9081168352600184015481168387019081526002909401548082168489019081527401000000000000000000000000000000000000000090910460ff1615156060808601918252895160a081018b52865185168152965184169887019890985290519091169684019690965293820183905293511515928101929092528551909350859085908110611fe957611fe9613ebf565b602002602001018190525050508061200090613eee565b9050611ee2565b5092915050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610b10565b565b6120a16080820160608301613827565b67ffffffffffffffff166000036120e4576040517ff89d762900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006120f36020830183613b9f565b73ffffffffffffffffffffffffffffffffffffffff16148061213a575060006121226040830160208401613b9f565b73ffffffffffffffffffffffffffffffffffffffff16145b8061216a575060006121526060830160408401613b9f565b73ffffffffffffffffffffffffffffffffffffffff16145b156121a1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006009816121b66080850160608601613827565b67ffffffffffffffff16815260208101919091526040016000206002015473ffffffffffffffffffffffffffffffffffffffff160361224257600a6122016080830160608401613827565b8154600181018355600092835260209092206004830401805460039093166008026101000a67ffffffffffffffff8181021990941692909316929092021790555b60408051608081019091528061225b6020840184613b9f565b73ffffffffffffffffffffffffffffffffffffffff1681526020018260200160208101906122899190613b9f565b73ffffffffffffffffffffffffffffffffffffffff1681526020016122b46060840160408501613b9f565b73ffffffffffffffffffffffffffffffffffffffff1681526020016122df60a084016080850161405e565b15159052600960006122f76080850160608601613827565b67ffffffffffffffff16815260208082019290925260409081016000208351815473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161783559385015160018301805491831691909516179093559083015160029091018054606094850151151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00000000000000000000000000000000000000000090911692909316919091179190911790556123d89060808301908301613827565b67ffffffffffffffff167fab9bd0e4888101232b8f09dae2952ff59a6eea4a19fbddf2a8ca7b23f0e4cb406124136040840160208501613b9f565b6124236060850160408601613b9f565b6124306020860186613b9f565b61244060a087016080880161405e565b604051612482949392919073ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152901515606082015260800190565b60405180910390a250565b67ffffffffffffffff85166000908152600960209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff908116825260018301548116938201939093526002909101549182169281019290925274010000000000000000000000000000000000000000900460ff16151560608201819052612552576040517fc9ff038f00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff87166004820152602401610b10565b602081015181516040517f38314bb200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216916338314bb2916125ae913090899060040161407b565b6020604051808303816000875af1925050508015612607575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261260491810190613e56565b60015b612690573d808015612635576040519150601f19603f3d011682016040523d82523d6000602084013e61263a565b606091505b508667ffffffffffffffff168367ffffffffffffffff167fa481d91c3f9574c23ee84fef85246354b760a0527a535d6382354e4684703ce387846040516126829291906140bd565b60405180910390a3506126fd565b80156126a8576126a38684898888612f7d565b6126f6565b8667ffffffffffffffff168367ffffffffffffffff167f8d3121fe961b40270f336aa75feb1213f1c979a33993311c60da4dd0f24526cf876040516126ed91906136a9565b60405180910390a35b5050610877565b61270a8583888787612f7d565b505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526127ee9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613164565b50505050565b6000808a8a8a8a8a8a8a8a8a604051602001612818999897969594939291906140e2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101207dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e01000000000000000000000000000000000000000000000000000000000000179150509998505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611ce69084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640161276c565b60006129038385018561427f565b805151602082015151919250908115801561291c575080155b15612952576040517ebf199700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b828110156129fe576129ee8460000151828151811061297657612976613ebf565b6020026020010151604001518560000151838151811061299857612998613ebf565b602002602001015160000151866000015184815181106129ba576129ba613ebf565b60200260200101516020015188886000015186815181106129dd576129dd613ebf565b602002602001015160600151612ba9565b6129f781613eee565b9050612955565b5060005b81811015612aab57612a9b84602001518281518110612a2357612a23613ebf565b60200260200101516020015185602001518381518110612a4557612a45613ebf565b60200260200101516000015186602001518481518110612a6757612a67613ebf565b60200260200101516060015187602001518581518110612a8957612a89613ebf565b6020026020010151604001518961248d565b612aa481613eee565b9050612a02565b50505050505050565b3373ffffffffffffffffffffffffffffffffffffffff821603612b33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610b10565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000612bb361067a565b905084811015612bf9576040517fa17e11d50000000000000000000000000000000000000000000000000000000081526004810186905260248101829052604401610b10565b67ffffffffffffffff86166000908152600960209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff908116825260018301548116938201939093526002909101549182169281019290925274010000000000000000000000000000000000000000900460ff16151560608201819052612cbe576040517fc9ff038f00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff88166004820152602401610b10565b600b546040517f0a861f2a0000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff90911690630a861f2a90602401600060405180830381600087803b158015612d2a57600080fd5b505af1158015612d3e573d6000803e3d6000fd5b5050505060208101516040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018890527f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303816000875af1158015612dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e029190613e56565b506020810151604080830151835191517fa71d98b700000000000000000000000000000000000000000000000000000000815260009373ffffffffffffffffffffffffffffffffffffffff169263a71d98b7928a92612e8a927f000000000000000000000000000000000000000000000000000000000000000092918e908c906004016143f3565b60006040518083038185885af1158015612ea8573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612eef919081019061443a565b90508767ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168667ffffffffffffffff167f2a0b69eaf1b415ca57005b4f87582ddefc6d960325ff30dc62a9b3e1e1e5b8a885600001518b8987604051612f6b94939291906144a8565b60405180910390a45050505050505050565b8015613005577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0866040518263ffffffff1660e01b81526004016000604051808303818588803b158015612feb57600080fd5b505af1158015612fff573d6000803e3d6000fd5b50505050505b600b5461304c9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116911687613270565b600b546040517feb521a4c0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff9091169063eb521a4c90602401600060405180830381600087803b1580156130b857600080fd5b505af11580156130cc573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff168567ffffffffffffffff167f2a0b69eaf1b415ca57005b4f87582ddefc6d960325ff30dc62a9b3e1e1e5b8a83089876040518060200160405280600081525060405161315594939291906144a8565b60405180910390a45050505050565b60006131c6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661336e9092919063ffffffff16565b805190915015611ce657808060200190518101906131e49190613e56565b611ce6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610b10565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156132e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061330b9190613e3d565b6133159190614027565b60405173ffffffffffffffffffffffffffffffffffffffff85166024820152604481018290529091506127ee9085907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161276c565b606061337d8484600085613385565b949350505050565b606082471015613417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610b10565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161344091906144ef565b60006040518083038185875af1925050503d806000811461347d576040519150601f19603f3d011682016040523d82523d6000602084013e613482565b606091505b50915091506134938783838761349e565b979650505050505050565b6060831561353457825160000361352d5773ffffffffffffffffffffffffffffffffffffffff85163b61352d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b10565b508161337d565b61337d83838151156135495781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1091906136a9565b8280548282559060005260206000209081019282156135f7579160200282015b828111156135f757825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90911617825560209092019160019091019061359d565b50613603929150613626565b5090565b604051806103e00160405280601f906020820280368337509192915050565b5b808211156136035760008155600101613627565b60005b8381101561365657818101518382015260200161363e565b50506000910152565b6000815180845261367781602086016020860161363b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006136bc602083018461365f565b9392505050565b6000602082840312156136d557600080fd5b5035919050565b600060a082840312156136ee57600080fd5b50919050565b6020808252825182820181905260009190848201906040850190845b8181101561373657835167ffffffffffffffff1683529284019291840191600101613710565b50909695505050505050565b803567ffffffffffffffff8116811461375a57600080fd5b919050565b801515811461079357600080fd5b60008083601f84011261377f57600080fd5b50813567ffffffffffffffff81111561379757600080fd5b6020830191508360208285010111156137af57600080fd5b9250929050565b6000806000806000608086880312156137ce57600080fd5b6137d786613742565b94506020860135935060408601356137ee8161375f565b9250606086013567ffffffffffffffff81111561380a57600080fd5b6138168882890161376d565b969995985093965092949392505050565b60006020828403121561383957600080fd5b6136bc82613742565b600081518084526020808501945080840160005b8381101561388857815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613856565b509495945050505050565b6020815260006136bc6020830184613842565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156138f8576138f86138a6565b60405290565b6040805190810167ffffffffffffffff811182821017156138f8576138f86138a6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613968576139686138a6565b604052919050565b600067ffffffffffffffff82111561398a5761398a6138a6565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461079357600080fd5b600082601f8301126139c757600080fd5b813560206139dc6139d783613970565b613921565b82815260059290921b840181019181810190868411156139fb57600080fd5b8286015b84811015613a1f578035613a1281613994565b83529183019183016139ff565b509695505050505050565b803560ff8116811461375a57600080fd5b600067ffffffffffffffff821115613a5557613a556138a6565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112613a9257600080fd5b8135613aa06139d782613a3b565b818152846020838601011115613ab557600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215613aeb57600080fd5b863567ffffffffffffffff80821115613b0357600080fd5b613b0f8a838b016139b6565b97506020890135915080821115613b2557600080fd5b613b318a838b016139b6565b9650613b3f60408a01613a2a565b95506060890135915080821115613b5557600080fd5b613b618a838b01613a81565b9450613b6f60808a01613742565b935060a0890135915080821115613b8557600080fd5b50613b9289828a01613a81565b9150509295509295509295565b600060208284031215613bb157600080fd5b81356136bc81613994565b60008083601f840112613bce57600080fd5b50813567ffffffffffffffff811115613be657600080fd5b6020830191508360208260051b85010111156137af57600080fd5b60008060008060008060008060e0898b031215613c1d57600080fd5b606089018a811115613c2e57600080fd5b8998503567ffffffffffffffff80821115613c4857600080fd5b613c548c838d0161376d565b909950975060808b0135915080821115613c6d57600080fd5b613c798c838d01613bbc565b909750955060a08b0135915080821115613c9257600080fd5b50613c9f8b828c01613bbc565b999c989b50969995989497949560c00135949350505050565b60008060208385031215613ccb57600080fd5b823567ffffffffffffffff80821115613ce357600080fd5b818501915085601f830112613cf757600080fd5b813581811115613d0657600080fd5b86602060a083028501011115613d1b57600080fd5b60209290920196919550909350505050565b60008060408385031215613d4057600080fd5b823591506020830135613d5281613994565b809150509250929050565b600080600080600060808688031215613d7557600080fd5b613d7e86613742565b94506020860135935060408601359250606086013567ffffffffffffffff81111561380a57600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613e30578151805173ffffffffffffffffffffffffffffffffffffffff90811686528782015181168887015286820151168686015260608082015167ffffffffffffffff169086015260809081015115159085015260a09093019290850190600101613dc5565b5091979650505050505050565b600060208284031215613e4f57600080fd5b5051919050565b600060208284031215613e6857600080fd5b81516136bc8161375f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417613eb957613eb9613e73565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613f1f57613f1f613e73565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600063ffffffff808316818103613f6e57613f6e613e73565b6001019392505050565b600061012063ffffffff808d1684528b6020850152808b16604085015250806060840152613fa88184018a613842565b90508281036080840152613fbc8189613842565b905060ff871660a084015282810360c0840152613fd9818761365f565b905067ffffffffffffffff851660e0840152828103610100840152613ffe818561365f565b9c9b505050505050505050505050565b60ff8181168382160190811115613eb957613eb9613e73565b80820180821115613eb957613eb9613e73565b8183823760009101908152919050565b828152606082602083013760800192915050565b60006020828403121561407057600080fd5b81356136bc8161375f565b600073ffffffffffffffffffffffffffffffffffffffff8086168352808516602084015250606060408301526140b4606083018461365f565b95945050505050565b6040815260006140d0604083018561365f565b82810360208401526140b4818561365f565b60006101208b835273ffffffffffffffffffffffffffffffffffffffff8b16602084015267ffffffffffffffff808b1660408501528160608501526141298285018b613842565b9150838203608085015261413d828a613842565b915060ff881660a085015283820360c085015261415a828861365f565b90861660e08501528381036101008501529050613ffe818561365f565b600082601f83011261418857600080fd5b813560206141986139d783613970565b82815260059290921b840181019181810190868411156141b757600080fd5b8286015b84811015613a1f57803567ffffffffffffffff808211156141dc5760008081fd5b81890191506080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848d030112156142155760008081fd5b61421d6138d5565b8784013581526040614230818601613742565b898301526060808601356142438161375f565b8383015292850135928484111561425c57600091508182fd5b61426a8e8b86890101613a81565b908301525086525050509183019183016141bb565b6000602080838503121561429257600080fd5b823567ffffffffffffffff808211156142aa57600080fd5b90840190604082870312156142be57600080fd5b6142c66138fe565b8235828111156142d557600080fd5b8301601f810188136142e657600080fd5b80356142f46139d782613970565b81815260059190911b8201860190868101908a83111561431357600080fd5b8784015b838110156143bf5780358781111561432e57600080fd5b85016080818e037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001121561436257600080fd5b61436a6138d5565b8a820135815260408201358b82015261438560608301613742565b604082015260808201358981111561439d5760008081fd5b6143ab8f8d83860101613a81565b606083015250845250918801918801614317565b50845250505082840135828111156143d657600080fd5b6143e288828601614177565b948201949094529695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015280861660408401525083606083015260a0608083015261349360a083018461365f565b60006020828403121561444c57600080fd5b815167ffffffffffffffff81111561446357600080fd5b8201601f8101841361447457600080fd5b80516144826139d782613a3b565b81815285602083850101111561449757600080fd5b6140b482602083016020860161363b565b73ffffffffffffffffffffffffffffffffffffffff851681528360208201526080604082015260006144dd608083018561365f565b8281036060840152613493818561365f565b6000825161450181846020870161363b565b919091019291505056fea164736f6c6343000813000a", + Bin: "0x60e06040523480156200001157600080fd5b50604051620048743803806200487483398101604081905262000034916200022d565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be8162000169565b505046608052506001600160401b038316600003620000f05760405163f89d762960e01b815260040160405180910390fd5b6001600160a01b03841615806200010e57506001600160a01b038216155b156200012d5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0393841660a0526001600160401b039290921660c052600b80546001600160a01b031916919093161790915560085562000292565b336001600160a01b03821603620001c35760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6001600160a01b03811681146200022a57600080fd5b50565b600080600080608085870312156200024457600080fd5b8451620002518162000214565b60208601519094506001600160401b03811681146200026f57600080fd5b6040860151909350620002828162000214565b6060959095015193969295505050565b60805160a05160c0516145656200030f60003960008181612f4b015261311f0152600081816103ec015281816106c5015281816108980152818161090f015281816114cd0152818161161c01528181612de001528181612eaa01528181612fd201526130700152600081816117b9015261180501526145656000f3fe60806040526004361061019a5760003560e01c8063791781f5116100e1578063afcb95d71161008a578063b8ca8dd811610064578063b8ca8dd8146105f8578063f2fde38b14610618578063f8c2d8fa14610638578063fe65d5af1461065857600080fd5b8063afcb95d714610572578063b1dc65a4146105b8578063b7e7fa05146105d857600080fd5b806383d34afe116100bb57806383d34afe146105125780638da5cb5b146105275780639c8f9f231461055257600080fd5b8063791781f51461049557806379ba5097146104c057806381ff7048146104d557600080fd5b806351c6590a11610143578063666cab8d1161011d578063666cab8d146104335780636a11ee9014610455578063706bf6451461047557600080fd5b806351c6590a146102a8578063568446e7146102c85780636511d919146103da57600080fd5b80633275636e116101745780633275636e14610246578063348759c11461026657806350a197d71461028857600080fd5b80630910a510146101a6578063181f5a77146101ce578063282567b41461022457600080fd5b366101a157005b600080fd5b3480156101b257600080fd5b506101bb61067a565b6040519081526020015b60405180910390f35b3480156101da57600080fd5b506102176040518060400160405280601a81526020017f4c69717569646974794d616e6167657220312e302e302d64657600000000000081525081565b6040516101c591906136f6565b34801561023057600080fd5b5061024461023f366004613710565b610735565b005b34801561025257600080fd5b50610244610261366004613729565b610782565b34801561027257600080fd5b5061027b610796565b6040516101c59190613741565b34801561029457600080fd5b506102446102a3366004613803565b610822565b3480156102b457600080fd5b506102446102c3366004613710565b61087e565b3480156102d457600080fd5b5061038b6102e3366004613874565b6040805160808101825260008082526020820181905291810182905260608101919091525067ffffffffffffffff166000908152600960209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff908116825260018301548116938201939093526002909101549182169281019290925274010000000000000000000000000000000000000000900460ff161515606082015290565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020808501518216908301528383015116918101919091526060918201511515918101919091526080016101c5565b3480156103e657600080fd5b5061040e7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c5565b34801561043f57600080fd5b50610448610a33565b6040516101c591906138e0565b34801561046157600080fd5b50610244610470366004613b1f565b610aa1565b34801561048157600080fd5b50610244610490366004613bec565b6112b9565b3480156104a157600080fd5b50600b5473ffffffffffffffffffffffffffffffffffffffff1661040e565b3480156104cc57600080fd5b5061024461137d565b3480156104e157600080fd5b506004546002546040805163ffffffff808516825264010000000090940490931660208401528201526060016101c5565b34801561051e57600080fd5b506008546101bb565b34801561053357600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661040e565b34801561055e57600080fd5b5061024461056d366004613710565b61147a565b34801561057e57600080fd5b50600254600454604080516001815260208101939093526801000000000000000090910467ffffffffffffffff16908201526060016101c5565b3480156105c457600080fd5b506102446105d3366004613c4e565b611676565b3480156105e457600080fd5b506102446105f3366004613d05565b611cf0565b34801561060457600080fd5b50610244610613366004613d7a565b611d38565b34801561062457600080fd5b50610244610633366004613bec565b611e2d565b34801561064457600080fd5b50610244610653366004613daa565b611e3e565b34801561066457600080fd5b5061066d611e91565b6040516101c59190613df5565b600b546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526000917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561070c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107309190613e8a565b905090565b61073d61205b565b600880549082905560408051828152602081018490527ff97e758c8b3d81df7b0e1b7327a6a7fcf09a41536b2d274b9103015d715f11eb910160405180910390a15050565b61078a61205b565b610793816120de565b50565b6060600a80548060200260200160405190810160405280929190818152602001828054801561081857602002820191906000526020600020906000905b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190600801906020826007010492830192600103820291508084116107d35790505b5050505050905090565b61082a61205b565b610877858584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525089925067ffffffffffffffff91506124da9050565b5050505050565b6108c073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633308461275f565b600b546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303816000875af115801561095a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e9190613ea3565b50600b546040517feb521a4c0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff9091169063eb521a4c90602401600060405180830381600087803b1580156109eb57600080fd5b505af11580156109ff573d6000803e3d6000fd5b50506040518392503391507f5414b81d05ac3542606f164e16a9a107d05d21e906539cc5ceb61d7b6b707eb590600090a350565b6060600780548060200260200160405190810160405280929190818152602001828054801561081857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610a6d575050505050905090565b855185518560ff16601f831115610b19576040517f89a6198900000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f746f6f206d616e79207369676e6572730000000000000000000000000000000060448201526064015b60405180910390fd5b80600003610b83576040517f89a6198900000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f66206d75737420626520706f73697469766500000000000000000000000000006044820152606401610b10565b818314610c11576040517f89a61989000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f6f7261636c6520616464726573736573206f7574206f6620726567697374726160448201527f74696f6e000000000000000000000000000000000000000000000000000000006064820152608401610b10565b610c1c816003613eef565b8311610c84576040517f89a6198900000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6661756c74792d6f7261636c65206620746f6f206869676800000000000000006044820152606401610b10565b610c8c61205b565b60065460005b81811015610d88576005600060068381548110610cb157610cb1613f0c565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905560078054600592919084908110610d2157610d21613f0c565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000169055610d8181613f3b565b9050610c92565b50895160005b818110156111615760008c8281518110610daa57610daa613f0c565b6020026020010151905060006002811115610dc757610dc7613f73565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260056020526040902054610100900460ff166002811115610e0657610e06613f73565b14610e6d576040517f89a6198900000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f7265706561746564207369676e657220616464726573730000000000000000006044820152606401610b10565b73ffffffffffffffffffffffffffffffffffffffff8116610eba576040517fd6c62c9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260ff83168152602081016001905273ffffffffffffffffffffffffffffffffffffffff821660009081526005602090815260409091208251815460ff9091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082168117835592840151919283917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001617610100836002811115610f6a57610f6a613f73565b021790555090505060008c8381518110610f8657610f86613f0c565b6020026020010151905060006002811115610fa357610fa3613f73565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260056020526040902054610100900460ff166002811115610fe257610fe2613f73565b14611049576040517f89a6198900000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f7265706561746564207472616e736d69747465722061646472657373000000006044820152606401610b10565b73ffffffffffffffffffffffffffffffffffffffff8116611096576040517fd6c62c9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805180820190915260ff84168152602081016002905273ffffffffffffffffffffffffffffffffffffffff821660009081526005602090815260409091208251815460ff9091167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082168117835592840151919283917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000161761010083600281111561114657611146613f73565b021790555090505050508061115a90613f3b565b9050610d8e565b508a516111759060069060208e01906135ca565b5089516111899060079060208d01906135ca565b506003805460ff838116610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909216908c16171790556004805461120f9146913091906000906111e19063ffffffff16613fa2565b91906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff168e8e8e8e8e8e612841565b600260000181905550600060048054906101000a900463ffffffff169050436004806101000a81548163ffffffff021916908363ffffffff1602179055507f1591690b8638f5fb2dbec82ac741805ac5da8b45dc5263f4875b0496fdce4e0581600260000154600460009054906101000a900463ffffffff168f8f8f8f8f8f6040516112a399989796959493929190613fc5565b60405180910390a1505050505050505050505050565b6112c161205b565b73ffffffffffffffffffffffffffffffffffffffff811661130e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f07dc474694ac40123aadcd2445f1b38d2eb353edd9319dcea043548ab34990ec90600090a250565b60015473ffffffffffffffffffffffffffffffffffffffff1633146113fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610b10565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b61148261205b565b600b546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526000917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015611514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115389190613e8a565b90508181101561157e576040517fa17e11d50000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610b10565b600b546040517f0a861f2a0000000000000000000000000000000000000000000000000000000081526004810184905273ffffffffffffffffffffffffffffffffffffffff90911690630a861f2a90602401600060405180830381600087803b1580156115ea57600080fd5b505af11580156115fe573d6000803e3d6000fd5b5061164592505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016905033846128ec565b604051829033907f2bda316674f8d73d289689d7a3acdf8e353b7a142fb5a68ac2aa475104039c1890600090a35050565b60045460208901359067ffffffffffffffff680100000000000000009091048116908216116116f957600480546040517f6e376b6600000000000000000000000000000000000000000000000000000000815267ffffffffffffffff80851693820193909352680100000000000000009091049091166024820152604401610b10565b611704888883612942565b600480547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff166801000000000000000067ffffffffffffffff8416021790556040805160608101825260025480825260035460ff808216602085015261010090910416928201929092528a359182146117b65780516040517f93df584c000000000000000000000000000000000000000000000000000000008152600481019190915260248101839052604401610b10565b467f000000000000000000000000000000000000000000000000000000000000000014611837576040517f0f01ce850000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006004820152466024820152604401610b10565b6040805183815267ffffffffffffffff851660208201527fe893c2681d327421d89e1cb54fbe64645b4dcea668d6826130b62cf4c6eefea2910160405180910390a1602081015161188990600161405b565b60ff1687146118c4576040517f71253a2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8685146118fd576040517fa75d88af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526005602090815260408083208151808301909252805460ff8082168452929391929184019161010090910416600281111561194057611940613f73565b600281111561195157611951613f73565b905250905060028160200151600281111561196e5761196e613f73565b1480156119b557506007816000015160ff168154811061199057611990613f0c565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1633145b6119eb576040517fda0f08e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060006119f9866020613eef565b611a04896020613eef565b611a108c610144614074565b611a1a9190614074565b611a249190614074565b9050368114611a68576040517f8e1192e100000000000000000000000000000000000000000000000000000000815260048101829052366024820152604401610b10565b5060008a8a604051611a7b929190614087565b604051908190038120611a92918e90602001614097565b604051602081830303815290604052805190602001209050611ab2613654565b8860005b81811015611cdf5760006001858a8460208110611ad557611ad5613f0c565b611ae291901a601b61405b565b8f8f86818110611af457611af4613f0c565b905060200201358e8e87818110611b0d57611b0d613f0c565b9050602002013560405160008152602001604052604051611b4a949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015611b6c573d6000803e3d6000fd5b5050604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081015173ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152848220848601909552845460ff8082168652939750919550929392840191610100909104166002811115611bef57611bef613f73565b6002811115611c0057611c00613f73565b9052509050600181602001516002811115611c1d57611c1d613f73565b14611c54576040517fca31867a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051859060ff16601f8110611c6b57611c6b613f0c565b602002015115611ca7576040517ff67bc7c400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600185826000015160ff16601f8110611cc257611cc2613f0c565b9115156020909202015250611cd8905081613f3b565b9050611ab6565b505050505050505050505050505050565b611cf861205b565b60005b81811015611d3357611d23838383818110611d1857611d18613f0c565b905060a002016120de565b611d2c81613f3b565b9050611cfb565b505050565b611d4061205b565b60008173ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114611d9a576040519150601f19603f3d011682016040523d82523d6000602084013e611d9f565b606091505b5050905080611dda576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805184815273ffffffffffffffffffffffffffffffffffffffff841660208201527f6b84d241b711af111ecfa0e518239e6ca212da442a76548fe8a1f4e77518256a910160405180910390a1505050565b611e3561205b565b61079381612b01565b611e4661205b565b61087785858567ffffffffffffffff86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612bf692505050565b600a5460609060008167ffffffffffffffff811115611eb257611eb26138f3565b604051908082528060200260200182016040528015611f2957816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611ed05790505b50905060005b82811015612054576000600a8281548110611f4c57611f4c613f0c565b6000918252602080832060048304015460039092166008026101000a90910467ffffffffffffffff1680835260098252604092839020835160808082018652825473ffffffffffffffffffffffffffffffffffffffff9081168352600184015481168387019081526002909401548082168489019081527401000000000000000000000000000000000000000090910460ff1615156060808601918252895160a081018b5286518516815296518416988701989098529051909116968401969096529382018390529351151592810192909252855190935085908590811061203657612036613f0c565b602002602001018190525050508061204d90613f3b565b9050611f2f565b5092915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146120dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610b10565b565b6120ee6080820160608301613874565b67ffffffffffffffff16600003612131576040517ff89d762900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006121406020830183613bec565b73ffffffffffffffffffffffffffffffffffffffff1614806121875750600061216f6040830160208401613bec565b73ffffffffffffffffffffffffffffffffffffffff16145b806121b75750600061219f6060830160408401613bec565b73ffffffffffffffffffffffffffffffffffffffff16145b156121ee576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006009816122036080850160608601613874565b67ffffffffffffffff16815260208101919091526040016000206002015473ffffffffffffffffffffffffffffffffffffffff160361228f57600a61224e6080830160608401613874565b8154600181018355600092835260209092206004830401805460039093166008026101000a67ffffffffffffffff8181021990941692909316929092021790555b6040805160808101909152806122a86020840184613bec565b73ffffffffffffffffffffffffffffffffffffffff1681526020018260200160208101906122d69190613bec565b73ffffffffffffffffffffffffffffffffffffffff1681526020016123016060840160408501613bec565b73ffffffffffffffffffffffffffffffffffffffff16815260200161232c60a08401608085016140ab565b15159052600960006123446080850160608601613874565b67ffffffffffffffff16815260208082019290925260409081016000208351815473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161783559385015160018301805491831691909516179093559083015160029091018054606094850151151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00000000000000000000000000000000000000000090911692909316919091179190911790556124259060808301908301613874565b67ffffffffffffffff167fab9bd0e4888101232b8f09dae2952ff59a6eea4a19fbddf2a8ca7b23f0e4cb406124606040840160208501613bec565b6124706060850160408601613bec565b61247d6020860186613bec565b61248d60a08701608088016140ab565b6040516124cf949392919073ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152901515606082015260800190565b60405180910390a250565b67ffffffffffffffff85166000908152600960209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff908116825260018301548116938201939093526002909101549182169281019290925274010000000000000000000000000000000000000000900460ff1615156060820181905261259f576040517fc9ff038f00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff87166004820152602401610b10565b602081015181516040517f38314bb200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216916338314bb2916125fb91309089906004016140c8565b6020604051808303816000875af1925050508015612654575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261265191810190613ea3565b60015b6126dd573d808015612682576040519150601f19603f3d011682016040523d82523d6000602084013e612687565b606091505b508667ffffffffffffffff168367ffffffffffffffff167fa481d91c3f9574c23ee84fef85246354b760a0527a535d6382354e4684703ce387846040516126cf92919061410a565b60405180910390a35061274a565b80156126f5576126f08684898888612fca565b612743565b8667ffffffffffffffff168367ffffffffffffffff167f8d3121fe961b40270f336aa75feb1213f1c979a33993311c60da4dd0f24526cf8760405161273a91906136f6565b60405180910390a35b5050610877565b6127578583888787612fca565b505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261283b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526131b1565b50505050565b6000808a8a8a8a8a8a8a8a8a6040516020016128659998979695949392919061412f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101207dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e01000000000000000000000000000000000000000000000000000000000000179150509998505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611d339084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016127b9565b6000612950838501856142cc565b8051516020820151519192509081158015612969575080155b1561299f576040517ebf199700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82811015612a4b57612a3b846000015182815181106129c3576129c3613f0c565b602002602001015160400151856000015183815181106129e5576129e5613f0c565b60200260200101516000015186600001518481518110612a0757612a07613f0c565b6020026020010151602001518888600001518681518110612a2a57612a2a613f0c565b602002602001015160600151612bf6565b612a4481613f3b565b90506129a2565b5060005b81811015612af857612ae884602001518281518110612a7057612a70613f0c565b60200260200101516020015185602001518381518110612a9257612a92613f0c565b60200260200101516000015186602001518481518110612ab457612ab4613f0c565b60200260200101516060015187602001518581518110612ad657612ad6613f0c565b602002602001015160400151896124da565b612af181613f3b565b9050612a4f565b50505050505050565b3373ffffffffffffffffffffffffffffffffffffffff821603612b80576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610b10565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000612c0061067a565b905084811015612c46576040517fa17e11d50000000000000000000000000000000000000000000000000000000081526004810186905260248101829052604401610b10565b67ffffffffffffffff86166000908152600960209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff908116825260018301548116938201939093526002909101549182169281019290925274010000000000000000000000000000000000000000900460ff16151560608201819052612d0b576040517fc9ff038f00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff88166004820152602401610b10565b600b546040517f0a861f2a0000000000000000000000000000000000000000000000000000000081526004810188905273ffffffffffffffffffffffffffffffffffffffff90911690630a861f2a90602401600060405180830381600087803b158015612d7757600080fd5b505af1158015612d8b573d6000803e3d6000fd5b5050505060208101516040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018890527f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303816000875af1158015612e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4f9190613ea3565b506020810151604080830151835191517fa71d98b700000000000000000000000000000000000000000000000000000000815260009373ffffffffffffffffffffffffffffffffffffffff169263a71d98b7928a92612ed7927f000000000000000000000000000000000000000000000000000000000000000092918e908c90600401614440565b60006040518083038185885af1158015612ef5573d6000803e3d6000fd5b50505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f3c9190810190614487565b90508767ffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168667ffffffffffffffff167f2a0b69eaf1b415ca57005b4f87582ddefc6d960325ff30dc62a9b3e1e1e5b8a885600001518b8987604051612fb894939291906144f5565b60405180910390a45050505050505050565b8015613052577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0866040518263ffffffff1660e01b81526004016000604051808303818588803b15801561303857600080fd5b505af115801561304c573d6000803e3d6000fd5b50505050505b600b546130999073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169116876132bd565b600b546040517feb521a4c0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff9091169063eb521a4c90602401600060405180830381600087803b15801561310557600080fd5b505af1158015613119573d6000803e3d6000fd5b505050507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff168367ffffffffffffffff168567ffffffffffffffff167f2a0b69eaf1b415ca57005b4f87582ddefc6d960325ff30dc62a9b3e1e1e5b8a8308987604051806020016040528060008152506040516131a294939291906144f5565b60405180910390a45050505050565b6000613213826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166133bb9092919063ffffffff16565b805190915015611d3357808060200190518101906132319190613ea3565b611d33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610b10565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015613334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133589190613e8a565b6133629190614074565b60405173ffffffffffffffffffffffffffffffffffffffff851660248201526044810182905290915061283b9085907f095ea7b300000000000000000000000000000000000000000000000000000000906064016127b9565b60606133ca84846000856133d2565b949350505050565b606082471015613464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610b10565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161348d919061453c565b60006040518083038185875af1925050503d80600081146134ca576040519150601f19603f3d011682016040523d82523d6000602084013e6134cf565b606091505b50915091506134e0878383876134eb565b979650505050505050565b6060831561358157825160000361357a5773ffffffffffffffffffffffffffffffffffffffff85163b61357a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b10565b50816133ca565b6133ca83838151156135965781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1091906136f6565b828054828255906000526020600020908101928215613644579160200282015b8281111561364457825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906135ea565b50613650929150613673565b5090565b604051806103e00160405280601f906020820280368337509192915050565b5b808211156136505760008155600101613674565b60005b838110156136a357818101518382015260200161368b565b50506000910152565b600081518084526136c4816020860160208601613688565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061370960208301846136ac565b9392505050565b60006020828403121561372257600080fd5b5035919050565b600060a0828403121561373b57600080fd5b50919050565b6020808252825182820181905260009190848201906040850190845b8181101561378357835167ffffffffffffffff168352928401929184019160010161375d565b50909695505050505050565b803567ffffffffffffffff811681146137a757600080fd5b919050565b801515811461079357600080fd5b60008083601f8401126137cc57600080fd5b50813567ffffffffffffffff8111156137e457600080fd5b6020830191508360208285010111156137fc57600080fd5b9250929050565b60008060008060006080868803121561381b57600080fd5b6138248661378f565b945060208601359350604086013561383b816137ac565b9250606086013567ffffffffffffffff81111561385757600080fd5b613863888289016137ba565b969995985093965092949392505050565b60006020828403121561388657600080fd5b6137098261378f565b600081518084526020808501945080840160005b838110156138d557815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016138a3565b509495945050505050565b602081526000613709602083018461388f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613945576139456138f3565b60405290565b6040805190810167ffffffffffffffff81118282101715613945576139456138f3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156139b5576139b56138f3565b604052919050565b600067ffffffffffffffff8211156139d7576139d76138f3565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461079357600080fd5b600082601f830112613a1457600080fd5b81356020613a29613a24836139bd565b61396e565b82815260059290921b84018101918181019086841115613a4857600080fd5b8286015b84811015613a6c578035613a5f816139e1565b8352918301918301613a4c565b509695505050505050565b803560ff811681146137a757600080fd5b600067ffffffffffffffff821115613aa257613aa26138f3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112613adf57600080fd5b8135613aed613a2482613a88565b818152846020838601011115613b0257600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215613b3857600080fd5b863567ffffffffffffffff80821115613b5057600080fd5b613b5c8a838b01613a03565b97506020890135915080821115613b7257600080fd5b613b7e8a838b01613a03565b9650613b8c60408a01613a77565b95506060890135915080821115613ba257600080fd5b613bae8a838b01613ace565b9450613bbc60808a0161378f565b935060a0890135915080821115613bd257600080fd5b50613bdf89828a01613ace565b9150509295509295509295565b600060208284031215613bfe57600080fd5b8135613709816139e1565b60008083601f840112613c1b57600080fd5b50813567ffffffffffffffff811115613c3357600080fd5b6020830191508360208260051b85010111156137fc57600080fd5b60008060008060008060008060e0898b031215613c6a57600080fd5b606089018a811115613c7b57600080fd5b8998503567ffffffffffffffff80821115613c9557600080fd5b613ca18c838d016137ba565b909950975060808b0135915080821115613cba57600080fd5b613cc68c838d01613c09565b909750955060a08b0135915080821115613cdf57600080fd5b50613cec8b828c01613c09565b999c989b50969995989497949560c00135949350505050565b60008060208385031215613d1857600080fd5b823567ffffffffffffffff80821115613d3057600080fd5b818501915085601f830112613d4457600080fd5b813581811115613d5357600080fd5b86602060a083028501011115613d6857600080fd5b60209290920196919550909350505050565b60008060408385031215613d8d57600080fd5b823591506020830135613d9f816139e1565b809150509250929050565b600080600080600060808688031215613dc257600080fd5b613dcb8661378f565b94506020860135935060408601359250606086013567ffffffffffffffff81111561385757600080fd5b602080825282518282018190526000919060409081850190868401855b82811015613e7d578151805173ffffffffffffffffffffffffffffffffffffffff90811686528782015181168887015286820151168686015260608082015167ffffffffffffffff169086015260809081015115159085015260a09093019290850190600101613e12565b5091979650505050505050565b600060208284031215613e9c57600080fd5b5051919050565b600060208284031215613eb557600080fd5b8151613709816137ac565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417613f0657613f06613ec0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613f6c57613f6c613ec0565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600063ffffffff808316818103613fbb57613fbb613ec0565b6001019392505050565b600061012063ffffffff808d1684528b6020850152808b16604085015250806060840152613ff58184018a61388f565b90508281036080840152614009818961388f565b905060ff871660a084015282810360c084015261402681876136ac565b905067ffffffffffffffff851660e084015282810361010084015261404b81856136ac565b9c9b505050505050505050505050565b60ff8181168382160190811115613f0657613f06613ec0565b80820180821115613f0657613f06613ec0565b8183823760009101908152919050565b828152606082602083013760800192915050565b6000602082840312156140bd57600080fd5b8135613709816137ac565b600073ffffffffffffffffffffffffffffffffffffffff80861683528085166020840152506060604083015261410160608301846136ac565b95945050505050565b60408152600061411d60408301856136ac565b828103602084015261410181856136ac565b60006101208b835273ffffffffffffffffffffffffffffffffffffffff8b16602084015267ffffffffffffffff808b1660408501528160608501526141768285018b61388f565b9150838203608085015261418a828a61388f565b915060ff881660a085015283820360c08501526141a782886136ac565b90861660e0850152838103610100850152905061404b81856136ac565b600082601f8301126141d557600080fd5b813560206141e5613a24836139bd565b82815260059290921b8401810191818101908684111561420457600080fd5b8286015b84811015613a6c57803567ffffffffffffffff808211156142295760008081fd5b81890191506080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848d030112156142625760008081fd5b61426a613922565b878401358152604061427d81860161378f565b89830152606080860135614290816137ac565b838301529285013592848411156142a957600091508182fd5b6142b78e8b86890101613ace565b90830152508652505050918301918301614208565b600060208083850312156142df57600080fd5b823567ffffffffffffffff808211156142f757600080fd5b908401906040828703121561430b57600080fd5b61431361394b565b82358281111561432257600080fd5b8301601f8101881361433357600080fd5b8035614341613a24826139bd565b81815260059190911b8201860190868101908a83111561436057600080fd5b8784015b8381101561440c5780358781111561437b57600080fd5b85016080818e037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00112156143af57600080fd5b6143b7613922565b8a820135815260408201358b8201526143d26060830161378f565b60408201526080820135898111156143ea5760008081fd5b6143f88f8d83860101613ace565b606083015250845250918801918801614364565b508452505050828401358281111561442357600080fd5b61442f888286016141c4565b948201949094529695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015280861660408401525083606083015260a060808301526134e060a08301846136ac565b60006020828403121561449957600080fd5b815167ffffffffffffffff8111156144b057600080fd5b8201601f810184136144c157600080fd5b80516144cf613a2482613a88565b8181528560208385010111156144e457600080fd5b614101826020830160208601613688565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260806040820152600061452a60808301856136ac565b82810360608401526134e081856136ac565b6000825161454e818460208701613688565b919091019291505056fea164736f6c6343000813000a", } var LiquidityManagerABI = LiquidityManagerMetaData.ABI diff --git a/core/gethwrappers/liquiditymanager/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/liquiditymanager/generation/generated-wrapper-dependency-versions-do-not-edit.txt index 9c8d1d4c77..2c5c667dca 100644 --- a/core/gethwrappers/liquiditymanager/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/liquiditymanager/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -11,7 +11,7 @@ arbitrum_token_gateway: ../../../contracts/solc/v0.8.19/IArbitrumTokenGateway/IA arbsys: ../../../contracts/solc/v0.8.19/IArbSys/IArbSys.abi ../../../contracts/solc/v0.8.19/IArbSys/IArbSys.bin 70adb49f157d8e077485d1a5c87ddf64b214822aef736bb68e122a77bab78a16 l2_arbitrum_gateway: ../../../contracts/solc/v0.8.19/IL2ArbitrumGateway/IL2ArbitrumGateway.abi ../../../contracts/solc/v0.8.19/IL2ArbitrumGateway/IL2ArbitrumGateway.bin 4d1af2bdb0aeb0b15e3cbc4ed2158f9bcba4925f68ed3669e0ecfde14115c893 l2_arbitrum_messenger: ../../../contracts/solc/v0.8.19/IL2ArbitrumMessenger/IL2ArbitrumMessenger.abi ../../../contracts/solc/v0.8.19/IL2ArbitrumMessenger/IL2ArbitrumMessenger.bin 84d4bfedf16e92e3fb15880832fa54a3a21808dffea8a7c0946cde3b5e17a0c3 -liquiditymanager: ../../../contracts/solc/v0.8.19/LiquidityManager/LiquidityManager.abi ../../../contracts/solc/v0.8.19/LiquidityManager/LiquidityManager.bin e14db5ac9b211cd23766da0fa1766276d26885e46175bc9dcd764f2ad56b986b +liquiditymanager: ../../../contracts/solc/v0.8.19/LiquidityManager/LiquidityManager.abi ../../../contracts/solc/v0.8.19/LiquidityManager/LiquidityManager.bin 3d1958af21fd4b1f481fd46b30cc8ff79b06ad6539332d620072f41c2b053421 mock_l1_bridge_adapter: ../../../contracts/solc/v0.8.19/MockBridgeAdapter/MockL1BridgeAdapter.abi ../../../contracts/solc/v0.8.19/MockBridgeAdapter/MockL1BridgeAdapter.bin bdf2dcc0dff76de9aa8eb3eee8cce23c426577aa511b581c30b95ed0178c4041 mock_l2_bridge_adapter: ../../../contracts/solc/v0.8.19/MockBridgeAdapter/MockL2BridgeAdapter.abi ../../../contracts/solc/v0.8.19/MockBridgeAdapter/MockL2BridgeAdapter.bin ae85dc829dcd8fbe37f7b439c4c7c6f462fedb14254c86beafa30ba28f7b5ac6 no_op_ocr3: ../../../contracts/solc/v0.8.19/NoOpOCR3/NoOpOCR3.abi ../../../contracts/solc/v0.8.19/NoOpOCR3/NoOpOCR3.bin 3a5ef6a7a6502339d7965b44debb5536ee9b6d2181985e52d905307315c0a853