diff --git a/.github/workflows/manual-deploy-testnet-l2.yml b/.github/workflows/manual-deploy-testnet-l2.yml index 65c5095696..a3d1f9f297 100644 --- a/.github/workflows/manual-deploy-testnet-l2.yml +++ b/.github/workflows/manual-deploy-testnet-l2.yml @@ -356,6 +356,7 @@ jobs: -l1_chain_id=${{ vars.L1_CHAIN_ID }} \ -l1_beacon_url=${{ vars.L1_BEACON_URL }} \ -l1_blob_archive_url=${{ vars.L1_BLOB_ARCHIVE_URL }} \ + -system_contracts_upgrader=${{ vars.NETWORK_SEQUENCER_SYSTEMCONTRACTSUPGRADER }} \ -postgres_db_host=postgres://tenuser:${{ secrets.TEN_POSTGRES_USER_PWD }}@postgres-ten-${{ github.event.inputs.testnet_type }}.postgres.database.azure.com:5432/ \ start' diff --git a/contracts/deployment_scripts/testnet/layer2/002_deploy_zen_base.ts b/contracts/deployment_scripts/testnet/layer2/002_deploy_zen_base.ts index 5942e10d60..2cf1bee6b6 100644 --- a/contracts/deployment_scripts/testnet/layer2/002_deploy_zen_base.ts +++ b/contracts/deployment_scripts/testnet/layer2/002_deploy_zen_base.ts @@ -41,15 +41,13 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { networkConfig["TransactionPostProcessorAddress"], signer ); - - // TODO: add callback with the security epic when we add the EOA config and all the rules for access - // to system contracts - /* - const receipt = await transactionPostProcessor.addOnBlockEndCallback(zenTestnet.address); - if (receipt.status !== 1) { + + const tx = await transactionPostProcessor.addOnBlockEndCallback(zenTestnet.address); + const receipt = await tx.wait(); + if (receipt.status != 1) { throw new Error("Failed to register Zen token as a system callback"); } - console.log(`Callback added at ${receipt.transactionHash}`); */ + console.log(`Callback added at ${receipt.hash}`); } export default func; func.tags = ['ZenBase', 'ZenBase_deploy']; diff --git a/contracts/deployment_scripts/testnet/layer2/003_set_fee.ts b/contracts/deployment_scripts/testnet/layer2/003_set_fee.ts new file mode 100644 index 0000000000..fdfd76318e --- /dev/null +++ b/contracts/deployment_scripts/testnet/layer2/003_set_fee.ts @@ -0,0 +1,39 @@ +import {HardhatRuntimeEnvironment} from 'hardhat/types'; +import {DeployFunction} from 'hardhat-deploy/types'; +import { Receipt } from 'hardhat-deploy/dist/types'; +import { network } from 'hardhat'; + +/* + This script sets the fee for the message bus to prevent spam. +*/ +const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { + const l2Network = hre; + + const l2Accounts = await l2Network.getNamedAccounts(); + + const networkConfig = await l2Network.network.provider.request({ + method: "net_config", + }); + + const signer = await l2Network.ethers.getSigner(l2Accounts.deployer); + const fees = await l2Network.ethers.getContractAt( + 'Fees', + networkConfig["PublicSystemContracts"]["Fees"], + signer + ); + + const owner = await fees.owner(); + console.log(`Owner = ${owner}`); + console.log(`Signer = ${l2Accounts.deployer}`); + + const tx = await fees.setMessageFee(32*10000); + const receipt =await tx.wait(); + + if (receipt.status != 1) { + throw new Error("Failed to set message fee"); + } + console.log(`Fee set at ${receipt.hash}`); +} +export default func; +func.tags = ['SetFees', 'SetFees_deploy']; +func.dependencies = ['ZenBase']; diff --git a/contracts/generated/CrossChainMessenger/CrossChainMessenger.go b/contracts/generated/CrossChainMessenger/CrossChainMessenger.go index 82031e02f9..ea851b901d 100644 --- a/contracts/generated/CrossChainMessenger/CrossChainMessenger.go +++ b/contracts/generated/CrossChainMessenger/CrossChainMessenger.go @@ -42,7 +42,7 @@ type StructsCrossChainMessage struct { // CrossChainMessengerMetaData contains all meta data concerning the CrossChainMessenger contract. var CrossChainMessengerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"error\",\"type\":\"bytes\"}],\"name\":\"CallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"crossChainSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"encodeCall\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messageBusAddr\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageBus\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"relayMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"relayMessageWithProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052348015600f57600080fd5b50610fe48061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639b7cf1ee116100505780639b7cf1ee146100d5578063a1a227fa146100e8578063c4d66de8146100f957600080fd5b80630671b22e146100775780635b76f28b1461008c57806363012de5146100b5575b600080fd5b61008a61008536600461078c565b61010c565b005b61009f61009a366004610884565b610211565b6040516100ac9190610933565b60405180910390f35b6001546100c8906001600160a01b031681565b6040516100ac9190610953565b61008a6100e3366004610961565b610292565b6000546001600160a01b03166100c8565b61008a6101073660046109a4565b610388565b610118848484846104e8565b61012560208501856109a4565b600180546001600160a01b0319166001600160a01b0392909216919091179055600061015460808601866109c3565b8101906101619190610b96565b905060008082600001516001600160a01b03165a84602001516040516101879190610bf3565b60006040518083038160008787f1925050503d80600081146101c5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ca565b606091505b5091509150816101f8578060405163a5fa8d2b60e01b81526004016101ef9190610933565b60405180910390fd5b5050600180546001600160a01b03191690555050505050565b60606040518060600160405280856001600160a01b0316815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250938552505050602091820152604051610279929101610c4c565b60405160208183030381529060405290505b9392505050565b61029b816105e1565b6102a860208201826109a4565b600180546001600160a01b0319166001600160a01b039290921691909117905560006102d760808301836109c3565b8101906102e49190610b96565b905060008082600001516001600160a01b03165a846020015160405161030a9190610bf3565b60006040518083038160008787f1925050503d8060008114610348576040519150601f19603f3d011682016040523d82523d6000602084013e61034d565b606091505b509150915081610372578060405163a5fa8d2b60e01b81526004016101ef9190610933565b5050600180546001600160a01b03191690555050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156103d35750825b905060008267ffffffffffffffff1660011480156103f05750303b155b9050811580156103fe575080155b15610435576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561046957845468ff00000000000000001916680100000000000000001785555b600080546001600160a01b0388166001600160a01b03199182161790915560018054909116905583156104e057845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906104d790600190610c78565b60405180910390a15b505050505050565b6000546040517fe138a8d20000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063e138a8d290610537908790879087908790600401610ea7565b60006040518083038186803b15801561054f57600080fd5b505afa158015610563573d6000803e3d6000fd5b5050505060008460405160200161057a9190610ee5565b60408051601f1981840301815291815281516020928301206000818152600290935291205490915060ff16156105c25760405162461bcd60e51b81526004016101ef90610f2a565b6000908152600260205260409020805460ff1916600117905550505050565b6000546040517f33a88c720000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906333a88c729061062a908490600401610ee5565b602060405180830381865afa158015610647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066b9190610f4d565b6106875760405162461bcd60e51b81526004016101ef90610f9e565b60008160405160200161069a9190610ee5565b60408051601f1981840301815291815281516020928301206000818152600290935291205490915060ff16156106e25760405162461bcd60e51b81526004016101ef90610f2a565b6000908152600260205260409020805460ff1916600117905550565b600060c0828403121561071357610713600080fd5b50919050565b60008083601f84011261072e5761072e600080fd5b50813567ffffffffffffffff81111561074957610749600080fd5b60208301915083602082028301111561076457610764600080fd5b9250929050565b805b811461077857600080fd5b50565b80356107868161076b565b92915050565b600080600080606085870312156107a5576107a5600080fd5b843567ffffffffffffffff8111156107bf576107bf600080fd5b6107cb878288016106fe565b945050602085013567ffffffffffffffff8111156107eb576107eb600080fd5b6107f787828801610719565b9350935050610809866040870161077b565b905092959194509250565b60006001600160a01b038216610786565b61076d81610814565b803561078681610825565b60008083601f84011261084e5761084e600080fd5b50813567ffffffffffffffff81111561086957610869600080fd5b60208301915083600182028301111561076457610764600080fd5b60008060006040848603121561089c5761089c600080fd5b6108a6858561082e565b9250602084013567ffffffffffffffff8111156108c5576108c5600080fd5b6108d186828701610839565b92509250509250925092565b60005b838110156108f85781810151838201526020016108e0565b50506000910152565b600061090b825190565b8084526020840193506109228185602086016108dd565b601f01601f19169290920192915050565b6020808252810161028b8184610901565b61094d81610814565b82525050565b602081016107868284610944565b60006020828403121561097657610976600080fd5b813567ffffffffffffffff81111561099057610990600080fd5b61099c848285016106fe565b949350505050565b6000602082840312156109b9576109b9600080fd5b61028b838361082e565b6000808335601e19368590030181126109de576109de600080fd5b8301915050803567ffffffffffffffff8111156109fd576109fd600080fd5b60208201915060018102360382131561076457610764600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715610a6d57610a6d610a18565b6040525050565b6000610a7f60405190565b9050610a8b8282610a47565b919050565b600067ffffffffffffffff821115610aaa57610aaa610a18565b601f19601f83011660200192915050565b82818337506000910152565b6000610ada610ad584610a90565b610a74565b9050828152838383011115610af157610af1600080fd5b61028b836020830184610abb565b600082601f830112610b1357610b13600080fd5b61028b83833560208501610ac7565b600060608284031215610b3757610b37600080fd5b610b416060610a74565b9050610b4d838361082e565b8152602082013567ffffffffffffffff811115610b6c57610b6c600080fd5b610b7884828501610aff565b602083015250610b8b836040840161077b565b604082015292915050565b600060208284031215610bab57610bab600080fd5b813567ffffffffffffffff811115610bc557610bc5600080fd5b61099c84828501610b22565b6000610bdb825190565b610be98185602086016108dd565b9290920192915050565b6107868183610bd1565b8061094d565b80516000906060840190610c178582610944565b5060208301518482036020860152610c2f8282610901565b9150506040830151610c446040860182610bfd565b509392505050565b6020808252810161028b8184610c03565b600067ffffffffffffffff8216610786565b61094d81610c5d565b602081016107868284610c6f565b506000610786602083018361082e565b67ffffffffffffffff811661076d565b803561078681610c96565b5060006107866020830183610ca6565b67ffffffffffffffff811661094d565b63ffffffff811661076d565b803561078681610cd1565b5060006107866020830183610cdd565b63ffffffff811661094d565b6000808335601e1936859003018112610d1f57610d1f600080fd5b830160208101925035905067ffffffffffffffff811115610d4257610d42600080fd5b3681900382131561076457610764600080fd5b818352602083019250610d69828483610abb565b50601f01601f19160190565b60ff811661076d565b803561078681610d75565b5060006107866020830183610d7e565b60ff811661094d565b600060c08301610db28380610c86565b610dbc8582610944565b50610dca6020840184610cb1565b610dd76020860182610cc1565b50610de56040840184610ce8565b610df26040860182610cf8565b50610e006060840184610ce8565b610e0d6060860182610cf8565b50610e1b6080840184610d04565b8583036080870152610e2e838284610d55565b92505050610e3f60a0840184610d89565b610c4460a0860182610d99565b82818337505050565b81835260208301925060007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115610e9057610e90600080fd5b602083029250610ea1838584610e4c565b50500190565b60608082528101610eb88187610da2565b90508181036020830152610ecd818587610e55565b9050610edc6040830184610bfd565b95945050505050565b6020808252810161028b8184610da2565b60198152602081017f4d65737361676520616c726561647920636f6e73756d65642e00000000000000815290505b60200190565b6020808252810161078681610ef6565b80151561076d565b805161078681610f3a565b600060208284031215610f6257610f62600080fd5b61028b8383610f42565b601f8152602081017f4d657373616765206e6f7420666f756e64206f722066696e616c697a65642e0081529050610f24565b6020808252810161078681610f6c56fea264697066735822122047bcb70d7e66e5f3c1856b2970c70c8b9e3046b8e957495ba86f13ebe801890a64736f6c634300081c0033", + Bin: "0x6080604052348015600f57600080fd5b50610fe48061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c80639b7cf1ee116100505780639b7cf1ee146100d5578063a1a227fa146100e8578063c4d66de8146100f957600080fd5b80630671b22e146100775780635b76f28b1461008c57806363012de5146100b5575b600080fd5b61008a61008536600461078c565b61010c565b005b61009f61009a366004610884565b610211565b6040516100ac9190610933565b60405180910390f35b6001546100c8906001600160a01b031681565b6040516100ac9190610953565b61008a6100e3366004610961565b610292565b6000546001600160a01b03166100c8565b61008a6101073660046109a4565b610388565b610118848484846104e8565b61012560208501856109a4565b600180546001600160a01b0319166001600160a01b0392909216919091179055600061015460808601866109c3565b8101906101619190610b96565b905060008082600001516001600160a01b03165a84602001516040516101879190610bf3565b60006040518083038160008787f1925050503d80600081146101c5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ca565b606091505b5091509150816101f8578060405163a5fa8d2b60e01b81526004016101ef9190610933565b60405180910390fd5b5050600180546001600160a01b03191690555050505050565b60606040518060600160405280856001600160a01b0316815260200184848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250938552505050602091820152604051610279929101610c4c565b60405160208183030381529060405290505b9392505050565b61029b816105e1565b6102a860208201826109a4565b600180546001600160a01b0319166001600160a01b039290921691909117905560006102d760808301836109c3565b8101906102e49190610b96565b905060008082600001516001600160a01b03165a846020015160405161030a9190610bf3565b60006040518083038160008787f1925050503d8060008114610348576040519150601f19603f3d011682016040523d82523d6000602084013e61034d565b606091505b509150915081610372578060405163a5fa8d2b60e01b81526004016101ef9190610933565b5050600180546001600160a01b03191690555050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156103d35750825b905060008267ffffffffffffffff1660011480156103f05750303b155b9050811580156103fe575080155b15610435576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561046957845468ff00000000000000001916680100000000000000001785555b600080546001600160a01b0388166001600160a01b03199182161790915560018054909116905583156104e057845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906104d790600190610c78565b60405180910390a15b505050505050565b6000546040517fe138a8d20000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063e138a8d290610537908790879087908790600401610ea7565b60006040518083038186803b15801561054f57600080fd5b505afa158015610563573d6000803e3d6000fd5b5050505060008460405160200161057a9190610ee5565b60408051601f1981840301815291815281516020928301206000818152600290935291205490915060ff16156105c25760405162461bcd60e51b81526004016101ef90610f2a565b6000908152600260205260409020805460ff1916600117905550505050565b6000546040517f33a88c720000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906333a88c729061062a908490600401610ee5565b602060405180830381865afa158015610647573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066b9190610f4d565b6106875760405162461bcd60e51b81526004016101ef90610f9e565b60008160405160200161069a9190610ee5565b60408051601f1981840301815291815281516020928301206000818152600290935291205490915060ff16156106e25760405162461bcd60e51b81526004016101ef90610f2a565b6000908152600260205260409020805460ff1916600117905550565b600060c0828403121561071357610713600080fd5b50919050565b60008083601f84011261072e5761072e600080fd5b50813567ffffffffffffffff81111561074957610749600080fd5b60208301915083602082028301111561076457610764600080fd5b9250929050565b805b811461077857600080fd5b50565b80356107868161076b565b92915050565b600080600080606085870312156107a5576107a5600080fd5b843567ffffffffffffffff8111156107bf576107bf600080fd5b6107cb878288016106fe565b945050602085013567ffffffffffffffff8111156107eb576107eb600080fd5b6107f787828801610719565b9350935050610809866040870161077b565b905092959194509250565b60006001600160a01b038216610786565b61076d81610814565b803561078681610825565b60008083601f84011261084e5761084e600080fd5b50813567ffffffffffffffff81111561086957610869600080fd5b60208301915083600182028301111561076457610764600080fd5b60008060006040848603121561089c5761089c600080fd5b6108a6858561082e565b9250602084013567ffffffffffffffff8111156108c5576108c5600080fd5b6108d186828701610839565b92509250509250925092565b60005b838110156108f85781810151838201526020016108e0565b50506000910152565b600061090b825190565b8084526020840193506109228185602086016108dd565b601f01601f19169290920192915050565b6020808252810161028b8184610901565b61094d81610814565b82525050565b602081016107868284610944565b60006020828403121561097657610976600080fd5b813567ffffffffffffffff81111561099057610990600080fd5b61099c848285016106fe565b949350505050565b6000602082840312156109b9576109b9600080fd5b61028b838361082e565b6000808335601e19368590030181126109de576109de600080fd5b8301915050803567ffffffffffffffff8111156109fd576109fd600080fd5b60208201915060018102360382131561076457610764600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715610a6d57610a6d610a18565b6040525050565b6000610a7f60405190565b9050610a8b8282610a47565b919050565b600067ffffffffffffffff821115610aaa57610aaa610a18565b601f19601f83011660200192915050565b82818337506000910152565b6000610ada610ad584610a90565b610a74565b9050828152838383011115610af157610af1600080fd5b61028b836020830184610abb565b600082601f830112610b1357610b13600080fd5b61028b83833560208501610ac7565b600060608284031215610b3757610b37600080fd5b610b416060610a74565b9050610b4d838361082e565b8152602082013567ffffffffffffffff811115610b6c57610b6c600080fd5b610b7884828501610aff565b602083015250610b8b836040840161077b565b604082015292915050565b600060208284031215610bab57610bab600080fd5b813567ffffffffffffffff811115610bc557610bc5600080fd5b61099c84828501610b22565b6000610bdb825190565b610be98185602086016108dd565b9290920192915050565b6107868183610bd1565b8061094d565b80516000906060840190610c178582610944565b5060208301518482036020860152610c2f8282610901565b9150506040830151610c446040860182610bfd565b509392505050565b6020808252810161028b8184610c03565b600067ffffffffffffffff8216610786565b61094d81610c5d565b602081016107868284610c6f565b506000610786602083018361082e565b67ffffffffffffffff811661076d565b803561078681610c96565b5060006107866020830183610ca6565b67ffffffffffffffff811661094d565b63ffffffff811661076d565b803561078681610cd1565b5060006107866020830183610cdd565b63ffffffff811661094d565b6000808335601e1936859003018112610d1f57610d1f600080fd5b830160208101925035905067ffffffffffffffff811115610d4257610d42600080fd5b3681900382131561076457610764600080fd5b818352602083019250610d69828483610abb565b50601f01601f19160190565b60ff811661076d565b803561078681610d75565b5060006107866020830183610d7e565b60ff811661094d565b600060c08301610db28380610c86565b610dbc8582610944565b50610dca6020840184610cb1565b610dd76020860182610cc1565b50610de56040840184610ce8565b610df26040860182610cf8565b50610e006060840184610ce8565b610e0d6060860182610cf8565b50610e1b6080840184610d04565b8583036080870152610e2e838284610d55565b92505050610e3f60a0840184610d89565b610c4460a0860182610d99565b82818337505050565b81835260208301925060007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115610e9057610e90600080fd5b602083029250610ea1838584610e4c565b50500190565b60608082528101610eb88187610da2565b90508181036020830152610ecd818587610e55565b9050610edc6040830184610bfd565b95945050505050565b6020808252810161028b8184610da2565b60198152602081017f4d65737361676520616c726561647920636f6e73756d65642e00000000000000815290505b60200190565b6020808252810161078681610ef6565b80151561076d565b805161078681610f3a565b600060208284031215610f6257610f62600080fd5b61028b8383610f42565b601f8152602081017f4d657373616765206e6f7420666f756e64206f722066696e616c697a65642e0081529050610f24565b6020808252810161078681610f6c56fea2646970667358221220bb78e5175ae1a8e6f7e3b36dad222ebb1b7350e8a522f67a17d968c2076f3fd564736f6c634300081c0033", } // CrossChainMessengerABI is the input ABI used to generate the binding from. diff --git a/contracts/generated/EthereumBridge/EthereumBridge.go b/contracts/generated/EthereumBridge/EthereumBridge.go index 29789ec2cc..4970dacda6 100644 --- a/contracts/generated/EthereumBridge/EthereumBridge.go +++ b/contracts/generated/EthereumBridge/EthereumBridge.go @@ -31,8 +31,8 @@ var ( // EthereumBridgeMetaData contains all meta data concerning the EthereumBridge contract. var EthereumBridgeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"remoteAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"localAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"CreatedWrappedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messengerAddress\",\"type\":\"address\"}],\"name\":\"configure\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"hasTokenMapping\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messenger\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"remoteBridge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"localToRemoteToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"crossChainAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"onCreateTokenCommand\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"receiveAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"remoteToLocalToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendERC20\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"wrappedTokens\",\"outputs\":[{\"internalType\":\"contractWrappedERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60806040526001805463ffffffff60a01b19169055348015601f57600080fd5b506128578061002f6000396000f3fe6080604052600436106100b45760003560e01c806383bece4d116100695780639e405b711161004e5780639e405b711461021b578063a381c8e214610251578063d5c6b50414610264576100da565b806383bece4d146101b35780639813c7b2146101d3576100da565b8063458ffd631161009a578063458ffd6314610153578063485cc9551461017357806375cb267214610193576100da565b80628d48e3146100f25780631888d7121461013e576100da565b366100da5760405162461bcd60e51b81526004016100d190610c1f565b60405180910390fd5b60405162461bcd60e51b81526004016100d190610c69565b3480156100fe57600080fd5b5061012861010d366004610cac565b6004602052600090815260409020546001600160a01b031681565b6040516101359190610ce1565b60405180910390f35b61015161014c366004610cac565b6102a7565b005b34801561015f57600080fd5b5061015161016e366004610d41565b610349565b34801561017f57600080fd5b5061015161018e366004610dce565b6104a3565b34801561019f57600080fd5b506101516101ae366004610cac565b61060e565b3480156101bf57600080fd5b506101516101ce366004610e17565b6106e9565b3480156101df57600080fd5b5061020e6101ee366004610cac565b6001600160a01b0390811660009081526002602052604090205416151590565b6040516101359190610e68565b34801561022757600080fd5b50610128610236366004610cac565b6003602052600090815260409020546001600160a01b031681565b61015161025f366004610e17565b61081e565b34801561027057600080fd5b5061029a61027f366004610cac565b6002602052600090815260409020546001600160a01b031681565b6040516101359190610e95565b600034116102c75760405162461bcd60e51b81526004016100d190610ed5565b6001546040517f346633fb0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063346633fb9034906103149085908390600401610eeb565b6000604051808303818588803b15801561032d57600080fd5b505af1158015610341573d6000803e3d6000fd5b505050505050565b6005546000546001600160a01b039182169116331461037a5760405162461bcd60e51b81526004016100d190610f5e565b806001600160a01b031661038c6109bb565b6001600160a01b0316146103b25760405162461bcd60e51b81526004016100d190610fc6565b6000858585856040516103c490610bb8565b6103d19493929190611002565b604051809103906000f0801580156103ed573d6000803e3d6000fd5b506001600160a01b038082166000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081168617909155600383528184208054968f169682168717905594835260049091529081902080549093169091179091555190915081907f30c05779f384e0ae9d43bbf7ec4417f28bdc53d02a35551b6eb270a9c4c71dca90610491908a9084908b908b908b908b90611033565b60405180910390a15050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156104ee5750825b905060008267ffffffffffffffff16600114801561050b5750303b155b905081158015610519575080155b15610550576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561058457845468ff00000000000000001916680100000000000000001785555b61058d8761060e565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038816179055831561060557845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906105fc9060019061109d565b60405180910390a15b50505050505050565b610616610a38565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fa1a227fa000000000000000000000000000000000000000000000000000000008152905163a1a227fa916004808201926020929091908290030181865afa158015610695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b991906110b6565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6005546000546001600160a01b039182169116331461071a5760405162461bcd60e51b81526004016100d190610f5e565b806001600160a01b031661072c6109bb565b6001600160a01b0316146107525760405162461bcd60e51b81526004016100d190610fc6565b6001600160a01b0380851660009081526004602090815260408083205484168084526002909252909120549091168061079d5760405162461bcd60e51b81526004016100d19061112d565b6040517f979005ad0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063979005ad906107e49087908990600401610eeb565b600060405180830381600087803b1580156107fe57600080fd5b505af1158015610812573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b03808416600090815260026020526040902054166108555760405162461bcd60e51b81526004016100d19061116f565b6001600160a01b03808416600090815260026020526040908190205490517f1dd319cb0000000000000000000000000000000000000000000000000000000081529116908190631dd319cb906108b19033908790600401610eeb565b600060405180830381600087803b1580156108cb57600080fd5b505af11580156108df573d6000803e3d6000fd5b5050506001600160a01b038086166000908152600360205260408082205490519193507f83bece4d0000000000000000000000000000000000000000000000000000000092610937929116908790879060240161117f565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526005549091506109b4906001600160a01b0316826000808034610aa1565b5050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b03166363012de56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3391906110b6565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610a9f576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60006040518060600160405280886001600160a01b0316815260200187815260200185815250604051602001610ad7919061124e565b60408051808303601f19018152919052600180549192506001600160a01b0382169163b1454caa91859174010000000000000000000000000000000000000000900463ffffffff16906014610b2b8361128e565b91906101000a81548163ffffffff021916908363ffffffff1602179055508885886040518663ffffffff1660e01b8152600401610b6b94939291906112c6565b60206040518083038185885af1158015610b89573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bae9190611326565b5050505050505050565b6114dc8061134683390190565b60238152602081017f436f6e747261637420646f6573206e6f7420737570706f72742072656365697681527f6528290000000000000000000000000000000000000000000000000000000000602082015290505b60400190565b60208082528101610c2f81610bc5565b92915050565b601d8152602081017f66616c6c6261636b2829206d6574686f6420756e737570706f72746564000000815290505b60200190565b60208082528101610c2f81610c35565b60006001600160a01b038216610c2f565b610c9381610c79565b8114610c9e57600080fd5b50565b8035610c2f81610c8a565b600060208284031215610cc157610cc1600080fd5b610ccb8383610ca1565b9392505050565b610cdb81610c79565b82525050565b60208101610c2f8284610cd2565b60008083601f840112610d0457610d04600080fd5b50813567ffffffffffffffff811115610d1f57610d1f600080fd5b602083019150836001820283011115610d3a57610d3a600080fd5b9250929050565b600080600080600060608688031215610d5c57610d5c600080fd5b610d668787610ca1565b9450602086013567ffffffffffffffff811115610d8557610d85600080fd5b610d9188828901610cef565b9450945050604086013567ffffffffffffffff811115610db357610db3600080fd5b610dbf88828901610cef565b92509250509295509295909350565b60008060408385031215610de457610de4600080fd5b610dee8484610ca1565b9150610dfd8460208501610ca1565b90509250929050565b80610c93565b8035610c2f81610e06565b600080600060608486031215610e2f57610e2f600080fd5b610e398585610ca1565b9250610e488560208601610e0c565b9150610e578560408601610ca1565b90509250925092565b801515610cdb565b60208101610c2f8284610e60565b6000610c2f82610c79565b6000610c2f82610e76565b610cdb81610e81565b60208101610c2f8284610e8c565b600d8152602081017f4e6f7468696e672073656e742e0000000000000000000000000000000000000081529050610c63565b60208082528101610c2f81610ea3565b80610cdb565b60408101610ef98285610cd2565b610ccb6020830184610ee5565b60308152602081017f436f6e74726163742063616c6c6572206973206e6f742074686520726567697381527f7465726564206d657373656e676572210000000000000000000000000000000060208201529050610c19565b60208082528101610c2f81610f06565b60318152602081017f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2081527f696e636f72726563742073656e6465722100000000000000000000000000000060208201529050610c19565b60208082528101610c2f81610f6e565b82818337506000910152565b818352602083019250610ff6828483610fd6565b50601f01601f19160190565b60408082528101611014818688610fe2565b90508181036020830152611029818486610fe2565b9695505050505050565b608081016110418289610cd2565b61104e6020830188610cd2565b8181036040830152611061818688610fe2565b90508181036060830152611076818486610fe2565b98975050505050505050565b600067ffffffffffffffff8216610c2f565b610cdb81611082565b60208101610c2f8284611094565b8051610c2f81610c8a565b6000602082840312156110cb576110cb600080fd5b610ccb83836110ab565b602b8152602081017f526563656976696e672061737365747320666f7220756e6b6e6f776e2077726181527f7070656420746f6b656e2100000000000000000000000000000000000000000060208201529050610c19565b60208082528101610c2f816110d5565b60158152602081017f4e6f206d617070696e6720666f7220746f6b656e2e000000000000000000000081529050610c63565b60208082528101610c2f8161113d565b6060810161118d8286610cd2565b61119a6020830185610ee5565b6111a76040830184610cd2565b949350505050565b60005b838110156111ca5781810151838201526020016111b2565b50506000910152565b60006111dd825190565b8084526020840193506111f48185602086016111af565b601f01601f19169290920192915050565b805160009060608401906112198582610cd2565b506020830151848203602086015261123182826111d3565b91505060408301516112466040860182610ee5565b509392505050565b60208082528101610ccb8184611205565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff16600063fffffffe1982016112aa576112aa61125f565b5060010190565b63ffffffff8116610cdb565b60ff8116610cdb565b608081016112d482876112b1565b6112e160208301866112b1565b81810360408301526112f381856111d3565b905061130260608301846112bd565b95945050505050565b67ffffffffffffffff8116610c93565b8051610c2f8161130b565b60006020828403121561133b5761133b600080fd5b610ccb838361131b56fe6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f317905534801561003657600080fd5b506040516114dc3803806114dc83398101604081905261005591610276565b81818181600361006583826103ce565b50600461007282826103ce565b50505050506100a77fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775336100af60201b60201c565b50505061048d565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff166101555760008381526007602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561010d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610159565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b038111828210171561019a5761019a61015f565b6040525050565b60006101ac60405190565b90506101b88282610175565b919050565b60006001600160401b038211156101d6576101d661015f565b601f19601f83011660200192915050565b60005b838110156102025781810151838201526020016101ea565b50506000910152565b600061021e610219846101bd565b6101a1565b905082815283838301111561023557610235600080fd5b6102438360208301846101e7565b9392505050565b600082601f83011261025e5761025e600080fd5b815161026e84826020860161020b565b949350505050565b6000806040838503121561028c5761028c600080fd5b82516001600160401b038111156102a5576102a5600080fd5b6102b18582860161024a565b602085015190935090506001600160401b038111156102d2576102d2600080fd5b6102de8582860161024a565b9150509250929050565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061031257607f821691505b602082108103610324576103246102e8565b50919050565b60006101596103368381565b90565b6103428361032a565b815460001960089490940293841b1916921b91909117905550565b600061036a818484610339565b505050565b8181101561038a5761038260008261035d565b60010161036f565b5050565b601f82111561036a576000818152602090206020601f850104810160208510156103b55750805b6103c76020601f86010483018261036f565b5050505050565b81516001600160401b038111156103e7576103e761015f565b6103f182546102fe565b6103fc82828561038e565b506020601f82116001811461043157600083156104195750848201515b600019600885021c19811660028502178555506103c7565b600084815260208120601f198516915b828110156104615787850151825560209485019460019092019101610441565b508482101561047e5783870151600019601f87166008021c191681555b50505050600202600101905550565b6110408061049c6000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806336568abe116100cd578063979005ad11610081578063a9059cbb11610066578063a9059cbb146102ce578063d547741f146102e1578063dd62ed3e146102f457600080fd5b8063979005ad146102b3578063a217fddf146102c657600080fd5b806375b238fc116100b257806375b238fc1461024b57806391d148541461027257806395d89b41146102ab57600080fd5b806336568abe1461022557806370a082311461023857600080fd5b80631dd319cb11610124578063248a9ca311610109578063248a9ca3146101e05780632f2ff15d14610203578063313ce5671461021657600080fd5b80631dd319cb146101b857806323b872dd146101cd57600080fd5b806301ffc9a71461015657806306fdde031461017f578063095ea7b31461019457806318160ddd146101a7575b600080fd5b610169610164366004610c49565b610307565b6040516101769190610c72565b60405180910390f35b6101876103a0565b6040516101769190610cd6565b6101696101a2366004610d1d565b610432565b6002545b6040516101769190610d5b565b6101cb6101c6366004610d1d565b61044a565b005b6101696101db366004610d69565b6104b4565b6101ab6101ee366004610db2565b60009081526007602052604090206001015490565b6101cb610211366004610dd1565b6104da565b60126040516101769190610e09565b6101cb610233366004610dd1565b610505565b6101ab610246366004610e17565b610551565b6101ab7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610169610280366004610dd1565b60009182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6101876105c7565b6101cb6102c1366004610d1d565b6105d6565b6101ab600081565b6101696102dc366004610d1d565b61060a565b6101cb6102ef366004610dd1565b610618565b6101ab610302366004610e36565b61063d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061039a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600380546103af90610e6c565b80601f01602080910402602001604051908101604052809291908181526020018280546103db90610e6c565b80156104285780601f106103fd57610100808354040283529160200191610428565b820191906000526020600020905b81548152906001019060200180831161040b57829003601f168201915b5050505050905090565b6000336104408185856106f8565b5060019392505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561047481610705565b8161047e84610551565b10156104a55760405162461bcd60e51b815260040161049c90610ecc565b60405180910390fd5b6104af8383610712565b505050565b6000336104c285828561074c565b6104cd8585856107b2565b60019150505b9392505050565b6000828152600760205260409020600101546104f581610705565b6104ff8383610811565b50505050565b6001600160a01b0381163314610547576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104af82826108bf565b60006001600160a01b0382163203610581576001600160a01b03821660009081526020819052604090205461039a565b6001600160a01b03821633036105af576001600160a01b03821660009081526020819052604090205461039a565b60405162461bcd60e51b815260040161049c90610f0e565b6060600480546103af90610e6c565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561060081610705565b6104af8383610946565b6000336104408185856107b2565b60008281526007602052604090206001015461063381610705565b6104ff83836108bf565b6000326001600160a01b038416148061065e5750326001600160a01b038316145b15610691576001600160a01b038084166000908152600160209081526040808320938616835292905220545b905061039a565b336001600160a01b03841614806106b05750336001600160a01b038316145b156106e0576001600160a01b0380841660009081526001602090815260408083209386168352929052205461068a565b60405162461bcd60e51b815260040161049c90610f1e565b6104af838383600161097c565b61070f8133610a81565b50565b6001600160a01b03821661073c576000604051634b637e8f60e11b815260040161049c9190610f88565b61074882600083610ae1565b5050565b6000610758848461063d565b905060001981146104ff57818110156107a3578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161049c93929190610f96565b6104ff8484848403600061097c565b6001600160a01b0383166107dc576000604051634b637e8f60e11b815260040161049c9190610f88565b6001600160a01b03821661080657600060405163ec442f0560e01b815260040161049c9190610f88565b6104af838383610ae1565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff166108b75760008381526007602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561086f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161039a565b50600061039a565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff16156108b75760008381526007602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161039a565b6001600160a01b03821661097057600060405163ec442f0560e01b815260040161049c9190610f88565b61074860008383610ae1565b6001600160a01b0384166109bf5760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161049c9190610f88565b6001600160a01b038316610a025760006040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161049c9190610f88565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156104ff57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a739190610d5b565b60405180910390a350505050565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff166107485780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161049c929190610fc6565b6001600160a01b038316610b0c578060026000828254610b019190610ff7565b90915550610b849050565b6001600160a01b03831660009081526020819052604090205481811015610b65578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161049c93929190610f96565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610ba057600280548290039055610bbf565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c029190610d5b565b60405180910390a3505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081165b811461070f57600080fd5b803561039a81610c0f565b600060208284031215610c5e57610c5e600080fd5b6104d38383610c3e565b8015155b82525050565b6020810161039a8284610c68565b60005b83811015610c9b578181015183820152602001610c83565b50506000910152565b6000610cae825190565b808452602084019350610cc5818560208601610c80565b601f01601f19169290920192915050565b602080825281016104d38184610ca4565b60006001600160a01b03821661039a565b610c3381610ce7565b803561039a81610cf8565b80610c33565b803561039a81610d0c565b60008060408385031215610d3357610d33600080fd5b610d3d8484610d01565b9150610d4c8460208501610d12565b90509250929050565b80610c6c565b6020810161039a8284610d55565b600080600060608486031215610d8157610d81600080fd5b610d8b8585610d01565b9250610d9a8560208601610d01565b9150610da98560408601610d12565b90509250925092565b600060208284031215610dc757610dc7600080fd5b6104d38383610d12565b60008060408385031215610de757610de7600080fd5b610df18484610d12565b9150610d4c8460208501610d01565b60ff8116610c6c565b6020810161039a8284610e00565b600060208284031215610e2c57610e2c600080fd5b6104d38383610d01565b60008060408385031215610e4c57610e4c600080fd5b610df18484610d01565b634e487b7160e01b600052602260045260246000fd5b600281046001821680610e8057607f821691505b602082108103610e9257610e92610e56565b50919050565b60158152602081017f496e73756666696369656e742062616c616e63652e0000000000000000000000815290505b60200190565b6020808252810161039a81610e98565b601f8152602081017f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e63650081529050610ec6565b6020808252810161039a81610edc565b6020808252810161039a81602181527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360208201527f6500000000000000000000000000000000000000000000000000000000000000604082015260600190565b610c6c81610ce7565b6020810161039a8284610f7f565b60608101610fa48286610f7f565b610fb16020830185610d55565b610fbe6040830184610d55565b949350505050565b60408101610fd48285610f7f565b6104d36020830184610d55565b634e487b7160e01b600052601160045260246000fd5b8082018082111561039a5761039a610fe156fea2646970667358221220c7199b3ba419978fd56f66d77e752344d9012ad608ca77ab3db04c58eb0ad63664736f6c634300081c0033a2646970667358221220930b3746d4760c211a167a698d3d56b9c4a1707b14f75e9b8a8debf6fc1bbbc964736f6c634300081c0033", + ABI: "[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"remoteAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"localAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"CreatedWrappedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messengerAddress\",\"type\":\"address\"}],\"name\":\"configure\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"erc20Fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wrappedToken\",\"type\":\"address\"}],\"name\":\"hasTokenMapping\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messenger\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"remoteBridge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"localToRemoteToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"crossChainAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"onCreateTokenCommand\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"receiveAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"remoteToLocalToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendERC20\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"valueTransferFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"wrappedTokens\",\"outputs\":[{\"internalType\":\"contractWrappedERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x60806040526001805463ffffffff60a01b19169055348015601f57600080fd5b50612b268061002f6000396000f3fe6080604052600436106100ca5760003560e01c806375cb2672116100745780639e405b711161004e5780639e405b7114610253578063a381c8e214610289578063d5c6b5041461029c576100f0565b806375cb2672146101cb57806383bece4d146101eb5780639813c7b21461020b576100f0565b8063458ffd63116100a5578063458ffd631461018b578063485cc955146101ab5780636a17539014610154576100f0565b80628d48e31461010857806307d7fb9a146101545780631888d71214610176576100f0565b366100f05760405162461bcd60e51b81526004016100e790610de6565b60405180910390fd5b60405162461bcd60e51b81526004016100e790610e30565b34801561011457600080fd5b5061013e610123366004610e73565b6004602052600090815260409020546001600160a01b031681565b60405161014b9190610ea8565b60405180910390f35b34801561016057600080fd5b506101696102df565b60405161014b9190610ebc565b610189610184366004610e73565b610358565b005b34801561019757600080fd5b506101896101a6366004610f1c565b610485565b3480156101b757600080fd5b506101896101c6366004610fa9565b6105df565b3480156101d757600080fd5b506101896101e6366004610e73565b61074a565b3480156101f757600080fd5b50610189610206366004610ff2565b610825565b34801561021757600080fd5b50610246610226366004610e73565b6001600160a01b0390811660009081526002602052604090205416151590565b60405161014b9190611043565b34801561025f57600080fd5b5061013e61026e366004610e73565b6003602052600090815260409020546001600160a01b031681565b610189610297366004610ff2565b61095a565b3480156102a857600080fd5b506102d26102b7366004610e73565b6002602052600090815260409020546001600160a01b031681565b60405161014b9190611070565b60006102f36001546001600160a01b031690565b6001600160a01b031662a1b8156040518163ffffffff1660e01b8152600401602060405180830381865afa15801561032f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103539190611089565b905090565b600034116103785760405162461bcd60e51b81526004016100e7906110da565b6001546001600160a01b03166001600160a01b031662a1b8156040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e49190611089565b3410156104035760405162461bcd60e51b81526004016100e790611142565b6001546040517f346633fb0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063346633fb9034906104509085908390600401611152565b6000604051808303818588803b15801561046957600080fd5b505af115801561047d573d6000803e3d6000fd5b505050505050565b6005546000546001600160a01b03918216911633146104b65760405162461bcd60e51b81526004016100e7906111c5565b806001600160a01b03166104c8610b87565b6001600160a01b0316146104ee5760405162461bcd60e51b81526004016100e79061122d565b60008585858560405161050090610d7f565b61050d9493929190611269565b604051809103906000f080158015610529573d6000803e3d6000fd5b506001600160a01b038082166000818152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081168617909155600383528184208054968f169682168717905594835260049091529081902080549093169091179091555190915081907f30c05779f384e0ae9d43bbf7ec4417f28bdc53d02a35551b6eb270a9c4c71dca906105cd908a9084908b908b908b908b9061129a565b60405180910390a15050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801561062a5750825b905060008267ffffffffffffffff1660011480156106475750303b155b905081158015610655575080155b1561068c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156106c057845468ff00000000000000001916680100000000000000001785555b6106c98761074a565b6005805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038816179055831561074157845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29061073890600190611304565b60405180910390a15b50505050505050565b610752610bff565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fa1a227fa000000000000000000000000000000000000000000000000000000008152905163a1a227fa916004808201926020929091908290030181865afa1580156107d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f5919061131d565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6005546000546001600160a01b03918216911633146108565760405162461bcd60e51b81526004016100e7906111c5565b806001600160a01b0316610868610b87565b6001600160a01b03161461088e5760405162461bcd60e51b81526004016100e79061122d565b6001600160a01b038085166000908152600460209081526040808320548416808452600290925290912054909116806108d95760405162461bcd60e51b81526004016100e790611394565b6040517f979005ad0000000000000000000000000000000000000000000000000000000081526001600160a01b0382169063979005ad906109209087908990600401611152565b600060405180830381600087803b15801561093a57600080fd5b505af115801561094e573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b03808416600090815260026020526040902054166109915760405162461bcd60e51b81526004016100e7906113d6565b6001600160a01b03808416600090815260026020526040908190205490517f1dd319cb0000000000000000000000000000000000000000000000000000000081529116908190631dd319cb906109ed9033908790600401611152565b600060405180830381600087803b158015610a0757600080fd5b505af1158015610a1b573d6000803e3d6000fd5b5050506001600160a01b038086166000908152600360205260408082205490519193507f83bece4d0000000000000000000000000000000000000000000000000000000092610a7392911690879087906024016113e6565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050610ae66001546001600160a01b031690565b6001600160a01b031662a1b8156040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b469190611089565b341015610b655760405162461bcd60e51b81526004016100e79061146e565b600554610b80906001600160a01b0316826000808034610c68565b5050505050565b60008060009054906101000a90046001600160a01b03166001600160a01b03166363012de56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610353919061131d565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610c66576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60006040518060600160405280886001600160a01b0316815260200187815260200185815250604051602001610c9e919061151d565b60408051808303601f19018152919052600180549192506001600160a01b0382169163b1454caa91859174010000000000000000000000000000000000000000900463ffffffff16906014610cf28361155d565b91906101000a81548163ffffffff021916908363ffffffff1602179055508885886040518663ffffffff1660e01b8152600401610d329493929190611595565b60206040518083038185885af1158015610d50573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d7591906115f5565b5050505050505050565b6114dc8061161583390190565b60238152602081017f436f6e747261637420646f6573206e6f7420737570706f72742072656365697681527f6528290000000000000000000000000000000000000000000000000000000000602082015290505b60400190565b60208082528101610df681610d8c565b92915050565b601d8152602081017f66616c6c6261636b2829206d6574686f6420756e737570706f72746564000000815290505b60200190565b60208082528101610df681610dfc565b60006001600160a01b038216610df6565b610e5a81610e40565b8114610e6557600080fd5b50565b8035610df681610e51565b600060208284031215610e8857610e88600080fd5b610e928383610e68565b9392505050565b610ea281610e40565b82525050565b60208101610df68284610e99565b80610ea2565b60208101610df68284610eb6565b60008083601f840112610edf57610edf600080fd5b50813567ffffffffffffffff811115610efa57610efa600080fd5b602083019150836001820283011115610f1557610f15600080fd5b9250929050565b600080600080600060608688031215610f3757610f37600080fd5b610f418787610e68565b9450602086013567ffffffffffffffff811115610f6057610f60600080fd5b610f6c88828901610eca565b9450945050604086013567ffffffffffffffff811115610f8e57610f8e600080fd5b610f9a88828901610eca565b92509250509295509295909350565b60008060408385031215610fbf57610fbf600080fd5b610fc98484610e68565b9150610fd88460208501610e68565b90509250929050565b80610e5a565b8035610df681610fe1565b60008060006060848603121561100a5761100a600080fd5b6110148585610e68565b92506110238560208601610fe7565b91506110328560408601610e68565b90509250925092565b801515610ea2565b60208101610df6828461103b565b6000610df682610e40565b6000610df682611051565b610ea28161105c565b60208101610df68284611067565b8051610df681610fe1565b60006020828403121561109e5761109e600080fd5b610e92838361107e565b600d8152602081017f4e6f7468696e672073656e742e0000000000000000000000000000000000000081529050610e2a565b60208082528101610df6816110a8565b602c8152602081017f496e73756666696369656e742066756e647320746f207075626c69736820766181527f6c7565207472616e73666572000000000000000000000000000000000000000060208201529050610de0565b60208082528101610df6816110ea565b604081016111608285610e99565b610e926020830184610eb6565b60308152602081017f436f6e74726163742063616c6c6572206973206e6f742074686520726567697381527f7465726564206d657373656e676572210000000000000000000000000000000060208201529050610de0565b60208082528101610df68161116d565b60318152602081017f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2081527f696e636f72726563742073656e6465722100000000000000000000000000000060208201529050610de0565b60208082528101610df6816111d5565b82818337506000910152565b81835260208301925061125d82848361123d565b50601f01601f19160190565b6040808252810161127b818688611249565b90508181036020830152611290818486611249565b9695505050505050565b608081016112a88289610e99565b6112b56020830188610e99565b81810360408301526112c8818688611249565b905081810360608301526112dd818486611249565b98975050505050505050565b600067ffffffffffffffff8216610df6565b610ea2816112e9565b60208101610df682846112fb565b8051610df681610e51565b60006020828403121561133257611332600080fd5b610e928383611312565b602b8152602081017f526563656976696e672061737365747320666f7220756e6b6e6f776e2077726181527f7070656420746f6b656e2100000000000000000000000000000000000000000060208201529050610de0565b60208082528101610df68161133c565b60158152602081017f4e6f206d617070696e6720666f7220746f6b656e2e000000000000000000000081529050610e2a565b60208082528101610df6816113a4565b606081016113f48286610e99565b6114016020830185610eb6565b61140e6040830184610e99565b949350505050565b60258152602081017f496e73756666696369656e742066756e647320746f207075626c697368206d6581527f737361676500000000000000000000000000000000000000000000000000000060208201529050610de0565b60208082528101610df681611416565b60005b83811015611499578181015183820152602001611481565b50506000910152565b60006114ac825190565b8084526020840193506114c381856020860161147e565b601f01601f19169290920192915050565b805160009060608401906114e88582610e99565b506020830151848203602086015261150082826114a2565b91505060408301516115156040860182610eb6565b509392505050565b60208082528101610e9281846114d4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff16600063fffffffe1982016115795761157961152e565b5060010190565b63ffffffff8116610ea2565b60ff8116610ea2565b608081016115a38287611580565b6115b06020830186611580565b81810360408301526115c281856114a2565b90506115d1606083018461158c565b95945050505050565b67ffffffffffffffff8116610e5a565b8051610df6816115da565b60006020828403121561160a5761160a600080fd5b610e9283836115ea56fe6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f317905534801561003657600080fd5b506040516114dc3803806114dc83398101604081905261005591610276565b81818181600361006583826103ce565b50600461007282826103ce565b50505050506100a77fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775336100af60201b60201c565b50505061048d565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff166101555760008381526007602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561010d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610159565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b038111828210171561019a5761019a61015f565b6040525050565b60006101ac60405190565b90506101b88282610175565b919050565b60006001600160401b038211156101d6576101d661015f565b601f19601f83011660200192915050565b60005b838110156102025781810151838201526020016101ea565b50506000910152565b600061021e610219846101bd565b6101a1565b905082815283838301111561023557610235600080fd5b6102438360208301846101e7565b9392505050565b600082601f83011261025e5761025e600080fd5b815161026e84826020860161020b565b949350505050565b6000806040838503121561028c5761028c600080fd5b82516001600160401b038111156102a5576102a5600080fd5b6102b18582860161024a565b602085015190935090506001600160401b038111156102d2576102d2600080fd5b6102de8582860161024a565b9150509250929050565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061031257607f821691505b602082108103610324576103246102e8565b50919050565b60006101596103368381565b90565b6103428361032a565b815460001960089490940293841b1916921b91909117905550565b600061036a818484610339565b505050565b8181101561038a5761038260008261035d565b60010161036f565b5050565b601f82111561036a576000818152602090206020601f850104810160208510156103b55750805b6103c76020601f86010483018261036f565b5050505050565b81516001600160401b038111156103e7576103e761015f565b6103f182546102fe565b6103fc82828561038e565b506020601f82116001811461043157600083156104195750848201515b600019600885021c19811660028502178555506103c7565b600084815260208120601f198516915b828110156104615787850151825560209485019460019092019101610441565b508482101561047e5783870151600019601f87166008021c191681555b50505050600202600101905550565b6110408061049c6000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806336568abe116100cd578063979005ad11610081578063a9059cbb11610066578063a9059cbb146102ce578063d547741f146102e1578063dd62ed3e146102f457600080fd5b8063979005ad146102b3578063a217fddf146102c657600080fd5b806375b238fc116100b257806375b238fc1461024b57806391d148541461027257806395d89b41146102ab57600080fd5b806336568abe1461022557806370a082311461023857600080fd5b80631dd319cb11610124578063248a9ca311610109578063248a9ca3146101e05780632f2ff15d14610203578063313ce5671461021657600080fd5b80631dd319cb146101b857806323b872dd146101cd57600080fd5b806301ffc9a71461015657806306fdde031461017f578063095ea7b31461019457806318160ddd146101a7575b600080fd5b610169610164366004610c49565b610307565b6040516101769190610c72565b60405180910390f35b6101876103a0565b6040516101769190610cd6565b6101696101a2366004610d1d565b610432565b6002545b6040516101769190610d5b565b6101cb6101c6366004610d1d565b61044a565b005b6101696101db366004610d69565b6104b4565b6101ab6101ee366004610db2565b60009081526007602052604090206001015490565b6101cb610211366004610dd1565b6104da565b60126040516101769190610e09565b6101cb610233366004610dd1565b610505565b6101ab610246366004610e17565b610551565b6101ab7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610169610280366004610dd1565b60009182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6101876105c7565b6101cb6102c1366004610d1d565b6105d6565b6101ab600081565b6101696102dc366004610d1d565b61060a565b6101cb6102ef366004610dd1565b610618565b6101ab610302366004610e36565b61063d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061039a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600380546103af90610e6c565b80601f01602080910402602001604051908101604052809291908181526020018280546103db90610e6c565b80156104285780601f106103fd57610100808354040283529160200191610428565b820191906000526020600020905b81548152906001019060200180831161040b57829003601f168201915b5050505050905090565b6000336104408185856106f8565b5060019392505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561047481610705565b8161047e84610551565b10156104a55760405162461bcd60e51b815260040161049c90610ecc565b60405180910390fd5b6104af8383610712565b505050565b6000336104c285828561074c565b6104cd8585856107b2565b60019150505b9392505050565b6000828152600760205260409020600101546104f581610705565b6104ff8383610811565b50505050565b6001600160a01b0381163314610547576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104af82826108bf565b60006001600160a01b0382163203610581576001600160a01b03821660009081526020819052604090205461039a565b6001600160a01b03821633036105af576001600160a01b03821660009081526020819052604090205461039a565b60405162461bcd60e51b815260040161049c90610f0e565b6060600480546103af90610e6c565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561060081610705565b6104af8383610946565b6000336104408185856107b2565b60008281526007602052604090206001015461063381610705565b6104ff83836108bf565b6000326001600160a01b038416148061065e5750326001600160a01b038316145b15610691576001600160a01b038084166000908152600160209081526040808320938616835292905220545b905061039a565b336001600160a01b03841614806106b05750336001600160a01b038316145b156106e0576001600160a01b0380841660009081526001602090815260408083209386168352929052205461068a565b60405162461bcd60e51b815260040161049c90610f1e565b6104af838383600161097c565b61070f8133610a81565b50565b6001600160a01b03821661073c576000604051634b637e8f60e11b815260040161049c9190610f88565b61074882600083610ae1565b5050565b6000610758848461063d565b905060001981146104ff57818110156107a3578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161049c93929190610f96565b6104ff8484848403600061097c565b6001600160a01b0383166107dc576000604051634b637e8f60e11b815260040161049c9190610f88565b6001600160a01b03821661080657600060405163ec442f0560e01b815260040161049c9190610f88565b6104af838383610ae1565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff166108b75760008381526007602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561086f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161039a565b50600061039a565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff16156108b75760008381526007602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161039a565b6001600160a01b03821661097057600060405163ec442f0560e01b815260040161049c9190610f88565b61074860008383610ae1565b6001600160a01b0384166109bf5760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161049c9190610f88565b6001600160a01b038316610a025760006040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161049c9190610f88565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156104ff57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a739190610d5b565b60405180910390a350505050565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff166107485780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161049c929190610fc6565b6001600160a01b038316610b0c578060026000828254610b019190610ff7565b90915550610b849050565b6001600160a01b03831660009081526020819052604090205481811015610b65578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161049c93929190610f96565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610ba057600280548290039055610bbf565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c029190610d5b565b60405180910390a3505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081165b811461070f57600080fd5b803561039a81610c0f565b600060208284031215610c5e57610c5e600080fd5b6104d38383610c3e565b8015155b82525050565b6020810161039a8284610c68565b60005b83811015610c9b578181015183820152602001610c83565b50506000910152565b6000610cae825190565b808452602084019350610cc5818560208601610c80565b601f01601f19169290920192915050565b602080825281016104d38184610ca4565b60006001600160a01b03821661039a565b610c3381610ce7565b803561039a81610cf8565b80610c33565b803561039a81610d0c565b60008060408385031215610d3357610d33600080fd5b610d3d8484610d01565b9150610d4c8460208501610d12565b90509250929050565b80610c6c565b6020810161039a8284610d55565b600080600060608486031215610d8157610d81600080fd5b610d8b8585610d01565b9250610d9a8560208601610d01565b9150610da98560408601610d12565b90509250925092565b600060208284031215610dc757610dc7600080fd5b6104d38383610d12565b60008060408385031215610de757610de7600080fd5b610df18484610d12565b9150610d4c8460208501610d01565b60ff8116610c6c565b6020810161039a8284610e00565b600060208284031215610e2c57610e2c600080fd5b6104d38383610d01565b60008060408385031215610e4c57610e4c600080fd5b610df18484610d01565b634e487b7160e01b600052602260045260246000fd5b600281046001821680610e8057607f821691505b602082108103610e9257610e92610e56565b50919050565b60158152602081017f496e73756666696369656e742062616c616e63652e0000000000000000000000815290505b60200190565b6020808252810161039a81610e98565b601f8152602081017f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e63650081529050610ec6565b6020808252810161039a81610edc565b6020808252810161039a81602181527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360208201527f6500000000000000000000000000000000000000000000000000000000000000604082015260600190565b610c6c81610ce7565b6020810161039a8284610f7f565b60608101610fa48286610f7f565b610fb16020830185610d55565b610fbe6040830184610d55565b949350505050565b60408101610fd48285610f7f565b6104d36020830184610d55565b634e487b7160e01b600052601160045260246000fd5b8082018082111561039a5761039a610fe156fea264697066735822122036fe937a11594b4347e4151962e0b8b942fa2a563051f8b1f3e8d8082e9a0f4064736f6c634300081c0033a2646970667358221220fb40e939fbcf7c241d7a1bc1a7da00c87204c1f7581547143af2cbac78c716c664736f6c634300081c0033", } // EthereumBridgeABI is the input ABI used to generate the binding from. @@ -202,6 +202,37 @@ func (_EthereumBridge *EthereumBridgeTransactorRaw) Transact(opts *bind.Transact return _EthereumBridge.Contract.contract.Transact(opts, method, params...) } +// Erc20Fee is a free data retrieval call binding the contract method 0x07d7fb9a. +// +// Solidity: function erc20Fee() view returns(uint256) +func (_EthereumBridge *EthereumBridgeCaller) Erc20Fee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _EthereumBridge.contract.Call(opts, &out, "erc20Fee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Erc20Fee is a free data retrieval call binding the contract method 0x07d7fb9a. +// +// Solidity: function erc20Fee() view returns(uint256) +func (_EthereumBridge *EthereumBridgeSession) Erc20Fee() (*big.Int, error) { + return _EthereumBridge.Contract.Erc20Fee(&_EthereumBridge.CallOpts) +} + +// Erc20Fee is a free data retrieval call binding the contract method 0x07d7fb9a. +// +// Solidity: function erc20Fee() view returns(uint256) +func (_EthereumBridge *EthereumBridgeCallerSession) Erc20Fee() (*big.Int, error) { + return _EthereumBridge.Contract.Erc20Fee(&_EthereumBridge.CallOpts) +} + // HasTokenMapping is a free data retrieval call binding the contract method 0x9813c7b2. // // Solidity: function hasTokenMapping(address wrappedToken) view returns(bool) @@ -295,6 +326,37 @@ func (_EthereumBridge *EthereumBridgeCallerSession) RemoteToLocalToken(arg0 comm return _EthereumBridge.Contract.RemoteToLocalToken(&_EthereumBridge.CallOpts, arg0) } +// ValueTransferFee is a free data retrieval call binding the contract method 0x6a175390. +// +// Solidity: function valueTransferFee() view returns(uint256) +func (_EthereumBridge *EthereumBridgeCaller) ValueTransferFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _EthereumBridge.contract.Call(opts, &out, "valueTransferFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ValueTransferFee is a free data retrieval call binding the contract method 0x6a175390. +// +// Solidity: function valueTransferFee() view returns(uint256) +func (_EthereumBridge *EthereumBridgeSession) ValueTransferFee() (*big.Int, error) { + return _EthereumBridge.Contract.ValueTransferFee(&_EthereumBridge.CallOpts) +} + +// ValueTransferFee is a free data retrieval call binding the contract method 0x6a175390. +// +// Solidity: function valueTransferFee() view returns(uint256) +func (_EthereumBridge *EthereumBridgeCallerSession) ValueTransferFee() (*big.Int, error) { + return _EthereumBridge.Contract.ValueTransferFee(&_EthereumBridge.CallOpts) +} + // WrappedTokens is a free data retrieval call binding the contract method 0xd5c6b504. // // Solidity: function wrappedTokens(address ) view returns(address) diff --git a/contracts/generated/Fees/Fees.go b/contracts/generated/Fees/Fees.go index 63b660c476..a2f57a233d 100644 --- a/contracts/generated/Fees/Fees.go +++ b/contracts/generated/Fees/Fees.go @@ -31,8 +31,8 @@ var ( // FeesMetaData contains all meta data concerning the Fees contract. var FeesMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"collectedFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initialMessageFeePerByte\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"eoaOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"messageSize\",\"type\":\"uint256\"}],\"name\":\"messageFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newMessageFeePerByte\",\"type\":\"uint256\"}],\"name\":\"setMessageFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalCollectedFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6106ed806100d96000396000f3fe60806040526004361061007f5760003560e01c8063afe997ea1161004e578063afe997ea1461012c578063da35a26f14610141578063f1d44d5114610161578063f2fde38b1461018157600080fd5b806323aa2a9d1461008b578063715018a6146100ad5780638da5cb5b146100c25780639003adfe1461011057600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506100ab6100a6366004610575565b6101a1565b005b3480156100b957600080fd5b506100ab6101ae565b3480156100ce57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031660405161010791906105bb565b60405180910390f35b34801561011c57600080fd5b50475b60405161010791906105cf565b34801561013857600080fd5b506100ab6101c2565b34801561014d57600080fd5b506100ab61015c3660046105f1565b610225565b34801561016d57600080fd5b5061011f61017c366004610575565b61036d565b34801561018d57600080fd5b506100ab61019c366004610629565b610383565b6101a96103e0565b600055565b6101b66103e0565b6101c06000610454565b565b6101ca6103e0565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610222573d6000803e3d6000fd5b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156102705750825b905060008267ffffffffffffffff16600114801561028d5750303b155b90508115801561029b575080155b156102d2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561030657845468ff00000000000000001916680100000000000000001785555b61030f866104dd565b6000879055831561036457845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29061035b90600190610663565b60405180910390a15b50505050505050565b60008160005461037d91906106a0565b92915050565b61038b6103e0565b6001600160a01b0381166103d75760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016103ce91906105bb565b60405180910390fd5b61022281610454565b336104127f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146101c057336040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016103ce91906105bb565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6104e56104ee565b61022281610555565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166101c0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61038b6104ee565b805b811461022257600080fd5b803561037d8161055d565b60006020828403121561058a5761058a600080fd5b610594838361056a565b9392505050565b60006001600160a01b03821661037d565b6105b58161059b565b82525050565b6020810161037d82846105ac565b806105b5565b6020810161037d82846105c9565b61055f8161059b565b803561037d816105dd565b6000806040838503121561060757610607600080fd5b610611848461056a565b915061062084602085016105e6565b90509250929050565b60006020828403121561063e5761063e600080fd5b61059483836105e6565b600067ffffffffffffffff821661037d565b6105b581610648565b6020810161037d828461065a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818102811582820484141761037d5761037d61067156fea26469706673582212203b15352e8f587de7fab730ebe897ce1d19b5fb0f5a07f4e8af1cc73861e46f5864736f6c634300081c0033", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"collectedFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"flatFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"eoaOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFeeForMessage\",\"type\":\"uint256\"}],\"name\":\"setMessageFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalCollectedFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610688806100d96000396000f3fe60806040526004361061007f5760003560e01c80639003adfe1161004e5780639003adfe1461012e578063afe997ea14610141578063da35a26f14610156578063f2fde38b1461017657600080fd5b80631a90a2191461008b57806323aa2a9d146100b2578063715018a6146100d45780638da5cb5b146100e957600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506000545b6040516100a99190610544565b60405180910390f35b3480156100be57600080fd5b506100d26100cd366004610570565b610196565b005b3480156100e057600080fd5b506100d26101a3565b3480156100f557600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166040516100a991906105b0565b34801561013a57600080fd5b504761009c565b34801561014d57600080fd5b506100d26101b7565b34801561016257600080fd5b506100d26101713660046105d2565b61021a565b34801561018257600080fd5b506100d261019136600461060a565b610362565b61019e6103bf565b600055565b6101ab6103bf565b6101b56000610433565b565b6101bf6103bf565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610217573d6000803e3d6000fd5b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156102655750825b905060008267ffffffffffffffff1660011480156102825750303b155b905081158015610290575080155b156102c7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156102fb57845468ff00000000000000001916680100000000000000001785555b610304866104bc565b6000879055831561035957845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29061035090600190610644565b60405180910390a15b50505050505050565b61036a6103bf565b6001600160a01b0381166103b65760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016103ad91906105b0565b60405180910390fd5b61021781610433565b336103f17f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146101b557336040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016103ad91906105b0565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6104c46104cd565b61021781610534565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166101b5576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61036a6104cd565b805b82525050565b60208101610552828461053c565b92915050565b805b811461021757600080fd5b803561055281610558565b60006020828403121561058557610585600080fd5b61058f8383610565565b9392505050565b60006001600160a01b038216610552565b61053e81610596565b6020810161055282846105a7565b61055a81610596565b8035610552816105be565b600080604083850312156105e8576105e8600080fd5b6105f28484610565565b915061060184602085016105c7565b90509250929050565b60006020828403121561061f5761061f600080fd5b61058f83836105c7565b600067ffffffffffffffff8216610552565b61053e81610629565b60208101610552828461063b56fea264697066735822122080f0c01e34a6bfd9ed27e9c05c50a018ef9cc6e669f767856b4c30e98b70567764736f6c634300081c0033", } // FeesABI is the input ABI used to generate the binding from. @@ -233,12 +233,12 @@ func (_Fees *FeesCallerSession) CollectedFees() (*big.Int, error) { return _Fees.Contract.CollectedFees(&_Fees.CallOpts) } -// MessageFee is a free data retrieval call binding the contract method 0xf1d44d51. +// MessageFee is a free data retrieval call binding the contract method 0x1a90a219. // -// Solidity: function messageFee(uint256 messageSize) view returns(uint256) -func (_Fees *FeesCaller) MessageFee(opts *bind.CallOpts, messageSize *big.Int) (*big.Int, error) { +// Solidity: function messageFee() view returns(uint256) +func (_Fees *FeesCaller) MessageFee(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _Fees.contract.Call(opts, &out, "messageFee", messageSize) + err := _Fees.contract.Call(opts, &out, "messageFee") if err != nil { return *new(*big.Int), err @@ -250,18 +250,18 @@ func (_Fees *FeesCaller) MessageFee(opts *bind.CallOpts, messageSize *big.Int) ( } -// MessageFee is a free data retrieval call binding the contract method 0xf1d44d51. +// MessageFee is a free data retrieval call binding the contract method 0x1a90a219. // -// Solidity: function messageFee(uint256 messageSize) view returns(uint256) -func (_Fees *FeesSession) MessageFee(messageSize *big.Int) (*big.Int, error) { - return _Fees.Contract.MessageFee(&_Fees.CallOpts, messageSize) +// Solidity: function messageFee() view returns(uint256) +func (_Fees *FeesSession) MessageFee() (*big.Int, error) { + return _Fees.Contract.MessageFee(&_Fees.CallOpts) } -// MessageFee is a free data retrieval call binding the contract method 0xf1d44d51. +// MessageFee is a free data retrieval call binding the contract method 0x1a90a219. // -// Solidity: function messageFee(uint256 messageSize) view returns(uint256) -func (_Fees *FeesCallerSession) MessageFee(messageSize *big.Int) (*big.Int, error) { - return _Fees.Contract.MessageFee(&_Fees.CallOpts, messageSize) +// Solidity: function messageFee() view returns(uint256) +func (_Fees *FeesCallerSession) MessageFee() (*big.Int, error) { + return _Fees.Contract.MessageFee(&_Fees.CallOpts) } // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. @@ -297,23 +297,23 @@ func (_Fees *FeesCallerSession) Owner() (common.Address, error) { // Initialize is a paid mutator transaction binding the contract method 0xda35a26f. // -// Solidity: function initialize(uint256 initialMessageFeePerByte, address eoaOwner) returns() -func (_Fees *FeesTransactor) Initialize(opts *bind.TransactOpts, initialMessageFeePerByte *big.Int, eoaOwner common.Address) (*types.Transaction, error) { - return _Fees.contract.Transact(opts, "initialize", initialMessageFeePerByte, eoaOwner) +// Solidity: function initialize(uint256 flatFee, address eoaOwner) returns() +func (_Fees *FeesTransactor) Initialize(opts *bind.TransactOpts, flatFee *big.Int, eoaOwner common.Address) (*types.Transaction, error) { + return _Fees.contract.Transact(opts, "initialize", flatFee, eoaOwner) } // Initialize is a paid mutator transaction binding the contract method 0xda35a26f. // -// Solidity: function initialize(uint256 initialMessageFeePerByte, address eoaOwner) returns() -func (_Fees *FeesSession) Initialize(initialMessageFeePerByte *big.Int, eoaOwner common.Address) (*types.Transaction, error) { - return _Fees.Contract.Initialize(&_Fees.TransactOpts, initialMessageFeePerByte, eoaOwner) +// Solidity: function initialize(uint256 flatFee, address eoaOwner) returns() +func (_Fees *FeesSession) Initialize(flatFee *big.Int, eoaOwner common.Address) (*types.Transaction, error) { + return _Fees.Contract.Initialize(&_Fees.TransactOpts, flatFee, eoaOwner) } // Initialize is a paid mutator transaction binding the contract method 0xda35a26f. // -// Solidity: function initialize(uint256 initialMessageFeePerByte, address eoaOwner) returns() -func (_Fees *FeesTransactorSession) Initialize(initialMessageFeePerByte *big.Int, eoaOwner common.Address) (*types.Transaction, error) { - return _Fees.Contract.Initialize(&_Fees.TransactOpts, initialMessageFeePerByte, eoaOwner) +// Solidity: function initialize(uint256 flatFee, address eoaOwner) returns() +func (_Fees *FeesTransactorSession) Initialize(flatFee *big.Int, eoaOwner common.Address) (*types.Transaction, error) { + return _Fees.Contract.Initialize(&_Fees.TransactOpts, flatFee, eoaOwner) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. @@ -339,23 +339,23 @@ func (_Fees *FeesTransactorSession) RenounceOwnership() (*types.Transaction, err // SetMessageFee is a paid mutator transaction binding the contract method 0x23aa2a9d. // -// Solidity: function setMessageFee(uint256 newMessageFeePerByte) returns() -func (_Fees *FeesTransactor) SetMessageFee(opts *bind.TransactOpts, newMessageFeePerByte *big.Int) (*types.Transaction, error) { - return _Fees.contract.Transact(opts, "setMessageFee", newMessageFeePerByte) +// Solidity: function setMessageFee(uint256 newFeeForMessage) returns() +func (_Fees *FeesTransactor) SetMessageFee(opts *bind.TransactOpts, newFeeForMessage *big.Int) (*types.Transaction, error) { + return _Fees.contract.Transact(opts, "setMessageFee", newFeeForMessage) } // SetMessageFee is a paid mutator transaction binding the contract method 0x23aa2a9d. // -// Solidity: function setMessageFee(uint256 newMessageFeePerByte) returns() -func (_Fees *FeesSession) SetMessageFee(newMessageFeePerByte *big.Int) (*types.Transaction, error) { - return _Fees.Contract.SetMessageFee(&_Fees.TransactOpts, newMessageFeePerByte) +// Solidity: function setMessageFee(uint256 newFeeForMessage) returns() +func (_Fees *FeesSession) SetMessageFee(newFeeForMessage *big.Int) (*types.Transaction, error) { + return _Fees.Contract.SetMessageFee(&_Fees.TransactOpts, newFeeForMessage) } // SetMessageFee is a paid mutator transaction binding the contract method 0x23aa2a9d. // -// Solidity: function setMessageFee(uint256 newMessageFeePerByte) returns() -func (_Fees *FeesTransactorSession) SetMessageFee(newMessageFeePerByte *big.Int) (*types.Transaction, error) { - return _Fees.Contract.SetMessageFee(&_Fees.TransactOpts, newMessageFeePerByte) +// Solidity: function setMessageFee(uint256 newFeeForMessage) returns() +func (_Fees *FeesTransactorSession) SetMessageFee(newFeeForMessage *big.Int) (*types.Transaction, error) { + return _Fees.Contract.SetMessageFee(&_Fees.TransactOpts, newFeeForMessage) } // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. diff --git a/contracts/generated/ManagementContract/ManagementContract.go b/contracts/generated/ManagementContract/ManagementContract.go index 5205e4e421..22d5738a79 100644 --- a/contracts/generated/ManagementContract/ManagementContract.go +++ b/contracts/generated/ManagementContract/ManagementContract.go @@ -62,7 +62,7 @@ type StructsValueTransferMessage struct { // ManagementContractMetaData contains all meta data concerning the ManagementContract contract. var ManagementContractMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"ImportantContractAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"messageBusAddress\",\"type\":\"address\"}],\"name\":\"LogManagementContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"rollupHash\",\"type\":\"bytes32\"}],\"name\":\"RollupAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"enclaveID\",\"type\":\"address\"}],\"name\":\"SequencerEnclaveGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"enclaveID\",\"type\":\"address\"}],\"name\":\"SequencerEnclaveRevoked\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"Signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"r\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"structStructs.HeaderCrossChainData\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"AddRollup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"Attested\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"internalType\":\"structStructs.ValueTransferMessage\",\"name\":\"_msg\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"ExtractNativeValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GetImportantContractKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"rollupHash\",\"type\":\"bytes32\"}],\"name\":\"GetRollupByHash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"Signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"name\":\"GetRollupByNumber\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"Signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"name\":\"GetUniqueForkID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"Signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"GrantSequencerEnclave\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_enclaveID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initSecret\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_genesisAttestation\",\"type\":\"string\"}],\"name\":\"InitializeNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"IsSequencerEnclave\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IsWithdrawalAvailable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"requestReport\",\"type\":\"string\"}],\"name\":\"RequestNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attesterID\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requesterID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"attesterSig\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"responseSecret\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"verifyAttester\",\"type\":\"bool\"}],\"name\":\"RespondNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RetrieveAllBridgeFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"RevokeSequencerEnclave\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"SetImportantContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_lastBatchHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"blockNum\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"crossChainHashes\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"rollupNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"forkID\",\"type\":\"bytes32\"}],\"name\":\"addCrossChainMessagesRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"importantContractAddresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"importantContractKeys\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"crossChainHashes\",\"type\":\"bytes[]\"}],\"name\":\"isBundleAvailable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"isBundleSaved\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"isWithdrawalSpent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBatchHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBatchSeqNo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"merkleMessageBus\",\"outputs\":[{\"internalType\":\"contractIMerkleTreeMessageBus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageBus\",\"outputs\":[{\"internalType\":\"contractIMessageBus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052348015600f57600080fd5b50601733601b565b608c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6152d58061009b6000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c80638129fc1c11610104578063a25eb31c116100a2578063db5d91b111610071578063db5d91b114610475578063e34fbfc8146104a1578063e874eb20146104b3578063f2fde38b146104c657600080fd5b8063a25eb31c1461042c578063a4ab2faa1461043f578063a52f433c14610452578063d4fab8871461046257600080fd5b806387059edb116100de57806387059edb146103a95780638da5cb5b146103bc57806398077e86146103ec578063a1a227fa1461040c57600080fd5b80638129fc1c1461035d5780638236a7ba14610365578063841548261461038657600080fd5b8063476657381161017c5780636a30d26c1161014b5780636a30d26c146103255780636b9707d61461033a578063715018a61461034d578063728109961461035557600080fd5b806347665738146102cb5780635371a216146102de578063568699c8146102f157806368e103831461031257600080fd5b80632f0cb9e3116101b85780632f0cb9e3146102255780633e60a22f1461025557806343348b2f14610296578063440c953b146102c257600080fd5b80620ddd27146101de57806303e72e48146101fd578063073b6ef314610212575b600080fd5b6101e7600e5481565b6040516101f491906119de565b60405180910390f35b61021061020b366004611b14565b6104d9565b005b610210610220366004611c89565b6105e1565b610248610233366004611d57565b600c6020526000908152604090205460ff1681565b6040516101f49190611d7e565b610289610263366004611d8c565b80516020818301810180516003825292820191909301209152546001600160a01b031681565b6040516101f49190611dd8565b6102486102a4366004611de6565b6001600160a01b031660009081526020819052604090205460ff1690565b6101e760055481565b6102106102d9366004611de6565b6107d8565b6102106102ec366004611e6b565b610878565b6103046102ff366004611d57565b610a1d565b6040516101f4929190611f6d565b610210610320366004611f8d565b610a73565b61032d610b17565b6040516101f49190612090565b610210610348366004611de6565b610bf0565b610210610c80565b610210610c94565b610210610d19565b610378610373366004611d57565b610ef4565b6040516101f49291906120a1565b610248610394366004611d57565b600d6020526000908152604090205460ff1681565b6103786103b7366004611d57565b610fdc565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610289565b6103ff6103fa366004611d57565b611053565b6040516101f491906120af565b600a5461041f906001600160a01b031681565b6040516101f49190612102565b61021061043a36600461213a565b6110ff565b61024861044d3660046121ac565b611207565b600454610100900460ff16610248565b6102106104703660046121fa565b611285565b610248610483366004611de6565b6001600160a01b031660009081526001602052604090205460ff1690565b6102106104af3660046122a1565b5050565b600b5461041f906001600160a01b031681565b6102106104d4366004611de6565b611361565b6104e16113b8565b60006001600160a01b03166003836040516104fc919061230b565b908152604051908190036020019020546001600160a01b03160361055857600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0161055683826123e7565b505b80600383604051610569919061230b565b90815260405190819003602001812080546001600160a01b039390931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091557f17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb5906105d590849084906124a7565b60405180910390a15050565b60008281526008602052604090205481146106175760405162461bcd60e51b815260040161060e906124f9565b60405180910390fd5b6000610685898989896040516020016106339493929190612561565b6040516020818303038152906040528051906020012086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142c92505050565b6001600160a01b03811660009081526020819052604090205490915060ff166106c05760405162461bcd60e51b815260040161060e906125d7565b600e8990556000805b87518110156107b357600b5488516001600160a01b039091169063b6aed0cb908a90849081106106fb576106fb6125e7565b602002602001015161070c90612607565b426040518363ffffffff1660e01b815260040161072a92919061263d565b600060405180830381600087803b15801561074457600080fd5b505af1158015610758573d6000803e3d6000fd5b505050508188828151811061076f5761076f6125e7565b602002602001015161078090612607565b60405160200161079192919061263d565b60408051601f19818403018152919052805160209091012091506001016106c9565b506000908152600d60205260409020805460ff19166001179055505050505050505050565b6107e06113b8565b6001600160a01b03811660009081526020819052604090205460ff166108185760405162461bcd60e51b815260040161060e906125d7565b6001600160a01b038116600090815260016020819052604091829020805460ff19169091179055517ffe64c7181f0fc60e300dc02cca368cdfa94d7ca45902de3b9a9d80070e7609369061086d908390611dd8565b60405180910390a150565b600b546040517fb201246f0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063b201246f906108c7908790879087908790600401612773565b60006040518083038186803b1580156108df57600080fd5b505afa1580156108f3573d6000803e3d6000fd5b5050505060008460405160200161090a91906127ac565b60408051601f1981840301815291815281516020928301206000818152600c90935291205490915060ff16156109525760405162461bcd60e51b815260040161060e906127ec565b6001600c60008760405160200161096991906127ac565b60408051808303601f190181529181528151602092830120835282820193909352908201600020805460ff191693151593909317909255600a546001600160a01b0316916399a3ad21916109c291908901908901611de6565b87604001356040518363ffffffff1660e01b81526004016109e49291906127fc565b600060405180830381600087803b1580156109fe57600080fd5b505af1158015610a12573d6000803e3d6000fd5b505050505050505050565b604080516060808201835260008083526020830191909152918101829052600080610a4785610fdc565b9150915081610a5c5760009590945092505050565b600094855260086020526040909420549492505050565b60045460ff1615610a965760405162461bcd60e51b815260040161060e90612864565b60048054600160ff1991821681179092556001600160a01b0387166000908152602081815260408083208054851686179055908490529081902080549092169092179055517ffe64c7181f0fc60e300dc02cca368cdfa94d7ca45902de3b9a9d80070e76093690610b08908790611dd8565b60405180910390a15050505050565b60606002805480602002602001604051908101604052809291908181526020016000905b82821015610be7578382906000526020600020018054610b5a9061232b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b869061232b565b8015610bd35780601f10610ba857610100808354040283529160200191610bd3565b820191906000526020600020905b815481529060010190602001808311610bb657829003601f168201915b505050505081526020019060010190610b3b565b50505050905090565b610bf86113b8565b6001600160a01b03811660009081526001602052604090205460ff16610c305760405162461bcd60e51b815260040161060e906128a6565b6001600160a01b03811660009081526001602052604090819020805460ff19169055517f0f279980343c7ca542fde9fa5396555068efb5cd560d9cf9c191aa2911079b479061086d908390611dd8565b610c886113b8565b610c926000611458565b565b610c9c6113b8565b600a546040517f36d2da900000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906336d2da9090610ce5903390600401611dd8565b600060405180830381600087803b158015610cff57600080fd5b505af1158015610d13573d6000803e3d6000fd5b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d645750825b905060008267ffffffffffffffff166001148015610d815750303b155b905081158015610d8f575080155b15610dc6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610dfa57845468ff00000000000000001916680100000000000000001785555b610e03336114d6565b60006005556001600955604051610e19906119c9565b604051809103906000f080158015610e35573d6000803e3d6000fd5b50600b80546001600160a01b039290921673ffffffffffffffffffffffffffffffffffffffff199283168117909155600a805490921681179091556040517fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf91610e9e91611dd8565b60405180910390a18315610eed57845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290610b08906001906128d1565b5050505050565b604080516060808201835260008083526020808401839052838501829052858252600681528482208551938401909552845483526001850180549295869493909284019190610f429061232b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6e9061232b565b8015610fbb5780601f10610f9057610100808354040283529160200191610fbb565b820191906000526020600020905b815481529060010190602001808311610f9e57829003601f168201915b50505091835250506002919091015460209091015280519094149492505050565b6040805160608082018352600080835260208301919091529181018290526000838152600760205260408120549081900361104057505060408051606081018252600080825282516020818101855282825283015291810182905290939092509050565b61104981610ef4565b9250925050915091565b6002818154811061106357600080fd5b90600052602060002001600091509050805461107e9061232b565b80601f01602080910402602001604051908101604052809291908181526020018280546110aa9061232b565b80156110f75780601f106110cc576101008083540402835291602001916110f7565b820191906000526020600020905b8154815290600101906020018083116110da57829003601f168201915b505050505081565b600061114d833561111360208601866128df565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142c92505050565b6001600160a01b03811660009081526020819052604090205490915060ff166111885760405162461bcd60e51b815260040161060e906125d7565b6001600160a01b03811660009081526001602052604090205460ff166111c05760405162461bcd60e51b815260040161060e906128a6565b6111c9836114e7565b6040517fd6555bff8670bd3008dc064c30bb56d6ac7cb14ae801e36146fe4e7c6a504a58906111fa908535906119de565b60405180910390a1505050565b600080805b835181101561126c5781848281518110611228576112286125e7565b602002602001015161123990612607565b60405160200161124a92919061263d565b60408051601f198184030181529190528051602090910120915060010161120c565b506000908152600d602052604090205460ff1692915050565b6001600160a01b03851660009081526020819052604090205460ff16806112be5760405162461bcd60e51b815260040161060e9061298c565b81156113365760006112f28787866040516020016112de939291906129c4565b60405160208183030381529060405261158b565b90506000611300828761142c565b9050876001600160a01b0316816001600160a01b0316146113335760405162461bcd60e51b815260040161060e90612a40565b50505b5050506001600160a01b039091166000908152602081905260409020805460ff191660011790555050565b6113696113b8565b6001600160a01b0381166113ac5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161060e9190611dd8565b6113b581611458565b50565b336113ea7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c9257336040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161060e9190611dd8565b60008060008061143c86866115c6565b92509250925061144c8282611613565b50909150505b92915050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6114de611715565b6113b58161177c565b8035600090815260066020526040902081906115038282612bb3565b50506009546000908152600760205260409020813590819055611527600143612bd3565b4060405160200161153992919061263d565b60408051601f19818403018152918152815160209283012060098054600090815260089094529183205580549161156f83612be6565b9190505550600554816040013511156113b55760400135600555565b60006115978251611784565b826040516020016115a9929190612bff565b604051602081830303815290604052805190602001209050919050565b600080600083516041036116005760208401516040850151606086015160001a6115f288828585611825565b95509550955050505061160c565b50508151600091506002905b9250925092565b600082600381111561162757611627612c3b565b03611630575050565b600182600381111561164457611644612c3b565b0361167b576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561168f5761168f612c3b565b036116c8576040517ffce698f700000000000000000000000000000000000000000000000000000000815261060e9082906004016119de565b60038260038111156116dc576116dc612c3b565b036104af57806040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260040161060e91906119de565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610c92576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611369611715565b60606000611791836118e7565b600101905060008167ffffffffffffffff8111156117b1576117b16119ec565b6040519080825280601f01601f1916602001820160405280156117db576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846117e5575b509392505050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561186057506000915060039050826118dd565b6000600188888888604051600081526020016040526040516118859493929190612c5a565b6020604051602081039080840390855afa1580156118a7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166118d3575060009250600191508290506118dd565b9250600091508190505b9450945094915050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611930577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061195c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061197a57662386f26fc10000830492506010015b6305f5e1008310611992576305f5e100830492506008015b61271083106119a657612710830492506004015b606483106119b8576064830492506002015b600a83106114525760010192915050565b61261080612c9083390190565b805b82525050565b6020810161145282846119d6565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715611a2857611a286119ec565b6040525050565b6000611a3a60405190565b9050611a468282611a02565b919050565b600067ffffffffffffffff821115611a6557611a656119ec565b601f19601f83011660200192915050565b82818337506000910152565b6000611a95611a9084611a4b565b611a2f565b9050828152838383011115611aac57611aac600080fd5b611aba836020830184611a76565b9392505050565b600082601f830112611ad557611ad5600080fd5b611aba83833560208501611a82565b60006001600160a01b038216611452565b611afe81611ae4565b81146113b557600080fd5b803561145281611af5565b60008060408385031215611b2a57611b2a600080fd5b823567ffffffffffffffff811115611b4457611b44600080fd5b611b5085828601611ac1565b925050611b608460208501611b09565b90509250929050565b80611afe565b803561145281611b69565b600067ffffffffffffffff821115611b9457611b946119ec565b5060209081020190565b6000611bac611a9084611b7a565b83815290506020808201908402830185811115611bcb57611bcb600080fd5b835b81811015611c0a57803567ffffffffffffffff811115611bef57611bef600080fd5b611bfb88828801611ac1565b84525060209283019201611bcd565b5050509392505050565b600082601f830112611c2857611c28600080fd5b611aba83833560208501611b9e565b60008083601f840112611c4c57611c4c600080fd5b50813567ffffffffffffffff811115611c6757611c67600080fd5b602083019150836001820283011115611c8257611c82600080fd5b9250929050565b60008060008060008060008060e0898b031215611ca857611ca8600080fd5b611cb28a8a611b6f565b9750611cc18a60208b01611b6f565b9650611cd08a60408b01611b6f565b9550606089013567ffffffffffffffff811115611cef57611cef600080fd5b611cfb8b828c01611c14565b955050608089013567ffffffffffffffff811115611d1b57611d1b600080fd5b611d278b828c01611c37565b9450945050611d398a60a08b01611b6f565b9150611d488a60c08b01611b6f565b90509295985092959890939650565b600060208284031215611d6c57611d6c600080fd5b611aba8383611b6f565b8015156119d8565b602081016114528284611d76565b600060208284031215611da157611da1600080fd5b813567ffffffffffffffff811115611dbb57611dbb600080fd5b611dc784828501611ac1565b949350505050565b6119d881611ae4565b602081016114528284611dcf565b600060208284031215611dfb57611dfb600080fd5b611aba8383611b09565b600060808284031215611e1a57611e1a600080fd5b50919050565b60008083601f840112611e3557611e35600080fd5b50813567ffffffffffffffff811115611e5057611e50600080fd5b602083019150836020820283011115611c8257611c82600080fd5b60008060008060c08587031215611e8457611e84600080fd5b611e8e8686611e05565b9350608085013567ffffffffffffffff811115611ead57611ead600080fd5b611eb987828801611e20565b9350935050611ecb8660a08701611b6f565b905092959194509250565b60005b83811015611ef1578181015183820152602001611ed9565b50506000910152565b6000611f04825190565b808452602084019350611f1b818560208601611ed6565b601f01601f19169290920192915050565b80516000906060840190611f4085826119d6565b5060208301518482036020860152611f588282611efa565b915050604083015161181d60408601826119d6565b60408101611f7b82856119d6565b8181036020830152611dc78184611f2c565b600080600080600060608688031215611fa857611fa8600080fd5b611fb28787611b09565b9450602086013567ffffffffffffffff811115611fd157611fd1600080fd5b611fdd88828901611c37565b9450945050604086013567ffffffffffffffff811115611fff57611fff600080fd5b61200b88828901611c37565b92509250509295509295909350565b6000611aba8383611efa565b60200190565b6000612036825190565b808452602084019350836020820285016120508560200190565b60005b84811015612084578383038852815161206c848261201a565b93505060208201602098909801979150600101612053565b50909695505050505050565b60208082528101611aba818461202c565b60408101611f7b8285611d76565b60208082528101611aba8184611efa565b60006114526001600160a01b0383166120d7565b90565b6001600160a01b031690565b6000611452826120c0565b6000611452826120e3565b6119d8816120ee565b6020810161145282846120f9565b600060608284031215611e1a57611e1a600080fd5b600060208284031215611e1a57611e1a600080fd5b6000806040838503121561215057612150600080fd5b823567ffffffffffffffff81111561216a5761216a600080fd5b61217685828601612110565b925050602083013567ffffffffffffffff81111561219657612196600080fd5b6121a285828601612125565b9150509250929050565b6000602082840312156121c1576121c1600080fd5b813567ffffffffffffffff8111156121db576121db600080fd5b611dc784828501611c14565b801515611afe565b8035611452816121e7565b600080600080600060a0868803121561221557612215600080fd5b61221f8787611b09565b945061222e8760208801611b09565b9350604086013567ffffffffffffffff81111561224d5761224d600080fd5b61225988828901611ac1565b935050606086013567ffffffffffffffff81111561227957612279600080fd5b61228588828901611ac1565b92505061229587608088016121ef565b90509295509295909350565b600080602083850312156122b7576122b7600080fd5b823567ffffffffffffffff8111156122d1576122d1600080fd5b6122dd85828601611c37565b92509250509250929050565b60006122f3825190565b612301818560208601611ed6565b9290920192915050565b61145281836122e9565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061233f57607f821691505b602082108103611e1a57611e1a612315565b60006114526120d48381565b61236683612351565b815460001960089490940293841b1916921b91909117905550565b600061238e81848461235d565b505050565b818110156104af576123a6600082612381565b600101612393565b601f82111561238e576000818152602090206020601f850104810160208510156123d55750805b610eed6020601f860104830182612393565b815167ffffffffffffffff811115612401576124016119ec565b61240b825461232b565b6124168282856123ae565b506020601f82116001811461244b57600083156124335750848201515b600019600885021c1981166002850217855550610eed565b600084815260208120601f198516915b8281101561247b578785015182556020948501946001909201910161245b565b50848210156124985783870151600019601f87166008021c191681555b50505050600202600101905550565b604080825281016124b88185611efa565b9050611aba6020830184611dcf565b600e8152602081017f496e76616c696420666f726b494400000000000000000000000000000000000081529050612026565b60208082528101611452816124c7565b6000612513825190565b8084526020840193508360208202850161252d8560200190565b60005b848110156120845783830388528151612549848261201a565b93505060208201602098909801979150600101612530565b6080810161256f82876119d6565b61257c60208301866119d6565b61258960408301856119d6565b818103606083015261259b8184612509565b9695505050505050565b60168152602081017f656e636c6176654944206e6f742061747465737465640000000000000000000081529050612026565b60208082528101611452816125a5565b634e487b7160e01b600052603260045260246000fd5b6000611452825190565b6000612611825190565b6020830161261e816125fd565b9250506020811015611e1a576000196020919091036008021b16919050565b6040810161264b82856119d6565b611aba60208301846119d6565b5060006114526020830183611b09565b5060006114526020830183611b6f565b67ffffffffffffffff8116611afe565b803561145281612678565b5060006114526020830183612688565b67ffffffffffffffff81166119d8565b6126bd8180612658565b6126c78382611dcf565b506126d56020820182612658565b6126e26020840182611dcf565b506126f06040820182612668565b6126fd60408401826119d6565b5061270b6060820182612693565b61238e60608401826126a3565b82818337505050565b81835260208301925060007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561275c5761275c600080fd5b60208302925061276d838584612718565b50500190565b60c0810161278182876126b3565b8181036080830152612794818587612721565b90506127a360a08301846119d6565b95945050505050565b6080810161145282846126b3565b60188152602081017f7769746864726177616c20616c7265616479207370656e74000000000000000081529050612026565b60208082528101611452816127ba565b6040810161264b8285611dcf565b60228152602081017f6e6574776f726b2073656372657420616c726561647920696e697469616c697a81527f6564000000000000000000000000000000000000000000000000000000000000602082015290505b60400190565b602080825281016114528161280a565b60198152602081017f656e636c6176654944206e6f7420612073657175656e6365720000000000000081529050612026565b6020808252810161145281612874565b600067ffffffffffffffff8216611452565b6119d8816128b6565b6020810161145282846128c8565b6000808335601e19368590030181126128fa576128fa600080fd5b8301915050803567ffffffffffffffff81111561291957612919600080fd5b602082019150600181023603821315611c8257611c82600080fd5b60238152602081017f726573706f6e64696e67206174746573746572206973206e6f7420617474657381527f74656400000000000000000000000000000000000000000000000000000000006020820152905061285e565b6020808252810161145281612934565b60006114528260601b90565b60006114528261299c565b6119d86129bf82611ae4565b6129a8565b6129ce81856129b3565b6014016129db81846129b3565b601401611dc781836122e9565b602c8152602081017f63616c63756c61746564206164647265737320616e642061747465737465724981527f4420646f6e74206d6174636800000000000000000000000000000000000000006020820152905061285e565b60208082528101611452816129e8565b6000813561145281611b69565b600081611452565b612a6e82612a5d565b612a7a6120d482612a5d565b8255505050565b8267ffffffffffffffff811115612a9a57612a9a6119ec565b612aa4825461232b565b612aaf8282856123ae565b506000601f821160018114612ae45760008315612acc5750848201355b600019600885021c1981166002850217855550612b3e565b600084815260209020601f19841690835b82811015612b155787850135825560209485019460019092019101612af5565b5084821015612b32576000196008601f8716021c19878501351681555b50506001600284020184555b505050505050565b61238e838383612a81565b612b5a82612351565b80612a7a565b8180612b6b81612a50565b9050612b778184612a65565b5050612b8660208301836128df565b612b94818360018601612b46565b50506040820180612ba482612a50565b9050610d138160028501612b51565b6104af8282612b60565b634e487b7160e01b600052601160045260246000fd5b8181038181111561145257611452612bbd565b600060018201612bf857612bf8612bbd565b5060010190565b7f19457468657265756d205369676e6564204d6573736167653a0a0000000000008152601a01612c2f81846122e9565b9050611aba81836122e9565b634e487b7160e01b600052602160045260246000fd5b60ff81166119d8565b60808101612c6882876119d6565b612c756020830186612c51565b612c8260408301856119d6565b6127a360608301846119d656fe608060405234801561001057600080fd5b5061001a33610027565b610022610098565b61014a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100e85760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101475780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6124b7806101596000396000f3fe6080604052600436106100f75760003560e01c80639730886d1161008a578063b201246f11610059578063b201246f1461033c578063b6aed0cb1461035c578063e138a8d21461037c578063f2fde38b1461039c5761016b565b80639730886d146102bc57806399a3ad21146102dc578063ab53bddc146102fc578063b1454caa1461031c5761016b565b806336d2da90116100c657806336d2da9014610222578063485cc95514610242578063715018a6146102625780638da5cb5b146102775761016b565b80630fcfbd111461018c5780630fe9188e146101c257806333a88c72146101e2578063346633fb1461020f5761016b565b3661016b576040517f346633fb000000000000000000000000000000000000000000000000000000008152309063346633fb90349061013c9033908390600401611235565b6000604051808303818588803b15801561015557600080fd5b505af1158015610169573d6000803e3d6000fd5b005b60405162461bcd60e51b815260040161018390611284565b60405180910390fd5b34801561019857600080fd5b506101ac6101a73660046112af565b6103bc565b6040516101b991906112ea565b60405180910390f35b3480156101ce57600080fd5b506101696101dd366004611310565b61041b565b3480156101ee57600080fd5b506102026101fd3660046112af565b610461565b6040516101b99190611337565b61016961021d366004611359565b6104b3565b34801561022e57600080fd5b5061016961023d366004611391565b610602565b34801561024e57600080fd5b5061016961025d3660046113b0565b610681565b34801561026e57600080fd5b506101696107ec565b34801561028357600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166040516101b991906113df565b3480156102c857600080fd5b506101696102d73660046113ed565b610800565b3480156102e857600080fd5b506101696102f7366004611359565b61096c565b34801561030857600080fd5b50610169610317366004611359565b6109ec565b61032f61032a3660046114b6565b610ab5565b6040516101b99190611543565b34801561034857600080fd5b506101696103573660046115b1565b610bbd565b34801561036857600080fd5b5061016961037736600461161c565b610cbe565b34801561038857600080fd5b5061016961039736600461163c565b610d04565b3480156103a857600080fd5b506101696103b7366004611391565b610e4f565b600080826040516020016103d09190611858565b60408051601f198184030181529181528151602092830120600081815292839052912054909150806104145760405162461bcd60e51b8152600401610183906118a7565b9392505050565b610423610ea6565b60008181526004602052604081205490036104505760405162461bcd60e51b8152600401610183906118e9565b600090815260046020526040812055565b600080826040516020016104759190611858565b60408051601f19818403018152918152815160209283012060008181529283905291205490915080158015906104ab5750428111155b949350505050565b6000341180156104c257508034145b6104de5760405162461bcd60e51b815260040161018390611951565b60035434906001600160a01b0316156105a25760006104fb610f1a565b90508034101561051d5760405162461bcd60e51b815260040161018390611991565b61052781346119b7565b6003546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114610579576040519150601f19603f3d011682016040523d82523d6000602084013e61057e565b606091505b505090508061059f5760405162461bcd60e51b815260040161018390611a22565b50505b60006105ad33610fab565b9050836001600160a01b0316336001600160a01b03167f50c536ac33a920f00755865b831d17bf4cff0b2e0345f65b16d52bfc004068b684846040516105f4929190611a32565b60405180910390a350505050565b61060a610ea6565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610657576040519150601f19603f3d011682016040523d82523d6000602084013e61065c565b606091505b505090508061067d5760405162461bcd60e51b815260040161018390611a7f565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156106cc5750825b905060008267ffffffffffffffff1660011480156106e95750303b155b9050811580156106f7575080155b1561072e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561076257845468ff00000000000000001916680100000000000000001785555b61076b87611009565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881617905583156107e357845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906107da90600190611ab3565b60405180910390a15b50505050505050565b6107f4610ea6565b6107fe600061101a565b565b600061080d600130611ac1565b90506108407f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806108675750336001600160a01b038216145b6108835760405162461bcd60e51b815260040161018390611b16565b600061088f8342611b26565b90506000846040516020016108a49190611858565b60408051601f198184030181529181528151602092830120600081815292839052912054909150156108e85760405162461bcd60e51b815260040161018390611b91565b60008181526020818152604082208490556001919061090990880188611391565b6001600160a01b0316815260208101919091526040016000908120906109356080880160608901611ba1565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208691600402016107e38282611fdf565b610974610ea6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146109c1576040519150601f19603f3d011682016040523d82523d6000602084013e6109c6565b606091505b50509050806109e75760405162461bcd60e51b815260040161018390611a7f565b505050565b60006109f9600130611ac1565b9050610a2c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610a535750336001600160a01b038216145b610a6f5760405162461bcd60e51b815260040161018390611b16565b826001600160a01b03167fcd9850463422a7449c406a036e35e5edb6fbe35a64c9f12a2354be98a750c0d383604051610aa891906112ea565b60405180910390a2505050565b6003546000906001600160a01b031615610b6657610ad283611098565b341015610af15760405162461bcd60e51b815260040161018390612041565b6003546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610b3e576040519150601f19603f3d011682016040523d82523d6000602084013e610b43565b606091505b5050905080610b645760405162461bcd60e51b815260040161018390611a22565b505b610b6f33610fab565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef77593733828888888888604051610bac9796959493929190612051565b60405180910390a195945050505050565b6000818152600460205260408120549003610bea5760405162461bcd60e51b81526004016101839061210c565b600081815260046020526040902054421015610c185760405162461bcd60e51b815260040161018390612158565b600084604051602001610c2b91906121dd565b60405160208183030381529060405280519060200120604051602001610c51919061221d565b604051602081830303815290604052805190602001209050610c9b84848484604051602001610c80919061223c565b6040516020818303038152906040528051906020012061111a565b610cb75760405162461bcd60e51b8152600401610183906122a6565b5050505050565b610cc6610ea6565b60008281526004602052604090205415610cf25760405162461bcd60e51b81526004016101839061230e565b60009182526004602052604090912055565b6000818152600460205260408120549003610d315760405162461bcd60e51b81526004016101839061210c565b600081815260046020526040902054421015610d5f5760405162461bcd60e51b815260040161018390612158565b6000610d6e6020860186611391565b610d7e604087016020880161231e565b610d8e6060880160408901611ba1565b610d9e6080890160608a01611ba1565b610dab60808a018a611cf8565b610dbb60c08c0160a08d0161233d565b604051602001610dd19796959493929190612051565b604051602081830303815290604052805190602001209050600081604051602001610dfc919061238e565b604051602081830303815290604052805190602001209050610e2b85858584604051602001610c80919061223c565b610e475760405162461bcd60e51b8152600401610183906123f6565b505050505050565b610e57610ea6565b6001600160a01b038116610e9a5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161018391906113df565b610ea38161101a565b50565b33610ed87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146107fe57336040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161018391906113df565b6003546040517ff1d44d510000000000000000000000000000000000000000000000000000000081526000916001600160a01b03169063f1d44d5190610f659060209060040161240f565b602060405180830381865afa158015610f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa69190612428565b905090565b6001600160a01b0381166000908152600260205260408120805467ffffffffffffffff169160019190610fde8385612447565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b611011611132565b610ea381611199565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546000906001600160a01b031663f1d44d516110b7601185611b26565b6040518263ffffffff1660e01b81526004016110d391906112ea565b602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111149190612428565b92915050565b6000826111288686856111a1565b1495945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166107fe576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e57611132565b600081815b848110156111da576111d0828787848181106111c4576111c461246b565b905060200201356111e3565b91506001016111a6565b50949350505050565b60008183106111ff576000828152602084905260409020610414565b5060009182526020526040902090565b60006001600160a01b038216611114565b6112298161120f565b82525050565b80611229565b604081016112438285611220565b610414602083018461122f565b600b8152602081017f756e737570706f72746564000000000000000000000000000000000000000000815290505b60200190565b6020808252810161111481611250565b600060c082840312156112a9576112a9600080fd5b50919050565b6000602082840312156112c4576112c4600080fd5b813567ffffffffffffffff8111156112de576112de600080fd5b6104ab84828501611294565b60208101611114828461122f565b805b8114610ea357600080fd5b8035611114816112f8565b60006020828403121561132557611325600080fd5b6104148383611305565b801515611229565b60208101611114828461132f565b6112fa8161120f565b803561111481611345565b6000806040838503121561136f5761136f600080fd5b611379848461134e565b91506113888460208501611305565b90509250929050565b6000602082840312156113a6576113a6600080fd5b610414838361134e565b600080604083850312156113c6576113c6600080fd5b6113d0848461134e565b9150611388846020850161134e565b602081016111148284611220565b6000806040838503121561140357611403600080fd5b823567ffffffffffffffff81111561141d5761141d600080fd5b61142985828601611294565b9250506113888460208501611305565b63ffffffff81166112fa565b803561111481611439565b60008083601f84011261146557611465600080fd5b50813567ffffffffffffffff81111561148057611480600080fd5b60208301915083600182028301111561149b5761149b600080fd5b9250929050565b60ff81166112fa565b8035611114816114a2565b6000806000806000608086880312156114d1576114d1600080fd5b6114db8787611445565b94506114ea8760208801611445565b9350604086013567ffffffffffffffff81111561150957611509600080fd5b61151588828901611450565b935093505061152787606088016114ab565b90509295509295909350565b67ffffffffffffffff8116611229565b602081016111148284611533565b6000608082840312156112a9576112a9600080fd5b60008083601f84011261157b5761157b600080fd5b50813567ffffffffffffffff81111561159657611596600080fd5b60208301915083602082028301111561149b5761149b600080fd5b60008060008060c085870312156115ca576115ca600080fd5b6115d48686611551565b9350608085013567ffffffffffffffff8111156115f3576115f3600080fd5b6115ff87828801611566565b93509350506116118660a08701611305565b905092959194509250565b6000806040838503121561163257611632600080fd5b6113798484611305565b6000806000806060858703121561165557611655600080fd5b843567ffffffffffffffff81111561166f5761166f600080fd5b61167b87828801611294565b945050602085013567ffffffffffffffff81111561169b5761169b600080fd5b6116a787828801611566565b93509350506116118660408701611305565b506000611114602083018361134e565b67ffffffffffffffff81166112fa565b8035611114816116c9565b50600061111460208301836116d9565b5060006111146020830183611445565b63ffffffff8116611229565b6000808335601e193685900301811261172b5761172b600080fd5b830160208101925035905067ffffffffffffffff81111561174e5761174e600080fd5b3681900382131561149b5761149b600080fd5b82818337506000910152565b818352602083019250611781828483611761565b50601f01601f19160190565b50600061111460208301836114ab565b60ff8116611229565b600060c083016117b683806116b9565b6117c08582611220565b506117ce60208401846116e4565b6117db6020860182611533565b506117e960408401846116f4565b6117f66040860182611704565b5061180460608401846116f4565b6118116060860182611704565b5061181f6080840184611710565b858303608087015261183283828461176d565b9250505061184360a084018461178d565b61185060a086018261179d565b509392505050565b6020808252810161041481846117a6565b60218152602081017f54686973206d65737361676520776173206e65766572207375626d69747465648152601760f91b602082015290505b60400190565b6020808252810161111481611869565b601a8152602081017f537461746520726f6f7420646f6573206e6f742065786973742e0000000000008152905061127e565b60208082528101611114816118b7565b60308152602081017f417474656d7074696e6720746f2073656e642076616c756520776974686f757481527f2070726f766964696e6720457468657200000000000000000000000000000000602082015290506118a1565b60208082528101611114816118f9565b60208082527f496e73756666696369656e742066756e647320746f2073656e642076616c7565910190815261127e565b6020808252810161111481611961565b634e487b7160e01b600052601160045260246000fd5b81810381811115611114576111146119a1565b60248152602081017f4661696c656420746f2073656e64206665657320746f206665657320636f6e7481527f7261637400000000000000000000000000000000000000000000000000000000602082015290506118a1565b60208082528101611114816119ca565b60408101611a40828561122f565b6104146020830184611533565b60148152602081017f6661696c65642073656e64696e672076616c75650000000000000000000000008152905061127e565b6020808252810161111481611a4d565b600061111482611a9d565b90565b67ffffffffffffffff1690565b61122981611a8f565b602081016111148284611aaa565b6001600160a01b03918216919081169082820390811115611114576111146119a1565b60118152602081017f4e6f74206f776e6572206f722073656c660000000000000000000000000000008152905061127e565b6020808252810161111481611ae4565b80820180821115611114576111146119a1565b60218152602081017f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636581527f2100000000000000000000000000000000000000000000000000000000000000602082015290506118a1565b6020808252810161111481611b39565b600060208284031215611bb657611bb6600080fd5b6104148383611445565b6000813561111481611345565b60006001600160a01b03835b81169019929092169190911792915050565b60006111148261120f565b600061111482611beb565b611c0a82611bf6565b611c15818354611bcd565b8255505050565b60008135611114816116c9565b60007bffffffffffffffff0000000000000000000000000000000000000000611bd98460a01b90565b600061111467ffffffffffffffff8316611a9d565b611c7082611c52565b611c15818354611c29565b6000813561111481611439565b60007fffffffff00000000000000000000000000000000000000000000000000000000611bd98460e01b90565b600063ffffffff8216611114565b611ccc82611cb5565b611c15818354611c88565b600063ffffffff83611bd9565b611ced82611cb5565b611c15818354611cd7565b6000808335601e1936859003018112611d1357611d13600080fd5b8301915050803567ffffffffffffffff811115611d3257611d32600080fd5b60208201915060018102360382131561149b5761149b600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b600281046001821680611d8d57607f821691505b6020821081036112a9576112a9611d63565b6000611114611a9a8381565b611db483611d9f565b815460001960089490940293841b1916921b91909117905550565b60006109e7818484611dab565b8181101561067d57611def600082611dcf565b600101611ddc565b601f8211156109e7576000818152602090206020601f85010481016020851015611e1e5750805b610cb76020601f860104830182611ddc565b8267ffffffffffffffff811115611e4957611e49611d4d565b611e538254611d79565b611e5e828285611df7565b506000601f821160018114611e935760008315611e7b5750848201355b600019600885021c1981166002850217855550610e47565b600084815260209020601f19841690835b82811015611ec45787850135825560209485019460019092019101611ea4565b5084821015611ee1576000196008601f8716021c19878501351681555b5050505060020260010190555050565b6109e7838383611e30565b60008135611114816114a2565b600060ff8216611114565b611f1d82611f09565b815460ff191660ff821617611c15565b808280611f3981611bc0565b9050611f458184611c01565b50506020830180611f5582611c1c565b9050611f618184611c67565b50506040830180611f7182611c7b565b9050611f7d8184611cc3565b5050506060820180611f8e82611c7b565b9050611f9d8160018501611ce4565b5050611fac6080830183611cf8565b611fba818360028601611ef1565b505060a0820180611fca82611efc565b9050611fd98160038501611f14565b50505050565b61067d8282611f2d565b60258152602081017f496e73756666696369656e742066756e647320746f207075626c697368206d6581527f7373616765000000000000000000000000000000000000000000000000000000602082015290506118a1565b6020808252810161111481611fe9565b60c0810161205f828a611220565b61206c6020830189611533565b6120796040830188611704565b6120866060830187611704565b818103608083015261209981858761176d565b90506120a860a083018461179d565b98975050505050505050565b602a8152602081017f526f6f74206973206e6f74207075626c6973686564206f6e2074686973206d6581527f7373616765206275732e00000000000000000000000000000000000000000000602082015290506118a1565b60208082528101611114816120b4565b60218152602081017f526f6f74206973206e6f7420636f6e736964657265642066696e616c207965748152601760f91b602082015290506118a1565b602080825281016111148161211c565b5060006111146020830183611305565b61218281806116b9565b61218c8382611220565b5061219a60208201826116b9565b6121a76020840182611220565b506121b56040820182612168565b6121c2604084018261122f565b506121d060608201826116e4565b6109e76060840182611533565b608081016111148284612178565b60018152602081017f76000000000000000000000000000000000000000000000000000000000000008152905061127e565b6040808252810161222d816121eb565b9050611114602083018461122f565b612246818361122f565b602001919050565b60338152602081017f496e76616c696420696e636c7573696f6e2070726f6f6620666f722076616c7581527f65207472616e73666572206d6573736167652e00000000000000000000000000602082015290506118a1565b602080825281016111148161224e565b60258152602081017f526f6f7420616c726561647920616464656420746f20746865206d657373616781527f6520627573000000000000000000000000000000000000000000000000000000602082015290506118a1565b60208082528101611114816122b6565b60006020828403121561233357612333600080fd5b61041483836116d9565b60006020828403121561235257612352600080fd5b61041483836114ab565b60018152602081017f6d000000000000000000000000000000000000000000000000000000000000008152905061127e565b6040808252810161222d8161235c565b60308152602081017f496e76616c696420696e636c7573696f6e2070726f6f6620666f722063726f7381527f7320636861696e206d6573736167652e00000000000000000000000000000000602082015290506118a1565b602080825281016111148161239e565b61122981611d9f565b602081016111148284612406565b8051611114816112f8565b60006020828403121561243d5761243d600080fd5b610414838361241d565b67ffffffffffffffff918216919081169082820190811115611114576111146119a1565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220d3bd88e19eb5e0e03473c1583cfcd854a520d8329b1baacacdfe3579c28bb44c64736f6c634300081c0033a264697066735822122067c1d724baa69950e535db372694ee0ee6f4975aa320c837a992939990b4657764736f6c634300081c0033", + Bin: "0x6080604052348015600f57600080fd5b50601733601b565b608c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6152738061009b6000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c80638129fc1c11610104578063a25eb31c116100a2578063db5d91b111610071578063db5d91b114610475578063e34fbfc8146104a1578063e874eb20146104b3578063f2fde38b146104c657600080fd5b8063a25eb31c1461042c578063a4ab2faa1461043f578063a52f433c14610452578063d4fab8871461046257600080fd5b806387059edb116100de57806387059edb146103a95780638da5cb5b146103bc57806398077e86146103ec578063a1a227fa1461040c57600080fd5b80638129fc1c1461035d5780638236a7ba14610365578063841548261461038657600080fd5b8063476657381161017c5780636a30d26c1161014b5780636a30d26c146103255780636b9707d61461033a578063715018a61461034d578063728109961461035557600080fd5b806347665738146102cb5780635371a216146102de578063568699c8146102f157806368e103831461031257600080fd5b80632f0cb9e3116101b85780632f0cb9e3146102255780633e60a22f1461025557806343348b2f14610296578063440c953b146102c257600080fd5b80620ddd27146101de57806303e72e48146101fd578063073b6ef314610212575b600080fd5b6101e7600e5481565b6040516101f491906119de565b60405180910390f35b61021061020b366004611b14565b6104d9565b005b610210610220366004611c89565b6105e1565b610248610233366004611d57565b600c6020526000908152604090205460ff1681565b6040516101f49190611d7e565b610289610263366004611d8c565b80516020818301810180516003825292820191909301209152546001600160a01b031681565b6040516101f49190611dd8565b6102486102a4366004611de6565b6001600160a01b031660009081526020819052604090205460ff1690565b6101e760055481565b6102106102d9366004611de6565b6107d8565b6102106102ec366004611e6b565b610878565b6103046102ff366004611d57565b610a1d565b6040516101f4929190611f6d565b610210610320366004611f8d565b610a73565b61032d610b17565b6040516101f49190612090565b610210610348366004611de6565b610bf0565b610210610c80565b610210610c94565b610210610d19565b610378610373366004611d57565b610ef4565b6040516101f49291906120a1565b610248610394366004611d57565b600d6020526000908152604090205460ff1681565b6103786103b7366004611d57565b610fdc565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610289565b6103ff6103fa366004611d57565b611053565b6040516101f491906120af565b600a5461041f906001600160a01b031681565b6040516101f49190612102565b61021061043a36600461213a565b6110ff565b61024861044d3660046121ac565b611207565b600454610100900460ff16610248565b6102106104703660046121fa565b611285565b610248610483366004611de6565b6001600160a01b031660009081526001602052604090205460ff1690565b6102106104af3660046122a1565b5050565b600b5461041f906001600160a01b031681565b6102106104d4366004611de6565b611361565b6104e16113b8565b60006001600160a01b03166003836040516104fc919061230b565b908152604051908190036020019020546001600160a01b03160361055857600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0161055683826123e7565b505b80600383604051610569919061230b565b90815260405190819003602001812080546001600160a01b039390931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091557f17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb5906105d590849084906124a7565b60405180910390a15050565b60008281526008602052604090205481146106175760405162461bcd60e51b815260040161060e906124f9565b60405180910390fd5b6000610685898989896040516020016106339493929190612561565b6040516020818303038152906040528051906020012086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142c92505050565b6001600160a01b03811660009081526020819052604090205490915060ff166106c05760405162461bcd60e51b815260040161060e906125d7565b600e8990556000805b87518110156107b357600b5488516001600160a01b039091169063b6aed0cb908a90849081106106fb576106fb6125e7565b602002602001015161070c90612607565b426040518363ffffffff1660e01b815260040161072a92919061263d565b600060405180830381600087803b15801561074457600080fd5b505af1158015610758573d6000803e3d6000fd5b505050508188828151811061076f5761076f6125e7565b602002602001015161078090612607565b60405160200161079192919061263d565b60408051601f19818403018152919052805160209091012091506001016106c9565b506000908152600d60205260409020805460ff19166001179055505050505050505050565b6107e06113b8565b6001600160a01b03811660009081526020819052604090205460ff166108185760405162461bcd60e51b815260040161060e906125d7565b6001600160a01b038116600090815260016020819052604091829020805460ff19169091179055517ffe64c7181f0fc60e300dc02cca368cdfa94d7ca45902de3b9a9d80070e7609369061086d908390611dd8565b60405180910390a150565b600b546040517fb201246f0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063b201246f906108c7908790879087908790600401612773565b60006040518083038186803b1580156108df57600080fd5b505afa1580156108f3573d6000803e3d6000fd5b5050505060008460405160200161090a91906127ac565b60408051601f1981840301815291815281516020928301206000818152600c90935291205490915060ff16156109525760405162461bcd60e51b815260040161060e906127ec565b6001600c60008760405160200161096991906127ac565b60408051808303601f190181529181528151602092830120835282820193909352908201600020805460ff191693151593909317909255600a546001600160a01b0316916399a3ad21916109c291908901908901611de6565b87604001356040518363ffffffff1660e01b81526004016109e49291906127fc565b600060405180830381600087803b1580156109fe57600080fd5b505af1158015610a12573d6000803e3d6000fd5b505050505050505050565b604080516060808201835260008083526020830191909152918101829052600080610a4785610fdc565b9150915081610a5c5760009590945092505050565b600094855260086020526040909420549492505050565b60045460ff1615610a965760405162461bcd60e51b815260040161060e90612864565b60048054600160ff1991821681179092556001600160a01b0387166000908152602081815260408083208054851686179055908490529081902080549092169092179055517ffe64c7181f0fc60e300dc02cca368cdfa94d7ca45902de3b9a9d80070e76093690610b08908790611dd8565b60405180910390a15050505050565b60606002805480602002602001604051908101604052809291908181526020016000905b82821015610be7578382906000526020600020018054610b5a9061232b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b869061232b565b8015610bd35780601f10610ba857610100808354040283529160200191610bd3565b820191906000526020600020905b815481529060010190602001808311610bb657829003601f168201915b505050505081526020019060010190610b3b565b50505050905090565b610bf86113b8565b6001600160a01b03811660009081526001602052604090205460ff16610c305760405162461bcd60e51b815260040161060e906128a6565b6001600160a01b03811660009081526001602052604090819020805460ff19169055517f0f279980343c7ca542fde9fa5396555068efb5cd560d9cf9c191aa2911079b479061086d908390611dd8565b610c886113b8565b610c926000611458565b565b610c9c6113b8565b600a546040517f36d2da900000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906336d2da9090610ce5903390600401611dd8565b600060405180830381600087803b158015610cff57600080fd5b505af1158015610d13573d6000803e3d6000fd5b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610d645750825b905060008267ffffffffffffffff166001148015610d815750303b155b905081158015610d8f575080155b15610dc6576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610dfa57845468ff00000000000000001916680100000000000000001785555b610e03336114d6565b60006005556001600955604051610e19906119c9565b604051809103906000f080158015610e35573d6000803e3d6000fd5b50600b80546001600160a01b039290921673ffffffffffffffffffffffffffffffffffffffff199283168117909155600a805490921681179091556040517fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf91610e9e91611dd8565b60405180910390a18315610eed57845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290610b08906001906128d1565b5050505050565b604080516060808201835260008083526020808401839052838501829052858252600681528482208551938401909552845483526001850180549295869493909284019190610f429061232b565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6e9061232b565b8015610fbb5780601f10610f9057610100808354040283529160200191610fbb565b820191906000526020600020905b815481529060010190602001808311610f9e57829003601f168201915b50505091835250506002919091015460209091015280519094149492505050565b6040805160608082018352600080835260208301919091529181018290526000838152600760205260408120549081900361104057505060408051606081018252600080825282516020818101855282825283015291810182905290939092509050565b61104981610ef4565b9250925050915091565b6002818154811061106357600080fd5b90600052602060002001600091509050805461107e9061232b565b80601f01602080910402602001604051908101604052809291908181526020018280546110aa9061232b565b80156110f75780601f106110cc576101008083540402835291602001916110f7565b820191906000526020600020905b8154815290600101906020018083116110da57829003601f168201915b505050505081565b600061114d833561111360208601866128df565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061142c92505050565b6001600160a01b03811660009081526020819052604090205490915060ff166111885760405162461bcd60e51b815260040161060e906125d7565b6001600160a01b03811660009081526001602052604090205460ff166111c05760405162461bcd60e51b815260040161060e906128a6565b6111c9836114e7565b6040517fd6555bff8670bd3008dc064c30bb56d6ac7cb14ae801e36146fe4e7c6a504a58906111fa908535906119de565b60405180910390a1505050565b600080805b835181101561126c5781848281518110611228576112286125e7565b602002602001015161123990612607565b60405160200161124a92919061263d565b60408051601f198184030181529190528051602090910120915060010161120c565b506000908152600d602052604090205460ff1692915050565b6001600160a01b03851660009081526020819052604090205460ff16806112be5760405162461bcd60e51b815260040161060e9061298c565b81156113365760006112f28787866040516020016112de939291906129c4565b60405160208183030381529060405261158b565b90506000611300828761142c565b9050876001600160a01b0316816001600160a01b0316146113335760405162461bcd60e51b815260040161060e90612a40565b50505b5050506001600160a01b039091166000908152602081905260409020805460ff191660011790555050565b6113696113b8565b6001600160a01b0381166113ac5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161060e9190611dd8565b6113b581611458565b50565b336113ea7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c9257336040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161060e9190611dd8565b60008060008061143c86866115c6565b92509250925061144c8282611613565b50909150505b92915050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6114de611715565b6113b58161177c565b8035600090815260066020526040902081906115038282612bb3565b50506009546000908152600760205260409020813590819055611527600143612bd3565b4060405160200161153992919061263d565b60408051601f19818403018152918152815160209283012060098054600090815260089094529183205580549161156f83612be6565b9190505550600554816040013511156113b55760400135600555565b60006115978251611784565b826040516020016115a9929190612bff565b604051602081830303815290604052805190602001209050919050565b600080600083516041036116005760208401516040850151606086015160001a6115f288828585611825565b95509550955050505061160c565b50508151600091506002905b9250925092565b600082600381111561162757611627612c3b565b03611630575050565b600182600381111561164457611644612c3b565b0361167b576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111561168f5761168f612c3b565b036116c8576040517ffce698f700000000000000000000000000000000000000000000000000000000815261060e9082906004016119de565b60038260038111156116dc576116dc612c3b565b036104af57806040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260040161060e91906119de565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610c92576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611369611715565b60606000611791836118e7565b600101905060008167ffffffffffffffff8111156117b1576117b16119ec565b6040519080825280601f01601f1916602001820160405280156117db576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846117e5575b509392505050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561186057506000915060039050826118dd565b6000600188888888604051600081526020016040526040516118859493929190612c5a565b6020604051602081039080840390855afa1580156118a7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166118d3575060009250600191508290506118dd565b9250600091508190505b9450945094915050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611930577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef8100000000831061195c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061197a57662386f26fc10000830492506010015b6305f5e1008310611992576305f5e100830492506008015b61271083106119a657612710830492506004015b606483106119b8576064830492506002015b600a83106114525760010192915050565b6125ae80612c9083390190565b805b82525050565b6020810161145282846119d6565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715611a2857611a286119ec565b6040525050565b6000611a3a60405190565b9050611a468282611a02565b919050565b600067ffffffffffffffff821115611a6557611a656119ec565b601f19601f83011660200192915050565b82818337506000910152565b6000611a95611a9084611a4b565b611a2f565b9050828152838383011115611aac57611aac600080fd5b611aba836020830184611a76565b9392505050565b600082601f830112611ad557611ad5600080fd5b611aba83833560208501611a82565b60006001600160a01b038216611452565b611afe81611ae4565b81146113b557600080fd5b803561145281611af5565b60008060408385031215611b2a57611b2a600080fd5b823567ffffffffffffffff811115611b4457611b44600080fd5b611b5085828601611ac1565b925050611b608460208501611b09565b90509250929050565b80611afe565b803561145281611b69565b600067ffffffffffffffff821115611b9457611b946119ec565b5060209081020190565b6000611bac611a9084611b7a565b83815290506020808201908402830185811115611bcb57611bcb600080fd5b835b81811015611c0a57803567ffffffffffffffff811115611bef57611bef600080fd5b611bfb88828801611ac1565b84525060209283019201611bcd565b5050509392505050565b600082601f830112611c2857611c28600080fd5b611aba83833560208501611b9e565b60008083601f840112611c4c57611c4c600080fd5b50813567ffffffffffffffff811115611c6757611c67600080fd5b602083019150836001820283011115611c8257611c82600080fd5b9250929050565b60008060008060008060008060e0898b031215611ca857611ca8600080fd5b611cb28a8a611b6f565b9750611cc18a60208b01611b6f565b9650611cd08a60408b01611b6f565b9550606089013567ffffffffffffffff811115611cef57611cef600080fd5b611cfb8b828c01611c14565b955050608089013567ffffffffffffffff811115611d1b57611d1b600080fd5b611d278b828c01611c37565b9450945050611d398a60a08b01611b6f565b9150611d488a60c08b01611b6f565b90509295985092959890939650565b600060208284031215611d6c57611d6c600080fd5b611aba8383611b6f565b8015156119d8565b602081016114528284611d76565b600060208284031215611da157611da1600080fd5b813567ffffffffffffffff811115611dbb57611dbb600080fd5b611dc784828501611ac1565b949350505050565b6119d881611ae4565b602081016114528284611dcf565b600060208284031215611dfb57611dfb600080fd5b611aba8383611b09565b600060808284031215611e1a57611e1a600080fd5b50919050565b60008083601f840112611e3557611e35600080fd5b50813567ffffffffffffffff811115611e5057611e50600080fd5b602083019150836020820283011115611c8257611c82600080fd5b60008060008060c08587031215611e8457611e84600080fd5b611e8e8686611e05565b9350608085013567ffffffffffffffff811115611ead57611ead600080fd5b611eb987828801611e20565b9350935050611ecb8660a08701611b6f565b905092959194509250565b60005b83811015611ef1578181015183820152602001611ed9565b50506000910152565b6000611f04825190565b808452602084019350611f1b818560208601611ed6565b601f01601f19169290920192915050565b80516000906060840190611f4085826119d6565b5060208301518482036020860152611f588282611efa565b915050604083015161181d60408601826119d6565b60408101611f7b82856119d6565b8181036020830152611dc78184611f2c565b600080600080600060608688031215611fa857611fa8600080fd5b611fb28787611b09565b9450602086013567ffffffffffffffff811115611fd157611fd1600080fd5b611fdd88828901611c37565b9450945050604086013567ffffffffffffffff811115611fff57611fff600080fd5b61200b88828901611c37565b92509250509295509295909350565b6000611aba8383611efa565b60200190565b6000612036825190565b808452602084019350836020820285016120508560200190565b60005b84811015612084578383038852815161206c848261201a565b93505060208201602098909801979150600101612053565b50909695505050505050565b60208082528101611aba818461202c565b60408101611f7b8285611d76565b60208082528101611aba8184611efa565b60006114526001600160a01b0383166120d7565b90565b6001600160a01b031690565b6000611452826120c0565b6000611452826120e3565b6119d8816120ee565b6020810161145282846120f9565b600060608284031215611e1a57611e1a600080fd5b600060208284031215611e1a57611e1a600080fd5b6000806040838503121561215057612150600080fd5b823567ffffffffffffffff81111561216a5761216a600080fd5b61217685828601612110565b925050602083013567ffffffffffffffff81111561219657612196600080fd5b6121a285828601612125565b9150509250929050565b6000602082840312156121c1576121c1600080fd5b813567ffffffffffffffff8111156121db576121db600080fd5b611dc784828501611c14565b801515611afe565b8035611452816121e7565b600080600080600060a0868803121561221557612215600080fd5b61221f8787611b09565b945061222e8760208801611b09565b9350604086013567ffffffffffffffff81111561224d5761224d600080fd5b61225988828901611ac1565b935050606086013567ffffffffffffffff81111561227957612279600080fd5b61228588828901611ac1565b92505061229587608088016121ef565b90509295509295909350565b600080602083850312156122b7576122b7600080fd5b823567ffffffffffffffff8111156122d1576122d1600080fd5b6122dd85828601611c37565b92509250509250929050565b60006122f3825190565b612301818560208601611ed6565b9290920192915050565b61145281836122e9565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061233f57607f821691505b602082108103611e1a57611e1a612315565b60006114526120d48381565b61236683612351565b815460001960089490940293841b1916921b91909117905550565b600061238e81848461235d565b505050565b818110156104af576123a6600082612381565b600101612393565b601f82111561238e576000818152602090206020601f850104810160208510156123d55750805b610eed6020601f860104830182612393565b815167ffffffffffffffff811115612401576124016119ec565b61240b825461232b565b6124168282856123ae565b506020601f82116001811461244b57600083156124335750848201515b600019600885021c1981166002850217855550610eed565b600084815260208120601f198516915b8281101561247b578785015182556020948501946001909201910161245b565b50848210156124985783870151600019601f87166008021c191681555b50505050600202600101905550565b604080825281016124b88185611efa565b9050611aba6020830184611dcf565b600e8152602081017f496e76616c696420666f726b494400000000000000000000000000000000000081529050612026565b60208082528101611452816124c7565b6000612513825190565b8084526020840193508360208202850161252d8560200190565b60005b848110156120845783830388528151612549848261201a565b93505060208201602098909801979150600101612530565b6080810161256f82876119d6565b61257c60208301866119d6565b61258960408301856119d6565b818103606083015261259b8184612509565b9695505050505050565b60168152602081017f656e636c6176654944206e6f742061747465737465640000000000000000000081529050612026565b60208082528101611452816125a5565b634e487b7160e01b600052603260045260246000fd5b6000611452825190565b6000612611825190565b6020830161261e816125fd565b9250506020811015611e1a576000196020919091036008021b16919050565b6040810161264b82856119d6565b611aba60208301846119d6565b5060006114526020830183611b09565b5060006114526020830183611b6f565b67ffffffffffffffff8116611afe565b803561145281612678565b5060006114526020830183612688565b67ffffffffffffffff81166119d8565b6126bd8180612658565b6126c78382611dcf565b506126d56020820182612658565b6126e26020840182611dcf565b506126f06040820182612668565b6126fd60408401826119d6565b5061270b6060820182612693565b61238e60608401826126a3565b82818337505050565b81835260208301925060007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561275c5761275c600080fd5b60208302925061276d838584612718565b50500190565b60c0810161278182876126b3565b8181036080830152612794818587612721565b90506127a360a08301846119d6565b95945050505050565b6080810161145282846126b3565b60188152602081017f7769746864726177616c20616c7265616479207370656e74000000000000000081529050612026565b60208082528101611452816127ba565b6040810161264b8285611dcf565b60228152602081017f6e6574776f726b2073656372657420616c726561647920696e697469616c697a81527f6564000000000000000000000000000000000000000000000000000000000000602082015290505b60400190565b602080825281016114528161280a565b60198152602081017f656e636c6176654944206e6f7420612073657175656e6365720000000000000081529050612026565b6020808252810161145281612874565b600067ffffffffffffffff8216611452565b6119d8816128b6565b6020810161145282846128c8565b6000808335601e19368590030181126128fa576128fa600080fd5b8301915050803567ffffffffffffffff81111561291957612919600080fd5b602082019150600181023603821315611c8257611c82600080fd5b60238152602081017f726573706f6e64696e67206174746573746572206973206e6f7420617474657381527f74656400000000000000000000000000000000000000000000000000000000006020820152905061285e565b6020808252810161145281612934565b60006114528260601b90565b60006114528261299c565b6119d86129bf82611ae4565b6129a8565b6129ce81856129b3565b6014016129db81846129b3565b601401611dc781836122e9565b602c8152602081017f63616c63756c61746564206164647265737320616e642061747465737465724981527f4420646f6e74206d6174636800000000000000000000000000000000000000006020820152905061285e565b60208082528101611452816129e8565b6000813561145281611b69565b600081611452565b612a6e82612a5d565b612a7a6120d482612a5d565b8255505050565b8267ffffffffffffffff811115612a9a57612a9a6119ec565b612aa4825461232b565b612aaf8282856123ae565b506000601f821160018114612ae45760008315612acc5750848201355b600019600885021c1981166002850217855550612b3e565b600084815260209020601f19841690835b82811015612b155787850135825560209485019460019092019101612af5565b5084821015612b32576000196008601f8716021c19878501351681555b50506001600284020184555b505050505050565b61238e838383612a81565b612b5a82612351565b80612a7a565b8180612b6b81612a50565b9050612b778184612a65565b5050612b8660208301836128df565b612b94818360018601612b46565b50506040820180612ba482612a50565b9050610d138160028501612b51565b6104af8282612b60565b634e487b7160e01b600052601160045260246000fd5b8181038181111561145257611452612bbd565b600060018201612bf857612bf8612bbd565b5060010190565b7f19457468657265756d205369676e6564204d6573736167653a0a0000000000008152601a01612c2f81846122e9565b9050611aba81836122e9565b634e487b7160e01b600052602160045260246000fd5b60ff81166119d8565b60808101612c6882876119d6565b612c756020830186612c51565b612c8260408301856119d6565b6127a360608301846119d656fe608060405234801561001057600080fd5b5061001a33610027565b610022610098565b61014a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100e85760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101475780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b612455806101596000396000f3fe6080604052600436106101115760003560e01c80638da5cb5b116100a5578063b1454caa11610074578063b6aed0cb11610059578063b6aed0cb1461038b578063e138a8d2146103ab578063f2fde38b146103cb57610185565b8063b1454caa1461034b578063b201246f1461036b57610185565b80638da5cb5b146102a65780639730886d146102eb57806399a3ad211461030b578063ab53bddc1461032b57610185565b8063346633fb116100e1578063346633fb1461023e57806336d2da9014610251578063485cc95514610271578063715018a61461029157610185565b8062a1b815146101a65780630fcfbd11146101d15780630fe9188e146101f157806333a88c721461021157610185565b36610185576040517f346633fb000000000000000000000000000000000000000000000000000000008152309063346633fb90349061015690339083906004016111ea565b6000604051808303818588803b15801561016f57600080fd5b505af1158015610183573d6000803e3d6000fd5b005b60405162461bcd60e51b815260040161019d90611239565b60405180910390fd5b3480156101b257600080fd5b506101bb6103eb565b6040516101c89190611249565b60405180910390f35b3480156101dd57600080fd5b506101bb6101ec366004611272565b610477565b3480156101fd57600080fd5b5061018361020c3660046112c5565b6104d6565b34801561021d57600080fd5b5061023161022c366004611272565b61051c565b6040516101c891906112ec565b61018361024c36600461130e565b61056e565b34801561025d57600080fd5b5061018361026c366004611346565b6106bd565b34801561027d57600080fd5b5061018361028c366004611365565b61073c565b34801561029d57600080fd5b506101836108a7565b3480156102b257600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166040516101c89190611394565b3480156102f757600080fd5b506101836103063660046113a2565b6108bb565b34801561031757600080fd5b5061018361032636600461130e565b610a27565b34801561033757600080fd5b5061018361034636600461130e565b610aa7565b61035e61035936600461146b565b610b70565b6040516101c891906114f8565b34801561037757600080fd5b50610183610386366004611566565b610c7d565b34801561039757600080fd5b506101836103a63660046115d1565b610d7e565b3480156103b757600080fd5b506101836103c63660046115f1565b610dc4565b3480156103d757600080fd5b506101836103e6366004611346565b610f0f565b600354604080517f1a90a21900000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691631a90a2199160048083019260209291908290030181865afa15801561044e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104729190611679565b905090565b6000808260405160200161048b9190611837565b60408051601f198184030181529181528151602092830120600081815292839052912054909150806104cf5760405162461bcd60e51b815260040161019d90611886565b9392505050565b6104de610f66565b600081815260046020526040812054900361050b5760405162461bcd60e51b815260040161019d906118c8565b600090815260046020526040812055565b600080826040516020016105309190611837565b60408051601f19818403018152918152815160209283012060008181529283905291205490915080158015906105665750428111155b949350505050565b60003411801561057d57508034145b6105995760405162461bcd60e51b815260040161019d90611930565b60035434906001600160a01b03161561065d5760006105b66103eb565b9050803410156105d85760405162461bcd60e51b815260040161019d90611970565b6105e28134611996565b6003546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114610634576040519150601f19603f3d011682016040523d82523d6000602084013e610639565b606091505b505090508061065a5760405162461bcd60e51b815260040161019d90611a01565b50505b600061066833610fda565b9050836001600160a01b0316336001600160a01b03167f50c536ac33a920f00755865b831d17bf4cff0b2e0345f65b16d52bfc004068b684846040516106af929190611a11565b60405180910390a350505050565b6106c5610f66565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610712576040519150601f19603f3d011682016040523d82523d6000602084013e610717565b606091505b50509050806107385760405162461bcd60e51b815260040161019d90611a5e565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156107875750825b905060008267ffffffffffffffff1660011480156107a45750303b155b9050811580156107b2575080155b156107e9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561081d57845468ff00000000000000001916680100000000000000001785555b61082687611038565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038816179055831561089e57845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29061089590600190611a92565b60405180910390a15b50505050505050565b6108af610f66565b6108b96000611049565b565b60006108c8600130611aa0565b90506108fb7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806109225750336001600160a01b038216145b61093e5760405162461bcd60e51b815260040161019d90611af5565b600061094a8342611b05565b905060008460405160200161095f9190611837565b60408051601f198184030181529181528151602092830120600081815292839052912054909150156109a35760405162461bcd60e51b815260040161019d90611b70565b6000818152602081815260408220849055600191906109c490880188611346565b6001600160a01b0316815260208101919091526040016000908120906109f06080880160608901611b80565b63ffffffff1681526020808201929092526040016000908120805460018101825590825291902086916004020161089e8282611fbe565b610a2f610f66565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610a7c576040519150601f19603f3d011682016040523d82523d6000602084013e610a81565b606091505b5050905080610aa25760405162461bcd60e51b815260040161019d90611a5e565b505050565b6000610ab4600130611aa0565b9050610ae77f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610b0e5750336001600160a01b038216145b610b2a5760405162461bcd60e51b815260040161019d90611af5565b826001600160a01b03167fcd9850463422a7449c406a036e35e5edb6fbe35a64c9f12a2354be98a750c0d383604051610b639190611249565b60405180910390a2505050565b6003546000906001600160a01b031615610c26576000610b8e6103eb565b905080341015610bb05760405162461bcd60e51b815260040161019d90612020565b6003546040516000916001600160a01b03169083908381818185875af1925050503d8060008114610bfd576040519150601f19603f3d011682016040523d82523d6000602084013e610c02565b606091505b5050905080610c235760405162461bcd60e51b815260040161019d90611a01565b50505b610c2f33610fda565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef77593733828888888888604051610c6c9796959493929190612030565b60405180910390a195945050505050565b6000818152600460205260408120549003610caa5760405162461bcd60e51b815260040161019d906120eb565b600081815260046020526040902054421015610cd85760405162461bcd60e51b815260040161019d90612137565b600084604051602001610ceb91906121bc565b60405160208183030381529060405280519060200120604051602001610d1191906121fc565b604051602081830303815290604052805190602001209050610d5b84848484604051602001610d40919061221b565b604051602081830303815290604052805190602001206110c7565b610d775760405162461bcd60e51b815260040161019d90612285565b5050505050565b610d86610f66565b60008281526004602052604090205415610db25760405162461bcd60e51b815260040161019d906122ed565b60009182526004602052604090912055565b6000818152600460205260408120549003610df15760405162461bcd60e51b815260040161019d906120eb565b600081815260046020526040902054421015610e1f5760405162461bcd60e51b815260040161019d90612137565b6000610e2e6020860186611346565b610e3e60408701602088016122fd565b610e4e6060880160408901611b80565b610e5e6080890160608a01611b80565b610e6b60808a018a611cd7565b610e7b60c08c0160a08d0161231c565b604051602001610e919796959493929190612030565b604051602081830303815290604052805190602001209050600081604051602001610ebc919061236d565b604051602081830303815290604052805190602001209050610eeb85858584604051602001610d40919061221b565b610f075760405162461bcd60e51b815260040161019d906123d5565b505050505050565b610f17610f66565b6001600160a01b038116610f5a5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161019d9190611394565b610f6381611049565b50565b33610f987f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108b957336040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161019d9190611394565b6001600160a01b0381166000908152600260205260408120805467ffffffffffffffff16916001919061100d83856123e5565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b6110406110df565b610f6381611146565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000826110d586868561114e565b1495945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166108b9576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f176110df565b600081815b848110156111875761117d8287878481811061117157611171612409565b90506020020135611190565b9150600101611153565b50949350505050565b60008183106111ac5760008281526020849052604090206111bb565b60008381526020839052604090205b90505b92915050565b60006001600160a01b0382166111be565b6111de816111c4565b82525050565b806111de565b604081016111f882856111d5565b6104cf60208301846111e4565b600b8152602081017f756e737570706f72746564000000000000000000000000000000000000000000815290505b60200190565b602080825281016111be81611205565b602081016111be82846111e4565b600060c0828403121561126c5761126c600080fd5b50919050565b60006020828403121561128757611287600080fd5b813567ffffffffffffffff8111156112a1576112a1600080fd5b61056684828501611257565b805b8114610f6357600080fd5b80356111be816112ad565b6000602082840312156112da576112da600080fd5b6111bb83836112ba565b8015156111de565b602081016111be82846112e4565b6112af816111c4565b80356111be816112fa565b6000806040838503121561132457611324600080fd5b61132e8484611303565b915061133d84602085016112ba565b90509250929050565b60006020828403121561135b5761135b600080fd5b6111bb8383611303565b6000806040838503121561137b5761137b600080fd5b6113858484611303565b915061133d8460208501611303565b602081016111be82846111d5565b600080604083850312156113b8576113b8600080fd5b823567ffffffffffffffff8111156113d2576113d2600080fd5b6113de85828601611257565b92505061133d84602085016112ba565b63ffffffff81166112af565b80356111be816113ee565b60008083601f84011261141a5761141a600080fd5b50813567ffffffffffffffff81111561143557611435600080fd5b60208301915083600182028301111561145057611450600080fd5b9250929050565b60ff81166112af565b80356111be81611457565b60008060008060006080868803121561148657611486600080fd5b61149087876113fa565b945061149f87602088016113fa565b9350604086013567ffffffffffffffff8111156114be576114be600080fd5b6114ca88828901611405565b93509350506114dc8760608801611460565b90509295509295909350565b67ffffffffffffffff81166111de565b602081016111be82846114e8565b60006080828403121561126c5761126c600080fd5b60008083601f84011261153057611530600080fd5b50813567ffffffffffffffff81111561154b5761154b600080fd5b60208301915083602082028301111561145057611450600080fd5b60008060008060c0858703121561157f5761157f600080fd5b6115898686611506565b9350608085013567ffffffffffffffff8111156115a8576115a8600080fd5b6115b48782880161151b565b93509350506115c68660a087016112ba565b905092959194509250565b600080604083850312156115e7576115e7600080fd5b61132e84846112ba565b6000806000806060858703121561160a5761160a600080fd5b843567ffffffffffffffff81111561162457611624600080fd5b61163087828801611257565b945050602085013567ffffffffffffffff81111561165057611650600080fd5b61165c8782880161151b565b93509350506115c686604087016112ba565b80516111be816112ad565b60006020828403121561168e5761168e600080fd5b6111bb838361166e565b5060006111be6020830183611303565b67ffffffffffffffff81166112af565b80356111be816116a8565b5060006111be60208301836116b8565b5060006111be60208301836113fa565b63ffffffff81166111de565b6000808335601e193685900301811261170a5761170a600080fd5b830160208101925035905067ffffffffffffffff81111561172d5761172d600080fd5b3681900382131561145057611450600080fd5b82818337506000910152565b818352602083019250611760828483611740565b50601f01601f19160190565b5060006111be6020830183611460565b60ff81166111de565b600060c083016117958380611698565b61179f85826111d5565b506117ad60208401846116c3565b6117ba60208601826114e8565b506117c860408401846116d3565b6117d560408601826116e3565b506117e360608401846116d3565b6117f060608601826116e3565b506117fe60808401846116ef565b858303608087015261181183828461174c565b9250505061182260a084018461176c565b61182f60a086018261177c565b509392505050565b602080825281016111bb8184611785565b60218152602081017f54686973206d65737361676520776173206e65766572207375626d69747465648152601760f91b602082015290505b60400190565b602080825281016111be81611848565b601a8152602081017f537461746520726f6f7420646f6573206e6f742065786973742e00000000000081529050611233565b602080825281016111be81611896565b60308152602081017f417474656d7074696e6720746f2073656e642076616c756520776974686f757481527f2070726f766964696e672045746865720000000000000000000000000000000060208201529050611880565b602080825281016111be816118d8565b60208082527f496e73756666696369656e742066756e647320746f2073656e642076616c75659101908152611233565b602080825281016111be81611940565b634e487b7160e01b600052601160045260246000fd5b818103818111156111be576111be611980565b60248152602081017f4661696c656420746f2073656e64206665657320746f206665657320636f6e7481527f726163740000000000000000000000000000000000000000000000000000000060208201529050611880565b602080825281016111be816119a9565b60408101611a1f82856111e4565b6104cf60208301846114e8565b60148152602081017f6661696c65642073656e64696e672076616c756500000000000000000000000081529050611233565b602080825281016111be81611a2c565b60006111be82611a7c565b90565b67ffffffffffffffff1690565b6111de81611a6e565b602081016111be8284611a89565b6001600160a01b039182169190811690828203908111156111be576111be611980565b60118152602081017f4e6f74206f776e6572206f722073656c6600000000000000000000000000000081529050611233565b602080825281016111be81611ac3565b808201808211156111be576111be611980565b60218152602081017f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636581527f210000000000000000000000000000000000000000000000000000000000000060208201529050611880565b602080825281016111be81611b18565b600060208284031215611b9557611b95600080fd5b6111bb83836113fa565b600081356111be816112fa565b60006001600160a01b03835b81169019929092169190911792915050565b60006111be826111c4565b60006111be82611bca565b611be982611bd5565b611bf4818354611bac565b8255505050565b600081356111be816116a8565b60007bffffffffffffffff0000000000000000000000000000000000000000611bb88460a01b90565b60006111be67ffffffffffffffff8316611a7c565b611c4f82611c31565b611bf4818354611c08565b600081356111be816113ee565b60007fffffffff00000000000000000000000000000000000000000000000000000000611bb88460e01b90565b600063ffffffff82166111be565b611cab82611c94565b611bf4818354611c67565b600063ffffffff83611bb8565b611ccc82611c94565b611bf4818354611cb6565b6000808335601e1936859003018112611cf257611cf2600080fd5b8301915050803567ffffffffffffffff811115611d1157611d11600080fd5b60208201915060018102360382131561145057611450600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b600281046001821680611d6c57607f821691505b60208210810361126c5761126c611d42565b60006111be611a798381565b611d9383611d7e565b815460001960089490940293841b1916921b91909117905550565b6000610aa2818484611d8a565b8181101561073857611dce600082611dae565b600101611dbb565b601f821115610aa2576000818152602090206020601f85010481016020851015611dfd5750805b610d776020601f860104830182611dbb565b8267ffffffffffffffff811115611e2857611e28611d2c565b611e328254611d58565b611e3d828285611dd6565b506000601f821160018114611e725760008315611e5a5750848201355b600019600885021c1981166002850217855550610f07565b600084815260209020601f19841690835b82811015611ea35787850135825560209485019460019092019101611e83565b5084821015611ec0576000196008601f8716021c19878501351681555b5050505060020260010190555050565b610aa2838383611e0f565b600081356111be81611457565b600060ff82166111be565b611efc82611ee8565b815460ff191660ff821617611bf4565b808280611f1881611b9f565b9050611f248184611be0565b50506020830180611f3482611bfb565b9050611f408184611c46565b50506040830180611f5082611c5a565b9050611f5c8184611ca2565b5050506060820180611f6d82611c5a565b9050611f7c8160018501611cc3565b5050611f8b6080830183611cd7565b611f99818360028601611ed0565b505060a0820180611fa982611edb565b9050611fb88160038501611ef3565b50505050565b6107388282611f0c565b60258152602081017f496e73756666696369656e742066756e647320746f207075626c697368206d6581527f737361676500000000000000000000000000000000000000000000000000000060208201529050611880565b602080825281016111be81611fc8565b60c0810161203e828a6111d5565b61204b60208301896114e8565b61205860408301886116e3565b61206560608301876116e3565b818103608083015261207881858761174c565b905061208760a083018461177c565b98975050505050505050565b602a8152602081017f526f6f74206973206e6f74207075626c6973686564206f6e2074686973206d6581527f7373616765206275732e0000000000000000000000000000000000000000000060208201529050611880565b602080825281016111be81612093565b60218152602081017f526f6f74206973206e6f7420636f6e736964657265642066696e616c207965748152601760f91b60208201529050611880565b602080825281016111be816120fb565b5060006111be60208301836112ba565b6121618180611698565b61216b83826111d5565b506121796020820182611698565b61218660208401826111d5565b506121946040820182612147565b6121a160408401826111e4565b506121af60608201826116c3565b610aa260608401826114e8565b608081016111be8284612157565b60018152602081017f760000000000000000000000000000000000000000000000000000000000000081529050611233565b6040808252810161220c816121ca565b90506111be60208301846111e4565b61222581836111e4565b602001919050565b60338152602081017f496e76616c696420696e636c7573696f6e2070726f6f6620666f722076616c7581527f65207472616e73666572206d6573736167652e0000000000000000000000000060208201529050611880565b602080825281016111be8161222d565b60258152602081017f526f6f7420616c726561647920616464656420746f20746865206d657373616781527f652062757300000000000000000000000000000000000000000000000000000060208201529050611880565b602080825281016111be81612295565b60006020828403121561231257612312600080fd5b6111bb83836116b8565b60006020828403121561233157612331600080fd5b6111bb8383611460565b60018152602081017f6d0000000000000000000000000000000000000000000000000000000000000081529050611233565b6040808252810161220c8161233b565b60308152602081017f496e76616c696420696e636c7573696f6e2070726f6f6620666f722063726f7381527f7320636861696e206d6573736167652e0000000000000000000000000000000060208201529050611880565b602080825281016111be8161237d565b67ffffffffffffffff9182169190811690828201908111156111be576111be611980565b634e487b7160e01b600052603260045260246000fdfea26469706673582212209046d260e6ecf02a9b545045265133ebd2a8a091d8cfe42d8fe9829451348f2664736f6c634300081c0033a26469706673582212206fbeb4fa662306572375051ef628ba8cd5106387c138927f0349e546931828e964736f6c634300081c0033", } // ManagementContractABI is the input ABI used to generate the binding from. diff --git a/contracts/generated/MerkleTreeMessageBus/MerkleTreeMessageBus.go b/contracts/generated/MerkleTreeMessageBus/MerkleTreeMessageBus.go index 21a223614d..28b2b8a847 100644 --- a/contracts/generated/MerkleTreeMessageBus/MerkleTreeMessageBus.go +++ b/contracts/generated/MerkleTreeMessageBus/MerkleTreeMessageBus.go @@ -49,8 +49,8 @@ type StructsValueTransferMessage struct { // MerkleTreeMessageBusMetaData contains all meta data concerning the MerkleTreeMessageBus contract. var MerkleTreeMessageBusMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"name\":\"LogMessagePublished\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeDeposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"name\":\"ValueTransfer\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"activationTime\",\"type\":\"uint256\"}],\"name\":\"addStateRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"name\":\"disableStateRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"crossChainMessage\",\"type\":\"tuple\"}],\"name\":\"getMessageTimeOfFinality\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feesAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"notifyDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"name\":\"publishMessage\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveValueFromL2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"retrieveAllFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendValueToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"crossChainMessage\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"finalAfterTimestamp\",\"type\":\"uint256\"}],\"name\":\"storeCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"crossChainMessage\",\"type\":\"tuple\"}],\"name\":\"verifyMessageFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"verifyMessageInclusion\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"internalType\":\"structStructs.ValueTransferMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"verifyValueTransferInclusion\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561001057600080fd5b5061001a33610027565b610022610098565b61014a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100e85760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101475780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6124b7806101596000396000f3fe6080604052600436106100f75760003560e01c80639730886d1161008a578063b201246f11610059578063b201246f1461033c578063b6aed0cb1461035c578063e138a8d21461037c578063f2fde38b1461039c5761016b565b80639730886d146102bc57806399a3ad21146102dc578063ab53bddc146102fc578063b1454caa1461031c5761016b565b806336d2da90116100c657806336d2da9014610222578063485cc95514610242578063715018a6146102625780638da5cb5b146102775761016b565b80630fcfbd111461018c5780630fe9188e146101c257806333a88c72146101e2578063346633fb1461020f5761016b565b3661016b576040517f346633fb000000000000000000000000000000000000000000000000000000008152309063346633fb90349061013c9033908390600401611235565b6000604051808303818588803b15801561015557600080fd5b505af1158015610169573d6000803e3d6000fd5b005b60405162461bcd60e51b815260040161018390611284565b60405180910390fd5b34801561019857600080fd5b506101ac6101a73660046112af565b6103bc565b6040516101b991906112ea565b60405180910390f35b3480156101ce57600080fd5b506101696101dd366004611310565b61041b565b3480156101ee57600080fd5b506102026101fd3660046112af565b610461565b6040516101b99190611337565b61016961021d366004611359565b6104b3565b34801561022e57600080fd5b5061016961023d366004611391565b610602565b34801561024e57600080fd5b5061016961025d3660046113b0565b610681565b34801561026e57600080fd5b506101696107ec565b34801561028357600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166040516101b991906113df565b3480156102c857600080fd5b506101696102d73660046113ed565b610800565b3480156102e857600080fd5b506101696102f7366004611359565b61096c565b34801561030857600080fd5b50610169610317366004611359565b6109ec565b61032f61032a3660046114b6565b610ab5565b6040516101b99190611543565b34801561034857600080fd5b506101696103573660046115b1565b610bbd565b34801561036857600080fd5b5061016961037736600461161c565b610cbe565b34801561038857600080fd5b5061016961039736600461163c565b610d04565b3480156103a857600080fd5b506101696103b7366004611391565b610e4f565b600080826040516020016103d09190611858565b60408051601f198184030181529181528151602092830120600081815292839052912054909150806104145760405162461bcd60e51b8152600401610183906118a7565b9392505050565b610423610ea6565b60008181526004602052604081205490036104505760405162461bcd60e51b8152600401610183906118e9565b600090815260046020526040812055565b600080826040516020016104759190611858565b60408051601f19818403018152918152815160209283012060008181529283905291205490915080158015906104ab5750428111155b949350505050565b6000341180156104c257508034145b6104de5760405162461bcd60e51b815260040161018390611951565b60035434906001600160a01b0316156105a25760006104fb610f1a565b90508034101561051d5760405162461bcd60e51b815260040161018390611991565b61052781346119b7565b6003546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114610579576040519150601f19603f3d011682016040523d82523d6000602084013e61057e565b606091505b505090508061059f5760405162461bcd60e51b815260040161018390611a22565b50505b60006105ad33610fab565b9050836001600160a01b0316336001600160a01b03167f50c536ac33a920f00755865b831d17bf4cff0b2e0345f65b16d52bfc004068b684846040516105f4929190611a32565b60405180910390a350505050565b61060a610ea6565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610657576040519150601f19603f3d011682016040523d82523d6000602084013e61065c565b606091505b505090508061067d5760405162461bcd60e51b815260040161018390611a7f565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156106cc5750825b905060008267ffffffffffffffff1660011480156106e95750303b155b9050811580156106f7575080155b1561072e576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561076257845468ff00000000000000001916680100000000000000001785555b61076b87611009565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881617905583156107e357845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906107da90600190611ab3565b60405180910390a15b50505050505050565b6107f4610ea6565b6107fe600061101a565b565b600061080d600130611ac1565b90506108407f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806108675750336001600160a01b038216145b6108835760405162461bcd60e51b815260040161018390611b16565b600061088f8342611b26565b90506000846040516020016108a49190611858565b60408051601f198184030181529181528151602092830120600081815292839052912054909150156108e85760405162461bcd60e51b815260040161018390611b91565b60008181526020818152604082208490556001919061090990880188611391565b6001600160a01b0316815260208101919091526040016000908120906109356080880160608901611ba1565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208691600402016107e38282611fdf565b610974610ea6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146109c1576040519150601f19603f3d011682016040523d82523d6000602084013e6109c6565b606091505b50509050806109e75760405162461bcd60e51b815260040161018390611a7f565b505050565b60006109f9600130611ac1565b9050610a2c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610a535750336001600160a01b038216145b610a6f5760405162461bcd60e51b815260040161018390611b16565b826001600160a01b03167fcd9850463422a7449c406a036e35e5edb6fbe35a64c9f12a2354be98a750c0d383604051610aa891906112ea565b60405180910390a2505050565b6003546000906001600160a01b031615610b6657610ad283611098565b341015610af15760405162461bcd60e51b815260040161018390612041565b6003546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610b3e576040519150601f19603f3d011682016040523d82523d6000602084013e610b43565b606091505b5050905080610b645760405162461bcd60e51b815260040161018390611a22565b505b610b6f33610fab565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef77593733828888888888604051610bac9796959493929190612051565b60405180910390a195945050505050565b6000818152600460205260408120549003610bea5760405162461bcd60e51b81526004016101839061210c565b600081815260046020526040902054421015610c185760405162461bcd60e51b815260040161018390612158565b600084604051602001610c2b91906121dd565b60405160208183030381529060405280519060200120604051602001610c51919061221d565b604051602081830303815290604052805190602001209050610c9b84848484604051602001610c80919061223c565b6040516020818303038152906040528051906020012061111a565b610cb75760405162461bcd60e51b8152600401610183906122a6565b5050505050565b610cc6610ea6565b60008281526004602052604090205415610cf25760405162461bcd60e51b81526004016101839061230e565b60009182526004602052604090912055565b6000818152600460205260408120549003610d315760405162461bcd60e51b81526004016101839061210c565b600081815260046020526040902054421015610d5f5760405162461bcd60e51b815260040161018390612158565b6000610d6e6020860186611391565b610d7e604087016020880161231e565b610d8e6060880160408901611ba1565b610d9e6080890160608a01611ba1565b610dab60808a018a611cf8565b610dbb60c08c0160a08d0161233d565b604051602001610dd19796959493929190612051565b604051602081830303815290604052805190602001209050600081604051602001610dfc919061238e565b604051602081830303815290604052805190602001209050610e2b85858584604051602001610c80919061223c565b610e475760405162461bcd60e51b8152600401610183906123f6565b505050505050565b610e57610ea6565b6001600160a01b038116610e9a5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161018391906113df565b610ea38161101a565b50565b33610ed87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146107fe57336040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161018391906113df565b6003546040517ff1d44d510000000000000000000000000000000000000000000000000000000081526000916001600160a01b03169063f1d44d5190610f659060209060040161240f565b602060405180830381865afa158015610f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa69190612428565b905090565b6001600160a01b0381166000908152600260205260408120805467ffffffffffffffff169160019190610fde8385612447565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b611011611132565b610ea381611199565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546000906001600160a01b031663f1d44d516110b7601185611b26565b6040518263ffffffff1660e01b81526004016110d391906112ea565b602060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111149190612428565b92915050565b6000826111288686856111a1565b1495945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166107fe576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e57611132565b600081815b848110156111da576111d0828787848181106111c4576111c461246b565b905060200201356111e3565b91506001016111a6565b50949350505050565b60008183106111ff576000828152602084905260409020610414565b5060009182526020526040902090565b60006001600160a01b038216611114565b6112298161120f565b82525050565b80611229565b604081016112438285611220565b610414602083018461122f565b600b8152602081017f756e737570706f72746564000000000000000000000000000000000000000000815290505b60200190565b6020808252810161111481611250565b600060c082840312156112a9576112a9600080fd5b50919050565b6000602082840312156112c4576112c4600080fd5b813567ffffffffffffffff8111156112de576112de600080fd5b6104ab84828501611294565b60208101611114828461122f565b805b8114610ea357600080fd5b8035611114816112f8565b60006020828403121561132557611325600080fd5b6104148383611305565b801515611229565b60208101611114828461132f565b6112fa8161120f565b803561111481611345565b6000806040838503121561136f5761136f600080fd5b611379848461134e565b91506113888460208501611305565b90509250929050565b6000602082840312156113a6576113a6600080fd5b610414838361134e565b600080604083850312156113c6576113c6600080fd5b6113d0848461134e565b9150611388846020850161134e565b602081016111148284611220565b6000806040838503121561140357611403600080fd5b823567ffffffffffffffff81111561141d5761141d600080fd5b61142985828601611294565b9250506113888460208501611305565b63ffffffff81166112fa565b803561111481611439565b60008083601f84011261146557611465600080fd5b50813567ffffffffffffffff81111561148057611480600080fd5b60208301915083600182028301111561149b5761149b600080fd5b9250929050565b60ff81166112fa565b8035611114816114a2565b6000806000806000608086880312156114d1576114d1600080fd5b6114db8787611445565b94506114ea8760208801611445565b9350604086013567ffffffffffffffff81111561150957611509600080fd5b61151588828901611450565b935093505061152787606088016114ab565b90509295509295909350565b67ffffffffffffffff8116611229565b602081016111148284611533565b6000608082840312156112a9576112a9600080fd5b60008083601f84011261157b5761157b600080fd5b50813567ffffffffffffffff81111561159657611596600080fd5b60208301915083602082028301111561149b5761149b600080fd5b60008060008060c085870312156115ca576115ca600080fd5b6115d48686611551565b9350608085013567ffffffffffffffff8111156115f3576115f3600080fd5b6115ff87828801611566565b93509350506116118660a08701611305565b905092959194509250565b6000806040838503121561163257611632600080fd5b6113798484611305565b6000806000806060858703121561165557611655600080fd5b843567ffffffffffffffff81111561166f5761166f600080fd5b61167b87828801611294565b945050602085013567ffffffffffffffff81111561169b5761169b600080fd5b6116a787828801611566565b93509350506116118660408701611305565b506000611114602083018361134e565b67ffffffffffffffff81166112fa565b8035611114816116c9565b50600061111460208301836116d9565b5060006111146020830183611445565b63ffffffff8116611229565b6000808335601e193685900301811261172b5761172b600080fd5b830160208101925035905067ffffffffffffffff81111561174e5761174e600080fd5b3681900382131561149b5761149b600080fd5b82818337506000910152565b818352602083019250611781828483611761565b50601f01601f19160190565b50600061111460208301836114ab565b60ff8116611229565b600060c083016117b683806116b9565b6117c08582611220565b506117ce60208401846116e4565b6117db6020860182611533565b506117e960408401846116f4565b6117f66040860182611704565b5061180460608401846116f4565b6118116060860182611704565b5061181f6080840184611710565b858303608087015261183283828461176d565b9250505061184360a084018461178d565b61185060a086018261179d565b509392505050565b6020808252810161041481846117a6565b60218152602081017f54686973206d65737361676520776173206e65766572207375626d69747465648152601760f91b602082015290505b60400190565b6020808252810161111481611869565b601a8152602081017f537461746520726f6f7420646f6573206e6f742065786973742e0000000000008152905061127e565b60208082528101611114816118b7565b60308152602081017f417474656d7074696e6720746f2073656e642076616c756520776974686f757481527f2070726f766964696e6720457468657200000000000000000000000000000000602082015290506118a1565b60208082528101611114816118f9565b60208082527f496e73756666696369656e742066756e647320746f2073656e642076616c7565910190815261127e565b6020808252810161111481611961565b634e487b7160e01b600052601160045260246000fd5b81810381811115611114576111146119a1565b60248152602081017f4661696c656420746f2073656e64206665657320746f206665657320636f6e7481527f7261637400000000000000000000000000000000000000000000000000000000602082015290506118a1565b60208082528101611114816119ca565b60408101611a40828561122f565b6104146020830184611533565b60148152602081017f6661696c65642073656e64696e672076616c75650000000000000000000000008152905061127e565b6020808252810161111481611a4d565b600061111482611a9d565b90565b67ffffffffffffffff1690565b61122981611a8f565b602081016111148284611aaa565b6001600160a01b03918216919081169082820390811115611114576111146119a1565b60118152602081017f4e6f74206f776e6572206f722073656c660000000000000000000000000000008152905061127e565b6020808252810161111481611ae4565b80820180821115611114576111146119a1565b60218152602081017f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636581527f2100000000000000000000000000000000000000000000000000000000000000602082015290506118a1565b6020808252810161111481611b39565b600060208284031215611bb657611bb6600080fd5b6104148383611445565b6000813561111481611345565b60006001600160a01b03835b81169019929092169190911792915050565b60006111148261120f565b600061111482611beb565b611c0a82611bf6565b611c15818354611bcd565b8255505050565b60008135611114816116c9565b60007bffffffffffffffff0000000000000000000000000000000000000000611bd98460a01b90565b600061111467ffffffffffffffff8316611a9d565b611c7082611c52565b611c15818354611c29565b6000813561111481611439565b60007fffffffff00000000000000000000000000000000000000000000000000000000611bd98460e01b90565b600063ffffffff8216611114565b611ccc82611cb5565b611c15818354611c88565b600063ffffffff83611bd9565b611ced82611cb5565b611c15818354611cd7565b6000808335601e1936859003018112611d1357611d13600080fd5b8301915050803567ffffffffffffffff811115611d3257611d32600080fd5b60208201915060018102360382131561149b5761149b600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b600281046001821680611d8d57607f821691505b6020821081036112a9576112a9611d63565b6000611114611a9a8381565b611db483611d9f565b815460001960089490940293841b1916921b91909117905550565b60006109e7818484611dab565b8181101561067d57611def600082611dcf565b600101611ddc565b601f8211156109e7576000818152602090206020601f85010481016020851015611e1e5750805b610cb76020601f860104830182611ddc565b8267ffffffffffffffff811115611e4957611e49611d4d565b611e538254611d79565b611e5e828285611df7565b506000601f821160018114611e935760008315611e7b5750848201355b600019600885021c1981166002850217855550610e47565b600084815260209020601f19841690835b82811015611ec45787850135825560209485019460019092019101611ea4565b5084821015611ee1576000196008601f8716021c19878501351681555b5050505060020260010190555050565b6109e7838383611e30565b60008135611114816114a2565b600060ff8216611114565b611f1d82611f09565b815460ff191660ff821617611c15565b808280611f3981611bc0565b9050611f458184611c01565b50506020830180611f5582611c1c565b9050611f618184611c67565b50506040830180611f7182611c7b565b9050611f7d8184611cc3565b5050506060820180611f8e82611c7b565b9050611f9d8160018501611ce4565b5050611fac6080830183611cf8565b611fba818360028601611ef1565b505060a0820180611fca82611efc565b9050611fd98160038501611f14565b50505050565b61067d8282611f2d565b60258152602081017f496e73756666696369656e742066756e647320746f207075626c697368206d6581527f7373616765000000000000000000000000000000000000000000000000000000602082015290506118a1565b6020808252810161111481611fe9565b60c0810161205f828a611220565b61206c6020830189611533565b6120796040830188611704565b6120866060830187611704565b818103608083015261209981858761176d565b90506120a860a083018461179d565b98975050505050505050565b602a8152602081017f526f6f74206973206e6f74207075626c6973686564206f6e2074686973206d6581527f7373616765206275732e00000000000000000000000000000000000000000000602082015290506118a1565b60208082528101611114816120b4565b60218152602081017f526f6f74206973206e6f7420636f6e736964657265642066696e616c207965748152601760f91b602082015290506118a1565b602080825281016111148161211c565b5060006111146020830183611305565b61218281806116b9565b61218c8382611220565b5061219a60208201826116b9565b6121a76020840182611220565b506121b56040820182612168565b6121c2604084018261122f565b506121d060608201826116e4565b6109e76060840182611533565b608081016111148284612178565b60018152602081017f76000000000000000000000000000000000000000000000000000000000000008152905061127e565b6040808252810161222d816121eb565b9050611114602083018461122f565b612246818361122f565b602001919050565b60338152602081017f496e76616c696420696e636c7573696f6e2070726f6f6620666f722076616c7581527f65207472616e73666572206d6573736167652e00000000000000000000000000602082015290506118a1565b602080825281016111148161224e565b60258152602081017f526f6f7420616c726561647920616464656420746f20746865206d657373616781527f6520627573000000000000000000000000000000000000000000000000000000602082015290506118a1565b60208082528101611114816122b6565b60006020828403121561233357612333600080fd5b61041483836116d9565b60006020828403121561235257612352600080fd5b61041483836114ab565b60018152602081017f6d000000000000000000000000000000000000000000000000000000000000008152905061127e565b6040808252810161222d8161235c565b60308152602081017f496e76616c696420696e636c7573696f6e2070726f6f6620666f722063726f7381527f7320636861696e206d6573736167652e00000000000000000000000000000000602082015290506118a1565b602080825281016111148161239e565b61122981611d9f565b602081016111148284612406565b8051611114816112f8565b60006020828403121561243d5761243d600080fd5b610414838361241d565b67ffffffffffffffff918216919081169082820190811115611114576111146119a1565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220d3bd88e19eb5e0e03473c1583cfcd854a520d8329b1baacacdfe3579c28bb44c64736f6c634300081c0033", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"name\":\"LogMessagePublished\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeDeposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"name\":\"ValueTransfer\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"activationTime\",\"type\":\"uint256\"}],\"name\":\"addStateRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"name\":\"disableStateRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"crossChainMessage\",\"type\":\"tuple\"}],\"name\":\"getMessageTimeOfFinality\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPublishFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feesAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"notifyDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"name\":\"publishMessage\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveValueFromL2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"retrieveAllFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendValueToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"crossChainMessage\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"finalAfterTimestamp\",\"type\":\"uint256\"}],\"name\":\"storeCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"crossChainMessage\",\"type\":\"tuple\"}],\"name\":\"verifyMessageFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"verifyMessageInclusion\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"internalType\":\"structStructs.ValueTransferMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"verifyValueTransferInclusion\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x608060405234801561001057600080fd5b5061001a33610027565b610022610098565b61014a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100e85760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101475780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b612455806101596000396000f3fe6080604052600436106101115760003560e01c80638da5cb5b116100a5578063b1454caa11610074578063b6aed0cb11610059578063b6aed0cb1461038b578063e138a8d2146103ab578063f2fde38b146103cb57610185565b8063b1454caa1461034b578063b201246f1461036b57610185565b80638da5cb5b146102a65780639730886d146102eb57806399a3ad211461030b578063ab53bddc1461032b57610185565b8063346633fb116100e1578063346633fb1461023e57806336d2da9014610251578063485cc95514610271578063715018a61461029157610185565b8062a1b815146101a65780630fcfbd11146101d15780630fe9188e146101f157806333a88c721461021157610185565b36610185576040517f346633fb000000000000000000000000000000000000000000000000000000008152309063346633fb90349061015690339083906004016111ea565b6000604051808303818588803b15801561016f57600080fd5b505af1158015610183573d6000803e3d6000fd5b005b60405162461bcd60e51b815260040161019d90611239565b60405180910390fd5b3480156101b257600080fd5b506101bb6103eb565b6040516101c89190611249565b60405180910390f35b3480156101dd57600080fd5b506101bb6101ec366004611272565b610477565b3480156101fd57600080fd5b5061018361020c3660046112c5565b6104d6565b34801561021d57600080fd5b5061023161022c366004611272565b61051c565b6040516101c891906112ec565b61018361024c36600461130e565b61056e565b34801561025d57600080fd5b5061018361026c366004611346565b6106bd565b34801561027d57600080fd5b5061018361028c366004611365565b61073c565b34801561029d57600080fd5b506101836108a7565b3480156102b257600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166040516101c89190611394565b3480156102f757600080fd5b506101836103063660046113a2565b6108bb565b34801561031757600080fd5b5061018361032636600461130e565b610a27565b34801561033757600080fd5b5061018361034636600461130e565b610aa7565b61035e61035936600461146b565b610b70565b6040516101c891906114f8565b34801561037757600080fd5b50610183610386366004611566565b610c7d565b34801561039757600080fd5b506101836103a63660046115d1565b610d7e565b3480156103b757600080fd5b506101836103c63660046115f1565b610dc4565b3480156103d757600080fd5b506101836103e6366004611346565b610f0f565b600354604080517f1a90a21900000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691631a90a2199160048083019260209291908290030181865afa15801561044e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104729190611679565b905090565b6000808260405160200161048b9190611837565b60408051601f198184030181529181528151602092830120600081815292839052912054909150806104cf5760405162461bcd60e51b815260040161019d90611886565b9392505050565b6104de610f66565b600081815260046020526040812054900361050b5760405162461bcd60e51b815260040161019d906118c8565b600090815260046020526040812055565b600080826040516020016105309190611837565b60408051601f19818403018152918152815160209283012060008181529283905291205490915080158015906105665750428111155b949350505050565b60003411801561057d57508034145b6105995760405162461bcd60e51b815260040161019d90611930565b60035434906001600160a01b03161561065d5760006105b66103eb565b9050803410156105d85760405162461bcd60e51b815260040161019d90611970565b6105e28134611996565b6003546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114610634576040519150601f19603f3d011682016040523d82523d6000602084013e610639565b606091505b505090508061065a5760405162461bcd60e51b815260040161019d90611a01565b50505b600061066833610fda565b9050836001600160a01b0316336001600160a01b03167f50c536ac33a920f00755865b831d17bf4cff0b2e0345f65b16d52bfc004068b684846040516106af929190611a11565b60405180910390a350505050565b6106c5610f66565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610712576040519150601f19603f3d011682016040523d82523d6000602084013e610717565b606091505b50509050806107385760405162461bcd60e51b815260040161019d90611a5e565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156107875750825b905060008267ffffffffffffffff1660011480156107a45750303b155b9050811580156107b2575080155b156107e9576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561081d57845468ff00000000000000001916680100000000000000001785555b61082687611038565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038816179055831561089e57845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29061089590600190611a92565b60405180910390a15b50505050505050565b6108af610f66565b6108b96000611049565b565b60006108c8600130611aa0565b90506108fb7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806109225750336001600160a01b038216145b61093e5760405162461bcd60e51b815260040161019d90611af5565b600061094a8342611b05565b905060008460405160200161095f9190611837565b60408051601f198184030181529181528151602092830120600081815292839052912054909150156109a35760405162461bcd60e51b815260040161019d90611b70565b6000818152602081815260408220849055600191906109c490880188611346565b6001600160a01b0316815260208101919091526040016000908120906109f06080880160608901611b80565b63ffffffff1681526020808201929092526040016000908120805460018101825590825291902086916004020161089e8282611fbe565b610a2f610f66565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610a7c576040519150601f19603f3d011682016040523d82523d6000602084013e610a81565b606091505b5050905080610aa25760405162461bcd60e51b815260040161019d90611a5e565b505050565b6000610ab4600130611aa0565b9050610ae77f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610b0e5750336001600160a01b038216145b610b2a5760405162461bcd60e51b815260040161019d90611af5565b826001600160a01b03167fcd9850463422a7449c406a036e35e5edb6fbe35a64c9f12a2354be98a750c0d383604051610b639190611249565b60405180910390a2505050565b6003546000906001600160a01b031615610c26576000610b8e6103eb565b905080341015610bb05760405162461bcd60e51b815260040161019d90612020565b6003546040516000916001600160a01b03169083908381818185875af1925050503d8060008114610bfd576040519150601f19603f3d011682016040523d82523d6000602084013e610c02565b606091505b5050905080610c235760405162461bcd60e51b815260040161019d90611a01565b50505b610c2f33610fda565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef77593733828888888888604051610c6c9796959493929190612030565b60405180910390a195945050505050565b6000818152600460205260408120549003610caa5760405162461bcd60e51b815260040161019d906120eb565b600081815260046020526040902054421015610cd85760405162461bcd60e51b815260040161019d90612137565b600084604051602001610ceb91906121bc565b60405160208183030381529060405280519060200120604051602001610d1191906121fc565b604051602081830303815290604052805190602001209050610d5b84848484604051602001610d40919061221b565b604051602081830303815290604052805190602001206110c7565b610d775760405162461bcd60e51b815260040161019d90612285565b5050505050565b610d86610f66565b60008281526004602052604090205415610db25760405162461bcd60e51b815260040161019d906122ed565b60009182526004602052604090912055565b6000818152600460205260408120549003610df15760405162461bcd60e51b815260040161019d906120eb565b600081815260046020526040902054421015610e1f5760405162461bcd60e51b815260040161019d90612137565b6000610e2e6020860186611346565b610e3e60408701602088016122fd565b610e4e6060880160408901611b80565b610e5e6080890160608a01611b80565b610e6b60808a018a611cd7565b610e7b60c08c0160a08d0161231c565b604051602001610e919796959493929190612030565b604051602081830303815290604052805190602001209050600081604051602001610ebc919061236d565b604051602081830303815290604052805190602001209050610eeb85858584604051602001610d40919061221b565b610f075760405162461bcd60e51b815260040161019d906123d5565b505050505050565b610f17610f66565b6001600160a01b038116610f5a5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161019d9190611394565b610f6381611049565b50565b33610f987f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108b957336040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161019d9190611394565b6001600160a01b0381166000908152600260205260408120805467ffffffffffffffff16916001919061100d83856123e5565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b6110406110df565b610f6381611146565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6000826110d586868561114e565b1495945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166108b9576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f176110df565b600081815b848110156111875761117d8287878481811061117157611171612409565b90506020020135611190565b9150600101611153565b50949350505050565b60008183106111ac5760008281526020849052604090206111bb565b60008381526020839052604090205b90505b92915050565b60006001600160a01b0382166111be565b6111de816111c4565b82525050565b806111de565b604081016111f882856111d5565b6104cf60208301846111e4565b600b8152602081017f756e737570706f72746564000000000000000000000000000000000000000000815290505b60200190565b602080825281016111be81611205565b602081016111be82846111e4565b600060c0828403121561126c5761126c600080fd5b50919050565b60006020828403121561128757611287600080fd5b813567ffffffffffffffff8111156112a1576112a1600080fd5b61056684828501611257565b805b8114610f6357600080fd5b80356111be816112ad565b6000602082840312156112da576112da600080fd5b6111bb83836112ba565b8015156111de565b602081016111be82846112e4565b6112af816111c4565b80356111be816112fa565b6000806040838503121561132457611324600080fd5b61132e8484611303565b915061133d84602085016112ba565b90509250929050565b60006020828403121561135b5761135b600080fd5b6111bb8383611303565b6000806040838503121561137b5761137b600080fd5b6113858484611303565b915061133d8460208501611303565b602081016111be82846111d5565b600080604083850312156113b8576113b8600080fd5b823567ffffffffffffffff8111156113d2576113d2600080fd5b6113de85828601611257565b92505061133d84602085016112ba565b63ffffffff81166112af565b80356111be816113ee565b60008083601f84011261141a5761141a600080fd5b50813567ffffffffffffffff81111561143557611435600080fd5b60208301915083600182028301111561145057611450600080fd5b9250929050565b60ff81166112af565b80356111be81611457565b60008060008060006080868803121561148657611486600080fd5b61149087876113fa565b945061149f87602088016113fa565b9350604086013567ffffffffffffffff8111156114be576114be600080fd5b6114ca88828901611405565b93509350506114dc8760608801611460565b90509295509295909350565b67ffffffffffffffff81166111de565b602081016111be82846114e8565b60006080828403121561126c5761126c600080fd5b60008083601f84011261153057611530600080fd5b50813567ffffffffffffffff81111561154b5761154b600080fd5b60208301915083602082028301111561145057611450600080fd5b60008060008060c0858703121561157f5761157f600080fd5b6115898686611506565b9350608085013567ffffffffffffffff8111156115a8576115a8600080fd5b6115b48782880161151b565b93509350506115c68660a087016112ba565b905092959194509250565b600080604083850312156115e7576115e7600080fd5b61132e84846112ba565b6000806000806060858703121561160a5761160a600080fd5b843567ffffffffffffffff81111561162457611624600080fd5b61163087828801611257565b945050602085013567ffffffffffffffff81111561165057611650600080fd5b61165c8782880161151b565b93509350506115c686604087016112ba565b80516111be816112ad565b60006020828403121561168e5761168e600080fd5b6111bb838361166e565b5060006111be6020830183611303565b67ffffffffffffffff81166112af565b80356111be816116a8565b5060006111be60208301836116b8565b5060006111be60208301836113fa565b63ffffffff81166111de565b6000808335601e193685900301811261170a5761170a600080fd5b830160208101925035905067ffffffffffffffff81111561172d5761172d600080fd5b3681900382131561145057611450600080fd5b82818337506000910152565b818352602083019250611760828483611740565b50601f01601f19160190565b5060006111be6020830183611460565b60ff81166111de565b600060c083016117958380611698565b61179f85826111d5565b506117ad60208401846116c3565b6117ba60208601826114e8565b506117c860408401846116d3565b6117d560408601826116e3565b506117e360608401846116d3565b6117f060608601826116e3565b506117fe60808401846116ef565b858303608087015261181183828461174c565b9250505061182260a084018461176c565b61182f60a086018261177c565b509392505050565b602080825281016111bb8184611785565b60218152602081017f54686973206d65737361676520776173206e65766572207375626d69747465648152601760f91b602082015290505b60400190565b602080825281016111be81611848565b601a8152602081017f537461746520726f6f7420646f6573206e6f742065786973742e00000000000081529050611233565b602080825281016111be81611896565b60308152602081017f417474656d7074696e6720746f2073656e642076616c756520776974686f757481527f2070726f766964696e672045746865720000000000000000000000000000000060208201529050611880565b602080825281016111be816118d8565b60208082527f496e73756666696369656e742066756e647320746f2073656e642076616c75659101908152611233565b602080825281016111be81611940565b634e487b7160e01b600052601160045260246000fd5b818103818111156111be576111be611980565b60248152602081017f4661696c656420746f2073656e64206665657320746f206665657320636f6e7481527f726163740000000000000000000000000000000000000000000000000000000060208201529050611880565b602080825281016111be816119a9565b60408101611a1f82856111e4565b6104cf60208301846114e8565b60148152602081017f6661696c65642073656e64696e672076616c756500000000000000000000000081529050611233565b602080825281016111be81611a2c565b60006111be82611a7c565b90565b67ffffffffffffffff1690565b6111de81611a6e565b602081016111be8284611a89565b6001600160a01b039182169190811690828203908111156111be576111be611980565b60118152602081017f4e6f74206f776e6572206f722073656c6600000000000000000000000000000081529050611233565b602080825281016111be81611ac3565b808201808211156111be576111be611980565b60218152602081017f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636581527f210000000000000000000000000000000000000000000000000000000000000060208201529050611880565b602080825281016111be81611b18565b600060208284031215611b9557611b95600080fd5b6111bb83836113fa565b600081356111be816112fa565b60006001600160a01b03835b81169019929092169190911792915050565b60006111be826111c4565b60006111be82611bca565b611be982611bd5565b611bf4818354611bac565b8255505050565b600081356111be816116a8565b60007bffffffffffffffff0000000000000000000000000000000000000000611bb88460a01b90565b60006111be67ffffffffffffffff8316611a7c565b611c4f82611c31565b611bf4818354611c08565b600081356111be816113ee565b60007fffffffff00000000000000000000000000000000000000000000000000000000611bb88460e01b90565b600063ffffffff82166111be565b611cab82611c94565b611bf4818354611c67565b600063ffffffff83611bb8565b611ccc82611c94565b611bf4818354611cb6565b6000808335601e1936859003018112611cf257611cf2600080fd5b8301915050803567ffffffffffffffff811115611d1157611d11600080fd5b60208201915060018102360382131561145057611450600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b600281046001821680611d6c57607f821691505b60208210810361126c5761126c611d42565b60006111be611a798381565b611d9383611d7e565b815460001960089490940293841b1916921b91909117905550565b6000610aa2818484611d8a565b8181101561073857611dce600082611dae565b600101611dbb565b601f821115610aa2576000818152602090206020601f85010481016020851015611dfd5750805b610d776020601f860104830182611dbb565b8267ffffffffffffffff811115611e2857611e28611d2c565b611e328254611d58565b611e3d828285611dd6565b506000601f821160018114611e725760008315611e5a5750848201355b600019600885021c1981166002850217855550610f07565b600084815260209020601f19841690835b82811015611ea35787850135825560209485019460019092019101611e83565b5084821015611ec0576000196008601f8716021c19878501351681555b5050505060020260010190555050565b610aa2838383611e0f565b600081356111be81611457565b600060ff82166111be565b611efc82611ee8565b815460ff191660ff821617611bf4565b808280611f1881611b9f565b9050611f248184611be0565b50506020830180611f3482611bfb565b9050611f408184611c46565b50506040830180611f5082611c5a565b9050611f5c8184611ca2565b5050506060820180611f6d82611c5a565b9050611f7c8160018501611cc3565b5050611f8b6080830183611cd7565b611f99818360028601611ed0565b505060a0820180611fa982611edb565b9050611fb88160038501611ef3565b50505050565b6107388282611f0c565b60258152602081017f496e73756666696369656e742066756e647320746f207075626c697368206d6581527f737361676500000000000000000000000000000000000000000000000000000060208201529050611880565b602080825281016111be81611fc8565b60c0810161203e828a6111d5565b61204b60208301896114e8565b61205860408301886116e3565b61206560608301876116e3565b818103608083015261207881858761174c565b905061208760a083018461177c565b98975050505050505050565b602a8152602081017f526f6f74206973206e6f74207075626c6973686564206f6e2074686973206d6581527f7373616765206275732e0000000000000000000000000000000000000000000060208201529050611880565b602080825281016111be81612093565b60218152602081017f526f6f74206973206e6f7420636f6e736964657265642066696e616c207965748152601760f91b60208201529050611880565b602080825281016111be816120fb565b5060006111be60208301836112ba565b6121618180611698565b61216b83826111d5565b506121796020820182611698565b61218660208401826111d5565b506121946040820182612147565b6121a160408401826111e4565b506121af60608201826116c3565b610aa260608401826114e8565b608081016111be8284612157565b60018152602081017f760000000000000000000000000000000000000000000000000000000000000081529050611233565b6040808252810161220c816121ca565b90506111be60208301846111e4565b61222581836111e4565b602001919050565b60338152602081017f496e76616c696420696e636c7573696f6e2070726f6f6620666f722076616c7581527f65207472616e73666572206d6573736167652e0000000000000000000000000060208201529050611880565b602080825281016111be8161222d565b60258152602081017f526f6f7420616c726561647920616464656420746f20746865206d657373616781527f652062757300000000000000000000000000000000000000000000000000000060208201529050611880565b602080825281016111be81612295565b60006020828403121561231257612312600080fd5b6111bb83836116b8565b60006020828403121561233157612331600080fd5b6111bb8383611460565b60018152602081017f6d0000000000000000000000000000000000000000000000000000000000000081529050611233565b6040808252810161220c8161233b565b60308152602081017f496e76616c696420696e636c7573696f6e2070726f6f6620666f722063726f7381527f7320636861696e206d6573736167652e0000000000000000000000000000000060208201529050611880565b602080825281016111be8161237d565b67ffffffffffffffff9182169190811690828201908111156111be576111be611980565b634e487b7160e01b600052603260045260246000fdfea26469706673582212209046d260e6ecf02a9b545045265133ebd2a8a091d8cfe42d8fe9829451348f2664736f6c634300081c0033", } // MerkleTreeMessageBusABI is the input ABI used to generate the binding from. @@ -251,6 +251,37 @@ func (_MerkleTreeMessageBus *MerkleTreeMessageBusCallerSession) GetMessageTimeOf return _MerkleTreeMessageBus.Contract.GetMessageTimeOfFinality(&_MerkleTreeMessageBus.CallOpts, crossChainMessage) } +// GetPublishFee is a free data retrieval call binding the contract method 0x00a1b815. +// +// Solidity: function getPublishFee() view returns(uint256) +func (_MerkleTreeMessageBus *MerkleTreeMessageBusCaller) GetPublishFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _MerkleTreeMessageBus.contract.Call(opts, &out, "getPublishFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetPublishFee is a free data retrieval call binding the contract method 0x00a1b815. +// +// Solidity: function getPublishFee() view returns(uint256) +func (_MerkleTreeMessageBus *MerkleTreeMessageBusSession) GetPublishFee() (*big.Int, error) { + return _MerkleTreeMessageBus.Contract.GetPublishFee(&_MerkleTreeMessageBus.CallOpts) +} + +// GetPublishFee is a free data retrieval call binding the contract method 0x00a1b815. +// +// Solidity: function getPublishFee() view returns(uint256) +func (_MerkleTreeMessageBus *MerkleTreeMessageBusCallerSession) GetPublishFee() (*big.Int, error) { + return _MerkleTreeMessageBus.Contract.GetPublishFee(&_MerkleTreeMessageBus.CallOpts) +} + // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // // Solidity: function owner() view returns(address) diff --git a/contracts/generated/MessageBus/MessageBus.go b/contracts/generated/MessageBus/MessageBus.go index f62b0efaf3..d4d9d55264 100644 --- a/contracts/generated/MessageBus/MessageBus.go +++ b/contracts/generated/MessageBus/MessageBus.go @@ -41,8 +41,8 @@ type StructsCrossChainMessage struct { // MessageBusMetaData contains all meta data concerning the MessageBus contract. var MessageBusMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"name\":\"LogMessagePublished\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeDeposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"name\":\"ValueTransfer\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"crossChainMessage\",\"type\":\"tuple\"}],\"name\":\"getMessageTimeOfFinality\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feesAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"notifyDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"name\":\"publishMessage\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveValueFromL2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"retrieveAllFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendValueToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"crossChainMessage\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"finalAfterTimestamp\",\"type\":\"uint256\"}],\"name\":\"storeCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"crossChainMessage\",\"type\":\"tuple\"}],\"name\":\"verifyMessageFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561001057600080fd5b5061001a33610027565b610022610098565b61014a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100e85760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101475780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b611ba7806101596000396000f3fe6080604052600436106100cb5760003560e01c80638da5cb5b11610074578063ab53bddc1161004e578063ab53bddc146102b0578063b1454caa146102d0578063f2fde38b146102f05761013f565b80638da5cb5b1461022b5780639730886d1461027057806399a3ad21146102905761013f565b806336d2da90116100a557806336d2da90146101d6578063485cc955146101f6578063715018a6146102165761013f565b80630fcfbd111461016057806333a88c7214610196578063346633fb146101c35761013f565b3661013f576040517f346633fb000000000000000000000000000000000000000000000000000000008152309063346633fb9034906101109033908390600401610e2b565b6000604051808303818588803b15801561012957600080fd5b505af115801561013d573d6000803e3d6000fd5b005b60405162461bcd60e51b815260040161015790610e7a565b60405180910390fd5b34801561016c57600080fd5b5061018061017b366004610ea5565b610310565b60405161018d9190610ee0565b60405180910390f35b3480156101a257600080fd5b506101b66101b1366004610ea5565b61036f565b60405161018d9190610ef6565b61013d6101d1366004610f34565b6103c1565b3480156101e257600080fd5b5061013d6101f1366004610f6c565b610510565b34801561020257600080fd5b5061013d610211366004610f8b565b61058f565b34801561022257600080fd5b5061013d6106fa565b34801561023757600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031660405161018d9190610fba565b34801561027c57600080fd5b5061013d61028b366004610fc8565b61070e565b34801561029c57600080fd5b5061013d6102ab366004610f34565b61087a565b3480156102bc57600080fd5b5061013d6102cb366004610f34565b6108fa565b6102e36102de366004611091565b6109c3565b60405161018d919061111e565b3480156102fc57600080fd5b5061013d61030b366004610f6c565b610acb565b6000808260405160200161032491906112cb565b60408051601f198184030181529181528151602092830120600081815292839052912054909150806103685760405162461bcd60e51b815260040161015790611336565b9392505050565b6000808260405160200161038391906112cb565b60408051601f19818403018152918152815160209283012060008181529283905291205490915080158015906103b95750428111155b949350505050565b6000341180156103d057508034145b6103ec5760405162461bcd60e51b81526004016101579061139e565b60035434906001600160a01b0316156104b0576000610409610b22565b90508034101561042b5760405162461bcd60e51b8152600401610157906113de565b6104358134611404565b6003546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114610487576040519150601f19603f3d011682016040523d82523d6000602084013e61048c565b606091505b50509050806104ad5760405162461bcd60e51b81526004016101579061146f565b50505b60006104bb33610bb3565b9050836001600160a01b0316336001600160a01b03167f50c536ac33a920f00755865b831d17bf4cff0b2e0345f65b16d52bfc004068b6848460405161050292919061147f565b60405180910390a350505050565b610518610c11565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610565576040519150601f19603f3d011682016040523d82523d6000602084013e61056a565b606091505b505090508061058b5760405162461bcd60e51b8152600401610157906114cc565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156105da5750825b905060008267ffffffffffffffff1660011480156105f75750303b155b905081158015610605575080155b1561063c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561067057845468ff00000000000000001916680100000000000000001785555b61067987610c85565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881617905583156106f157845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906106e890600190611500565b60405180910390a15b50505050505050565b610702610c11565b61070c6000610c96565b565b600061071b60013061150e565b905061074e7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806107755750336001600160a01b038216145b6107915760405162461bcd60e51b815260040161015790611563565b600061079d8342611573565b90506000846040516020016107b291906112cb565b60408051601f198184030181529181528151602092830120600081815292839052912054909150156107f65760405162461bcd60e51b8152600401610157906115de565b60008181526020818152604082208490556001919061081790880188610f6c565b6001600160a01b03168152602081019190915260400160009081209061084360808801606089016115ee565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208691600402016106f18282611a37565b610882610c11565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146108cf576040519150601f19603f3d011682016040523d82523d6000602084013e6108d4565b606091505b50509050806108f55760405162461bcd60e51b8152600401610157906114cc565b505050565b600061090760013061150e565b905061093a7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806109615750336001600160a01b038216145b61097d5760405162461bcd60e51b815260040161015790611563565b826001600160a01b03167fcd9850463422a7449c406a036e35e5edb6fbe35a64c9f12a2354be98a750c0d3836040516109b69190610ee0565b60405180910390a2505050565b6003546000906001600160a01b031615610a74576109e083610d14565b3410156109ff5760405162461bcd60e51b815260040161015790611a99565b6003546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610a4c576040519150601f19603f3d011682016040523d82523d6000602084013e610a51565b606091505b5050905080610a725760405162461bcd60e51b81526004016101579061146f565b505b610a7d33610bb3565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef77593733828888888888604051610aba9796959493929190611aa9565b60405180910390a195945050505050565b610ad3610c11565b6001600160a01b038116610b165760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101579190610fba565b610b1f81610c96565b50565b6003546040517ff1d44d510000000000000000000000000000000000000000000000000000000081526000916001600160a01b03169063f1d44d5190610b6d90602090600401611b15565b602060405180830381865afa158015610b8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bae9190611b2e565b905090565b6001600160a01b0381166000908152600260205260408120805467ffffffffffffffff169160019190610be68385611b4d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b33610c437f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461070c57336040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016101579190610fba565b610c8d610d96565b610b1f81610dfd565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546000906001600160a01b031663f1d44d51610d33601185611573565b6040518263ffffffff1660e01b8152600401610d4f9190610ee0565b602060405180830381865afa158015610d6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d909190611b2e565b92915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661070c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ad3610d96565b60006001600160a01b038216610d90565b610e1f81610e05565b82525050565b80610e1f565b60408101610e398285610e16565b6103686020830184610e25565b600b8152602081017f756e737570706f72746564000000000000000000000000000000000000000000815290505b60200190565b60208082528101610d9081610e46565b600060c08284031215610e9f57610e9f600080fd5b50919050565b600060208284031215610eba57610eba600080fd5b813567ffffffffffffffff811115610ed457610ed4600080fd5b6103b984828501610e8a565b60208101610d908284610e25565b801515610e1f565b60208101610d908284610eee565b610f0d81610e05565b8114610b1f57600080fd5b8035610d9081610f04565b80610f0d565b8035610d9081610f23565b60008060408385031215610f4a57610f4a600080fd5b610f548484610f18565b9150610f638460208501610f29565b90509250929050565b600060208284031215610f8157610f81600080fd5b6103688383610f18565b60008060408385031215610fa157610fa1600080fd5b610fab8484610f18565b9150610f638460208501610f18565b60208101610d908284610e16565b60008060408385031215610fde57610fde600080fd5b823567ffffffffffffffff811115610ff857610ff8600080fd5b61100485828601610e8a565b925050610f638460208501610f29565b63ffffffff8116610f0d565b8035610d9081611014565b60008083601f84011261104057611040600080fd5b50813567ffffffffffffffff81111561105b5761105b600080fd5b60208301915083600182028301111561107657611076600080fd5b9250929050565b60ff8116610f0d565b8035610d908161107d565b6000806000806000608086880312156110ac576110ac600080fd5b6110b68787611020565b94506110c58760208801611020565b9350604086013567ffffffffffffffff8111156110e4576110e4600080fd5b6110f08882890161102b565b93509350506111028760608801611086565b90509295509295909350565b67ffffffffffffffff8116610e1f565b60208101610d90828461110e565b506000610d906020830183610f18565b67ffffffffffffffff8116610f0d565b8035610d908161113c565b506000610d90602083018361114c565b506000610d906020830183611020565b63ffffffff8116610e1f565b6000808335601e193685900301811261119e5761119e600080fd5b830160208101925035905067ffffffffffffffff8111156111c1576111c1600080fd5b3681900382131561107657611076600080fd5b82818337506000910152565b8183526020830192506111f48284836111d4565b50601f01601f19160190565b506000610d906020830183611086565b60ff8116610e1f565b600060c08301611229838061112c565b6112338582610e16565b506112416020840184611157565b61124e602086018261110e565b5061125c6040840184611167565b6112696040860182611177565b506112776060840184611167565b6112846060860182611177565b506112926080840184611183565b85830360808701526112a58382846111e0565b925050506112b660a0840184611200565b6112c360a0860182611210565b509392505050565b602080825281016103688184611219565b60218152602081017f54686973206d65737361676520776173206e65766572207375626d697474656481527f2e00000000000000000000000000000000000000000000000000000000000000602082015290505b60400190565b60208082528101610d90816112dc565b60308152602081017f417474656d7074696e6720746f2073656e642076616c756520776974686f757481527f2070726f766964696e672045746865720000000000000000000000000000000060208201529050611330565b60208082528101610d9081611346565b60208082527f496e73756666696369656e742066756e647320746f2073656e642076616c75659101908152610e74565b60208082528101610d90816113ae565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d9057610d906113ee565b60248152602081017f4661696c656420746f2073656e64206665657320746f206665657320636f6e7481527f726163740000000000000000000000000000000000000000000000000000000060208201529050611330565b60208082528101610d9081611417565b6040810161148d8285610e25565b610368602083018461110e565b60148152602081017f6661696c65642073656e64696e672076616c756500000000000000000000000081529050610e74565b60208082528101610d908161149a565b6000610d90826114ea565b90565b67ffffffffffffffff1690565b610e1f816114dc565b60208101610d9082846114f7565b6001600160a01b03918216919081169082820390811115610d9057610d906113ee565b60118152602081017f4e6f74206f776e6572206f722073656c6600000000000000000000000000000081529050610e74565b60208082528101610d9081611531565b80820180821115610d9057610d906113ee565b60218152602081017f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636581527f210000000000000000000000000000000000000000000000000000000000000060208201529050611330565b60208082528101610d9081611586565b60006020828403121561160357611603600080fd5b6103688383611020565b60008135610d9081610f04565b60006001600160a01b03835b81169019929092169190911792915050565b6000610d9082610e05565b6000610d9082611638565b61165782611643565b61166281835461161a565b8255505050565b60008135610d908161113c565b60007bffffffffffffffff00000000000000000000000000000000000000006116268460a01b90565b6000610d9067ffffffffffffffff83166114ea565b6116bd8261169f565b611662818354611676565b60008135610d9081611014565b60007fffffffff000000000000000000000000000000000000000000000000000000006116268460e01b90565b600063ffffffff8216610d90565b61171982611702565b6116628183546116d5565b600063ffffffff83611626565b61173a82611702565b611662818354611724565b6000808335601e193685900301811261176057611760600080fd5b8301915050803567ffffffffffffffff81111561177f5761177f600080fd5b60208201915060018102360382131561107657611076600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b6002810460018216806117da57607f821691505b602082108103610e9f57610e9f6117b0565b6000610d906114e78381565b611801836117ec565b815460001960089490940293841b1916921b91909117905550565b60006108f58184846117f8565b8181101561058b5761183c60008261181c565b600101611829565b601f8211156108f5576000818152602090206020601f8501048101602085101561186b5750805b61187d6020601f860104830182611829565b5050505050565b8267ffffffffffffffff81111561189d5761189d61179a565b6118a782546117c6565b6118b2828285611844565b506000601f8211600181146118e757600083156118cf5750848201355b600019600885021c1981166002850217855550611941565b600084815260209020601f19841690835b8281101561191857878501358255602094850194600190920191016118f8565b5084821015611935576000196008601f8716021c19878501351681555b50506001600284020184555b505050505050565b6108f5838383611884565b60008135610d908161107d565b600060ff8216610d90565b61197582611961565b815460ff191660ff821617611662565b8082806119918161160d565b905061199d818461164e565b505060208301806119ad82611669565b90506119b981846116b4565b505060408301806119c9826116c8565b90506119d58184611710565b50505060608201806119e6826116c8565b90506119f58160018501611731565b5050611a046080830183611745565b611a12818360028601611949565b505060a0820180611a2282611954565b9050611a31816003850161196c565b50505050565b61058b8282611985565b60258152602081017f496e73756666696369656e742066756e647320746f207075626c697368206d6581527f737361676500000000000000000000000000000000000000000000000000000060208201529050611330565b60208082528101610d9081611a41565b60c08101611ab7828a610e16565b611ac4602083018961110e565b611ad16040830188611177565b611ade6060830187611177565b8181036080830152611af18185876111e0565b9050611b0060a0830184611210565b98975050505050505050565b610e1f816117ec565b60208101610d908284611b0c565b8051610d9081610f23565b600060208284031215611b4357611b43600080fd5b6103688383611b23565b67ffffffffffffffff918216919081169082820190811115610d9057610d906113ee56fea26469706673582212205827e6100538af9307eff1914e07e481a82d2ed05aab2e5cf52b967c89af264964736f6c634300081c0033", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"name\":\"LogMessagePublished\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeDeposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"name\":\"ValueTransfer\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"crossChainMessage\",\"type\":\"tuple\"}],\"name\":\"getMessageTimeOfFinality\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPublishFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feesAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"notifyDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"name\":\"publishMessage\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"receiveValueFromL2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"retrieveAllFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sendValueToL2\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"crossChainMessage\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"finalAfterTimestamp\",\"type\":\"uint256\"}],\"name\":\"storeCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage\",\"name\":\"crossChainMessage\",\"type\":\"tuple\"}],\"name\":\"verifyMessageFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x608060405234801561001057600080fd5b5061001a33610027565b610022610098565b61014a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100e85760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101475780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b611b40806101596000396000f3fe6080604052600436106100d55760003560e01c8063715018a61161007f57806399a3ad211161005957806399a3ad21146102af578063ab53bddc146102cf578063b1454caa146102ef578063f2fde38b1461030f57610149565b8063715018a6146102355780638da5cb5b1461024a5780639730886d1461028f57610149565b8063346633fb116100b0578063346633fb146101e257806336d2da90146101f5578063485cc9551461021557610149565b8062a1b8151461016a5780630fcfbd111461019557806333a88c72146101b557610149565b36610149576040517f346633fb000000000000000000000000000000000000000000000000000000008152309063346633fb90349061011a9033908390600401610dca565b6000604051808303818588803b15801561013357600080fd5b505af1158015610147573d6000803e3d6000fd5b005b60405162461bcd60e51b815260040161016190610e19565b60405180910390fd5b34801561017657600080fd5b5061017f61032f565b60405161018c9190610e29565b60405180910390f35b3480156101a157600080fd5b5061017f6101b0366004610e52565b6103bb565b3480156101c157600080fd5b506101d56101d0366004610e52565b61041a565b60405161018c9190610e95565b6101476101f0366004610ed3565b61046c565b34801561020157600080fd5b50610147610210366004610f0b565b6105bb565b34801561022157600080fd5b50610147610230366004610f2a565b61063a565b34801561024157600080fd5b506101476107a5565b34801561025657600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031660405161018c9190610f59565b34801561029b57600080fd5b506101476102aa366004610f67565b6107b9565b3480156102bb57600080fd5b506101476102ca366004610ed3565b610925565b3480156102db57600080fd5b506101476102ea366004610ed3565b6109a5565b6103026102fd366004611030565b610a6e565b60405161018c91906110bd565b34801561031b57600080fd5b5061014761032a366004610f0b565b610b7b565b600354604080517f1a90a21900000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691631a90a2199160048083019260209291908290030181865afa158015610392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b691906110d6565b905090565b600080826040516020016103cf9190611294565b60408051601f198184030181529181528151602092830120600081815292839052912054909150806104135760405162461bcd60e51b8152600401610161906112ff565b9392505050565b6000808260405160200161042e9190611294565b60408051601f19818403018152918152815160209283012060008181529283905291205490915080158015906104645750428111155b949350505050565b60003411801561047b57508034145b6104975760405162461bcd60e51b815260040161016190611367565b60035434906001600160a01b03161561055b5760006104b461032f565b9050803410156104d65760405162461bcd60e51b8152600401610161906113a7565b6104e081346113cd565b6003546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114610532576040519150601f19603f3d011682016040523d82523d6000602084013e610537565b606091505b50509050806105585760405162461bcd60e51b815260040161016190611438565b50505b600061056633610bd2565b9050836001600160a01b0316336001600160a01b03167f50c536ac33a920f00755865b831d17bf4cff0b2e0345f65b16d52bfc004068b684846040516105ad929190611448565b60405180910390a350505050565b6105c3610c30565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610610576040519150601f19603f3d011682016040523d82523d6000602084013e610615565b606091505b50509050806106365760405162461bcd60e51b815260040161016190611495565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156106855750825b905060008267ffffffffffffffff1660011480156106a25750303b155b9050811580156106b0575080155b156106e7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561071b57845468ff00000000000000001916680100000000000000001785555b61072487610ca4565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038816179055831561079c57845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290610793906001906114c9565b60405180910390a15b50505050505050565b6107ad610c30565b6107b76000610cb5565b565b60006107c66001306114d7565b90506107f97f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806108205750336001600160a01b038216145b61083c5760405162461bcd60e51b81526004016101619061152c565b6000610848834261153c565b905060008460405160200161085d9190611294565b60408051601f198184030181529181528151602092830120600081815292839052912054909150156108a15760405162461bcd60e51b8152600401610161906115a7565b6000818152602081815260408220849055600191906108c290880188610f0b565b6001600160a01b0316815260208101919091526040016000908120906108ee60808801606089016115b7565b63ffffffff1681526020808201929092526040016000908120805460018101825590825291902086916004020161079c8282611a11565b61092d610c30565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461097a576040519150601f19603f3d011682016040523d82523d6000602084013e61097f565b606091505b50509050806109a05760405162461bcd60e51b815260040161016190611495565b505050565b60006109b26001306114d7565b90506109e57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610a0c5750336001600160a01b038216145b610a285760405162461bcd60e51b81526004016101619061152c565b826001600160a01b03167fcd9850463422a7449c406a036e35e5edb6fbe35a64c9f12a2354be98a750c0d383604051610a619190610e29565b60405180910390a2505050565b6003546000906001600160a01b031615610b24576000610a8c61032f565b905080341015610aae5760405162461bcd60e51b815260040161016190611a73565b6003546040516000916001600160a01b03169083908381818185875af1925050503d8060008114610afb576040519150601f19603f3d011682016040523d82523d6000602084013e610b00565b606091505b5050905080610b215760405162461bcd60e51b815260040161016190611438565b50505b610b2d33610bd2565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef77593733828888888888604051610b6a9796959493929190611a83565b60405180910390a195945050505050565b610b83610c30565b6001600160a01b038116610bc65760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101619190610f59565b610bcf81610cb5565b50565b6001600160a01b0381166000908152600260205260408120805467ffffffffffffffff169160019190610c058385611ae6565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b33610c627f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146107b757336040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016101619190610f59565b610cac610d33565b610bcf81610d9a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166107b7576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b83610d33565b60006001600160a01b0382165b92915050565b610dbe81610da2565b82525050565b80610dbe565b60408101610dd88285610db5565b6104136020830184610dc4565b600b8152602081017f756e737570706f72746564000000000000000000000000000000000000000000815290505b60200190565b60208082528101610daf81610de5565b60208101610daf8284610dc4565b600060c08284031215610e4c57610e4c600080fd5b50919050565b600060208284031215610e6757610e67600080fd5b813567ffffffffffffffff811115610e8157610e81600080fd5b61046484828501610e37565b801515610dbe565b60208101610daf8284610e8d565b610eac81610da2565b8114610bcf57600080fd5b8035610daf81610ea3565b80610eac565b8035610daf81610ec2565b60008060408385031215610ee957610ee9600080fd5b610ef38484610eb7565b9150610f028460208501610ec8565b90509250929050565b600060208284031215610f2057610f20600080fd5b6104138383610eb7565b60008060408385031215610f4057610f40600080fd5b610f4a8484610eb7565b9150610f028460208501610eb7565b60208101610daf8284610db5565b60008060408385031215610f7d57610f7d600080fd5b823567ffffffffffffffff811115610f9757610f97600080fd5b610fa385828601610e37565b925050610f028460208501610ec8565b63ffffffff8116610eac565b8035610daf81610fb3565b60008083601f840112610fdf57610fdf600080fd5b50813567ffffffffffffffff811115610ffa57610ffa600080fd5b60208301915083600182028301111561101557611015600080fd5b9250929050565b60ff8116610eac565b8035610daf8161101c565b60008060008060006080868803121561104b5761104b600080fd5b6110558787610fbf565b94506110648760208801610fbf565b9350604086013567ffffffffffffffff81111561108357611083600080fd5b61108f88828901610fca565b93509350506110a18760608801611025565b90509295509295909350565b67ffffffffffffffff8116610dbe565b60208101610daf82846110ad565b8051610daf81610ec2565b6000602082840312156110eb576110eb600080fd5b61041383836110cb565b506000610daf6020830183610eb7565b67ffffffffffffffff8116610eac565b8035610daf81611105565b506000610daf6020830183611115565b506000610daf6020830183610fbf565b63ffffffff8116610dbe565b6000808335601e193685900301811261116757611167600080fd5b830160208101925035905067ffffffffffffffff81111561118a5761118a600080fd5b3681900382131561101557611015600080fd5b82818337506000910152565b8183526020830192506111bd82848361119d565b50601f01601f19160190565b506000610daf6020830183611025565b60ff8116610dbe565b600060c083016111f283806110f5565b6111fc8582610db5565b5061120a6020840184611120565b61121760208601826110ad565b506112256040840184611130565b6112326040860182611140565b506112406060840184611130565b61124d6060860182611140565b5061125b608084018461114c565b858303608087015261126e8382846111a9565b9250505061127f60a08401846111c9565b61128c60a08601826111d9565b509392505050565b6020808252810161041381846111e2565b60218152602081017f54686973206d65737361676520776173206e65766572207375626d697474656481527f2e00000000000000000000000000000000000000000000000000000000000000602082015290505b60400190565b60208082528101610daf816112a5565b60308152602081017f417474656d7074696e6720746f2073656e642076616c756520776974686f757481527f2070726f766964696e6720457468657200000000000000000000000000000000602082015290506112f9565b60208082528101610daf8161130f565b60208082527f496e73756666696369656e742066756e647320746f2073656e642076616c75659101908152610e13565b60208082528101610daf81611377565b634e487b7160e01b600052601160045260246000fd5b81810381811115610daf57610daf6113b7565b60248152602081017f4661696c656420746f2073656e64206665657320746f206665657320636f6e7481527f7261637400000000000000000000000000000000000000000000000000000000602082015290506112f9565b60208082528101610daf816113e0565b604081016114568285610dc4565b61041360208301846110ad565b60148152602081017f6661696c65642073656e64696e672076616c756500000000000000000000000081529050610e13565b60208082528101610daf81611463565b6000610daf826114b3565b90565b67ffffffffffffffff1690565b610dbe816114a5565b60208101610daf82846114c0565b6001600160a01b03918216919081169082820390811115610daf57610daf6113b7565b60118152602081017f4e6f74206f776e6572206f722073656c6600000000000000000000000000000081529050610e13565b60208082528101610daf816114fa565b80820180821115610daf57610daf6113b7565b60218152602081017f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636581527f2100000000000000000000000000000000000000000000000000000000000000602082015290506112f9565b60208082528101610daf8161154f565b6000602082840312156115cc576115cc600080fd5b6104138383610fbf565b60008135610daf81610ea3565b60006001600160a01b03835b81169019929092169190911792915050565b60006001600160a01b038216610daf565b6000610daf82611601565b6000610daf82611612565b6116318261161d565b61163c8183546115e3565b8255505050565b60008135610daf81611105565b60007bffffffffffffffff00000000000000000000000000000000000000006115ef8460a01b90565b6000610daf67ffffffffffffffff83166114b3565b61169782611679565b61163c818354611650565b60008135610daf81610fb3565b60007fffffffff000000000000000000000000000000000000000000000000000000006115ef8460e01b90565b600063ffffffff8216610daf565b6116f3826116dc565b61163c8183546116af565b600063ffffffff836115ef565b611714826116dc565b61163c8183546116fe565b6000808335601e193685900301811261173a5761173a600080fd5b8301915050803567ffffffffffffffff81111561175957611759600080fd5b60208201915060018102360382131561101557611015600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b6002810460018216806117b457607f821691505b602082108103610e4c57610e4c61178a565b6000610daf6114b08381565b6117db836117c6565b815460001960089490940293841b1916921b91909117905550565b60006109a08184846117d2565b81811015610636576118166000826117f6565b600101611803565b601f8211156109a0576000818152602090206020601f850104810160208510156118455750805b6118576020601f860104830182611803565b5050505050565b8267ffffffffffffffff81111561187757611877611774565b61188182546117a0565b61188c82828561181e565b506000601f8211600181146118c157600083156118a95750848201355b600019600885021c198116600285021785555061191b565b600084815260209020601f19841690835b828110156118f257878501358255602094850194600190920191016118d2565b508482101561190f576000196008601f8716021c19878501351681555b50506001600284020184555b505050505050565b6109a083838361185e565b60008135610daf8161101c565b600060ff8216610daf565b61194f8261193b565b815460ff191660ff82161761163c565b80828061196b816115d6565b90506119778184611628565b5050602083018061198782611643565b9050611993818461168e565b505060408301806119a3826116a2565b90506119af81846116ea565b50505060608201806119c0826116a2565b90506119cf816001850161170b565b50506119de608083018361171f565b6119ec818360028601611923565b505060a08201806119fc8261192e565b9050611a0b8160038501611946565b50505050565b610636828261195f565b60258152602081017f496e73756666696369656e742066756e647320746f207075626c697368206d6581527f7373616765000000000000000000000000000000000000000000000000000000602082015290506112f9565b60208082528101610daf81611a1b565b60c08101611a91828a610db5565b611a9e60208301896110ad565b611aab6040830188611140565b611ab86060830187611140565b8181036080830152611acb8185876111a9565b9050611ada60a08301846111d9565b98975050505050505050565b67ffffffffffffffff918216919081169082820190811115610daf57610daf6113b756fea2646970667358221220bead2f08222fa8050ef654f93b3b55289786509febf6aadea92d722d33fb188964736f6c634300081c0033", } // MessageBusABI is the input ABI used to generate the binding from. @@ -243,6 +243,37 @@ func (_MessageBus *MessageBusCallerSession) GetMessageTimeOfFinality(crossChainM return _MessageBus.Contract.GetMessageTimeOfFinality(&_MessageBus.CallOpts, crossChainMessage) } +// GetPublishFee is a free data retrieval call binding the contract method 0x00a1b815. +// +// Solidity: function getPublishFee() view returns(uint256) +func (_MessageBus *MessageBusCaller) GetPublishFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _MessageBus.contract.Call(opts, &out, "getPublishFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetPublishFee is a free data retrieval call binding the contract method 0x00a1b815. +// +// Solidity: function getPublishFee() view returns(uint256) +func (_MessageBus *MessageBusSession) GetPublishFee() (*big.Int, error) { + return _MessageBus.Contract.GetPublishFee(&_MessageBus.CallOpts) +} + +// GetPublishFee is a free data retrieval call binding the contract method 0x00a1b815. +// +// Solidity: function getPublishFee() view returns(uint256) +func (_MessageBus *MessageBusCallerSession) GetPublishFee() (*big.Int, error) { + return _MessageBus.Contract.GetPublishFee(&_MessageBus.CallOpts) +} + // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // // Solidity: function owner() view returns(address) diff --git a/contracts/generated/ObsERC20/ObsERC20.go b/contracts/generated/ObsERC20/ObsERC20.go index 3d6676f30f..af979d7c7c 100644 --- a/contracts/generated/ObsERC20/ObsERC20.go +++ b/contracts/generated/ObsERC20/ObsERC20.go @@ -32,7 +32,7 @@ var ( // ObsERC20MetaData contains all meta data concerning the ObsERC20 contract. var ObsERC20MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f317905534801561003657600080fd5b50604051610dc8380380610dc883398101604081905261005591610191565b8181600361006383826102ef565b50600461007082826102ef565b50505050506103ae565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b03811182821017156100b5576100b561007a565b6040525050565b60006100c760405190565b90506100d38282610090565b919050565b60006001600160401b038211156100f1576100f161007a565b601f19601f83011660200192915050565b60005b8381101561011d578181015183820152602001610105565b50506000910152565b6000610139610134846100d8565b6100bc565b905082815283838301111561015057610150600080fd5b61015e836020830184610102565b9392505050565b600082601f83011261017957610179600080fd5b8151610189848260208601610126565b949350505050565b600080604083850312156101a7576101a7600080fd5b82516001600160401b038111156101c0576101c0600080fd5b6101cc85828601610165565b602085015190935090506001600160401b038111156101ed576101ed600080fd5b6101f985828601610165565b9150509250929050565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061022d57607f821691505b60208210810361023f5761023f610203565b50919050565b60006102546102518381565b90565b92915050565b61026383610245565b815460001960089490940293841b1916921b91909117905550565b600061028b81848461025a565b505050565b818110156102ab576102a360008261027e565b600101610290565b5050565b601f82111561028b576000818152602090206020601f850104810160208510156102d65750805b6102e86020601f860104830182610290565b5050505050565b81516001600160401b038111156103085761030861007a565b6103128254610219565b61031d8282856102af565b506020601f821160018114610352576000831561033a5750848201515b600019600885021c19811660028502178555506102e8565b600084815260208120601f198516915b828110156103825787850151825560209485019460019092019101610362565b508482101561039f5783870151600019601f87166008021c191681555b50505050600202600101905550565b610a0b806103bd6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063313ce5671161007657806395d89b411161005b57806395d89b411461012c578063a9059cbb14610134578063dd62ed3e1461014757600080fd5b8063313ce5671461010a57806370a082311461011957600080fd5b806306fdde03146100a8578063095ea7b3146100c657806318160ddd146100e657806323b872dd146100f7575b600080fd5b6100b061015a565b6040516100bd9190610719565b60405180910390f35b6100d96100d4366004610775565b6101ec565b6040516100bd91906107b7565b6002545b6040516100bd91906107cb565b6100d96101053660046107d9565b610206565b60126040516100bd919061082b565b6100ea610127366004610839565b61022a565b6100b06102a9565b6100d9610142366004610775565b6102b8565b6100ea610155366004610858565b6102c6565b6060600380546101699061089d565b80601f01602080910402602001604051908101604052809291908181526020018280546101959061089d565b80156101e25780601f106101b7576101008083540402835291602001916101e2565b820191906000526020600020905b8154815290600101906020018083116101c557829003601f168201915b5050505050905090565b6000336101fa818585610381565b60019150505b92915050565b600033610214858285610393565b61021f8585856103ff565b506001949350505050565b60006001600160a01b038216320361025a576001600160a01b038216600090815260208190526040902054610200565b6001600160a01b0382163303610288576001600160a01b038216600090815260208190526040902054610200565b60405162461bcd60e51b81526004016102a0906108c9565b60405180910390fd5b6060600480546101699061089d565b6000336101fa8185856103ff565b6000326001600160a01b03841614806102e75750326001600160a01b038316145b1561031a576001600160a01b038084166000908152600160209081526040808320938616835292905220545b9050610200565b336001600160a01b03841614806103395750336001600160a01b038316145b15610369576001600160a01b03808416600090815260016020908152604080832093861683529290522054610313565b60405162461bcd60e51b81526004016102a090610904565b61038e8383836001610490565b505050565b600061039f84846102c6565b905060001981146103f957818110156103ea578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016102a09392919061096e565b6103f984848484036000610490565b50505050565b6001600160a01b0383166104425760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016102a0919061099e565b6001600160a01b0382166104855760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016102a0919061099e565b61038e838383610595565b6001600160a01b0384166104d35760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016102a0919061099e565b6001600160a01b0383166105165760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016102a0919061099e565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f957826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161058791906107cb565b60405180910390a350505050565b6001600160a01b0383166105c05780600260008282546105b591906109c2565b909155506106389050565b6001600160a01b03831660009081526020819052604090205481811015610619578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016102a09392919061096e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661065457600280548290039055610673565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516106b691906107cb565b60405180910390a3505050565b60005b838110156106de5781810151838201526020016106c6565b50506000910152565b60006106f1825190565b8084526020840193506107088185602086016106c3565b601f01601f19169290920192915050565b6020808252810161072a81846106e7565b9392505050565b60006001600160a01b038216610200565b61074b81610731565b811461075657600080fd5b50565b803561020081610742565b8061074b565b803561020081610764565b6000806040838503121561078b5761078b600080fd5b6107958484610759565b91506107a4846020850161076a565b90509250929050565b8015155b82525050565b6020810161020082846107ad565b806107b1565b6020810161020082846107c5565b6000806000606084860312156107f1576107f1600080fd5b6107fb8585610759565b925061080a8560208601610759565b9150610819856040860161076a565b90509250925092565b60ff81166107b1565b602081016102008284610822565b60006020828403121561084e5761084e600080fd5b61072a8383610759565b6000806040838503121561086e5761086e600080fd5b6108788484610759565b91506107a48460208501610759565b634e487b7160e01b600052602260045260246000fd5b6002810460018216806108b157607f821691505b6020821081036108c3576108c3610887565b50919050565b6020808252810161020081601f81527f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e636500602082015260400190565b6020808252810161020081602181527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360208201527f6500000000000000000000000000000000000000000000000000000000000000604082015260600190565b6107b181610731565b6060810161097c8286610965565b61098960208301856107c5565b61099660408301846107c5565b949350505050565b602081016102008284610965565b634e487b7160e01b600052601160045260246000fd5b80820180821115610200576102006109ac56fea2646970667358221220040f9b1774f491b981d504c0f392f310b7fe5ceb2e584bb687ef21fd301bb0cb64736f6c634300081c0033", + Bin: "0x6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f317905534801561003657600080fd5b50604051610dc8380380610dc883398101604081905261005591610191565b8181600361006383826102ef565b50600461007082826102ef565b50505050506103ae565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b03811182821017156100b5576100b561007a565b6040525050565b60006100c760405190565b90506100d38282610090565b919050565b60006001600160401b038211156100f1576100f161007a565b601f19601f83011660200192915050565b60005b8381101561011d578181015183820152602001610105565b50506000910152565b6000610139610134846100d8565b6100bc565b905082815283838301111561015057610150600080fd5b61015e836020830184610102565b9392505050565b600082601f83011261017957610179600080fd5b8151610189848260208601610126565b949350505050565b600080604083850312156101a7576101a7600080fd5b82516001600160401b038111156101c0576101c0600080fd5b6101cc85828601610165565b602085015190935090506001600160401b038111156101ed576101ed600080fd5b6101f985828601610165565b9150509250929050565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061022d57607f821691505b60208210810361023f5761023f610203565b50919050565b60006102546102518381565b90565b92915050565b61026383610245565b815460001960089490940293841b1916921b91909117905550565b600061028b81848461025a565b505050565b818110156102ab576102a360008261027e565b600101610290565b5050565b601f82111561028b576000818152602090206020601f850104810160208510156102d65750805b6102e86020601f860104830182610290565b5050505050565b81516001600160401b038111156103085761030861007a565b6103128254610219565b61031d8282856102af565b506020601f821160018114610352576000831561033a5750848201515b600019600885021c19811660028502178555506102e8565b600084815260208120601f198516915b828110156103825787850151825560209485019460019092019101610362565b508482101561039f5783870151600019601f87166008021c191681555b50505050600202600101905550565b610a0b806103bd6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063313ce5671161007657806395d89b411161005b57806395d89b411461012c578063a9059cbb14610134578063dd62ed3e1461014757600080fd5b8063313ce5671461010a57806370a082311461011957600080fd5b806306fdde03146100a8578063095ea7b3146100c657806318160ddd146100e657806323b872dd146100f7575b600080fd5b6100b061015a565b6040516100bd9190610719565b60405180910390f35b6100d96100d4366004610775565b6101ec565b6040516100bd91906107b7565b6002545b6040516100bd91906107cb565b6100d96101053660046107d9565b610206565b60126040516100bd919061082b565b6100ea610127366004610839565b61022a565b6100b06102a9565b6100d9610142366004610775565b6102b8565b6100ea610155366004610858565b6102c6565b6060600380546101699061089d565b80601f01602080910402602001604051908101604052809291908181526020018280546101959061089d565b80156101e25780601f106101b7576101008083540402835291602001916101e2565b820191906000526020600020905b8154815290600101906020018083116101c557829003601f168201915b5050505050905090565b6000336101fa818585610381565b60019150505b92915050565b600033610214858285610393565b61021f8585856103ff565b506001949350505050565b60006001600160a01b038216320361025a576001600160a01b038216600090815260208190526040902054610200565b6001600160a01b0382163303610288576001600160a01b038216600090815260208190526040902054610200565b60405162461bcd60e51b81526004016102a0906108c9565b60405180910390fd5b6060600480546101699061089d565b6000336101fa8185856103ff565b6000326001600160a01b03841614806102e75750326001600160a01b038316145b1561031a576001600160a01b038084166000908152600160209081526040808320938616835292905220545b9050610200565b336001600160a01b03841614806103395750336001600160a01b038316145b15610369576001600160a01b03808416600090815260016020908152604080832093861683529290522054610313565b60405162461bcd60e51b81526004016102a090610904565b61038e8383836001610490565b505050565b600061039f84846102c6565b905060001981146103f957818110156103ea578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016102a09392919061096e565b6103f984848484036000610490565b50505050565b6001600160a01b0383166104425760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016102a0919061099e565b6001600160a01b0382166104855760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016102a0919061099e565b61038e838383610595565b6001600160a01b0384166104d35760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016102a0919061099e565b6001600160a01b0383166105165760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016102a0919061099e565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103f957826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161058791906107cb565b60405180910390a350505050565b6001600160a01b0383166105c05780600260008282546105b591906109c2565b909155506106389050565b6001600160a01b03831660009081526020819052604090205481811015610619578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016102a09392919061096e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661065457600280548290039055610673565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516106b691906107cb565b60405180910390a3505050565b60005b838110156106de5781810151838201526020016106c6565b50506000910152565b60006106f1825190565b8084526020840193506107088185602086016106c3565b601f01601f19169290920192915050565b6020808252810161072a81846106e7565b9392505050565b60006001600160a01b038216610200565b61074b81610731565b811461075657600080fd5b50565b803561020081610742565b8061074b565b803561020081610764565b6000806040838503121561078b5761078b600080fd5b6107958484610759565b91506107a4846020850161076a565b90509250929050565b8015155b82525050565b6020810161020082846107ad565b806107b1565b6020810161020082846107c5565b6000806000606084860312156107f1576107f1600080fd5b6107fb8585610759565b925061080a8560208601610759565b9150610819856040860161076a565b90509250925092565b60ff81166107b1565b602081016102008284610822565b60006020828403121561084e5761084e600080fd5b61072a8383610759565b6000806040838503121561086e5761086e600080fd5b6108788484610759565b91506107a48460208501610759565b634e487b7160e01b600052602260045260246000fd5b6002810460018216806108b157607f821691505b6020821081036108c3576108c3610887565b50919050565b6020808252810161020081601f81527f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e636500602082015260400190565b6020808252810161020081602181527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360208201527f6500000000000000000000000000000000000000000000000000000000000000604082015260600190565b6107b181610731565b6060810161097c8286610965565b61098960208301856107c5565b61099660408301846107c5565b949350505050565b602081016102008284610965565b634e487b7160e01b600052601160045260246000fd5b80820180821115610200576102006109ac56fea2646970667358221220efbd35279902d1c0deb8a1f7c8ac933937a5efe6c2a0e36865e0499e3e8a65bb64736f6c634300081c0033", } // ObsERC20ABI is the input ABI used to generate the binding from. diff --git a/contracts/generated/ObscuroBridge/ObscuroBridge.go b/contracts/generated/ObscuroBridge/ObscuroBridge.go index ed6e25f073..b6cb0a6544 100644 --- a/contracts/generated/ObscuroBridge/ObscuroBridge.go +++ b/contracts/generated/ObscuroBridge/ObscuroBridge.go @@ -32,7 +32,7 @@ var ( // ObscuroBridgeMetaData contains all meta data concerning the ObscuroBridge contract. var ObscuroBridgeMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_TOKEN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_TOKEN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messengerAddress\",\"type\":\"address\"}],\"name\":\"configure\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"messenger\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"promoteToAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"receiveAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"removeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendERC20\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"sendNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"}],\"name\":\"setRemoteBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"whitelistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040526001805463ffffffff60a01b19169055348015601f57600080fd5b50611ae88061002f6000396000f3fe6080604052600436106101445760003560e01c806375b238fc116100c0578063a217fddf11610074578063c4d66de811610059578063c4d66de8146103a7578063d547741f146103c7578063e4c3ebc7146103e757600080fd5b8063a217fddf1461037f578063a381c8e21461039457600080fd5b806383bece4d116100a557806383bece4d146102f957806391d148541461031957806393b374421461035f57600080fd5b806375b238fc146102a557806375cb2672146102d957600080fd5b80632f2ff15d11610117578063498d82ab116100fc578063498d82ab146102315780635d872970146102515780635fa7b5841461028557600080fd5b80632f2ff15d146101f157806336568abe1461021157600080fd5b806301ffc9a71461014957806316ce81491461017f5780631888d712146101a1578063248a9ca3146101b4575b600080fd5b34801561015557600080fd5b506101696101643660046112cc565b61041b565b60405161017691906112f5565b60405180910390f35b34801561018b57600080fd5b5061019f61019a366004611328565b610484565b005b61019f6101af366004611328565b6104de565b3480156101c057600080fd5b506101e46101cf366004611358565b60009081526002602052604090206001015490565b604051610176919061137d565b3480156101fd57600080fd5b5061019f61020c36600461138b565b610589565b34801561021d57600080fd5b5061019f61022c36600461138b565b6105b4565b34801561023d57600080fd5b5061019f61024c366004611415565b610605565b34801561025d57600080fd5b506101e47f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a81565b34801561029157600080fd5b5061019f6102a0366004611328565b6106d9565b3480156102b157600080fd5b506101e47fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b3480156102e557600080fd5b5061019f6102f4366004611328565b61072d565b34801561030557600080fd5b5061019f6103143660046114a2565b610808565b34801561032557600080fd5b5061016961033436600461138b565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561036b57600080fd5b5061019f61037a366004611328565b610922565b34801561038b57600080fd5b506101e4600081565b61019f6103a23660046114a2565b610976565b3480156103b357600080fd5b5061019f6103c2366004611328565b610a65565b3480156103d357600080fd5b5061019f6103e236600461138b565b610bfd565b3480156103f357600080fd5b506101e47fd2fb17ceaa388942529b17e0006ffc4d559f040dd4f2157b8070f17ad211057881565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061047e57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756104ae81610c22565b506003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600034116105075760405162461bcd60e51b81526004016104fe9061151f565b60405180910390fd5b6001546040517f346633fb0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063346633fb9034906105549085908390600401611538565b6000604051808303818588803b15801561056d57600080fd5b505af1158015610581573d6000803e3d6000fd5b505050505050565b6000828152600260205260409020600101546105a481610c22565b6105ae8383610c2f565b50505050565b6001600160a01b03811633146105f6576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106008282610cdd565b505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561062f81610c22565b6106597f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a87610c2f565b50600063458ffd6360e01b878787878760405160240161067d95949392919061157f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526003549091506106d0906001600160a01b03168260015b6000806000610d64565b50505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561070381610c22565b6106007f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a83610cdd565b610735610e7b565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fa1a227fa000000000000000000000000000000000000000000000000000000008152905163a1a227fa916004808201926020929091908290030181865afa1580156107b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d891906115cb565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6003546000546001600160a01b03918216911633146108395760405162461bcd60e51b81526004016104fe90611644565b806001600160a01b031661084b610ee4565b6001600160a01b0316146108715760405162461bcd60e51b81526004016104fe906116ac565b6001600160a01b03841660009081527f32ef73018533fa188e9e42b313c0a4048c6052342b662fb7510c0d1abcea3413602052604090205460ff16156108c1576108bc848484610f61565b6105ae565b6001600160a01b03841660009081527f13ad2d85210d477fe1a6e25654c8250308cf29b050a4bf0b039d70467486712c602052604090205460ff161561090a576108bc82610f6c565b60405162461bcd60e51b81526004016104fe90611714565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561094c81610c22565b6106007fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583610c2f565b600082116109965760405162461bcd60e51b81526004016104fe90611756565b6001600160a01b03831660009081527f32ef73018533fa188e9e42b313c0a4048c6052342b662fb7510c0d1abcea3413602052604090205460ff166109ed5760405162461bcd60e51b81526004016104fe90611766565b6109f983333085610fde565b60006383bece4d60e01b848484604051602401610a18939291906117ed565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526003549091506105ae906001600160a01b03168260006106c6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610ab05750825b905060008267ffffffffffffffff166001148015610acd5750303b155b905081158015610adb575080155b15610b12576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b4657845468ff00000000000000001916680100000000000000001785555b610b4f8661072d565b610b797fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533610c2f565b50610ba57fd2fb17ceaa388942529b17e0006ffc4d559f040dd4f2157b8070f17ad21105786000610c2f565b50831561058157845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290610bed90600190611838565b60405180910390a1505050505050565b600082815260026020526040902060010154610c1881610c22565b6105ae8383610cdd565b610c2c8133611038565b50565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff16610cd55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff19166001179055610c8d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161047e565b50600061047e565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff1615610cd55760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161047e565b60006040518060600160405280886001600160a01b0316815260200187815260200185815250604051602001610d9a91906118e5565b60408051808303601f19018152919052600180549192506001600160a01b0382169163b1454caa91859174010000000000000000000000000000000000000000900463ffffffff16906014610dee83611925565b91906101000a81548163ffffffff021916908363ffffffff1602179055508885886040518663ffffffff1660e01b8152600401610e2e949392919061195d565b60206040518083038185885af1158015610e4c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e7191906119bd565b5050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610ee2576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60008060009054906101000a90046001600160a01b03166001600160a01b03166363012de56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c91906115cb565b905090565b610600838284611098565b6040516000906001600160a01b038316908281818181865af19150503d8060008114610fb4576040519150601f19603f3d011682016040523d82523d6000602084013e610fb9565b606091505b5050905080610fda5760405162461bcd60e51b81526004016104fe90611a0e565b5050565b6105ae84856001600160a01b03166323b872dd86868660405160240161100693929190611a1e565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506110be565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff16610fda5780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016104fe929190611538565b61060083846001600160a01b031663a9059cbb8585604051602401611006929190611538565b60006110d36001600160a01b03841683611131565b905080516000141580156110f85750808060200190518101906110f69190611a59565b155b1561060057826040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016104fe9190611a78565b606061113f83836000611146565b9392505050565b60608147101561118457306040517fcd7860590000000000000000000000000000000000000000000000000000000081526004016104fe9190611a78565b600080856001600160a01b031684866040516111a09190611aa8565b60006040518083038185875af1925050503d80600081146111dd576040519150601f19603f3d011682016040523d82523d6000602084013e6111e2565b606091505b50915091506111f28683836111fc565b9695505050505050565b6060826112115761120c82611268565b61113f565b815115801561122857506001600160a01b0384163b155b1561126157836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016104fe9190611a78565b508061113f565b8051156112785780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160e01b031981165b8114610c2c57600080fd5b803561047e816112aa565b6000602082840312156112e1576112e1600080fd5b61113f83836112c1565b8015155b82525050565b6020810161047e82846112eb565b60006001600160a01b03821661047e565b6112b681611303565b803561047e81611314565b60006020828403121561133d5761133d600080fd5b61113f838361131d565b806112b6565b803561047e81611347565b60006020828403121561136d5761136d600080fd5b61113f838361134d565b806112ef565b6020810161047e8284611377565b600080604083850312156113a1576113a1600080fd5b6113ab848461134d565b91506113ba846020850161131d565b90509250929050565b60008083601f8401126113d8576113d8600080fd5b50813567ffffffffffffffff8111156113f3576113f3600080fd5b60208301915083600182028301111561140e5761140e600080fd5b9250929050565b60008060008060006060868803121561143057611430600080fd5b61143a878761131d565b9450602086013567ffffffffffffffff81111561145957611459600080fd5b611465888289016113c3565b9450945050604086013567ffffffffffffffff81111561148757611487600080fd5b611493888289016113c3565b92509250509295509295909350565b6000806000606084860312156114ba576114ba600080fd5b6114c4858561131d565b92506114d3856020860161134d565b91506114e2856040860161131d565b90509250925092565b600f8152602081017f456d707479207472616e736665722e0000000000000000000000000000000000815290505b60200190565b6020808252810161047e816114eb565b6112ef81611303565b60408101611546828561152f565b61113f6020830184611377565b82818337506000910152565b818352602083019250611573828483611553565b50601f01601f19160190565b6060810161158d828861152f565b81810360208301526115a081868861155f565b905081810360408301526115b581848661155f565b979650505050505050565b805161047e81611314565b6000602082840312156115e0576115e0600080fd5b61113f83836115c0565b60308152602081017f436f6e74726163742063616c6c6572206973206e6f742074686520726567697381527f7465726564206d657373656e6765722100000000000000000000000000000000602082015290505b60400190565b6020808252810161047e816115ea565b60318152602081017f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2081527f696e636f72726563742073656e646572210000000000000000000000000000006020820152905061163e565b6020808252810161047e81611654565b60258152602081017f417474656d7074696e6720746f20776974686472617720756e6b6e6f776e206181527f737365742e0000000000000000000000000000000000000000000000000000006020820152905061163e565b6020808252810161047e816116bc565b601a8152602081017f417474656d7074696e6720656d707479207472616e736665722e00000000000081529050611519565b6020808252810161047e81611724565b6020808252810161047e81604e81527f54686973206164647265737320686173206e6f74206265656e20676976656e2060208201527f61207479706520616e64206973207468757320636f6e73696465726564206e6f60408201527f742077686974656c69737465642e000000000000000000000000000000000000606082015260800190565b606081016117fb828661152f565b6118086020830185611377565b611815604083018461152f565b949350505050565b600067ffffffffffffffff821661047e565b6112ef8161181d565b6020810161047e828461182f565b60005b83811015611861578181015183820152602001611849565b50506000910152565b6000611874825190565b80845260208401935061188b818560208601611846565b601f01601f19169290920192915050565b805160009060608401906118b0858261152f565b50602083015184820360208601526118c8828261186a565b91505060408301516118dd6040860182611377565b509392505050565b6020808252810161113f818461189c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff16600063fffffffe198201611941576119416118f6565b5060010190565b63ffffffff81166112ef565b60ff81166112ef565b6080810161196b8287611948565b6119786020830186611948565b818103604083015261198a818561186a565b90506119996060830184611954565b95945050505050565b67ffffffffffffffff81166112b6565b805161047e816119a2565b6000602082840312156119d2576119d2600080fd5b61113f83836119b2565b60148152602081017f4661696c656420746f2073656e6420457468657200000000000000000000000081529050611519565b6020808252810161047e816119dc565b60608101611a2c828661152f565b611a39602083018561152f565b6118156040830184611377565b8015156112b6565b805161047e81611a46565b600060208284031215611a6e57611a6e600080fd5b61113f8383611a4e565b6020810161047e828461152f565b6000611a90825190565b611a9e818560208601611846565b9290920192915050565b61047e8183611a8656fea2646970667358221220208cc96396d6438cff3df1c3667ddaf815e3a7f29c3da8285737b433effbb21c64736f6c634300081c0033", + Bin: "0x60806040526001805463ffffffff60a01b19169055348015601f57600080fd5b50611ae88061002f6000396000f3fe6080604052600436106101445760003560e01c806375b238fc116100c0578063a217fddf11610074578063c4d66de811610059578063c4d66de8146103a7578063d547741f146103c7578063e4c3ebc7146103e757600080fd5b8063a217fddf1461037f578063a381c8e21461039457600080fd5b806383bece4d116100a557806383bece4d146102f957806391d148541461031957806393b374421461035f57600080fd5b806375b238fc146102a557806375cb2672146102d957600080fd5b80632f2ff15d11610117578063498d82ab116100fc578063498d82ab146102315780635d872970146102515780635fa7b5841461028557600080fd5b80632f2ff15d146101f157806336568abe1461021157600080fd5b806301ffc9a71461014957806316ce81491461017f5780631888d712146101a1578063248a9ca3146101b4575b600080fd5b34801561015557600080fd5b506101696101643660046112cc565b61041b565b60405161017691906112f5565b60405180910390f35b34801561018b57600080fd5b5061019f61019a366004611328565b610484565b005b61019f6101af366004611328565b6104de565b3480156101c057600080fd5b506101e46101cf366004611358565b60009081526002602052604090206001015490565b604051610176919061137d565b3480156101fd57600080fd5b5061019f61020c36600461138b565b610589565b34801561021d57600080fd5b5061019f61022c36600461138b565b6105b4565b34801561023d57600080fd5b5061019f61024c366004611415565b610605565b34801561025d57600080fd5b506101e47f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a81565b34801561029157600080fd5b5061019f6102a0366004611328565b6106d9565b3480156102b157600080fd5b506101e47fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b3480156102e557600080fd5b5061019f6102f4366004611328565b61072d565b34801561030557600080fd5b5061019f6103143660046114a2565b610808565b34801561032557600080fd5b5061016961033436600461138b565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561036b57600080fd5b5061019f61037a366004611328565b610922565b34801561038b57600080fd5b506101e4600081565b61019f6103a23660046114a2565b610976565b3480156103b357600080fd5b5061019f6103c2366004611328565b610a65565b3480156103d357600080fd5b5061019f6103e236600461138b565b610bfd565b3480156103f357600080fd5b506101e47fd2fb17ceaa388942529b17e0006ffc4d559f040dd4f2157b8070f17ad211057881565b60006001600160e01b031982167f7965db0b00000000000000000000000000000000000000000000000000000000148061047e57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756104ae81610c22565b506003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600034116105075760405162461bcd60e51b81526004016104fe9061151f565b60405180910390fd5b6001546040517f346633fb0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063346633fb9034906105549085908390600401611538565b6000604051808303818588803b15801561056d57600080fd5b505af1158015610581573d6000803e3d6000fd5b505050505050565b6000828152600260205260409020600101546105a481610c22565b6105ae8383610c2f565b50505050565b6001600160a01b03811633146105f6576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106008282610cdd565b505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561062f81610c22565b6106597f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a87610c2f565b50600063458ffd6360e01b878787878760405160240161067d95949392919061157f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526003549091506106d0906001600160a01b03168260015b6000806000610d64565b50505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561070381610c22565b6106007f9f225881f6e7ac8a885b63aa2269cbce78dd6a669864ccd2cd2517a8e709d73a83610cdd565b610735610e7b565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038316908117909155604080517fa1a227fa000000000000000000000000000000000000000000000000000000008152905163a1a227fa916004808201926020929091908290030181865afa1580156107b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d891906115cb565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691909117905550565b6003546000546001600160a01b03918216911633146108395760405162461bcd60e51b81526004016104fe90611644565b806001600160a01b031661084b610ee4565b6001600160a01b0316146108715760405162461bcd60e51b81526004016104fe906116ac565b6001600160a01b03841660009081527f32ef73018533fa188e9e42b313c0a4048c6052342b662fb7510c0d1abcea3413602052604090205460ff16156108c1576108bc848484610f61565b6105ae565b6001600160a01b03841660009081527f13ad2d85210d477fe1a6e25654c8250308cf29b050a4bf0b039d70467486712c602052604090205460ff161561090a576108bc82610f6c565b60405162461bcd60e51b81526004016104fe90611714565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561094c81610c22565b6106007fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583610c2f565b600082116109965760405162461bcd60e51b81526004016104fe90611756565b6001600160a01b03831660009081527f32ef73018533fa188e9e42b313c0a4048c6052342b662fb7510c0d1abcea3413602052604090205460ff166109ed5760405162461bcd60e51b81526004016104fe90611766565b6109f983333085610fde565b60006383bece4d60e01b848484604051602401610a18939291906117ed565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526003549091506105ae906001600160a01b03168260006106c6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610ab05750825b905060008267ffffffffffffffff166001148015610acd5750303b155b905081158015610adb575080155b15610b12576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b4657845468ff00000000000000001916680100000000000000001785555b610b4f8661072d565b610b797fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177533610c2f565b50610ba57fd2fb17ceaa388942529b17e0006ffc4d559f040dd4f2157b8070f17ad21105786000610c2f565b50831561058157845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290610bed90600190611838565b60405180910390a1505050505050565b600082815260026020526040902060010154610c1881610c22565b6105ae8383610cdd565b610c2c8133611038565b50565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff16610cd55760008381526002602090815260408083206001600160a01b03861684529091529020805460ff19166001179055610c8d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161047e565b50600061047e565b60008281526002602090815260408083206001600160a01b038516845290915281205460ff1615610cd55760008381526002602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161047e565b60006040518060600160405280886001600160a01b0316815260200187815260200185815250604051602001610d9a91906118e5565b60408051808303601f19018152919052600180549192506001600160a01b0382169163b1454caa91859174010000000000000000000000000000000000000000900463ffffffff16906014610dee83611925565b91906101000a81548163ffffffff021916908363ffffffff1602179055508885886040518663ffffffff1660e01b8152600401610e2e949392919061195d565b60206040518083038185885af1158015610e4c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e7191906119bd565b5050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610ee2576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60008060009054906101000a90046001600160a01b03166001600160a01b03166363012de56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c91906115cb565b905090565b610600838284611098565b6040516000906001600160a01b038316908281818181865af19150503d8060008114610fb4576040519150601f19603f3d011682016040523d82523d6000602084013e610fb9565b606091505b5050905080610fda5760405162461bcd60e51b81526004016104fe90611a0e565b5050565b6105ae84856001600160a01b03166323b872dd86868660405160240161100693929190611a1e565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506110be565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff16610fda5780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016104fe929190611538565b61060083846001600160a01b031663a9059cbb8585604051602401611006929190611538565b60006110d36001600160a01b03841683611131565b905080516000141580156110f85750808060200190518101906110f69190611a59565b155b1561060057826040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016104fe9190611a78565b606061113f83836000611146565b9392505050565b60608147101561118457306040517fcd7860590000000000000000000000000000000000000000000000000000000081526004016104fe9190611a78565b600080856001600160a01b031684866040516111a09190611aa8565b60006040518083038185875af1925050503d80600081146111dd576040519150601f19603f3d011682016040523d82523d6000602084013e6111e2565b606091505b50915091506111f28683836111fc565b9695505050505050565b6060826112115761120c82611268565b61113f565b815115801561122857506001600160a01b0384163b155b1561126157836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016104fe9190611a78565b508061113f565b8051156112785780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160e01b031981165b8114610c2c57600080fd5b803561047e816112aa565b6000602082840312156112e1576112e1600080fd5b61113f83836112c1565b8015155b82525050565b6020810161047e82846112eb565b60006001600160a01b03821661047e565b6112b681611303565b803561047e81611314565b60006020828403121561133d5761133d600080fd5b61113f838361131d565b806112b6565b803561047e81611347565b60006020828403121561136d5761136d600080fd5b61113f838361134d565b806112ef565b6020810161047e8284611377565b600080604083850312156113a1576113a1600080fd5b6113ab848461134d565b91506113ba846020850161131d565b90509250929050565b60008083601f8401126113d8576113d8600080fd5b50813567ffffffffffffffff8111156113f3576113f3600080fd5b60208301915083600182028301111561140e5761140e600080fd5b9250929050565b60008060008060006060868803121561143057611430600080fd5b61143a878761131d565b9450602086013567ffffffffffffffff81111561145957611459600080fd5b611465888289016113c3565b9450945050604086013567ffffffffffffffff81111561148757611487600080fd5b611493888289016113c3565b92509250509295509295909350565b6000806000606084860312156114ba576114ba600080fd5b6114c4858561131d565b92506114d3856020860161134d565b91506114e2856040860161131d565b90509250925092565b600f8152602081017f456d707479207472616e736665722e0000000000000000000000000000000000815290505b60200190565b6020808252810161047e816114eb565b6112ef81611303565b60408101611546828561152f565b61113f6020830184611377565b82818337506000910152565b818352602083019250611573828483611553565b50601f01601f19160190565b6060810161158d828861152f565b81810360208301526115a081868861155f565b905081810360408301526115b581848661155f565b979650505050505050565b805161047e81611314565b6000602082840312156115e0576115e0600080fd5b61113f83836115c0565b60308152602081017f436f6e74726163742063616c6c6572206973206e6f742074686520726567697381527f7465726564206d657373656e6765722100000000000000000000000000000000602082015290505b60400190565b6020808252810161047e816115ea565b60318152602081017f43726f737320636861696e206d65737361676520636f6d696e672066726f6d2081527f696e636f72726563742073656e646572210000000000000000000000000000006020820152905061163e565b6020808252810161047e81611654565b60258152602081017f417474656d7074696e6720746f20776974686472617720756e6b6e6f776e206181527f737365742e0000000000000000000000000000000000000000000000000000006020820152905061163e565b6020808252810161047e816116bc565b601a8152602081017f417474656d7074696e6720656d707479207472616e736665722e00000000000081529050611519565b6020808252810161047e81611724565b6020808252810161047e81604e81527f54686973206164647265737320686173206e6f74206265656e20676976656e2060208201527f61207479706520616e64206973207468757320636f6e73696465726564206e6f60408201527f742077686974656c69737465642e000000000000000000000000000000000000606082015260800190565b606081016117fb828661152f565b6118086020830185611377565b611815604083018461152f565b949350505050565b600067ffffffffffffffff821661047e565b6112ef8161181d565b6020810161047e828461182f565b60005b83811015611861578181015183820152602001611849565b50506000910152565b6000611874825190565b80845260208401935061188b818560208601611846565b601f01601f19169290920192915050565b805160009060608401906118b0858261152f565b50602083015184820360208601526118c8828261186a565b91505060408301516118dd6040860182611377565b509392505050565b6020808252810161113f818461189c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff16600063fffffffe198201611941576119416118f6565b5060010190565b63ffffffff81166112ef565b60ff81166112ef565b6080810161196b8287611948565b6119786020830186611948565b818103604083015261198a818561186a565b90506119996060830184611954565b95945050505050565b67ffffffffffffffff81166112b6565b805161047e816119a2565b6000602082840312156119d2576119d2600080fd5b61113f83836119b2565b60148152602081017f4661696c656420746f2073656e6420457468657200000000000000000000000081529050611519565b6020808252810161047e816119dc565b60608101611a2c828661152f565b611a39602083018561152f565b6118156040830184611377565b8015156112b6565b805161047e81611a46565b600060208284031215611a6e57611a6e600080fd5b61113f8383611a4e565b6020810161047e828461152f565b6000611a90825190565b611a9e818560208601611846565b9290920192915050565b61047e8183611a8656fea264697066735822122030f3f63e1cf4697fbe17cc09ba228f7c80c369f65567dfb3d91c4d9b07da2ec264736f6c634300081c0033", } // ObscuroBridgeABI is the input ABI used to generate the binding from. diff --git a/contracts/generated/SystemDeployer/SystemDeployer.go b/contracts/generated/SystemDeployer/SystemDeployer.go index 08ee7c699b..e6708f90c4 100644 --- a/contracts/generated/SystemDeployer/SystemDeployer.go +++ b/contracts/generated/SystemDeployer/SystemDeployer.go @@ -32,7 +32,7 @@ var ( // SystemDeployerMetaData contains all meta data concerning the SystemDeployer contract. var SystemDeployerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"eoaAdmin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"SystemContractDeployed\",\"type\":\"event\"}]", - Bin: "0x608060405234801561001057600080fd5b50604051615c6f380380615c6f83398101604081905261002f916103e7565b61003881610060565b6000610044828261011d565b905061005082826101e2565b610059826102a2565b50506105c4565b600060405161006e90610373565b604051809103906000f08015801561008a573d6000803e3d6000fd5b509050600063c4d66de860e01b836040516024016100a8919061041c565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006100f083858461032f60201b60201c565b9050600080516020615c4f8339815191528160405161010f919061045e565b60405180910390a150505050565b60008060405161012c90610380565b604051809103906000f080158015610148573d6000803e3d6000fd5b509050600063da35a26f60e01b8486604051602401610168929190610483565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006101b083878461032f60201b60201c565b9050600080516020615c4f833981519152816040516101cf91906104b7565b60405180910390a1925050505b92915050565b60006040516101f09061038d565b604051809103906000f08015801561020c573d6000803e3d6000fd5b509050600063485cc95560e01b848460405160240161022c9291906104c7565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050600061027483868461032f60201b60201c565b9050600080516020615c4f8339815191528160405161029391906104f4565b60405180910390a15050505050565b60006040516102b09061039a565b604051809103906000f0801580156102cc573d6000803e3d6000fd5b506040805160048152602481019091526020810180516001600160e01b0390811663204a7f0760e21b17909152919250906000906103109084908690859061032f16565b9050600080516020615c4f8339815191528160405161010f9190610528565b600080848484604051610341906103a7565b61034d9392919061058e565b604051809103906000f080158015610369573d6000803e3d6000fd5b5095945050505050565b610dfe8061061183390190565b6107c68061140f83390190565b611d0080611bd583390190565b6110f0806138d583390190565b61128a806149c583390190565b60006001600160a01b0382166101dc565b6103ce816103b4565b81146103d957600080fd5b50565b80516101dc816103c5565b6000602082840312156103fc576103fc600080fd5b61040683836103dc565b9392505050565b610416816103b4565b82525050565b602081016101dc828461040d565b60198152602081017f5472616e73616374696f6e73506f737450726f636573736f7200000000000000815290505b60200190565b6040808252810161046e8161042a565b90506101dc602083018461040d565b80610416565b60408101610491828561047d565b610406602083018461040d565b6004815260208101634665657360e01b81529050610458565b6040808252810161046e8161049e565b60408101610491828561040d565b600a815260208101694d65737361676542757360b01b81529050610458565b6040808252810161046e816104d5565b600f8152602081016e5075626c696343616c6c6261636b7360881b81529050610458565b6040808252810161046e81610504565b60005b8381101561055357818101518382015260200161053b565b50506000910152565b6000610566825190565b80845260208401935061057d818560208601610538565b601f01601f19169290920192915050565b6060810161059c828661040d565b6105a9602083018561040d565b81810360408301526105bb818461055c565b95945050505050565b603f806105d26000396000f3fe6080604052600080fdfea2646970667358221220cfb9abdae2b57cca2b06e1592a881ffea4f5fb7d2226145858f8312ae691b7f664736f6c634300081c00336080604052348015600f57600080fd5b50610ddf8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806364c55a9d11610081578063c4d66de81161005b578063c4d66de8146101c8578063d547741f146101db578063ee546fd8146101ee57600080fd5b806364c55a9d1461017657806391d1485414610189578063a217fddf146101c057600080fd5b80632f2ff15d116100b25780632f2ff15d1461012757806336568abe1461013c578063508a50f41461014f57600080fd5b806301ffc9a7146100ce578063248a9ca3146100f7575b600080fd5b6100e16100dc3660046107fd565b610265565b6040516100ee919061082d565b60405180910390f35b61011a61010536600461084c565b60009081526020819052604090206001015490565b6040516100ee9190610871565b61013a6101353660046108a4565b6102fe565b005b61013a61014a3660046108a4565b610329565b61011a7ff16bb8781ef1311f8fe06747bcbe481e695502acdcb0cb8c03aa03899e39a59881565b61013a61018436600461092e565b61037a565b6100e16101973660046108a4565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61011a600081565b61013a6101d6366004610976565b610492565b61013a6101e93660046108a4565b610602565b61013a6101fc366004610976565b6001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806102f857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008281526020819052604090206001015461031981610627565b6103238383610634565b50505050565b6001600160a01b038116331461036b576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61037582826106de565b505050565b60006103876001306109ab565b9050336001600160a01b038216146103ba5760405162461bcd60e51b81526004016103b190610a02565b60405180910390fd5b60008290036103db5760405162461bcd60e51b81526004016103b190610a44565b60005b600154811015610323576000600182815481106103fd576103fd610a54565b6000918252602090912001546040517f9f9976af0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911691508190639f9976af906104549088908890600401610d4b565b600060405180830381600087803b15801561046e57600080fd5b505af1158015610482573d6000803e3d6000fd5b50505050508060010190506103de565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156104dd5750825b905060008267ffffffffffffffff1660011480156104fa5750303b155b905081158015610508575080155b1561053f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561057357845468ff00000000000000001916680100000000000000001785555b61057e600087610634565b506105a97ff16bb8781ef1311f8fe06747bcbe481e695502acdcb0cb8c03aa03899e39a59887610634565b5083156105fa57845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906105f190600190610d80565b60405180910390a15b505050505050565b60008281526020819052604090206001015461061d81610627565b61032383836106de565b6106318133610761565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166106d6576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561068e3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016102f8565b5060006102f8565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156106d6576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016102f8565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166107bf5780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016103b1929190610d8e565b5050565b7fffffffff0000000000000000000000000000000000000000000000000000000081165b811461063157600080fd5b80356102f8816107c3565b60006020828403121561081257610812600080fd5b61081c83836107f2565b9392505050565b8015155b82525050565b602081016102f88284610823565b806107e7565b80356102f88161083b565b60006020828403121561086157610861600080fd5b61081c8383610841565b80610827565b602081016102f8828461086b565b60006001600160a01b0382166102f8565b6107e78161087f565b80356102f881610890565b600080604083850312156108ba576108ba600080fd5b6108c48484610841565b91506108d38460208501610899565b90509250929050565b60008083601f8401126108f1576108f1600080fd5b50813567ffffffffffffffff81111561090c5761090c600080fd5b60208301915083602082028301111561092757610927600080fd5b9250929050565b6000806020838503121561094457610944600080fd5b823567ffffffffffffffff81111561095e5761095e600080fd5b61096a858286016108dc565b92509250509250929050565b60006020828403121561098b5761098b600080fd5b61081c8383610899565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b039182169190811690828203908111156102f8576102f8610995565b60088152602081017f4e6f742073656c66000000000000000000000000000000000000000000000000815290505b60200190565b602080825281016102f8816109ce565b601a8152602081017f4e6f207472616e73616374696f6e7320746f20636f6e76657274000000000000815290506109fc565b602080825281016102f881610a12565b634e487b7160e01b600052603260045260246000fd5b60ff81166107e7565b80356102f881610a6a565b5060006102f86020830183610a73565b60ff8116610827565b5060006102f86020830183610841565b5060006102f86020830183610899565b6108278161087f565b6000808335601e1936859003018112610adb57610adb600080fd5b830160208101925035905067ffffffffffffffff811115610afe57610afe600080fd5b3681900382131561092757610927600080fd5b82818337506000910152565b818352602083019250610b31828483610b11565b50601f01601f19160190565b8015156107e7565b80356102f881610b3d565b5060006102f86020830183610b45565b67ffffffffffffffff81166107e7565b80356102f881610b60565b5060006102f86020830183610b70565b67ffffffffffffffff8116610827565b60006101408301610bac8380610a7e565b610bb68582610a8e565b50610bc46020840184610a97565b610bd1602086018261086b565b50610bdf6040840184610a97565b610bec604086018261086b565b50610bfa6060840184610a97565b610c07606086018261086b565b50610c156080840184610aa7565b610c226080860182610ab7565b50610c3060a0840184610a97565b610c3d60a086018261086b565b50610c4b60c0840184610ac0565b85830360c0870152610c5e838284610b1d565b92505050610c6f60e0840184610aa7565b610c7c60e0860182610ab7565b50610c8b610100840184610b50565b610c99610100860182610823565b50610ca8610120840184610b7b565b610cb6610120860182610b8b565b509392505050565b600061081c8383610b9b565b6000823561013e1936849003018112610ce557610ce5600080fd5b90910192915050565b818352602083019250600083602084028101838060005b87811015610d3e578484038952610d1c8284610cca565b610d268582610cbe565b94505060208201602099909901989150600101610d05565b5091979650505050505050565b60208082528101610d5d818486610cee565b949350505050565b600067ffffffffffffffff82166102f8565b61082781610d65565b602081016102f88284610d77565b60408101610d9c8285610ab7565b61081c602083018461086b56fea2646970667358221220000c7add8ef77f2ce3e54738e1a6216052e3c7d3dfd30f31adc394e073238b4d64736f6c634300081c00336080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6106ed806100d96000396000f3fe60806040526004361061007f5760003560e01c8063afe997ea1161004e578063afe997ea1461012c578063da35a26f14610141578063f1d44d5114610161578063f2fde38b1461018157600080fd5b806323aa2a9d1461008b578063715018a6146100ad5780638da5cb5b146100c25780639003adfe1461011057600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506100ab6100a6366004610575565b6101a1565b005b3480156100b957600080fd5b506100ab6101ae565b3480156100ce57600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031660405161010791906105bb565b60405180910390f35b34801561011c57600080fd5b50475b60405161010791906105cf565b34801561013857600080fd5b506100ab6101c2565b34801561014d57600080fd5b506100ab61015c3660046105f1565b610225565b34801561016d57600080fd5b5061011f61017c366004610575565b61036d565b34801561018d57600080fd5b506100ab61019c366004610629565b610383565b6101a96103e0565b600055565b6101b66103e0565b6101c06000610454565b565b6101ca6103e0565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610222573d6000803e3d6000fd5b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156102705750825b905060008267ffffffffffffffff16600114801561028d5750303b155b90508115801561029b575080155b156102d2576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561030657845468ff00000000000000001916680100000000000000001785555b61030f866104dd565b6000879055831561036457845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29061035b90600190610663565b60405180910390a15b50505050505050565b60008160005461037d91906106a0565b92915050565b61038b6103e0565b6001600160a01b0381166103d75760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016103ce91906105bb565b60405180910390fd5b61022281610454565b336104127f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146101c057336040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016103ce91906105bb565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6104e56104ee565b61022281610555565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166101c0576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61038b6104ee565b805b811461022257600080fd5b803561037d8161055d565b60006020828403121561058a5761058a600080fd5b610594838361056a565b9392505050565b60006001600160a01b03821661037d565b6105b58161059b565b82525050565b6020810161037d82846105ac565b806105b5565b6020810161037d82846105c9565b61055f8161059b565b803561037d816105dd565b6000806040838503121561060757610607600080fd5b610611848461056a565b915061062084602085016105e6565b90509250929050565b60006020828403121561063e5761063e600080fd5b61059483836105e6565b600067ffffffffffffffff821661037d565b6105b581610648565b6020810161037d828461065a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818102811582820484141761037d5761037d61067156fea26469706673582212203b15352e8f587de7fab730ebe897ce1d19b5fb0f5a07f4e8af1cc73861e46f5864736f6c634300081c0033608060405234801561001057600080fd5b5061001a33610027565b610022610098565b61014a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100e85760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101475780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b611ba7806101596000396000f3fe6080604052600436106100cb5760003560e01c80638da5cb5b11610074578063ab53bddc1161004e578063ab53bddc146102b0578063b1454caa146102d0578063f2fde38b146102f05761013f565b80638da5cb5b1461022b5780639730886d1461027057806399a3ad21146102905761013f565b806336d2da90116100a557806336d2da90146101d6578063485cc955146101f6578063715018a6146102165761013f565b80630fcfbd111461016057806333a88c7214610196578063346633fb146101c35761013f565b3661013f576040517f346633fb000000000000000000000000000000000000000000000000000000008152309063346633fb9034906101109033908390600401610e2b565b6000604051808303818588803b15801561012957600080fd5b505af115801561013d573d6000803e3d6000fd5b005b60405162461bcd60e51b815260040161015790610e7a565b60405180910390fd5b34801561016c57600080fd5b5061018061017b366004610ea5565b610310565b60405161018d9190610ee0565b60405180910390f35b3480156101a257600080fd5b506101b66101b1366004610ea5565b61036f565b60405161018d9190610ef6565b61013d6101d1366004610f34565b6103c1565b3480156101e257600080fd5b5061013d6101f1366004610f6c565b610510565b34801561020257600080fd5b5061013d610211366004610f8b565b61058f565b34801561022257600080fd5b5061013d6106fa565b34801561023757600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031660405161018d9190610fba565b34801561027c57600080fd5b5061013d61028b366004610fc8565b61070e565b34801561029c57600080fd5b5061013d6102ab366004610f34565b61087a565b3480156102bc57600080fd5b5061013d6102cb366004610f34565b6108fa565b6102e36102de366004611091565b6109c3565b60405161018d919061111e565b3480156102fc57600080fd5b5061013d61030b366004610f6c565b610acb565b6000808260405160200161032491906112cb565b60408051601f198184030181529181528151602092830120600081815292839052912054909150806103685760405162461bcd60e51b815260040161015790611336565b9392505050565b6000808260405160200161038391906112cb565b60408051601f19818403018152918152815160209283012060008181529283905291205490915080158015906103b95750428111155b949350505050565b6000341180156103d057508034145b6103ec5760405162461bcd60e51b81526004016101579061139e565b60035434906001600160a01b0316156104b0576000610409610b22565b90508034101561042b5760405162461bcd60e51b8152600401610157906113de565b6104358134611404565b6003546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114610487576040519150601f19603f3d011682016040523d82523d6000602084013e61048c565b606091505b50509050806104ad5760405162461bcd60e51b81526004016101579061146f565b50505b60006104bb33610bb3565b9050836001600160a01b0316336001600160a01b03167f50c536ac33a920f00755865b831d17bf4cff0b2e0345f65b16d52bfc004068b6848460405161050292919061147f565b60405180910390a350505050565b610518610c11565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610565576040519150601f19603f3d011682016040523d82523d6000602084013e61056a565b606091505b505090508061058b5760405162461bcd60e51b8152600401610157906114cc565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156105da5750825b905060008267ffffffffffffffff1660011480156105f75750303b155b905081158015610605575080155b1561063c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561067057845468ff00000000000000001916680100000000000000001785555b61067987610c85565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881617905583156106f157845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906106e890600190611500565b60405180910390a15b50505050505050565b610702610c11565b61070c6000610c96565b565b600061071b60013061150e565b905061074e7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806107755750336001600160a01b038216145b6107915760405162461bcd60e51b815260040161015790611563565b600061079d8342611573565b90506000846040516020016107b291906112cb565b60408051601f198184030181529181528151602092830120600081815292839052912054909150156107f65760405162461bcd60e51b8152600401610157906115de565b60008181526020818152604082208490556001919061081790880188610f6c565b6001600160a01b03168152602081019190915260400160009081209061084360808801606089016115ee565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208691600402016106f18282611a37565b610882610c11565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146108cf576040519150601f19603f3d011682016040523d82523d6000602084013e6108d4565b606091505b50509050806108f55760405162461bcd60e51b8152600401610157906114cc565b505050565b600061090760013061150e565b905061093a7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806109615750336001600160a01b038216145b61097d5760405162461bcd60e51b815260040161015790611563565b826001600160a01b03167fcd9850463422a7449c406a036e35e5edb6fbe35a64c9f12a2354be98a750c0d3836040516109b69190610ee0565b60405180910390a2505050565b6003546000906001600160a01b031615610a74576109e083610d14565b3410156109ff5760405162461bcd60e51b815260040161015790611a99565b6003546040516000916001600160a01b03169034908381818185875af1925050503d8060008114610a4c576040519150601f19603f3d011682016040523d82523d6000602084013e610a51565b606091505b5050905080610a725760405162461bcd60e51b81526004016101579061146f565b505b610a7d33610bb3565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef77593733828888888888604051610aba9796959493929190611aa9565b60405180910390a195945050505050565b610ad3610c11565b6001600160a01b038116610b165760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101579190610fba565b610b1f81610c96565b50565b6003546040517ff1d44d510000000000000000000000000000000000000000000000000000000081526000916001600160a01b03169063f1d44d5190610b6d90602090600401611b15565b602060405180830381865afa158015610b8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bae9190611b2e565b905090565b6001600160a01b0381166000908152600260205260408120805467ffffffffffffffff169160019190610be68385611b4d565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b33610c437f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461070c57336040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016101579190610fba565b610c8d610d96565b610b1f81610dfd565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6003546000906001600160a01b031663f1d44d51610d33601185611573565b6040518263ffffffff1660e01b8152600401610d4f9190610ee0565b602060405180830381865afa158015610d6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d909190611b2e565b92915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661070c576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ad3610d96565b60006001600160a01b038216610d90565b610e1f81610e05565b82525050565b80610e1f565b60408101610e398285610e16565b6103686020830184610e25565b600b8152602081017f756e737570706f72746564000000000000000000000000000000000000000000815290505b60200190565b60208082528101610d9081610e46565b600060c08284031215610e9f57610e9f600080fd5b50919050565b600060208284031215610eba57610eba600080fd5b813567ffffffffffffffff811115610ed457610ed4600080fd5b6103b984828501610e8a565b60208101610d908284610e25565b801515610e1f565b60208101610d908284610eee565b610f0d81610e05565b8114610b1f57600080fd5b8035610d9081610f04565b80610f0d565b8035610d9081610f23565b60008060408385031215610f4a57610f4a600080fd5b610f548484610f18565b9150610f638460208501610f29565b90509250929050565b600060208284031215610f8157610f81600080fd5b6103688383610f18565b60008060408385031215610fa157610fa1600080fd5b610fab8484610f18565b9150610f638460208501610f18565b60208101610d908284610e16565b60008060408385031215610fde57610fde600080fd5b823567ffffffffffffffff811115610ff857610ff8600080fd5b61100485828601610e8a565b925050610f638460208501610f29565b63ffffffff8116610f0d565b8035610d9081611014565b60008083601f84011261104057611040600080fd5b50813567ffffffffffffffff81111561105b5761105b600080fd5b60208301915083600182028301111561107657611076600080fd5b9250929050565b60ff8116610f0d565b8035610d908161107d565b6000806000806000608086880312156110ac576110ac600080fd5b6110b68787611020565b94506110c58760208801611020565b9350604086013567ffffffffffffffff8111156110e4576110e4600080fd5b6110f08882890161102b565b93509350506111028760608801611086565b90509295509295909350565b67ffffffffffffffff8116610e1f565b60208101610d90828461110e565b506000610d906020830183610f18565b67ffffffffffffffff8116610f0d565b8035610d908161113c565b506000610d90602083018361114c565b506000610d906020830183611020565b63ffffffff8116610e1f565b6000808335601e193685900301811261119e5761119e600080fd5b830160208101925035905067ffffffffffffffff8111156111c1576111c1600080fd5b3681900382131561107657611076600080fd5b82818337506000910152565b8183526020830192506111f48284836111d4565b50601f01601f19160190565b506000610d906020830183611086565b60ff8116610e1f565b600060c08301611229838061112c565b6112338582610e16565b506112416020840184611157565b61124e602086018261110e565b5061125c6040840184611167565b6112696040860182611177565b506112776060840184611167565b6112846060860182611177565b506112926080840184611183565b85830360808701526112a58382846111e0565b925050506112b660a0840184611200565b6112c360a0860182611210565b509392505050565b602080825281016103688184611219565b60218152602081017f54686973206d65737361676520776173206e65766572207375626d697474656481527f2e00000000000000000000000000000000000000000000000000000000000000602082015290505b60400190565b60208082528101610d90816112dc565b60308152602081017f417474656d7074696e6720746f2073656e642076616c756520776974686f757481527f2070726f766964696e672045746865720000000000000000000000000000000060208201529050611330565b60208082528101610d9081611346565b60208082527f496e73756666696369656e742066756e647320746f2073656e642076616c75659101908152610e74565b60208082528101610d90816113ae565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d9057610d906113ee565b60248152602081017f4661696c656420746f2073656e64206665657320746f206665657320636f6e7481527f726163740000000000000000000000000000000000000000000000000000000060208201529050611330565b60208082528101610d9081611417565b6040810161148d8285610e25565b610368602083018461110e565b60148152602081017f6661696c65642073656e64696e672076616c756500000000000000000000000081529050610e74565b60208082528101610d908161149a565b6000610d90826114ea565b90565b67ffffffffffffffff1690565b610e1f816114dc565b60208101610d9082846114f7565b6001600160a01b03918216919081169082820390811115610d9057610d906113ee565b60118152602081017f4e6f74206f776e6572206f722073656c6600000000000000000000000000000081529050610e74565b60208082528101610d9081611531565b80820180821115610d9057610d906113ee565b60218152602081017f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636581527f210000000000000000000000000000000000000000000000000000000000000060208201529050611330565b60208082528101610d9081611586565b60006020828403121561160357611603600080fd5b6103688383611020565b60008135610d9081610f04565b60006001600160a01b03835b81169019929092169190911792915050565b6000610d9082610e05565b6000610d9082611638565b61165782611643565b61166281835461161a565b8255505050565b60008135610d908161113c565b60007bffffffffffffffff00000000000000000000000000000000000000006116268460a01b90565b6000610d9067ffffffffffffffff83166114ea565b6116bd8261169f565b611662818354611676565b60008135610d9081611014565b60007fffffffff000000000000000000000000000000000000000000000000000000006116268460e01b90565b600063ffffffff8216610d90565b61171982611702565b6116628183546116d5565b600063ffffffff83611626565b61173a82611702565b611662818354611724565b6000808335601e193685900301811261176057611760600080fd5b8301915050803567ffffffffffffffff81111561177f5761177f600080fd5b60208201915060018102360382131561107657611076600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b6002810460018216806117da57607f821691505b602082108103610e9f57610e9f6117b0565b6000610d906114e78381565b611801836117ec565b815460001960089490940293841b1916921b91909117905550565b60006108f58184846117f8565b8181101561058b5761183c60008261181c565b600101611829565b601f8211156108f5576000818152602090206020601f8501048101602085101561186b5750805b61187d6020601f860104830182611829565b5050505050565b8267ffffffffffffffff81111561189d5761189d61179a565b6118a782546117c6565b6118b2828285611844565b506000601f8211600181146118e757600083156118cf5750848201355b600019600885021c1981166002850217855550611941565b600084815260209020601f19841690835b8281101561191857878501358255602094850194600190920191016118f8565b5084821015611935576000196008601f8716021c19878501351681555b50506001600284020184555b505050505050565b6108f5838383611884565b60008135610d908161107d565b600060ff8216610d90565b61197582611961565b815460ff191660ff821617611662565b8082806119918161160d565b905061199d818461164e565b505060208301806119ad82611669565b90506119b981846116b4565b505060408301806119c9826116c8565b90506119d58184611710565b50505060608201806119e6826116c8565b90506119f58160018501611731565b5050611a046080830183611745565b611a12818360028601611949565b505060a0820180611a2282611954565b9050611a31816003850161196c565b50505050565b61058b8282611985565b60258152602081017f496e73756666696369656e742066756e647320746f207075626c697368206d6581527f737361676500000000000000000000000000000000000000000000000000000060208201529050611330565b60208082528101610d9081611a41565b60c08101611ab7828a610e16565b611ac4602083018961110e565b611ad16040830188611177565b611ade6060830187611177565b8181036080830152611af18185876111e0565b9050611b0060a0830184611210565b98975050505050505050565b610e1f816117ec565b60208101610d908284611b0c565b8051610d9081610f23565b600060208284031215611b4357611b43600080fd5b6103688383611b23565b67ffffffffffffffff918216919081169082820190811115610d9057610d906113ee56fea26469706673582212205827e6100538af9307eff1914e07e481a82d2ed05aab2e5cf52b967c89af264964736f6c634300081c00336080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b611017806100d96000396000f3fe6080604052600436106100595760003560e01c806382fbdc9c1161004357806382fbdc9c146100ae578063929d34e9146100ce578063a67e1760146100ee57600080fd5b8062e0d3b51461005e5780638129fc1c14610097575b600080fd5b34801561006a57600080fd5b5061007e610079366004610a7a565b610103565b60405161008e9493929190610b15565b60405180910390f35b3480156100a357600080fd5b506100ac6101be565b005b6100c16100bc366004610bac565b610300565b60405161008e9190610bf4565b3480156100da57600080fd5b506100ac6100e9366004610a7a565b610368565b3480156100fa57600080fd5b506100ac61050d565b600060208190529081526040902080546001820180546001600160a01b03909216929161012f90610c18565b80601f016020809104026020016040519081016040528092919081815260200182805461015b90610c18565b80156101a85780601f1061017d576101008083540402835291602001916101a8565b820191906000526020600020905b81548152906001019060200180831161018b57829003601f168201915b5050505050908060020154908060030154905084565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156102095750825b905060008267ffffffffffffffff1660011480156102265750303b155b905081158015610234575080155b1561026b576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561029f57845468ff00000000000000001916680100000000000000001785555b6000600181905560025583156102f957845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906102f090600190610c68565b60405180910390a15b5050505050565b600080341161032a5760405162461bcd60e51b815260040161032190610caa565b60405180910390fd5b6152086103363461055f565b116103535760405162461bcd60e51b815260040161032190610cba565b61035f3384843461056b565b90505b92915050565b60008181526020818152604080832081516080810190925280546001600160a01b0316825260018101805492939192918401916103a490610c18565b80601f01602080910402602001604051908101604052809291908181526020018280546103d090610c18565b801561041d5780601f106103f25761010080835404028352916020019161041d565b820191906000526020600020905b81548152906001019060200180831161040057829003601f168201915b50505050508152602001600282015481526020016003820154815250509050600081600001516001600160a01b0316826020015160405161045e9190610d3d565b6000604051808303816000865af19150503d806000811461049b576040519150601f19603f3d011682016040523d82523d6000602084013e6104a0565b606091505b50509050806104c15760405162461bcd60e51b815260040161032190610d79565b6000838152602081905260408120805473ffffffffffffffffffffffffffffffffffffffff19168155906104f86001830182610a25565b50600060028201819055600390910155505050565b600061051a600130610d9f565b9050336001600160a01b038216146105445760405162461bcd60e51b815260040161032190610df4565b6002546001541461055c57610557610654565b610544565b50565b60006103624883610e1a565b60006040518060800160405280866001600160a01b0316815260200185858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820185905248604090920191909152600180548291826105e083610e2e565b9091555081526020808201929092526040016000208251815473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039091161781559082015160018201906106319082610ef7565b506040820151600282015560609091015160039091015550600154949350505050565b6002546001540361066157565b60008061066c61077f565b91509150600082606001519050600081846040015161068b9190610e1a565b905060005a9050600085600001516001600160a01b03168387602001516040516106b59190610d3d565b60006040518083038160008787f1925050503d80600081146106f3576040519150601f19603f3d011682016040523d82523d6000602084013e6106f8565b606091505b5050905060005a9050600061070d8285610fb7565b905060008186111561073157866107248388610fb7565b61072e9190610fca565b90505b6000818a604001516107439190610fb7565b8a51909150851561075657610756610897565b61075e6108e3565b61076983828c6108fa565b610772826109da565b5050505050505050505050565b6107b3604051806080016040528060006001600160a01b031681526020016060815260200160008152602001600081525090565b60025460008181526020818152604080832081516080810190925280546001600160a01b03168252600181018054949591949193859290840191906107f790610c18565b80601f016020809104026020016040519081016040528092919081815260200182805461082390610c18565b80156108705780601f1061084557610100808354040283529160200191610870565b820191906000526020600020905b81548152906001019060200180831161085357829003601f168201915b50505050508152602001600282015481526020016003820154815250509150915091509091565b6002546000908152602081905260408120805473ffffffffffffffffffffffffffffffffffffffff19168155906108d16001830182610a25565b50600060028201819055600390910155565b600280549060006108f383610e2e565b9190505550565b6000826001600160a01b0316846188b8908460405160240161091c9190610bf4565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5ea39558000000000000000000000000000000000000000000000000000000001790525161097f9190610d3d565b600060405180830381858888f193505050503d80600081146109bd576040519150601f19603f3d011682016040523d82523d6000602084013e6109c2565b606091505b50509050806109d4576109d4846109da565b50505050565b806000036109e55750565b60405141908290600081818185875af1925050503d80600081146109d4576040519150601f19603f3d011682016040523d82523d6000602084013e6109d4565b508054610a3190610c18565b6000825580601f10610a41575050565b601f01602090049060005260206000209081019061055c91905b80821115610a6f5760008155600101610a5b565b5090565b8035610362565b600060208284031215610a8f57610a8f600080fd5b61035f8383610a73565b60006001600160a01b038216610362565b610ab381610a99565b82525050565b60005b83811015610ad4578181015183820152602001610abc565b50506000910152565b6000610ae7825190565b808452602084019350610afe818560208601610ab9565b601f01601f19169290920192915050565b80610ab3565b60808101610b238287610aaa565b8181036020830152610b358186610add565b9050610b446040830185610b0f565b610b516060830184610b0f565b95945050505050565b60008083601f840112610b6f57610b6f600080fd5b50813567ffffffffffffffff811115610b8a57610b8a600080fd5b602083019150836001820283011115610ba557610ba5600080fd5b9250929050565b60008060208385031215610bc257610bc2600080fd5b823567ffffffffffffffff811115610bdc57610bdc600080fd5b610be885828601610b5a565b92509250509250929050565b602081016103628284610b0f565b634e487b7160e01b600052602260045260246000fd5b600281046001821680610c2c57607f821691505b602082108103610c3e57610c3e610c02565b50919050565b600061036282610c52565b90565b67ffffffffffffffff1690565b610ab381610c44565b602081016103628284610c5f565b600d8152602081017f4e6f2076616c75652073656e7400000000000000000000000000000000000000815290505b60200190565b6020808252810161036281610c76565b6020808252810161036281602481527f47617320746f6f206c6f7720636f6d706172656420746f20636f7374206f662060208201527f63616c6c00000000000000000000000000000000000000000000000000000000604082015260600190565b6000610d25825190565b610d33818560208601610ab9565b9290920192915050565b6103628183610d1b565b60198152602081017f43616c6c6261636b20657865637574696f6e206661696c65640000000000000081529050610ca4565b6020808252810161036281610d47565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0391821691908116908282039081111561036257610362610d89565b60088152602081017f4e6f742073656c6600000000000000000000000000000000000000000000000081529050610ca4565b6020808252810161036281610dc2565b634e487b7160e01b600052601260045260246000fd5b600082610e2957610e29610e04565b500490565b600060018201610e4057610e40610d89565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000610362610c4f8381565b610e7283610e5d565b815460001960089490940293841b1916921b91909117905550565b6000610e9a818484610e69565b505050565b81811015610eba57610eb2600082610e8d565b600101610e9f565b5050565b601f821115610e9a576000818152602090206020601f85010481016020851015610ee55750805b6102f96020601f860104830182610e9f565b815167ffffffffffffffff811115610f1157610f11610e47565b610f1b8254610c18565b610f26828285610ebe565b506020601f821160018114610f5b5760008315610f435750848201515b600019600885021c19811660028502178555506102f9565b600084815260208120601f198516915b82811015610f8b5787850151825560209485019460019092019101610f6b565b5084821015610fa85783870151600019601f87166008021c191681555b50505050600202600101905550565b8181038181111561036257610362610d89565b818102811582820484141761036257610362610d8956fea264697066735822122022c0117e92f6ffb3d46b462f20642839c7b4f030bf531f7cf3eb5d72325f73f664736f6c634300081c003360a060405260405161128a38038061128a8339810160408190526100229161046a565b828161002e8282610089565b50508160405161003d9061031d565b61004791906104df565b604051809103906000f080158015610063573d6000803e3d6000fd5b506001600160a01b031660805261008161007c60805190565b6100e8565b505050610534565b6100928261014b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100dc576100d782826101c5565b505050565b6100e461023e565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012860008051602061126a833981519152546001600160a01b031690565b826040516101379291906104ed565b60405180910390a16101488161025f565b50565b806001600160a01b03163b6000036101815780604051634c9c8ce360e01b815260040161017891906104df565b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101e2919061052a565b600060405180830381855af49150503d806000811461021d576040519150601f19603f3d011682016040523d82523d6000602084013e610222565b606091505b50909250905061023385838361029e565b925050505b92915050565b341561025d5760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b038116610289576000604051633173bdd160e11b815260040161017891906104df565b8060008051602061126a8339815191526101a4565b6060826102b3576102ae826102f4565b6102ed565b81511580156102ca57506001600160a01b0384163b155b156102ea5783604051639996b31560e01b815260040161017891906104df565b50805b9392505050565b8051156103045780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6106eb80610b7f83390190565b60006001600160a01b038216610238565b6103448161032a565b811461014857600080fd5b80516102388161033b565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b03811182821017156103955761039561035a565b6040525050565b60006103a760405190565b90506103b38282610370565b919050565b60006001600160401b038211156103d1576103d161035a565b601f19601f83011660200192915050565b60005b838110156103fd5781810151838201526020016103e5565b50506000910152565b6000610419610414846103b8565b61039c565b905082815283838301111561043057610430600080fd5b6102ed8360208301846103e2565b600082601f83011261045257610452600080fd5b8151610462848260208601610406565b949350505050565b60008060006060848603121561048257610482600080fd5b61048c858561034f565b925061049b856020860161034f565b60408501519092506001600160401b038111156104ba576104ba600080fd5b6104c68682870161043e565b9150509250925092565b6104d98161032a565b82525050565b6020810161023882846104d0565b604081016104fb82856104d0565b6102ed60208301846104d0565b6000610512825190565b6105208185602086016103e2565b9290920192915050565b6102388183610508565b60805161063161054e6000396000601001526106316000f3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100c5576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100bb576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100c36100cd565b565b6100c36100fc565b6000806100dd36600481846103cf565b8101906100ea9190610539565b915091506100f8828261010c565b5050565b6100c3610107610167565b61019f565b610115826101c3565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561015f5761015a828261026b565b505050565b6100f86102e3565b600061019a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156101be573d6000f35b3d6000fd5b806001600160a01b03163b60000361021257806040517f4c9c8ce3000000000000000000000000000000000000000000000000000000008152600401610209919061059d565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161028891906105f1565b600060405180830381855af49150503d80600081146102c3576040519150601f19603f3d011682016040523d82523d6000602084013e6102c8565b606091505b50915091506102d885838361031b565b925050505b92915050565b34156100c3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826103305761032b8261038a565b610383565b815115801561034757506001600160a01b0384163b155b1561038057836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401610209919061059d565b50805b9392505050565b80511561039a5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600080858511156103e2576103e2600080fd5b838611156103f2576103f2600080fd5b5050820193919092039150565b60006001600160a01b0382166102dd565b610419816103ff565b81146103cc57600080fd5b80356102dd81610410565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff821117156104845761048461042f565b6040525050565b600061049660405190565b90506104a2828261045e565b919050565b600067ffffffffffffffff8211156104c1576104c161042f565b601f19601f83011660200192915050565b82818337506000910152565b60006104f16104ec846104a7565b61048b565b905082815283838301111561050857610508600080fd5b6103838360208301846104d2565b600082601f83011261052a5761052a600080fd5b610383838335602085016104de565b6000806040838503121561054f5761054f600080fd5b6105598484610424565b9150602083013567ffffffffffffffff81111561057857610578600080fd5b61058485828601610516565b9150509250929050565b610597816103ff565b82525050565b602081016102dd828461058e565b60005b838110156105c65781810151838201526020016105ae565b50506000910152565b60006105d9825190565b6105e78185602086016105ab565b9290920192915050565b6102dd81836105cf56fea264697066735822122010d1880687d5a44f0a558c272f84fabbd9bf65d697170ee3f6681c2467feb26164736f6c634300081c0033608060405234801561001057600080fd5b506040516106eb3803806106eb83398101604081905261002f916100f8565b806001600160a01b038116610063576000604051631e4fbdf760e01b815260040161005a919061012d565b60405180910390fd5b61006c81610073565b505061013b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b0382165b92915050565b6100df816100c3565b81146100ea57600080fd5b50565b80516100d0816100d6565b60006020828403121561010d5761010d600080fd5b61011783836100ed565b9392505050565b610127816100c3565b82525050565b602081016100d0828461011e565b6105a18061014a6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100a5578063ad3cb1cc146100b8578063f2fde38b1461010e57600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b5061007461012e565b005b34801561008257600080fd5b506000546001600160a01b031660405161009c91906102fa565b60405180910390f35b6100746100b3366004610457565b610142565b3480156100c457600080fd5b506101016040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161009c9190610513565b34801561011a57600080fd5b50610074610129366004610524565b6101ca565b61013661022a565b6101406000610270565b565b61014a61022a565b6040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03841690634f1ef2869034906101939086908690600401610543565b6000604051808303818588803b1580156101ac57600080fd5b505af11580156101c0573d6000803e3d6000fd5b5050505050505050565b6101d261022a565b6001600160a01b03811661021e5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161021591906102fa565b60405180910390fd5b61022781610270565b50565b6000546001600160a01b0316331461014057336040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161021591906102fa565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b0382165b92915050565b6102f4816102d8565b82525050565b602081016102e582846102eb565b60006102e5826102d8565b61031c81610308565b811461022757600080fd5b80356102e581610313565b61031c816102d8565b80356102e581610332565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff8211171561039b5761039b610346565b6040525050565b60006103ad60405190565b90506103b98282610375565b919050565b600067ffffffffffffffff8211156103d8576103d8610346565b601f19601f83011660200192915050565b82818337506000910152565b6000610408610403846103be565b6103a2565b905082815283838301111561041f5761041f600080fd5b61042d8360208301846103e9565b9392505050565b600082601f83011261044857610448600080fd5b61042d838335602085016103f5565b60008060006060848603121561046f5761046f600080fd5b6104798585610327565b9250610488856020860161033b565b9150604084013567ffffffffffffffff8111156104a7576104a7600080fd5b6104b386828701610434565b9150509250925092565b60005b838110156104d85781810151838201526020016104c0565b50506000910152565b60006104eb825190565b8084526020840193506105028185602086016104bd565b601f01601f19169290920192915050565b6020808252810161042d81846104e1565b60006020828403121561053957610539600080fd5b61042d838361033b565b6040810161055182856102eb565b818103602083015261056381846104e1565b94935050505056fea264697066735822122096c3a562b6861bd964d97d99d95931f7343ac03c64bc04aeab6287f6e42e45eb64736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103bd64e14789a915ea657e42f2dbf0b973227708fa64b58766287637985d1ade69", + Bin: "0x608060405234801561001057600080fd5b50604051615ba3380380615ba383398101604081905261002f916103e7565b61003881610060565b6000610044828261011d565b905061005082826101e2565b610059826102a2565b50506105c4565b600060405161006e90610373565b604051809103906000f08015801561008a573d6000803e3d6000fd5b509050600063c4d66de860e01b836040516024016100a8919061041c565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006100f083858461032f60201b60201c565b9050600080516020615b838339815191528160405161010f919061045e565b60405180910390a150505050565b60008060405161012c90610380565b604051809103906000f080158015610148573d6000803e3d6000fd5b509050600063da35a26f60e01b8486604051602401610168929190610483565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050905060006101b083878461032f60201b60201c565b9050600080516020615b83833981519152816040516101cf91906104b7565b60405180910390a1925050505b92915050565b60006040516101f09061038d565b604051809103906000f08015801561020c573d6000803e3d6000fd5b509050600063485cc95560e01b848460405160240161022c9291906104c7565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050600061027483868461032f60201b60201c565b9050600080516020615b838339815191528160405161029391906104f4565b60405180910390a15050505050565b60006040516102b09061039a565b604051809103906000f0801580156102cc573d6000803e3d6000fd5b506040805160048152602481019091526020810180516001600160e01b0390811663204a7f0760e21b17909152919250906000906103109084908690859061032f16565b9050600080516020615b838339815191528160405161010f9190610528565b600080848484604051610341906103a7565b61034d9392919061058e565b604051809103906000f080158015610369573d6000803e3d6000fd5b5095945050505050565b610dfe8061061183390190565b6107618061140f83390190565b611c9980611b7083390190565b6110f08061380983390190565b61128a806148f983390190565b60006001600160a01b0382166101dc565b6103ce816103b4565b81146103d957600080fd5b50565b80516101dc816103c5565b6000602082840312156103fc576103fc600080fd5b61040683836103dc565b9392505050565b610416816103b4565b82525050565b602081016101dc828461040d565b60198152602081017f5472616e73616374696f6e73506f737450726f636573736f7200000000000000815290505b60200190565b6040808252810161046e8161042a565b90506101dc602083018461040d565b80610416565b60408101610491828561047d565b610406602083018461040d565b6004815260208101634665657360e01b81529050610458565b6040808252810161046e8161049e565b60408101610491828561040d565b600a815260208101694d65737361676542757360b01b81529050610458565b6040808252810161046e816104d5565b600f8152602081016e5075626c696343616c6c6261636b7360881b81529050610458565b6040808252810161046e81610504565b60005b8381101561055357818101518382015260200161053b565b50506000910152565b6000610566825190565b80845260208401935061057d818560208601610538565b601f01601f19169290920192915050565b6060810161059c828661040d565b6105a9602083018561040d565b81810360408301526105bb818461055c565b95945050505050565b603f806105d26000396000f3fe6080604052600080fdfea2646970667358221220980aa679cb38f1528abccc7a8f3b3d1cb60d67ec5db94c6b6fada5183bda908664736f6c634300081c00336080604052348015600f57600080fd5b50610ddf8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806364c55a9d11610081578063c4d66de81161005b578063c4d66de8146101c8578063d547741f146101db578063ee546fd8146101ee57600080fd5b806364c55a9d1461017657806391d1485414610189578063a217fddf146101c057600080fd5b80632f2ff15d116100b25780632f2ff15d1461012757806336568abe1461013c578063508a50f41461014f57600080fd5b806301ffc9a7146100ce578063248a9ca3146100f7575b600080fd5b6100e16100dc3660046107fd565b610265565b6040516100ee919061082d565b60405180910390f35b61011a61010536600461084c565b60009081526020819052604090206001015490565b6040516100ee9190610871565b61013a6101353660046108a4565b6102fe565b005b61013a61014a3660046108a4565b610329565b61011a7ff16bb8781ef1311f8fe06747bcbe481e695502acdcb0cb8c03aa03899e39a59881565b61013a61018436600461092e565b61037a565b6100e16101973660046108a4565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61011a600081565b61013a6101d6366004610976565b610492565b61013a6101e93660046108a4565b610602565b61013a6101fc366004610976565b6001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806102f857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008281526020819052604090206001015461031981610627565b6103238383610634565b50505050565b6001600160a01b038116331461036b576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61037582826106de565b505050565b60006103876001306109ab565b9050336001600160a01b038216146103ba5760405162461bcd60e51b81526004016103b190610a02565b60405180910390fd5b60008290036103db5760405162461bcd60e51b81526004016103b190610a44565b60005b600154811015610323576000600182815481106103fd576103fd610a54565b6000918252602090912001546040517f9f9976af0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911691508190639f9976af906104549088908890600401610d4b565b600060405180830381600087803b15801561046e57600080fd5b505af1158015610482573d6000803e3d6000fd5b50505050508060010190506103de565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156104dd5750825b905060008267ffffffffffffffff1660011480156104fa5750303b155b905081158015610508575080155b1561053f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561057357845468ff00000000000000001916680100000000000000001785555b61057e600087610634565b506105a97ff16bb8781ef1311f8fe06747bcbe481e695502acdcb0cb8c03aa03899e39a59887610634565b5083156105fa57845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906105f190600190610d80565b60405180910390a15b505050505050565b60008281526020819052604090206001015461061d81610627565b61032383836106de565b6106318133610761565b50565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166106d6576000838152602081815260408083206001600160a01b03861684529091529020805460ff1916600117905561068e3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016102f8565b5060006102f8565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16156106d6576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016102f8565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166107bf5780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016103b1929190610d8e565b5050565b7fffffffff0000000000000000000000000000000000000000000000000000000081165b811461063157600080fd5b80356102f8816107c3565b60006020828403121561081257610812600080fd5b61081c83836107f2565b9392505050565b8015155b82525050565b602081016102f88284610823565b806107e7565b80356102f88161083b565b60006020828403121561086157610861600080fd5b61081c8383610841565b80610827565b602081016102f8828461086b565b60006001600160a01b0382166102f8565b6107e78161087f565b80356102f881610890565b600080604083850312156108ba576108ba600080fd5b6108c48484610841565b91506108d38460208501610899565b90509250929050565b60008083601f8401126108f1576108f1600080fd5b50813567ffffffffffffffff81111561090c5761090c600080fd5b60208301915083602082028301111561092757610927600080fd5b9250929050565b6000806020838503121561094457610944600080fd5b823567ffffffffffffffff81111561095e5761095e600080fd5b61096a858286016108dc565b92509250509250929050565b60006020828403121561098b5761098b600080fd5b61081c8383610899565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b039182169190811690828203908111156102f8576102f8610995565b60088152602081017f4e6f742073656c66000000000000000000000000000000000000000000000000815290505b60200190565b602080825281016102f8816109ce565b601a8152602081017f4e6f207472616e73616374696f6e7320746f20636f6e76657274000000000000815290506109fc565b602080825281016102f881610a12565b634e487b7160e01b600052603260045260246000fd5b60ff81166107e7565b80356102f881610a6a565b5060006102f86020830183610a73565b60ff8116610827565b5060006102f86020830183610841565b5060006102f86020830183610899565b6108278161087f565b6000808335601e1936859003018112610adb57610adb600080fd5b830160208101925035905067ffffffffffffffff811115610afe57610afe600080fd5b3681900382131561092757610927600080fd5b82818337506000910152565b818352602083019250610b31828483610b11565b50601f01601f19160190565b8015156107e7565b80356102f881610b3d565b5060006102f86020830183610b45565b67ffffffffffffffff81166107e7565b80356102f881610b60565b5060006102f86020830183610b70565b67ffffffffffffffff8116610827565b60006101408301610bac8380610a7e565b610bb68582610a8e565b50610bc46020840184610a97565b610bd1602086018261086b565b50610bdf6040840184610a97565b610bec604086018261086b565b50610bfa6060840184610a97565b610c07606086018261086b565b50610c156080840184610aa7565b610c226080860182610ab7565b50610c3060a0840184610a97565b610c3d60a086018261086b565b50610c4b60c0840184610ac0565b85830360c0870152610c5e838284610b1d565b92505050610c6f60e0840184610aa7565b610c7c60e0860182610ab7565b50610c8b610100840184610b50565b610c99610100860182610823565b50610ca8610120840184610b7b565b610cb6610120860182610b8b565b509392505050565b600061081c8383610b9b565b6000823561013e1936849003018112610ce557610ce5600080fd5b90910192915050565b818352602083019250600083602084028101838060005b87811015610d3e578484038952610d1c8284610cca565b610d268582610cbe565b94505060208201602099909901989150600101610d05565b5091979650505050505050565b60208082528101610d5d818486610cee565b949350505050565b600067ffffffffffffffff82166102f8565b61082781610d65565b602081016102f88284610d77565b60408101610d9c8285610ab7565b61081c602083018461086b56fea2646970667358221220000c7add8ef77f2ce3e54738e1a6216052e3c7d3dfd30f31adc394e073238b4d64736f6c634300081c00336080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b610688806100d96000396000f3fe60806040526004361061007f5760003560e01c80639003adfe1161004e5780639003adfe1461012e578063afe997ea14610141578063da35a26f14610156578063f2fde38b1461017657600080fd5b80631a90a2191461008b57806323aa2a9d146100b2578063715018a6146100d45780638da5cb5b146100e957600080fd5b3661008657005b600080fd5b34801561009757600080fd5b506000545b6040516100a99190610544565b60405180910390f35b3480156100be57600080fd5b506100d26100cd366004610570565b610196565b005b3480156100e057600080fd5b506100d26101a3565b3480156100f557600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166040516100a991906105b0565b34801561013a57600080fd5b504761009c565b34801561014d57600080fd5b506100d26101b7565b34801561016257600080fd5b506100d26101713660046105d2565b61021a565b34801561018257600080fd5b506100d261019136600461060a565b610362565b61019e6103bf565b600055565b6101ab6103bf565b6101b56000610433565b565b6101bf6103bf565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610217573d6000803e3d6000fd5b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156102655750825b905060008267ffffffffffffffff1660011480156102825750303b155b905081158015610290575080155b156102c7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156102fb57845468ff00000000000000001916680100000000000000001785555b610304866104bc565b6000879055831561035957845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29061035090600190610644565b60405180910390a15b50505050505050565b61036a6103bf565b6001600160a01b0381166103b65760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016103ad91906105b0565b60405180910390fd5b61021781610433565b336103f17f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146101b557336040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016103ad91906105b0565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6104c46104cd565b61021781610534565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166101b5576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61036a6104cd565b805b82525050565b60208101610552828461053c565b92915050565b805b811461021757600080fd5b803561055281610558565b60006020828403121561058557610585600080fd5b61058f8383610565565b9392505050565b60006001600160a01b038216610552565b61053e81610596565b6020810161055282846105a7565b61055a81610596565b8035610552816105be565b600080604083850312156105e8576105e8600080fd5b6105f28484610565565b915061060184602085016105c7565b90509250929050565b60006020828403121561061f5761061f600080fd5b61058f83836105c7565b600067ffffffffffffffff8216610552565b61053e81610629565b60208101610552828461063b56fea264697066735822122080f0c01e34a6bfd9ed27e9c05c50a018ef9cc6e669f767856b4c30e98b70567764736f6c634300081c0033608060405234801561001057600080fd5b5061001a33610027565b610022610098565b61014a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100e85760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101475780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b611b40806101596000396000f3fe6080604052600436106100d55760003560e01c8063715018a61161007f57806399a3ad211161005957806399a3ad21146102af578063ab53bddc146102cf578063b1454caa146102ef578063f2fde38b1461030f57610149565b8063715018a6146102355780638da5cb5b1461024a5780639730886d1461028f57610149565b8063346633fb116100b0578063346633fb146101e257806336d2da90146101f5578063485cc9551461021557610149565b8062a1b8151461016a5780630fcfbd111461019557806333a88c72146101b557610149565b36610149576040517f346633fb000000000000000000000000000000000000000000000000000000008152309063346633fb90349061011a9033908390600401610dca565b6000604051808303818588803b15801561013357600080fd5b505af1158015610147573d6000803e3d6000fd5b005b60405162461bcd60e51b815260040161016190610e19565b60405180910390fd5b34801561017657600080fd5b5061017f61032f565b60405161018c9190610e29565b60405180910390f35b3480156101a157600080fd5b5061017f6101b0366004610e52565b6103bb565b3480156101c157600080fd5b506101d56101d0366004610e52565b61041a565b60405161018c9190610e95565b6101476101f0366004610ed3565b61046c565b34801561020157600080fd5b50610147610210366004610f0b565b6105bb565b34801561022157600080fd5b50610147610230366004610f2a565b61063a565b34801561024157600080fd5b506101476107a5565b34801561025657600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031660405161018c9190610f59565b34801561029b57600080fd5b506101476102aa366004610f67565b6107b9565b3480156102bb57600080fd5b506101476102ca366004610ed3565b610925565b3480156102db57600080fd5b506101476102ea366004610ed3565b6109a5565b6103026102fd366004611030565b610a6e565b60405161018c91906110bd565b34801561031b57600080fd5b5061014761032a366004610f0b565b610b7b565b600354604080517f1a90a21900000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691631a90a2199160048083019260209291908290030181865afa158015610392573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b691906110d6565b905090565b600080826040516020016103cf9190611294565b60408051601f198184030181529181528151602092830120600081815292839052912054909150806104135760405162461bcd60e51b8152600401610161906112ff565b9392505050565b6000808260405160200161042e9190611294565b60408051601f19818403018152918152815160209283012060008181529283905291205490915080158015906104645750428111155b949350505050565b60003411801561047b57508034145b6104975760405162461bcd60e51b815260040161016190611367565b60035434906001600160a01b03161561055b5760006104b461032f565b9050803410156104d65760405162461bcd60e51b8152600401610161906113a7565b6104e081346113cd565b6003546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114610532576040519150601f19603f3d011682016040523d82523d6000602084013e610537565b606091505b50509050806105585760405162461bcd60e51b815260040161016190611438565b50505b600061056633610bd2565b9050836001600160a01b0316336001600160a01b03167f50c536ac33a920f00755865b831d17bf4cff0b2e0345f65b16d52bfc004068b684846040516105ad929190611448565b60405180910390a350505050565b6105c3610c30565b6000816001600160a01b03164760405160006040518083038185875af1925050503d8060008114610610576040519150601f19603f3d011682016040523d82523d6000602084013e610615565b606091505b50509050806106365760405162461bcd60e51b815260040161016190611495565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156106855750825b905060008267ffffffffffffffff1660011480156106a25750303b155b9050811580156106b0575080155b156106e7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561071b57845468ff00000000000000001916680100000000000000001785555b61072487610ca4565b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038816179055831561079c57845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290610793906001906114c9565b60405180910390a15b50505050505050565b6107ad610c30565b6107b76000610cb5565b565b60006107c66001306114d7565b90506107f97f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806108205750336001600160a01b038216145b61083c5760405162461bcd60e51b81526004016101619061152c565b6000610848834261153c565b905060008460405160200161085d9190611294565b60408051601f198184030181529181528151602092830120600081815292839052912054909150156108a15760405162461bcd60e51b8152600401610161906115a7565b6000818152602081815260408220849055600191906108c290880188610f0b565b6001600160a01b0316815260208101919091526040016000908120906108ee60808801606089016115b7565b63ffffffff1681526020808201929092526040016000908120805460018101825590825291902086916004020161079c8282611a11565b61092d610c30565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461097a576040519150601f19603f3d011682016040523d82523d6000602084013e61097f565b606091505b50509050806109a05760405162461bcd60e51b815260040161016190611495565b505050565b60006109b26001306114d7565b90506109e57f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316336001600160a01b03161480610a0c5750336001600160a01b038216145b610a285760405162461bcd60e51b81526004016101619061152c565b826001600160a01b03167fcd9850463422a7449c406a036e35e5edb6fbe35a64c9f12a2354be98a750c0d383604051610a619190610e29565b60405180910390a2505050565b6003546000906001600160a01b031615610b24576000610a8c61032f565b905080341015610aae5760405162461bcd60e51b815260040161016190611a73565b6003546040516000916001600160a01b03169083908381818185875af1925050503d8060008114610afb576040519150601f19603f3d011682016040523d82523d6000602084013e610b00565b606091505b5050905080610b215760405162461bcd60e51b815260040161016190611438565b50505b610b2d33610bd2565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef77593733828888888888604051610b6a9796959493929190611a83565b60405180910390a195945050505050565b610b83610c30565b6001600160a01b038116610bc65760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101619190610f59565b610bcf81610cb5565b50565b6001600160a01b0381166000908152600260205260408120805467ffffffffffffffff169160019190610c058385611ae6565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b33610c627f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146107b757336040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016101619190610f59565b610cac610d33565b610bcf81610d9a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166107b7576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b83610d33565b60006001600160a01b0382165b92915050565b610dbe81610da2565b82525050565b80610dbe565b60408101610dd88285610db5565b6104136020830184610dc4565b600b8152602081017f756e737570706f72746564000000000000000000000000000000000000000000815290505b60200190565b60208082528101610daf81610de5565b60208101610daf8284610dc4565b600060c08284031215610e4c57610e4c600080fd5b50919050565b600060208284031215610e6757610e67600080fd5b813567ffffffffffffffff811115610e8157610e81600080fd5b61046484828501610e37565b801515610dbe565b60208101610daf8284610e8d565b610eac81610da2565b8114610bcf57600080fd5b8035610daf81610ea3565b80610eac565b8035610daf81610ec2565b60008060408385031215610ee957610ee9600080fd5b610ef38484610eb7565b9150610f028460208501610ec8565b90509250929050565b600060208284031215610f2057610f20600080fd5b6104138383610eb7565b60008060408385031215610f4057610f40600080fd5b610f4a8484610eb7565b9150610f028460208501610eb7565b60208101610daf8284610db5565b60008060408385031215610f7d57610f7d600080fd5b823567ffffffffffffffff811115610f9757610f97600080fd5b610fa385828601610e37565b925050610f028460208501610ec8565b63ffffffff8116610eac565b8035610daf81610fb3565b60008083601f840112610fdf57610fdf600080fd5b50813567ffffffffffffffff811115610ffa57610ffa600080fd5b60208301915083600182028301111561101557611015600080fd5b9250929050565b60ff8116610eac565b8035610daf8161101c565b60008060008060006080868803121561104b5761104b600080fd5b6110558787610fbf565b94506110648760208801610fbf565b9350604086013567ffffffffffffffff81111561108357611083600080fd5b61108f88828901610fca565b93509350506110a18760608801611025565b90509295509295909350565b67ffffffffffffffff8116610dbe565b60208101610daf82846110ad565b8051610daf81610ec2565b6000602082840312156110eb576110eb600080fd5b61041383836110cb565b506000610daf6020830183610eb7565b67ffffffffffffffff8116610eac565b8035610daf81611105565b506000610daf6020830183611115565b506000610daf6020830183610fbf565b63ffffffff8116610dbe565b6000808335601e193685900301811261116757611167600080fd5b830160208101925035905067ffffffffffffffff81111561118a5761118a600080fd5b3681900382131561101557611015600080fd5b82818337506000910152565b8183526020830192506111bd82848361119d565b50601f01601f19160190565b506000610daf6020830183611025565b60ff8116610dbe565b600060c083016111f283806110f5565b6111fc8582610db5565b5061120a6020840184611120565b61121760208601826110ad565b506112256040840184611130565b6112326040860182611140565b506112406060840184611130565b61124d6060860182611140565b5061125b608084018461114c565b858303608087015261126e8382846111a9565b9250505061127f60a08401846111c9565b61128c60a08601826111d9565b509392505050565b6020808252810161041381846111e2565b60218152602081017f54686973206d65737361676520776173206e65766572207375626d697474656481527f2e00000000000000000000000000000000000000000000000000000000000000602082015290505b60400190565b60208082528101610daf816112a5565b60308152602081017f417474656d7074696e6720746f2073656e642076616c756520776974686f757481527f2070726f766964696e6720457468657200000000000000000000000000000000602082015290506112f9565b60208082528101610daf8161130f565b60208082527f496e73756666696369656e742066756e647320746f2073656e642076616c75659101908152610e13565b60208082528101610daf81611377565b634e487b7160e01b600052601160045260246000fd5b81810381811115610daf57610daf6113b7565b60248152602081017f4661696c656420746f2073656e64206665657320746f206665657320636f6e7481527f7261637400000000000000000000000000000000000000000000000000000000602082015290506112f9565b60208082528101610daf816113e0565b604081016114568285610dc4565b61041360208301846110ad565b60148152602081017f6661696c65642073656e64696e672076616c756500000000000000000000000081529050610e13565b60208082528101610daf81611463565b6000610daf826114b3565b90565b67ffffffffffffffff1690565b610dbe816114a5565b60208101610daf82846114c0565b6001600160a01b03918216919081169082820390811115610daf57610daf6113b7565b60118152602081017f4e6f74206f776e6572206f722073656c6600000000000000000000000000000081529050610e13565b60208082528101610daf816114fa565b80820180821115610daf57610daf6113b7565b60218152602081017f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636581527f2100000000000000000000000000000000000000000000000000000000000000602082015290506112f9565b60208082528101610daf8161154f565b6000602082840312156115cc576115cc600080fd5b6104138383610fbf565b60008135610daf81610ea3565b60006001600160a01b03835b81169019929092169190911792915050565b60006001600160a01b038216610daf565b6000610daf82611601565b6000610daf82611612565b6116318261161d565b61163c8183546115e3565b8255505050565b60008135610daf81611105565b60007bffffffffffffffff00000000000000000000000000000000000000006115ef8460a01b90565b6000610daf67ffffffffffffffff83166114b3565b61169782611679565b61163c818354611650565b60008135610daf81610fb3565b60007fffffffff000000000000000000000000000000000000000000000000000000006115ef8460e01b90565b600063ffffffff8216610daf565b6116f3826116dc565b61163c8183546116af565b600063ffffffff836115ef565b611714826116dc565b61163c8183546116fe565b6000808335601e193685900301811261173a5761173a600080fd5b8301915050803567ffffffffffffffff81111561175957611759600080fd5b60208201915060018102360382131561101557611015600080fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052602260045260246000fd5b6002810460018216806117b457607f821691505b602082108103610e4c57610e4c61178a565b6000610daf6114b08381565b6117db836117c6565b815460001960089490940293841b1916921b91909117905550565b60006109a08184846117d2565b81811015610636576118166000826117f6565b600101611803565b601f8211156109a0576000818152602090206020601f850104810160208510156118455750805b6118576020601f860104830182611803565b5050505050565b8267ffffffffffffffff81111561187757611877611774565b61188182546117a0565b61188c82828561181e565b506000601f8211600181146118c157600083156118a95750848201355b600019600885021c198116600285021785555061191b565b600084815260209020601f19841690835b828110156118f257878501358255602094850194600190920191016118d2565b508482101561190f576000196008601f8716021c19878501351681555b50506001600284020184555b505050505050565b6109a083838361185e565b60008135610daf8161101c565b600060ff8216610daf565b61194f8261193b565b815460ff191660ff82161761163c565b80828061196b816115d6565b90506119778184611628565b5050602083018061198782611643565b9050611993818461168e565b505060408301806119a3826116a2565b90506119af81846116ea565b50505060608201806119c0826116a2565b90506119cf816001850161170b565b50506119de608083018361171f565b6119ec818360028601611923565b505060a08201806119fc8261192e565b9050611a0b8160038501611946565b50505050565b610636828261195f565b60258152602081017f496e73756666696369656e742066756e647320746f207075626c697368206d6581527f7373616765000000000000000000000000000000000000000000000000000000602082015290506112f9565b60208082528101610daf81611a1b565b60c08101611a91828a610db5565b611a9e60208301896110ad565b611aab6040830188611140565b611ab86060830187611140565b8181036080830152611acb8185876111a9565b9050611ada60a08301846111d9565b98975050505050505050565b67ffffffffffffffff918216919081169082820190811115610daf57610daf6113b756fea2646970667358221220bead2f08222fa8050ef654f93b3b55289786509febf6aadea92d722d33fb188964736f6c634300081c00336080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b611017806100d96000396000f3fe6080604052600436106100595760003560e01c806382fbdc9c1161004357806382fbdc9c146100ae578063929d34e9146100ce578063a67e1760146100ee57600080fd5b8062e0d3b51461005e5780638129fc1c14610097575b600080fd5b34801561006a57600080fd5b5061007e610079366004610a7a565b610103565b60405161008e9493929190610b15565b60405180910390f35b3480156100a357600080fd5b506100ac6101be565b005b6100c16100bc366004610bac565b610300565b60405161008e9190610bf4565b3480156100da57600080fd5b506100ac6100e9366004610a7a565b610368565b3480156100fa57600080fd5b506100ac61050d565b600060208190529081526040902080546001820180546001600160a01b03909216929161012f90610c18565b80601f016020809104026020016040519081016040528092919081815260200182805461015b90610c18565b80156101a85780601f1061017d576101008083540402835291602001916101a8565b820191906000526020600020905b81548152906001019060200180831161018b57829003601f168201915b5050505050908060020154908060030154905084565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156102095750825b905060008267ffffffffffffffff1660011480156102265750303b155b905081158015610234575080155b1561026b576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561029f57845468ff00000000000000001916680100000000000000001785555b6000600181905560025583156102f957845468ff0000000000000000191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906102f090600190610c68565b60405180910390a15b5050505050565b600080341161032a5760405162461bcd60e51b815260040161032190610caa565b60405180910390fd5b6152086103363461055f565b116103535760405162461bcd60e51b815260040161032190610cba565b61035f3384843461056b565b90505b92915050565b60008181526020818152604080832081516080810190925280546001600160a01b0316825260018101805492939192918401916103a490610c18565b80601f01602080910402602001604051908101604052809291908181526020018280546103d090610c18565b801561041d5780601f106103f25761010080835404028352916020019161041d565b820191906000526020600020905b81548152906001019060200180831161040057829003601f168201915b50505050508152602001600282015481526020016003820154815250509050600081600001516001600160a01b0316826020015160405161045e9190610d3d565b6000604051808303816000865af19150503d806000811461049b576040519150601f19603f3d011682016040523d82523d6000602084013e6104a0565b606091505b50509050806104c15760405162461bcd60e51b815260040161032190610d79565b6000838152602081905260408120805473ffffffffffffffffffffffffffffffffffffffff19168155906104f86001830182610a25565b50600060028201819055600390910155505050565b600061051a600130610d9f565b9050336001600160a01b038216146105445760405162461bcd60e51b815260040161032190610df4565b6002546001541461055c57610557610654565b610544565b50565b60006103624883610e1a565b60006040518060800160405280866001600160a01b0316815260200185858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020820185905248604090920191909152600180548291826105e083610e2e565b9091555081526020808201929092526040016000208251815473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039091161781559082015160018201906106319082610ef7565b506040820151600282015560609091015160039091015550600154949350505050565b6002546001540361066157565b60008061066c61077f565b91509150600082606001519050600081846040015161068b9190610e1a565b905060005a9050600085600001516001600160a01b03168387602001516040516106b59190610d3d565b60006040518083038160008787f1925050503d80600081146106f3576040519150601f19603f3d011682016040523d82523d6000602084013e6106f8565b606091505b5050905060005a9050600061070d8285610fb7565b905060008186111561073157866107248388610fb7565b61072e9190610fca565b90505b6000818a604001516107439190610fb7565b8a51909150851561075657610756610897565b61075e6108e3565b61076983828c6108fa565b610772826109da565b5050505050505050505050565b6107b3604051806080016040528060006001600160a01b031681526020016060815260200160008152602001600081525090565b60025460008181526020818152604080832081516080810190925280546001600160a01b03168252600181018054949591949193859290840191906107f790610c18565b80601f016020809104026020016040519081016040528092919081815260200182805461082390610c18565b80156108705780601f1061084557610100808354040283529160200191610870565b820191906000526020600020905b81548152906001019060200180831161085357829003601f168201915b50505050508152602001600282015481526020016003820154815250509150915091509091565b6002546000908152602081905260408120805473ffffffffffffffffffffffffffffffffffffffff19168155906108d16001830182610a25565b50600060028201819055600390910155565b600280549060006108f383610e2e565b9190505550565b6000826001600160a01b0316846188b8908460405160240161091c9190610bf4565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f5ea39558000000000000000000000000000000000000000000000000000000001790525161097f9190610d3d565b600060405180830381858888f193505050503d80600081146109bd576040519150601f19603f3d011682016040523d82523d6000602084013e6109c2565b606091505b50509050806109d4576109d4846109da565b50505050565b806000036109e55750565b60405141908290600081818185875af1925050503d80600081146109d4576040519150601f19603f3d011682016040523d82523d6000602084013e6109d4565b508054610a3190610c18565b6000825580601f10610a41575050565b601f01602090049060005260206000209081019061055c91905b80821115610a6f5760008155600101610a5b565b5090565b8035610362565b600060208284031215610a8f57610a8f600080fd5b61035f8383610a73565b60006001600160a01b038216610362565b610ab381610a99565b82525050565b60005b83811015610ad4578181015183820152602001610abc565b50506000910152565b6000610ae7825190565b808452602084019350610afe818560208601610ab9565b601f01601f19169290920192915050565b80610ab3565b60808101610b238287610aaa565b8181036020830152610b358186610add565b9050610b446040830185610b0f565b610b516060830184610b0f565b95945050505050565b60008083601f840112610b6f57610b6f600080fd5b50813567ffffffffffffffff811115610b8a57610b8a600080fd5b602083019150836001820283011115610ba557610ba5600080fd5b9250929050565b60008060208385031215610bc257610bc2600080fd5b823567ffffffffffffffff811115610bdc57610bdc600080fd5b610be885828601610b5a565b92509250509250929050565b602081016103628284610b0f565b634e487b7160e01b600052602260045260246000fd5b600281046001821680610c2c57607f821691505b602082108103610c3e57610c3e610c02565b50919050565b600061036282610c52565b90565b67ffffffffffffffff1690565b610ab381610c44565b602081016103628284610c5f565b600d8152602081017f4e6f2076616c75652073656e7400000000000000000000000000000000000000815290505b60200190565b6020808252810161036281610c76565b6020808252810161036281602481527f47617320746f6f206c6f7720636f6d706172656420746f20636f7374206f662060208201527f63616c6c00000000000000000000000000000000000000000000000000000000604082015260600190565b6000610d25825190565b610d33818560208601610ab9565b9290920192915050565b6103628183610d1b565b60198152602081017f43616c6c6261636b20657865637574696f6e206661696c65640000000000000081529050610ca4565b6020808252810161036281610d47565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0391821691908116908282039081111561036257610362610d89565b60088152602081017f4e6f742073656c6600000000000000000000000000000000000000000000000081529050610ca4565b6020808252810161036281610dc2565b634e487b7160e01b600052601260045260246000fd5b600082610e2957610e29610e04565b500490565b600060018201610e4057610e40610d89565b5060010190565b634e487b7160e01b600052604160045260246000fd5b6000610362610c4f8381565b610e7283610e5d565b815460001960089490940293841b1916921b91909117905550565b6000610e9a818484610e69565b505050565b81811015610eba57610eb2600082610e8d565b600101610e9f565b5050565b601f821115610e9a576000818152602090206020601f85010481016020851015610ee55750805b6102f96020601f860104830182610e9f565b815167ffffffffffffffff811115610f1157610f11610e47565b610f1b8254610c18565b610f26828285610ebe565b506020601f821160018114610f5b5760008315610f435750848201515b600019600885021c19811660028502178555506102f9565b600084815260208120601f198516915b82811015610f8b5787850151825560209485019460019092019101610f6b565b5084821015610fa85783870151600019601f87166008021c191681555b50505050600202600101905550565b8181038181111561036257610362610d89565b818102811582820484141761036257610362610d8956fea264697066735822122022c0117e92f6ffb3d46b462f20642839c7b4f030bf531f7cf3eb5d72325f73f664736f6c634300081c003360a060405260405161128a38038061128a8339810160408190526100229161046a565b828161002e8282610089565b50508160405161003d9061031d565b61004791906104df565b604051809103906000f080158015610063573d6000803e3d6000fd5b506001600160a01b031660805261008161007c60805190565b6100e8565b505050610534565b6100928261014b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100dc576100d782826101c5565b505050565b6100e461023e565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61012860008051602061126a833981519152546001600160a01b031690565b826040516101379291906104ed565b60405180910390a16101488161025f565b50565b806001600160a01b03163b6000036101815780604051634c9c8ce360e01b815260040161017891906104df565b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101e2919061052a565b600060405180830381855af49150503d806000811461021d576040519150601f19603f3d011682016040523d82523d6000602084013e610222565b606091505b50909250905061023385838361029e565b925050505b92915050565b341561025d5760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b038116610289576000604051633173bdd160e11b815260040161017891906104df565b8060008051602061126a8339815191526101a4565b6060826102b3576102ae826102f4565b6102ed565b81511580156102ca57506001600160a01b0384163b155b156102ea5783604051639996b31560e01b815260040161017891906104df565b50805b9392505050565b8051156103045780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6106eb80610b7f83390190565b60006001600160a01b038216610238565b6103448161032a565b811461014857600080fd5b80516102388161033b565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b03811182821017156103955761039561035a565b6040525050565b60006103a760405190565b90506103b38282610370565b919050565b60006001600160401b038211156103d1576103d161035a565b601f19601f83011660200192915050565b60005b838110156103fd5781810151838201526020016103e5565b50506000910152565b6000610419610414846103b8565b61039c565b905082815283838301111561043057610430600080fd5b6102ed8360208301846103e2565b600082601f83011261045257610452600080fd5b8151610462848260208601610406565b949350505050565b60008060006060848603121561048257610482600080fd5b61048c858561034f565b925061049b856020860161034f565b60408501519092506001600160401b038111156104ba576104ba600080fd5b6104c68682870161043e565b9150509250925092565b6104d98161032a565b82525050565b6020810161023882846104d0565b604081016104fb82856104d0565b6102ed60208301846104d0565b6000610512825190565b6105208185602086016103e2565b9290920192915050565b6102388183610508565b60805161063161054e6000396000601001526106316000f3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036100c5576000357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100bb576040517fd2b576ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6100c36100cd565b565b6100c36100fc565b6000806100dd36600481846103cf565b8101906100ea9190610539565b915091506100f8828261010c565b5050565b6100c3610107610167565b61019f565b610115826101c3565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561015f5761015a828261026b565b505050565b6100f86102e3565b600061019a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156101be573d6000f35b3d6000fd5b806001600160a01b03163b60000361021257806040517f4c9c8ce3000000000000000000000000000000000000000000000000000000008152600401610209919061059d565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161028891906105f1565b600060405180830381855af49150503d80600081146102c3576040519150601f19603f3d011682016040523d82523d6000602084013e6102c8565b606091505b50915091506102d885838361031b565b925050505b92915050565b34156100c3576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060826103305761032b8261038a565b610383565b815115801561034757506001600160a01b0384163b155b1561038057836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401610209919061059d565b50805b9392505050565b80511561039a5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b600080858511156103e2576103e2600080fd5b838611156103f2576103f2600080fd5b5050820193919092039150565b60006001600160a01b0382166102dd565b610419816103ff565b81146103cc57600080fd5b80356102dd81610410565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff821117156104845761048461042f565b6040525050565b600061049660405190565b90506104a2828261045e565b919050565b600067ffffffffffffffff8211156104c1576104c161042f565b601f19601f83011660200192915050565b82818337506000910152565b60006104f16104ec846104a7565b61048b565b905082815283838301111561050857610508600080fd5b6103838360208301846104d2565b600082601f83011261052a5761052a600080fd5b610383838335602085016104de565b6000806040838503121561054f5761054f600080fd5b6105598484610424565b9150602083013567ffffffffffffffff81111561057857610578600080fd5b61058485828601610516565b9150509250929050565b610597816103ff565b82525050565b602081016102dd828461058e565b60005b838110156105c65781810151838201526020016105ae565b50506000910152565b60006105d9825190565b6105e78185602086016105ab565b9290920192915050565b6102dd81836105cf56fea264697066735822122010d1880687d5a44f0a558c272f84fabbd9bf65d697170ee3f6681c2467feb26164736f6c634300081c0033608060405234801561001057600080fd5b506040516106eb3803806106eb83398101604081905261002f916100f8565b806001600160a01b038116610063576000604051631e4fbdf760e01b815260040161005a919061012d565b60405180910390fd5b61006c81610073565b505061013b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b0382165b92915050565b6100df816100c3565b81146100ea57600080fd5b50565b80516100d0816100d6565b60006020828403121561010d5761010d600080fd5b61011783836100ed565b9392505050565b610127816100c3565b82525050565b602081016100d0828461011e565b6105a18061014a6000396000f3fe60806040526004361061005a5760003560e01c80639623609d116100435780639623609d146100a5578063ad3cb1cc146100b8578063f2fde38b1461010e57600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b5061007461012e565b005b34801561008257600080fd5b506000546001600160a01b031660405161009c91906102fa565b60405180910390f35b6100746100b3366004610457565b610142565b3480156100c457600080fd5b506101016040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161009c9190610513565b34801561011a57600080fd5b50610074610129366004610524565b6101ca565b61013661022a565b6101406000610270565b565b61014a61022a565b6040517f4f1ef2860000000000000000000000000000000000000000000000000000000081526001600160a01b03841690634f1ef2869034906101939086908690600401610543565b6000604051808303818588803b1580156101ac57600080fd5b505af11580156101c0573d6000803e3d6000fd5b5050505050505050565b6101d261022a565b6001600160a01b03811661021e5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161021591906102fa565b60405180910390fd5b61022781610270565b50565b6000546001600160a01b0316331461014057336040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161021591906102fa565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b0382165b92915050565b6102f4816102d8565b82525050565b602081016102e582846102eb565b60006102e5826102d8565b61031c81610308565b811461022757600080fd5b80356102e581610313565b61031c816102d8565b80356102e581610332565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff8211171561039b5761039b610346565b6040525050565b60006103ad60405190565b90506103b98282610375565b919050565b600067ffffffffffffffff8211156103d8576103d8610346565b601f19601f83011660200192915050565b82818337506000910152565b6000610408610403846103be565b6103a2565b905082815283838301111561041f5761041f600080fd5b61042d8360208301846103e9565b9392505050565b600082601f83011261044857610448600080fd5b61042d838335602085016103f5565b60008060006060848603121561046f5761046f600080fd5b6104798585610327565b9250610488856020860161033b565b9150604084013567ffffffffffffffff8111156104a7576104a7600080fd5b6104b386828701610434565b9150509250925092565b60005b838110156104d85781810151838201526020016104c0565b50506000910152565b60006104eb825190565b8084526020840193506105028185602086016104bd565b601f01601f19169290920192915050565b6020808252810161042d81846104e1565b60006020828403121561053957610539600080fd5b61042d838361033b565b6040810161055182856102eb565b818103602083015261056381846104e1565b94935050505056fea264697066735822122096c3a562b6861bd964d97d99d95931f7343ac03c64bc04aeab6287f6e42e45eb64736f6c634300081c0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103bd64e14789a915ea657e42f2dbf0b973227708fa64b58766287637985d1ade69", } // SystemDeployerABI is the input ABI used to generate the binding from. diff --git a/contracts/generated/WrappedERC20/WrappedERC20.go b/contracts/generated/WrappedERC20/WrappedERC20.go index df17d005c7..73b461be08 100644 --- a/contracts/generated/WrappedERC20/WrappedERC20.go +++ b/contracts/generated/WrappedERC20/WrappedERC20.go @@ -32,7 +32,7 @@ var ( // WrappedERC20MetaData contains all meta data concerning the WrappedERC20 contract. var WrappedERC20MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"giver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"issueFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f317905534801561003657600080fd5b506040516114dc3803806114dc83398101604081905261005591610276565b81818181600361006583826103ce565b50600461007282826103ce565b50505050506100a77fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775336100af60201b60201c565b50505061048d565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff166101555760008381526007602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561010d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610159565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b038111828210171561019a5761019a61015f565b6040525050565b60006101ac60405190565b90506101b88282610175565b919050565b60006001600160401b038211156101d6576101d661015f565b601f19601f83011660200192915050565b60005b838110156102025781810151838201526020016101ea565b50506000910152565b600061021e610219846101bd565b6101a1565b905082815283838301111561023557610235600080fd5b6102438360208301846101e7565b9392505050565b600082601f83011261025e5761025e600080fd5b815161026e84826020860161020b565b949350505050565b6000806040838503121561028c5761028c600080fd5b82516001600160401b038111156102a5576102a5600080fd5b6102b18582860161024a565b602085015190935090506001600160401b038111156102d2576102d2600080fd5b6102de8582860161024a565b9150509250929050565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061031257607f821691505b602082108103610324576103246102e8565b50919050565b60006101596103368381565b90565b6103428361032a565b815460001960089490940293841b1916921b91909117905550565b600061036a818484610339565b505050565b8181101561038a5761038260008261035d565b60010161036f565b5050565b601f82111561036a576000818152602090206020601f850104810160208510156103b55750805b6103c76020601f86010483018261036f565b5050505050565b81516001600160401b038111156103e7576103e761015f565b6103f182546102fe565b6103fc82828561038e565b506020601f82116001811461043157600083156104195750848201515b600019600885021c19811660028502178555506103c7565b600084815260208120601f198516915b828110156104615787850151825560209485019460019092019101610441565b508482101561047e5783870151600019601f87166008021c191681555b50505050600202600101905550565b6110408061049c6000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806336568abe116100cd578063979005ad11610081578063a9059cbb11610066578063a9059cbb146102ce578063d547741f146102e1578063dd62ed3e146102f457600080fd5b8063979005ad146102b3578063a217fddf146102c657600080fd5b806375b238fc116100b257806375b238fc1461024b57806391d148541461027257806395d89b41146102ab57600080fd5b806336568abe1461022557806370a082311461023857600080fd5b80631dd319cb11610124578063248a9ca311610109578063248a9ca3146101e05780632f2ff15d14610203578063313ce5671461021657600080fd5b80631dd319cb146101b857806323b872dd146101cd57600080fd5b806301ffc9a71461015657806306fdde031461017f578063095ea7b31461019457806318160ddd146101a7575b600080fd5b610169610164366004610c49565b610307565b6040516101769190610c72565b60405180910390f35b6101876103a0565b6040516101769190610cd6565b6101696101a2366004610d1d565b610432565b6002545b6040516101769190610d5b565b6101cb6101c6366004610d1d565b61044a565b005b6101696101db366004610d69565b6104b4565b6101ab6101ee366004610db2565b60009081526007602052604090206001015490565b6101cb610211366004610dd1565b6104da565b60126040516101769190610e09565b6101cb610233366004610dd1565b610505565b6101ab610246366004610e17565b610551565b6101ab7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610169610280366004610dd1565b60009182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6101876105c7565b6101cb6102c1366004610d1d565b6105d6565b6101ab600081565b6101696102dc366004610d1d565b61060a565b6101cb6102ef366004610dd1565b610618565b6101ab610302366004610e36565b61063d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061039a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600380546103af90610e6c565b80601f01602080910402602001604051908101604052809291908181526020018280546103db90610e6c565b80156104285780601f106103fd57610100808354040283529160200191610428565b820191906000526020600020905b81548152906001019060200180831161040b57829003601f168201915b5050505050905090565b6000336104408185856106f8565b5060019392505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561047481610705565b8161047e84610551565b10156104a55760405162461bcd60e51b815260040161049c90610ecc565b60405180910390fd5b6104af8383610712565b505050565b6000336104c285828561074c565b6104cd8585856107b2565b60019150505b9392505050565b6000828152600760205260409020600101546104f581610705565b6104ff8383610811565b50505050565b6001600160a01b0381163314610547576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104af82826108bf565b60006001600160a01b0382163203610581576001600160a01b03821660009081526020819052604090205461039a565b6001600160a01b03821633036105af576001600160a01b03821660009081526020819052604090205461039a565b60405162461bcd60e51b815260040161049c90610f0e565b6060600480546103af90610e6c565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561060081610705565b6104af8383610946565b6000336104408185856107b2565b60008281526007602052604090206001015461063381610705565b6104ff83836108bf565b6000326001600160a01b038416148061065e5750326001600160a01b038316145b15610691576001600160a01b038084166000908152600160209081526040808320938616835292905220545b905061039a565b336001600160a01b03841614806106b05750336001600160a01b038316145b156106e0576001600160a01b0380841660009081526001602090815260408083209386168352929052205461068a565b60405162461bcd60e51b815260040161049c90610f1e565b6104af838383600161097c565b61070f8133610a81565b50565b6001600160a01b03821661073c576000604051634b637e8f60e11b815260040161049c9190610f88565b61074882600083610ae1565b5050565b6000610758848461063d565b905060001981146104ff57818110156107a3578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161049c93929190610f96565b6104ff8484848403600061097c565b6001600160a01b0383166107dc576000604051634b637e8f60e11b815260040161049c9190610f88565b6001600160a01b03821661080657600060405163ec442f0560e01b815260040161049c9190610f88565b6104af838383610ae1565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff166108b75760008381526007602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561086f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161039a565b50600061039a565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff16156108b75760008381526007602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161039a565b6001600160a01b03821661097057600060405163ec442f0560e01b815260040161049c9190610f88565b61074860008383610ae1565b6001600160a01b0384166109bf5760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161049c9190610f88565b6001600160a01b038316610a025760006040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161049c9190610f88565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156104ff57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a739190610d5b565b60405180910390a350505050565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff166107485780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161049c929190610fc6565b6001600160a01b038316610b0c578060026000828254610b019190610ff7565b90915550610b849050565b6001600160a01b03831660009081526020819052604090205481811015610b65578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161049c93929190610f96565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610ba057600280548290039055610bbf565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c029190610d5b565b60405180910390a3505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081165b811461070f57600080fd5b803561039a81610c0f565b600060208284031215610c5e57610c5e600080fd5b6104d38383610c3e565b8015155b82525050565b6020810161039a8284610c68565b60005b83811015610c9b578181015183820152602001610c83565b50506000910152565b6000610cae825190565b808452602084019350610cc5818560208601610c80565b601f01601f19169290920192915050565b602080825281016104d38184610ca4565b60006001600160a01b03821661039a565b610c3381610ce7565b803561039a81610cf8565b80610c33565b803561039a81610d0c565b60008060408385031215610d3357610d33600080fd5b610d3d8484610d01565b9150610d4c8460208501610d12565b90509250929050565b80610c6c565b6020810161039a8284610d55565b600080600060608486031215610d8157610d81600080fd5b610d8b8585610d01565b9250610d9a8560208601610d01565b9150610da98560408601610d12565b90509250925092565b600060208284031215610dc757610dc7600080fd5b6104d38383610d12565b60008060408385031215610de757610de7600080fd5b610df18484610d12565b9150610d4c8460208501610d01565b60ff8116610c6c565b6020810161039a8284610e00565b600060208284031215610e2c57610e2c600080fd5b6104d38383610d01565b60008060408385031215610e4c57610e4c600080fd5b610df18484610d01565b634e487b7160e01b600052602260045260246000fd5b600281046001821680610e8057607f821691505b602082108103610e9257610e92610e56565b50919050565b60158152602081017f496e73756666696369656e742062616c616e63652e0000000000000000000000815290505b60200190565b6020808252810161039a81610e98565b601f8152602081017f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e63650081529050610ec6565b6020808252810161039a81610edc565b6020808252810161039a81602181527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360208201527f6500000000000000000000000000000000000000000000000000000000000000604082015260600190565b610c6c81610ce7565b6020810161039a8284610f7f565b60608101610fa48286610f7f565b610fb16020830185610d55565b610fbe6040830184610d55565b949350505050565b60408101610fd48285610f7f565b6104d36020830184610d55565b634e487b7160e01b600052601160045260246000fd5b8082018082111561039a5761039a610fe156fea2646970667358221220c7199b3ba419978fd56f66d77e752344d9012ad608ca77ab3db04c58eb0ad63664736f6c634300081c0033", + Bin: "0x6080604052600580546001600160a01b03191673deb34a740eca1ec42c8b8204cbec0ba34fdd27f317905534801561003657600080fd5b506040516114dc3803806114dc83398101604081905261005591610276565b81818181600361006583826103ce565b50600461007282826103ce565b50505050506100a77fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775336100af60201b60201c565b50505061048d565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff166101555760008381526007602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561010d3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610159565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b038111828210171561019a5761019a61015f565b6040525050565b60006101ac60405190565b90506101b88282610175565b919050565b60006001600160401b038211156101d6576101d661015f565b601f19601f83011660200192915050565b60005b838110156102025781810151838201526020016101ea565b50506000910152565b600061021e610219846101bd565b6101a1565b905082815283838301111561023557610235600080fd5b6102438360208301846101e7565b9392505050565b600082601f83011261025e5761025e600080fd5b815161026e84826020860161020b565b949350505050565b6000806040838503121561028c5761028c600080fd5b82516001600160401b038111156102a5576102a5600080fd5b6102b18582860161024a565b602085015190935090506001600160401b038111156102d2576102d2600080fd5b6102de8582860161024a565b9150509250929050565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061031257607f821691505b602082108103610324576103246102e8565b50919050565b60006101596103368381565b90565b6103428361032a565b815460001960089490940293841b1916921b91909117905550565b600061036a818484610339565b505050565b8181101561038a5761038260008261035d565b60010161036f565b5050565b601f82111561036a576000818152602090206020601f850104810160208510156103b55750805b6103c76020601f86010483018261036f565b5050505050565b81516001600160401b038111156103e7576103e761015f565b6103f182546102fe565b6103fc82828561038e565b506020601f82116001811461043157600083156104195750848201515b600019600885021c19811660028502178555506103c7565b600084815260208120601f198516915b828110156104615787850151825560209485019460019092019101610441565b508482101561047e5783870151600019601f87166008021c191681555b50505050600202600101905550565b6110408061049c6000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806336568abe116100cd578063979005ad11610081578063a9059cbb11610066578063a9059cbb146102ce578063d547741f146102e1578063dd62ed3e146102f457600080fd5b8063979005ad146102b3578063a217fddf146102c657600080fd5b806375b238fc116100b257806375b238fc1461024b57806391d148541461027257806395d89b41146102ab57600080fd5b806336568abe1461022557806370a082311461023857600080fd5b80631dd319cb11610124578063248a9ca311610109578063248a9ca3146101e05780632f2ff15d14610203578063313ce5671461021657600080fd5b80631dd319cb146101b857806323b872dd146101cd57600080fd5b806301ffc9a71461015657806306fdde031461017f578063095ea7b31461019457806318160ddd146101a7575b600080fd5b610169610164366004610c49565b610307565b6040516101769190610c72565b60405180910390f35b6101876103a0565b6040516101769190610cd6565b6101696101a2366004610d1d565b610432565b6002545b6040516101769190610d5b565b6101cb6101c6366004610d1d565b61044a565b005b6101696101db366004610d69565b6104b4565b6101ab6101ee366004610db2565b60009081526007602052604090206001015490565b6101cb610211366004610dd1565b6104da565b60126040516101769190610e09565b6101cb610233366004610dd1565b610505565b6101ab610246366004610e17565b610551565b6101ab7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b610169610280366004610dd1565b60009182526007602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6101876105c7565b6101cb6102c1366004610d1d565b6105d6565b6101ab600081565b6101696102dc366004610d1d565b61060a565b6101cb6102ef366004610dd1565b610618565b6101ab610302366004610e36565b61063d565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061039a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600380546103af90610e6c565b80601f01602080910402602001604051908101604052809291908181526020018280546103db90610e6c565b80156104285780601f106103fd57610100808354040283529160200191610428565b820191906000526020600020905b81548152906001019060200180831161040b57829003601f168201915b5050505050905090565b6000336104408185856106f8565b5060019392505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561047481610705565b8161047e84610551565b10156104a55760405162461bcd60e51b815260040161049c90610ecc565b60405180910390fd5b6104af8383610712565b505050565b6000336104c285828561074c565b6104cd8585856107b2565b60019150505b9392505050565b6000828152600760205260409020600101546104f581610705565b6104ff8383610811565b50505050565b6001600160a01b0381163314610547576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104af82826108bf565b60006001600160a01b0382163203610581576001600160a01b03821660009081526020819052604090205461039a565b6001600160a01b03821633036105af576001600160a01b03821660009081526020819052604090205461039a565b60405162461bcd60e51b815260040161049c90610f0e565b6060600480546103af90610e6c565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561060081610705565b6104af8383610946565b6000336104408185856107b2565b60008281526007602052604090206001015461063381610705565b6104ff83836108bf565b6000326001600160a01b038416148061065e5750326001600160a01b038316145b15610691576001600160a01b038084166000908152600160209081526040808320938616835292905220545b905061039a565b336001600160a01b03841614806106b05750336001600160a01b038316145b156106e0576001600160a01b0380841660009081526001602090815260408083209386168352929052205461068a565b60405162461bcd60e51b815260040161049c90610f1e565b6104af838383600161097c565b61070f8133610a81565b50565b6001600160a01b03821661073c576000604051634b637e8f60e11b815260040161049c9190610f88565b61074882600083610ae1565b5050565b6000610758848461063d565b905060001981146104ff57818110156107a3578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161049c93929190610f96565b6104ff8484848403600061097c565b6001600160a01b0383166107dc576000604051634b637e8f60e11b815260040161049c9190610f88565b6001600160a01b03821661080657600060405163ec442f0560e01b815260040161049c9190610f88565b6104af838383610ae1565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff166108b75760008381526007602090815260408083206001600160a01b03861684529091529020805460ff1916600117905561086f3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161039a565b50600061039a565b60008281526007602090815260408083206001600160a01b038516845290915281205460ff16156108b75760008381526007602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161039a565b6001600160a01b03821661097057600060405163ec442f0560e01b815260040161049c9190610f88565b61074860008383610ae1565b6001600160a01b0384166109bf5760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161049c9190610f88565b6001600160a01b038316610a025760006040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161049c9190610f88565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156104ff57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a739190610d5b565b60405180910390a350505050565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff166107485780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161049c929190610fc6565b6001600160a01b038316610b0c578060026000828254610b019190610ff7565b90915550610b849050565b6001600160a01b03831660009081526020819052604090205481811015610b65578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161049c93929190610f96565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610ba057600280548290039055610bbf565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c029190610d5b565b60405180910390a3505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081165b811461070f57600080fd5b803561039a81610c0f565b600060208284031215610c5e57610c5e600080fd5b6104d38383610c3e565b8015155b82525050565b6020810161039a8284610c68565b60005b83811015610c9b578181015183820152602001610c83565b50506000910152565b6000610cae825190565b808452602084019350610cc5818560208601610c80565b601f01601f19169290920192915050565b602080825281016104d38184610ca4565b60006001600160a01b03821661039a565b610c3381610ce7565b803561039a81610cf8565b80610c33565b803561039a81610d0c565b60008060408385031215610d3357610d33600080fd5b610d3d8484610d01565b9150610d4c8460208501610d12565b90509250929050565b80610c6c565b6020810161039a8284610d55565b600080600060608486031215610d8157610d81600080fd5b610d8b8585610d01565b9250610d9a8560208601610d01565b9150610da98560408601610d12565b90509250925092565b600060208284031215610dc757610dc7600080fd5b6104d38383610d12565b60008060408385031215610de757610de7600080fd5b610df18484610d12565b9150610d4c8460208501610d01565b60ff8116610c6c565b6020810161039a8284610e00565b600060208284031215610e2c57610e2c600080fd5b6104d38383610d01565b60008060408385031215610e4c57610e4c600080fd5b610df18484610d01565b634e487b7160e01b600052602260045260246000fd5b600281046001821680610e8057607f821691505b602082108103610e9257610e92610e56565b50919050565b60158152602081017f496e73756666696369656e742062616c616e63652e0000000000000000000000815290505b60200190565b6020808252810161039a81610e98565b601f8152602081017f4e6f7420616c6c6f77656420746f2072656164207468652062616c616e63650081529050610ec6565b6020808252810161039a81610edc565b6020808252810161039a81602181527f4e6f7420616c6c6f77656420746f20726561642074686520616c6c6f77616e6360208201527f6500000000000000000000000000000000000000000000000000000000000000604082015260600190565b610c6c81610ce7565b6020810161039a8284610f7f565b60608101610fa48286610f7f565b610fb16020830185610d55565b610fbe6040830184610d55565b949350505050565b60408101610fd48285610f7f565b6104d36020830184610d55565b634e487b7160e01b600052601160045260246000fd5b8082018082111561039a5761039a610fe156fea264697066735822122036fe937a11594b4347e4151962e0b8b942fa2a563051f8b1f3e8d8082e9a0f4064736f6c634300081c0033", } // WrappedERC20ABI is the input ABI used to generate the binding from. diff --git a/contracts/src/bridge/L2/EthereumBridge.sol b/contracts/src/bridge/L2/EthereumBridge.sol index e2de05cc3f..a6445bc4a5 100644 --- a/contracts/src/bridge/L2/EthereumBridge.sol +++ b/contracts/src/bridge/L2/EthereumBridge.sol @@ -56,8 +56,17 @@ contract EthereumBridge is return address(wrappedTokens[wrappedToken]) != address(0x0); } + function erc20Fee() public view returns (uint256) { + return _messageBus().getPublishFee(); + } + + function valueTransferFee() public view returns (uint256) { + return _messageBus().getPublishFee(); + } + function sendNative(address receiver) external payable { require(msg.value > 0, "Nothing sent."); + require(msg.value >= _messageBus().getPublishFee(), "Insufficient funds to publish value transfer"); _messageBus().sendValueToL2{value: msg.value}(receiver, msg.value); } @@ -77,6 +86,8 @@ contract EthereumBridge is amount, receiver ); + + require(msg.value >= _messageBus().getPublishFee(), "Insufficient funds to publish message"); queueMessage(remoteBridgeAddress, data, uint32(Topics.TRANSFER), 0, 0, msg.value); } diff --git a/contracts/src/messaging/IMessageBus.sol b/contracts/src/messaging/IMessageBus.sol index c39fe45283..a9035c5c6a 100644 --- a/contracts/src/messaging/IMessageBus.sol +++ b/contracts/src/messaging/IMessageBus.sol @@ -72,4 +72,7 @@ interface IMessageBus { // This is a testnet function which allows the bridge owner to retrieve all funds from the message bus. function retrieveAllFunds(address receiver) external; + + // the fee needed to be paid in msg.value to publish the value transfer + function getPublishFee() external view returns (uint256); } diff --git a/contracts/src/messaging/MessageBus.sol b/contracts/src/messaging/MessageBus.sol index c9231e45b2..ff36bc7399 100644 --- a/contracts/src/messaging/MessageBus.sol +++ b/contracts/src/messaging/MessageBus.sol @@ -54,17 +54,17 @@ contract MessageBus is IMessageBus, Initializable, OwnableUpgradeable { ) external payable { require(msg.value > 0 && msg.value == amount, "Attempting to send value without providing Ether"); - uint256 amountToTransfer = msg.value; + uint256 amountToBridge = msg.value; if (address(fees) != address(0)) { - uint256 feesToTransfer = getValueTransferFee(); - require(msg.value >= feesToTransfer, "Insufficient funds to send value"); - amountToTransfer = msg.value - feesToTransfer; - (bool ok, ) = address(fees).call{value: feesToTransfer}(""); + uint256 fee = getPublishFee(); + require(msg.value >= fee, "Insufficient funds to send value"); + amountToBridge = msg.value - fee; + (bool ok, ) = address(fees).call{value: fee}(""); require(ok, "Failed to send fees to fees contract"); } uint64 sequence = incrementSequence(msg.sender); - emit ValueTransfer(msg.sender, receiver, amountToTransfer, sequence); + emit ValueTransfer(msg.sender, receiver, amountToBridge, sequence); } function receiveValueFromL2( @@ -75,19 +75,8 @@ contract MessageBus is IMessageBus, Initializable, OwnableUpgradeable { require(ok, "failed sending value"); } - function getFixedDataLength() internal pure returns (uint256) { - return 4 + // nonce (uint32) - 4 + // topic (uint32) - 1 + // consistencyLevel (uint8) - 8; // sequence (uint64) - } - - function getValueTransferFee() internal view returns (uint256) { - return fees.messageFee(32); //just a hash - } - - function getMessageFee(uint256 payloadLength) internal view returns (uint256) { - return fees.messageFee(payloadLength + getFixedDataLength()); + function getPublishFee() public view returns (uint256) { + return fees.messageFee(); } // This method is called from contracts to publish messages to the other linked message bus. @@ -105,8 +94,9 @@ contract MessageBus is IMessageBus, Initializable, OwnableUpgradeable { uint8 consistencyLevel ) external payable override returns (uint64 sequence) { if (address(fees) != address(0)) { // No fee required for L1 to L2 messages. - require(msg.value >= getMessageFee(payload.length), "Insufficient funds to publish message"); - (bool ok, ) = address(fees).call{value: msg.value}(""); + uint256 fee = getPublishFee(); + require(msg.value >= fee, "Insufficient funds to publish message"); + (bool ok, ) = address(fees).call{value: fee}(""); require(ok, "Failed to send fees to fees contract"); } diff --git a/contracts/src/system/Fees.sol b/contracts/src/system/Fees.sol index 1b842788bf..7bc45bc7bc 100644 --- a/contracts/src/system/Fees.sol +++ b/contracts/src/system/Fees.sol @@ -5,13 +5,13 @@ import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; interface IFees { - function messageFee(uint256 messageSize) external view returns (uint256); + function messageFee() external view returns (uint256); } // Contract that will contain fees for contracts that need to apply them -contract Fees is Initializable, OwnableUpgradeable { +contract Fees is Initializable, OwnableUpgradeable, IFees { - uint256 private _messageFeePerByte; + uint256 private _messageFee; // Constructor disables initializer; // Only owner functions will not be callable on implementation @@ -20,20 +20,20 @@ contract Fees is Initializable, OwnableUpgradeable { } // initialization function to be used by the proxy. - function initialize(uint256 initialMessageFeePerByte, address eoaOwner) public initializer { + function initialize(uint256 flatFee, address eoaOwner) public initializer { __Ownable_init(eoaOwner); - _messageFeePerByte = initialMessageFeePerByte; + _messageFee = flatFee; } // Helper function to calculate the fee for a message - function messageFee(uint256 messageSize) external view returns (uint256) { - return _messageFeePerByte * messageSize; + function messageFee() external view returns (uint256) { + return _messageFee; } // The EOA owner can set the message fee to ensure sequencer is not publishing // at a loss - function setMessageFee(uint256 newMessageFeePerByte) external onlyOwner{ - _messageFeePerByte = newMessageFeePerByte; + function setMessageFee(uint256 newFeeForMessage) external onlyOwner{ + _messageFee = newFeeForMessage; } // The EOA owner can collect the fees diff --git a/go/config/defaults/0-base-config.yaml b/go/config/defaults/0-base-config.yaml index 25a09da8ab..60373b59c9 100644 --- a/go/config/defaults/0-base-config.yaml +++ b/go/config/defaults/0-base-config.yaml @@ -29,7 +29,7 @@ network: bridge: 0x0 # L1 address of the Ten bridge contract sequencer: p2pAddress: 0x0 # address of the sequencer's p2p server - systemContractsUpgrader: 0x1 # L2 address of the EOA allowed to upgrade the system contract proxies + systemContractsUpgrader: 0x2 # L2 address of the EOA allowed to upgrade the system contract proxies crossChain: interval: 6s diff --git a/go/config/defaults/sim/1-env-sim.yaml b/go/config/defaults/sim/1-env-sim.yaml index a450246717..0422b3b853 100644 --- a/go/config/defaults/sim/1-env-sim.yaml +++ b/go/config/defaults/sim/1-env-sim.yaml @@ -10,5 +10,6 @@ enclave: log: level: 1 path: "" -sequencer: - systemContractsUpgrader: 0x5 \ No newline at end of file +network: + sequencer: + systemContractsUpgrader: 0x5 diff --git a/go/config/defaults/testnet-launcher/1-testnet-launcher.yaml b/go/config/defaults/testnet-launcher/1-testnet-launcher.yaml index 976d475161..81f419e1c1 100644 --- a/go/config/defaults/testnet-launcher/1-testnet-launcher.yaml +++ b/go/config/defaults/testnet-launcher/1-testnet-launcher.yaml @@ -6,6 +6,7 @@ network: minGasPrice: +1 sequencer: p2pAddress: sequencer-host:15000 + systemContractsUpgrader: 0xA58C60cc047592DE97BF1E8d2f225Fc5D959De77 host: debug: enableDebugNamespace: true @@ -20,5 +21,3 @@ enclave: enableDebugNamespace: true log: level: 4 -sequencer: - systemContractsUpgrader: 0xDEe530E22045939e6f6a0A593F829e35A140D3F1 \ No newline at end of file diff --git a/go/enclave/enclave_rpc_service.go b/go/enclave/enclave_rpc_service.go index 9152320741..e1eb55a14b 100644 --- a/go/enclave/enclave_rpc_service.go +++ b/go/enclave/enclave_rpc_service.go @@ -133,16 +133,15 @@ func (e *enclaveRPCService) EnclavePublicConfig(context.Context) (*common.Enclav if analyzerAddress == nil { analyzerAddress = &gethcommon.Address{} } - publicCallbacksAddress := e.scb.PublicCallbackHandler() - if publicCallbacksAddress == nil { - publicCallbacksAddress = &gethcommon.Address{} + + publicContractsMap := make(map[string]gethcommon.Address) + for name, address := range e.scb.PublicSystemContracts() { + publicContractsMap[name] = *address } return &common.EnclavePublicConfig{ L2MessageBusAddress: address, TransactionPostProcessorAddress: *analyzerAddress, - PublicSystemContracts: map[string]gethcommon.Address{ - "PublicCallbacks": *publicCallbacksAddress, - }, + PublicSystemContracts: publicContractsMap, }, nil } diff --git a/go/enclave/main/enclave.json b/go/enclave/main/enclave.json index 9d038e32f2..789803b2a5 100644 --- a/go/enclave/main/enclave.json +++ b/go/enclave/main/enclave.json @@ -52,6 +52,7 @@ { "fromHost": true, "name": "NETWORK_ROLLUP_MAXINTERVAL" }, { "fromHost": true, "name": "NETWORK_ROLLUP_MAXSIZE" }, { "fromHost": true, "name": "NETWORK_SEQUENCER_P2PADDRESS" }, + { "fromHost": true, "name": "NETWORK_SEQUENCER_SYSTEMCONTRACTSUPGRADER" }, { "fromHost": true, "name": "NODE_HOSTADDRESS" }, { "fromHost": true, "name": "NODE_ID" }, { "fromHost": true, "name": "NODE_ISGENESIS" }, diff --git a/go/enclave/system/hooks.go b/go/enclave/system/hooks.go index dbb6e0eae3..79e363963a 100644 --- a/go/enclave/system/hooks.go +++ b/go/enclave/system/hooks.go @@ -33,7 +33,7 @@ type SystemContractCallbacks interface { PublicCallbackHandler() *gethcommon.Address TransactionPostProcessor() *gethcommon.Address SystemContractsUpgrader() *gethcommon.Address - + PublicSystemContracts() map[string]*gethcommon.Address // Initialization Initialize(batch *core.Batch, receipts types.Receipt, msgBusManager SystemContractsInitializable) error Load() error @@ -81,6 +81,10 @@ func (s *systemContractCallbacks) PublicCallbackHandler() *gethcommon.Address { return s.systemAddresses["PublicCallbacks"] } +func (s *systemContractCallbacks) PublicSystemContracts() map[string]*gethcommon.Address { + return s.systemAddresses +} + func (s *systemContractCallbacks) Load() error { s.logger.Info("Load: Initializing system contracts") diff --git a/go/node/cmd/cli.go b/go/node/cmd/cli.go index 11a34dedad..b8e206b8ac 100644 --- a/go/node/cmd/cli.go +++ b/go/node/cmd/cli.go @@ -35,6 +35,7 @@ type NodeConfigCLI struct { privateKey string hostID string sequencerP2PAddr string + sequencerUpgraderAddr string managementContractAddr string messageBusContractAddr string l1Start string @@ -92,7 +93,7 @@ func ParseConfigCLI() *NodeConfigCLI { postgresDBHost := flag.String(postgresDBHostFlag, "dd", flagUsageMap[postgresDBHostFlag]) l1BeaconUrl := flag.String(l1BeaconUrlFlag, "eth2network:126000", flagUsageMap[l1BeaconUrlFlag]) l1BlobArchiveUrl := flag.String(l1BlobArchiveUrlFlag, "", flagUsageMap[l1BlobArchiveUrlFlag]) - + systemContractsUpgrader := flag.String(systemContractsUpgraderFlag, "", flagUsageMap[systemContractsUpgraderFlag]) flag.Parse() cfg.nodeName = *nodeName cfg.nodeType = *nodeType @@ -126,6 +127,7 @@ func ParseConfigCLI() *NodeConfigCLI { cfg.postgresDBHost = *postgresDBHost cfg.l1BeaconUrl = *l1BeaconUrl cfg.l1BlobArchiveUrl = *l1BlobArchiveUrl + cfg.sequencerUpgraderAddr = *systemContractsUpgrader cfg.nodeAction = flag.Arg(0) if !validateNodeAction(cfg.nodeAction) { @@ -185,6 +187,7 @@ func NodeCLIConfigToTenConfig(cliCfg *NodeConfigCLI) *config.TenConfig { os.Exit(1) } tenCfg.Network.Sequencer.P2PAddress = cliCfg.sequencerP2PAddr + tenCfg.Network.Sequencer.SystemContractsUpgrader = gethcommon.HexToAddress(cliCfg.sequencerUpgraderAddr) tenCfg.Node.ID = gethcommon.HexToAddress(cliCfg.hostID) tenCfg.Node.Name = cliCfg.nodeName diff --git a/go/node/cmd/cli_flags.go b/go/node/cmd/cli_flags.go index a890acf9b3..eff07fdc9f 100644 --- a/go/node/cmd/cli_flags.go +++ b/go/node/cmd/cli_flags.go @@ -34,6 +34,7 @@ const ( postgresDBHostFlag = "postgres_db_host" l1BeaconUrlFlag = "l1_beacon_url" l1BlobArchiveUrlFlag = "l1_blob_archive_url" + systemContractsUpgraderFlag = "system_contracts_upgrader" ) // Returns a map of the flag usages. @@ -72,5 +73,6 @@ func getFlagUsageMap() map[string]string { postgresDBHostFlag: "Host connection details for Postgres DB", l1BeaconUrlFlag: "Url for the beacon chain API", l1BlobArchiveUrlFlag: "Url for the blob archive endpoint", + systemContractsUpgraderFlag: "Address of the system contracts upgrader", } } diff --git a/integration/simulation/devnetwork/node.go b/integration/simulation/devnetwork/node.go index 6acb4ce4ac..d4176335d4 100644 --- a/integration/simulation/devnetwork/node.go +++ b/integration/simulation/devnetwork/node.go @@ -222,7 +222,7 @@ func (n *InMemNodeOperator) createEnclaveContainer(idx int) *enclavecontainer.En GasLocalExecutionCapFlag: defaultCfg.GasLocalExecutionCapFlag, GasPaymentAddress: defaultCfg.GasPaymentAddress, RPCTimeout: 5 * time.Second, - SystemContractOwner: gethcommon.HexToAddress("0xDEe530E22045939e6f6a0A593F829e35A140D3F1"), + SystemContractOwner: gethcommon.HexToAddress("0xA58C60cc047592DE97BF1E8d2f225Fc5D959De77"), } return enclavecontainer.NewEnclaveContainerWithLogger(enclaveConfig, enclaveLogger) } diff --git a/tools/walletextension/rpcapi/net_api.go b/tools/walletextension/rpcapi/net_api.go index 1b38a866b3..a99c016501 100644 --- a/tools/walletextension/rpcapi/net_api.go +++ b/tools/walletextension/rpcapi/net_api.go @@ -25,6 +25,7 @@ type ConfigResponseJson struct { MessageBusAddress string L2MessageBusAddress string TransactionPostProcessorAddress string + PublicSystemContracts map[string]string } func (api *NetAPI) Config(ctx context.Context) (*ConfigResponseJson, error) {