diff --git a/README.md b/README.md index d069a0ab..9d3efc5b 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ MiniEVM is an optimistic rollup consumer chain powered by EVM, designed to simpl ## Prerequisites - Go v1.22.7+ +- (optional) [solc-select](https://github.com/crytic/solc-select) v1.0.4+ (used in contractsgen.sh) ## Getting Started diff --git a/scripts/contractsgen.sh b/scripts/contractsgen.sh index 8e1a6365..c8b06f8c 100644 --- a/scripts/contractsgen.sh +++ b/scripts/contractsgen.sh @@ -1,5 +1,11 @@ +#!/bin/bash +set -e BUILD_DIR=build CONTRACTS_DIR=x/evm/contracts +VERSION="0.8.25" + +echo "If you don't have solc-select installed, please install it first from https://github.com/crytic/solc-select?tab=readme-ov-file#quickstart" +solc-select use $VERSION --always-install for CONTRACT_HOME in $CONTRACTS_DIR/*; do if [ -d "$CONTRACT_HOME" ]; then PKG_NAME=$(basename $CONTRACT_HOME) @@ -8,7 +14,6 @@ for CONTRACT_HOME in $CONTRACTS_DIR/*; do echo $CONTRACT_PATH CONTRACT_NAME=$(basename $CONTRACT_PATH .sol) echo $CONTRACT_HOME $PKG_NAME $CONTRACT_PATH $CONTRACT_NAME - solc $CONTRACT_PATH --bin --abi -o $BUILD_DIR --overwrite abigen --pkg $PKG_NAME \ --bin=$BUILD_DIR/$CONTRACT_NAME.bin \ diff --git a/x/evm/contracts/counter/Counter.go b/x/evm/contracts/counter/Counter.go index ad5170f2..ece62d81 100644 --- a/x/evm/contracts/counter/Counter.go +++ b/x/evm/contracts/counter/Counter.go @@ -32,7 +32,7 @@ var ( // CounterMetaData contains all meta data concerning the Counter contract. var CounterMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"reverted\",\"type\":\"bool\"}],\"name\":\"execute_reverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldCount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newCount\",\"type\":\"uint256\"}],\"name\":\"increased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"n\",\"type\":\"uint64\"}],\"name\":\"recursive_called\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"count\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"exec_msg\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"try_catch\",\"type\":\"bool\"}],\"name\":\"execute_cosmos\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"n\",\"type\":\"uint64\"}],\"name\":\"get_blockhash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"callback_id\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"ibc_ack\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"callback_id\",\"type\":\"uint64\"}],\"name\":\"ibc_timeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"increase\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"num\",\"type\":\"uint64\"}],\"name\":\"increase_for_fuzz\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"path\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"req\",\"type\":\"string\"}],\"name\":\"query_cosmos\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"result\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"n\",\"type\":\"uint64\"}],\"name\":\"recursive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040526117c5806100115f395ff3fe608060405260043610610085575f3560e01c806331a503f01161005857806331a503f01461012b5780636193689514610153578063ac7fde5f1461017b578063cad23554146101b7578063e8927fbc146101f357610085565b806306661abd146100895780630d4f1f9d146100b357806324c68fce146100db5780632607baf814610103575b5f80fd5b348015610094575f80fd5b5061009d6101fd565b6040516100aa9190610c7c565b60405180910390f35b3480156100be575f80fd5b506100d960048036038101906100d49190610d18565b610202565b005b3480156100e6575f80fd5b5061010160048036038101906100fc9190610e92565b610249565b005b34801561010e575f80fd5b5061012960048036038101906101249190610eec565b6103c3565b005b348015610136575f80fd5b50610151600480360381019061014c9190610eec565b6103f6565b005b34801561015e575f80fd5b5061017960048036038101906101749190610eec565b61041a565b005b348015610186575f80fd5b506101a1600480360381019061019c9190610eec565b61056d565b6040516101ae9190610f2f565b60405180910390f35b3480156101c2575f80fd5b506101dd60048036038101906101d89190610f48565b610581565b6040516101ea919061101e565b60405180910390f35b6101fb61060a565b005b5f5481565b801561022e578167ffffffffffffffff165f80828254610222919061106b565b92505081905550610245565b5f8081548092919061023f9061109e565b91905055505b5050565b80156103435760f173ffffffffffffffffffffffffffffffffffffffff1663d46f64e6836040518263ffffffff1660e01b8152600401610289919061101e565b6020604051808303815f875af19250505080156102c457506040513d601f19601f820116820180604052508101906102c191906110f9565b60015b610305577f1a0d1eca1924bf9fc21c4b3f8b97d45c8fad7f5dbde70453a436a095844b3b6a60016040516102f89190611133565b60405180910390a161033e565b507f1a0d1eca1924bf9fc21c4b3f8b97d45c8fad7f5dbde70453a436a095844b3b6a5f6040516103359190611133565b60405180910390a15b6103bf565b60f173ffffffffffffffffffffffffffffffffffffffff1663d46f64e6836040518263ffffffff1660e01b815260040161037d919061101e565b6020604051808303815f875af1158015610399573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103bd91906110f9565b505b5050565b5f8167ffffffffffffffff1603156103f3576103dd61060a565b6103f26001826103ed919061114c565b6103c3565b5b50565b8067ffffffffffffffff165f80828254610410919061106b565b9250508190555050565b7f4475bbd12ef452e28d39c4cb77494d85136c2d89ca1354b52188d4aaa8f4ba51816040516104499190611196565b60405180910390a15f8167ffffffffffffffff16031561056a5760f173ffffffffffffffffffffffffffffffffffffffff1663d46f64e661048983610669565b6040518263ffffffff1660e01b81526004016104a5919061101e565b6020604051808303815f875af11580156104c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e591906110f9565b5060f173ffffffffffffffffffffffffffffffffffffffff1663d46f64e661050c83610669565b6040518263ffffffff1660e01b8152600401610528919061101e565b6020604051808303815f875af1158015610544573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056891906110f9565b505b50565b5f8167ffffffffffffffff16409050919050565b606060f173ffffffffffffffffffffffffffffffffffffffff1663cad2355484846040518363ffffffff1660e01b81526004016105bf9291906111af565b5f604051808303815f875af11580156105da573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906106029190611252565b905092915050565b5f8081548092919061061b9061109e565b91905055507f61996fe196f72cb598c483e896a1221263a28bb630480aa89495f737d4a8e3df60015f5461064f9190611299565b5f5460405161065f9291906112cc565b60405180910390a1565b606060f173ffffffffffffffffffffffffffffffffffffffff16636af32a55306040518263ffffffff1660e01b81526004016106a59190611332565b5f604051808303815f875af11580156106c0573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906106e89190611252565b6106f130610775565b61074d636193689560e01b600186610709919061114c565b6040516020016107199190611196565b6040516020818303038152906040526040516020016107399291906113da565b6040516020818303038152906040526107a2565b60405160200161075f93929190611667565b6040516020818303038152906040529050919050565b606061079b8273ffffffffffffffffffffffffffffffffffffffff16601460ff16610a26565b9050919050565b60605f60028084516107b491906116fa565b6107be919061106b565b67ffffffffffffffff8111156107d7576107d6610d6e565b5b6040519080825280601f01601f1916602001820160405280156108095781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106108405761083f61173b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106108a3576108a261173b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610a1c575f8482815181106108f0576108ef61173b565b5b602001015160f81c60f81b60f81c90507f303132333435363738396162636465660000000000000000000000000000000060048260ff16901c60ff166010811061093d5761093c61173b565b5b1a60f81b83600280850201815181106109595761095861173b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f3031323334353637383961626364656600000000000000000000000000000000600f821660ff16601081106109c0576109bf61173b565b5b1a60f81b8360026001600286020101815181106109e0576109df61173b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505080806001019150506108d3565b5080915050919050565b60605f8390505f6002846002610a3c91906116fa565b610a46919061106b565b67ffffffffffffffff811115610a5f57610a5e610d6e565b5b6040519080825280601f01601f191660200182016040528015610a915781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f81518110610ac857610ac761173b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610b2b57610b2a61173b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6001856002610b6991906116fa565b610b73919061106b565b90505b6001811115610c12577f3031323334353637383961626364656600000000000000000000000000000000600f841660108110610bb557610bb461173b565b5b1a60f81b828281518110610bcc57610bcb61173b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600483901c925080610c0b90611768565b9050610b76565b505f8214610c595784846040517fe22e27eb000000000000000000000000000000000000000000000000000000008152600401610c509291906112cc565b60405180910390fd5b809250505092915050565b5f819050919050565b610c7681610c64565b82525050565b5f602082019050610c8f5f830184610c6d565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f67ffffffffffffffff82169050919050565b610cc281610ca6565b8114610ccc575f80fd5b50565b5f81359050610cdd81610cb9565b92915050565b5f8115159050919050565b610cf781610ce3565b8114610d01575f80fd5b50565b5f81359050610d1281610cee565b92915050565b5f8060408385031215610d2e57610d2d610c9e565b5b5f610d3b85828601610ccf565b9250506020610d4c85828601610d04565b9150509250929050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610da482610d5e565b810181811067ffffffffffffffff82111715610dc357610dc2610d6e565b5b80604052505050565b5f610dd5610c95565b9050610de18282610d9b565b919050565b5f67ffffffffffffffff821115610e0057610dff610d6e565b5b610e0982610d5e565b9050602081019050919050565b828183375f83830152505050565b5f610e36610e3184610de6565b610dcc565b905082815260208101848484011115610e5257610e51610d5a565b5b610e5d848285610e16565b509392505050565b5f82601f830112610e7957610e78610d56565b5b8135610e89848260208601610e24565b91505092915050565b5f8060408385031215610ea857610ea7610c9e565b5b5f83013567ffffffffffffffff811115610ec557610ec4610ca2565b5b610ed185828601610e65565b9250506020610ee285828601610d04565b9150509250929050565b5f60208284031215610f0157610f00610c9e565b5b5f610f0e84828501610ccf565b91505092915050565b5f819050919050565b610f2981610f17565b82525050565b5f602082019050610f425f830184610f20565b92915050565b5f8060408385031215610f5e57610f5d610c9e565b5b5f83013567ffffffffffffffff811115610f7b57610f7a610ca2565b5b610f8785828601610e65565b925050602083013567ffffffffffffffff811115610fa857610fa7610ca2565b5b610fb485828601610e65565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f610ff082610fbe565b610ffa8185610fc8565b935061100a818560208601610fd8565b61101381610d5e565b840191505092915050565b5f6020820190508181035f8301526110368184610fe6565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61107582610c64565b915061108083610c64565b92508282019050808211156110985761109761103e565b5b92915050565b5f6110a882610c64565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036110da576110d961103e565b5b600182019050919050565b5f815190506110f381610cee565b92915050565b5f6020828403121561110e5761110d610c9e565b5b5f61111b848285016110e5565b91505092915050565b61112d81610ce3565b82525050565b5f6020820190506111465f830184611124565b92915050565b5f61115682610ca6565b915061116183610ca6565b9250828203905067ffffffffffffffff8111156111815761118061103e565b5b92915050565b61119081610ca6565b82525050565b5f6020820190506111a95f830184611187565b92915050565b5f6040820190508181035f8301526111c78185610fe6565b905081810360208301526111db8184610fe6565b90509392505050565b5f6111f66111f184610de6565b610dcc565b90508281526020810184848401111561121257611211610d5a565b5b61121d848285610fd8565b509392505050565b5f82601f83011261123957611238610d56565b5b81516112498482602086016111e4565b91505092915050565b5f6020828403121561126757611266610c9e565b5b5f82015167ffffffffffffffff81111561128457611283610ca2565b5b61129084828501611225565b91505092915050565b5f6112a382610c64565b91506112ae83610c64565b92508282039050818111156112c6576112c561103e565b5b92915050565b5f6040820190506112df5f830185610c6d565b6112ec6020830184610c6d565b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61131c826112f3565b9050919050565b61132c81611312565b82525050565b5f6020820190506113455f830184611323565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b5f819050919050565b61139061138b8261134b565b611376565b82525050565b5f81519050919050565b5f81905092915050565b5f6113b482611396565b6113be81856113a0565b93506113ce818560208601610fd8565b80840191505092915050565b5f6113e5828561137f565b6004820191506113f582846113aa565b91508190509392505050565b5f81905092915050565b7f7b224074797065223a20222f6d696e6965766d2e65766d2e76312e4d736743615f8201527f6c6c222c00000000000000000000000000000000000000000000000000000000602082015250565b5f611465602483611401565b91506114708261140b565b602482019050919050565b7f2273656e646572223a20220000000000000000000000000000000000000000005f82015250565b5f6114af600b83611401565b91506114ba8261147b565b600b82019050919050565b5f6114cf82610fbe565b6114d98185611401565b93506114e9818560208601610fd8565b80840191505092915050565b7f222c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f611529600283611401565b9150611534826114f5565b600282019050919050565b7f22636f6e74726163745f61646472223a202200000000000000000000000000005f82015250565b5f611573601283611401565b915061157e8261153f565b601282019050919050565b7f22696e707574223a2022000000000000000000000000000000000000000000005f82015250565b5f6115bd600a83611401565b91506115c882611589565b600a82019050919050565b7f2276616c7565223a202230222c000000000000000000000000000000000000005f82015250565b5f611607600d83611401565b9150611612826115d3565b600d82019050919050565b7f226163636573735f6c697374223a205b5d7d00000000000000000000000000005f82015250565b5f611651601283611401565b915061165c8261161d565b601282019050919050565b5f61167182611459565b915061167c826114a3565b915061168882866114c5565b91506116938261151d565b915061169e82611567565b91506116aa82856114c5565b91506116b58261151d565b91506116c0826115b1565b91506116cc82846114c5565b91506116d78261151d565b91506116e2826115fb565b91506116ed82611645565b9150819050949350505050565b5f61170482610c64565b915061170f83610c64565b925082820261171d81610c64565b915082820484148315176117345761173361103e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61177282610c64565b91505f82036117845761178361103e565b5b60018203905091905056fea26469706673582212203dcfd3e72d386299f9cc3c1e16d724be03a75bf28d1b18677fe42aefd8b2a5b864736f6c63430008190033", + Bin: "0x60806040526117c5806100115f395ff3fe608060405260043610610085575f3560e01c806331a503f01161005857806331a503f01461012b5780636193689514610153578063ac7fde5f1461017b578063cad23554146101b7578063e8927fbc146101f357610085565b806306661abd146100895780630d4f1f9d146100b357806324c68fce146100db5780632607baf814610103575b5f80fd5b348015610094575f80fd5b5061009d6101fd565b6040516100aa9190610c7c565b60405180910390f35b3480156100be575f80fd5b506100d960048036038101906100d49190610d18565b610202565b005b3480156100e6575f80fd5b5061010160048036038101906100fc9190610e92565b610249565b005b34801561010e575f80fd5b5061012960048036038101906101249190610eec565b6103c3565b005b348015610136575f80fd5b50610151600480360381019061014c9190610eec565b6103f6565b005b34801561015e575f80fd5b5061017960048036038101906101749190610eec565b61041a565b005b348015610186575f80fd5b506101a1600480360381019061019c9190610eec565b61056d565b6040516101ae9190610f2f565b60405180910390f35b3480156101c2575f80fd5b506101dd60048036038101906101d89190610f48565b610581565b6040516101ea919061101e565b60405180910390f35b6101fb61060a565b005b5f5481565b801561022e578167ffffffffffffffff165f80828254610222919061106b565b92505081905550610245565b5f8081548092919061023f9061109e565b91905055505b5050565b80156103435760f173ffffffffffffffffffffffffffffffffffffffff1663d46f64e6836040518263ffffffff1660e01b8152600401610289919061101e565b6020604051808303815f875af19250505080156102c457506040513d601f19601f820116820180604052508101906102c191906110f9565b60015b610305577f1a0d1eca1924bf9fc21c4b3f8b97d45c8fad7f5dbde70453a436a095844b3b6a60016040516102f89190611133565b60405180910390a161033e565b507f1a0d1eca1924bf9fc21c4b3f8b97d45c8fad7f5dbde70453a436a095844b3b6a5f6040516103359190611133565b60405180910390a15b6103bf565b60f173ffffffffffffffffffffffffffffffffffffffff1663d46f64e6836040518263ffffffff1660e01b815260040161037d919061101e565b6020604051808303815f875af1158015610399573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103bd91906110f9565b505b5050565b5f8167ffffffffffffffff1603156103f3576103dd61060a565b6103f26001826103ed919061114c565b6103c3565b5b50565b8067ffffffffffffffff165f80828254610410919061106b565b9250508190555050565b7f4475bbd12ef452e28d39c4cb77494d85136c2d89ca1354b52188d4aaa8f4ba51816040516104499190611196565b60405180910390a15f8167ffffffffffffffff16031561056a5760f173ffffffffffffffffffffffffffffffffffffffff1663d46f64e661048983610669565b6040518263ffffffff1660e01b81526004016104a5919061101e565b6020604051808303815f875af11580156104c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e591906110f9565b5060f173ffffffffffffffffffffffffffffffffffffffff1663d46f64e661050c83610669565b6040518263ffffffff1660e01b8152600401610528919061101e565b6020604051808303815f875af1158015610544573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056891906110f9565b505b50565b5f8167ffffffffffffffff16409050919050565b606060f173ffffffffffffffffffffffffffffffffffffffff1663cad2355484846040518363ffffffff1660e01b81526004016105bf9291906111af565b5f604051808303815f875af11580156105da573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906106029190611252565b905092915050565b5f8081548092919061061b9061109e565b91905055507f61996fe196f72cb598c483e896a1221263a28bb630480aa89495f737d4a8e3df60015f5461064f9190611299565b5f5460405161065f9291906112cc565b60405180910390a1565b606060f173ffffffffffffffffffffffffffffffffffffffff16636af32a55306040518263ffffffff1660e01b81526004016106a59190611332565b5f604051808303815f875af11580156106c0573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906106e89190611252565b6106f130610775565b61074d636193689560e01b600186610709919061114c565b6040516020016107199190611196565b6040516020818303038152906040526040516020016107399291906113da565b6040516020818303038152906040526107a2565b60405160200161075f93929190611667565b6040516020818303038152906040529050919050565b606061079b8273ffffffffffffffffffffffffffffffffffffffff16601460ff16610a26565b9050919050565b60605f60028084516107b491906116fa565b6107be919061106b565b67ffffffffffffffff8111156107d7576107d6610d6e565b5b6040519080825280601f01601f1916602001820160405280156108095781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106108405761083f61173b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106108a3576108a261173b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f5b8351811015610a1c575f8482815181106108f0576108ef61173b565b5b602001015160f81c60f81b60f81c90507f303132333435363738396162636465660000000000000000000000000000000060048260ff16901c60ff166010811061093d5761093c61173b565b5b1a60f81b83600280850201815181106109595761095861173b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f3031323334353637383961626364656600000000000000000000000000000000600f821660ff16601081106109c0576109bf61173b565b5b1a60f81b8360026001600286020101815181106109e0576109df61173b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505080806001019150506108d3565b5080915050919050565b60605f8390505f6002846002610a3c91906116fa565b610a46919061106b565b67ffffffffffffffff811115610a5f57610a5e610d6e565b5b6040519080825280601f01601f191660200182016040528015610a915781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f81518110610ac857610ac761173b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110610b2b57610b2a61173b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6001856002610b6991906116fa565b610b73919061106b565b90505b6001811115610c12577f3031323334353637383961626364656600000000000000000000000000000000600f841660108110610bb557610bb461173b565b5b1a60f81b828281518110610bcc57610bcb61173b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600483901c925080610c0b90611768565b9050610b76565b505f8214610c595784846040517fe22e27eb000000000000000000000000000000000000000000000000000000008152600401610c509291906112cc565b60405180910390fd5b809250505092915050565b5f819050919050565b610c7681610c64565b82525050565b5f602082019050610c8f5f830184610c6d565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f67ffffffffffffffff82169050919050565b610cc281610ca6565b8114610ccc575f80fd5b50565b5f81359050610cdd81610cb9565b92915050565b5f8115159050919050565b610cf781610ce3565b8114610d01575f80fd5b50565b5f81359050610d1281610cee565b92915050565b5f8060408385031215610d2e57610d2d610c9e565b5b5f610d3b85828601610ccf565b9250506020610d4c85828601610d04565b9150509250929050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610da482610d5e565b810181811067ffffffffffffffff82111715610dc357610dc2610d6e565b5b80604052505050565b5f610dd5610c95565b9050610de18282610d9b565b919050565b5f67ffffffffffffffff821115610e0057610dff610d6e565b5b610e0982610d5e565b9050602081019050919050565b828183375f83830152505050565b5f610e36610e3184610de6565b610dcc565b905082815260208101848484011115610e5257610e51610d5a565b5b610e5d848285610e16565b509392505050565b5f82601f830112610e7957610e78610d56565b5b8135610e89848260208601610e24565b91505092915050565b5f8060408385031215610ea857610ea7610c9e565b5b5f83013567ffffffffffffffff811115610ec557610ec4610ca2565b5b610ed185828601610e65565b9250506020610ee285828601610d04565b9150509250929050565b5f60208284031215610f0157610f00610c9e565b5b5f610f0e84828501610ccf565b91505092915050565b5f819050919050565b610f2981610f17565b82525050565b5f602082019050610f425f830184610f20565b92915050565b5f8060408385031215610f5e57610f5d610c9e565b5b5f83013567ffffffffffffffff811115610f7b57610f7a610ca2565b5b610f8785828601610e65565b925050602083013567ffffffffffffffff811115610fa857610fa7610ca2565b5b610fb485828601610e65565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f610ff082610fbe565b610ffa8185610fc8565b935061100a818560208601610fd8565b61101381610d5e565b840191505092915050565b5f6020820190508181035f8301526110368184610fe6565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61107582610c64565b915061108083610c64565b92508282019050808211156110985761109761103e565b5b92915050565b5f6110a882610c64565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036110da576110d961103e565b5b600182019050919050565b5f815190506110f381610cee565b92915050565b5f6020828403121561110e5761110d610c9e565b5b5f61111b848285016110e5565b91505092915050565b61112d81610ce3565b82525050565b5f6020820190506111465f830184611124565b92915050565b5f61115682610ca6565b915061116183610ca6565b9250828203905067ffffffffffffffff8111156111815761118061103e565b5b92915050565b61119081610ca6565b82525050565b5f6020820190506111a95f830184611187565b92915050565b5f6040820190508181035f8301526111c78185610fe6565b905081810360208301526111db8184610fe6565b90509392505050565b5f6111f66111f184610de6565b610dcc565b90508281526020810184848401111561121257611211610d5a565b5b61121d848285610fd8565b509392505050565b5f82601f83011261123957611238610d56565b5b81516112498482602086016111e4565b91505092915050565b5f6020828403121561126757611266610c9e565b5b5f82015167ffffffffffffffff81111561128457611283610ca2565b5b61129084828501611225565b91505092915050565b5f6112a382610c64565b91506112ae83610c64565b92508282039050818111156112c6576112c561103e565b5b92915050565b5f6040820190506112df5f830185610c6d565b6112ec6020830184610c6d565b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61131c826112f3565b9050919050565b61132c81611312565b82525050565b5f6020820190506113455f830184611323565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b5f819050919050565b61139061138b8261134b565b611376565b82525050565b5f81519050919050565b5f81905092915050565b5f6113b482611396565b6113be81856113a0565b93506113ce818560208601610fd8565b80840191505092915050565b5f6113e5828561137f565b6004820191506113f582846113aa565b91508190509392505050565b5f81905092915050565b7f7b224074797065223a20222f6d696e6965766d2e65766d2e76312e4d736743615f8201527f6c6c222c00000000000000000000000000000000000000000000000000000000602082015250565b5f611465602483611401565b91506114708261140b565b602482019050919050565b7f2273656e646572223a20220000000000000000000000000000000000000000005f82015250565b5f6114af600b83611401565b91506114ba8261147b565b600b82019050919050565b5f6114cf82610fbe565b6114d98185611401565b93506114e9818560208601610fd8565b80840191505092915050565b7f222c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f611529600283611401565b9150611534826114f5565b600282019050919050565b7f22636f6e74726163745f61646472223a202200000000000000000000000000005f82015250565b5f611573601283611401565b915061157e8261153f565b601282019050919050565b7f22696e707574223a2022000000000000000000000000000000000000000000005f82015250565b5f6115bd600a83611401565b91506115c882611589565b600a82019050919050565b7f2276616c7565223a202230222c000000000000000000000000000000000000005f82015250565b5f611607600d83611401565b9150611612826115d3565b600d82019050919050565b7f226163636573735f6c697374223a205b5d7d00000000000000000000000000005f82015250565b5f611651601283611401565b915061165c8261161d565b601282019050919050565b5f61167182611459565b915061167c826114a3565b915061168882866114c5565b91506116938261151d565b915061169e82611567565b91506116aa82856114c5565b91506116b58261151d565b91506116c0826115b1565b91506116cc82846114c5565b91506116d78261151d565b91506116e2826115fb565b91506116ed82611645565b9150819050949350505050565b5f61170482610c64565b915061170f83610c64565b925082820261171d81610c64565b915082820484148315176117345761173361103e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61177282610c64565b91505f82036117845761178361103e565b5b60018203905091905056fea264697066735822122005a0f254007067b1ad64cad9483ed9feb0b5e59d0733c78f957d0f348e97880b64736f6c63430008190033", } // CounterABI is the input ABI used to generate the binding from. diff --git a/x/evm/contracts/counter/Counter.sol b/x/evm/contracts/counter/Counter.sol index d00ec1a6..b41c4f09 100644 --- a/x/evm/contracts/counter/Counter.sol +++ b/x/evm/contracts/counter/Counter.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; +pragma solidity ^0.8.25; import "../i_ibc_async_callback/IIBCAsyncCallback.sol"; import "../i_cosmos/ICosmos.sol"; diff --git a/x/evm/contracts/erc20/ERC20.go b/x/evm/contracts/erc20/ERC20.go index 112e7373..731d7eaf 100644 --- a/x/evm/contracts/erc20/ERC20.go +++ b/x/evm/contracts/erc20/ERC20.go @@ -32,7 +32,7 @@ var ( // Erc20MetaData contains all meta data concerning the Erc20 contract. var Erc20MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"_metadataSealed\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"MetadataUpdated\",\"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\":\"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\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"metadataSealed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sudoBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sudoMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sudoTransfer\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"name\":\"updateMetadata\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051612ef6380380612ef683398181016040528101906100319190610284565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836003908161007f919061052d565b50826004908161008f919061052d565b508160055f6101000a81548160ff021916908360ff1602179055508060075f6101000a81548160ff021916908315150217905550505050506105fc565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61012b826100e5565b810181811067ffffffffffffffff8211171561014a576101496100f5565b5b80604052505050565b5f61015c6100cc565b90506101688282610122565b919050565b5f67ffffffffffffffff821115610187576101866100f5565b5b610190826100e5565b9050602081019050919050565b8281835e5f83830152505050565b5f6101bd6101b88461016d565b610153565b9050828152602081018484840111156101d9576101d86100e1565b5b6101e484828561019d565b509392505050565b5f82601f830112610200576101ff6100dd565b5b81516102108482602086016101ab565b91505092915050565b5f60ff82169050919050565b61022e81610219565b8114610238575f80fd5b50565b5f8151905061024981610225565b92915050565b5f8115159050919050565b6102638161024f565b811461026d575f80fd5b50565b5f8151905061027e8161025a565b92915050565b5f805f806080858703121561029c5761029b6100d5565b5b5f85015167ffffffffffffffff8111156102b9576102b86100d9565b5b6102c5878288016101ec565b945050602085015167ffffffffffffffff8111156102e6576102e56100d9565b5b6102f2878288016101ec565b93505060406103038782880161023b565b925050606061031487828801610270565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061036e57607f821691505b6020821081036103815761038061032a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103a8565b6103ed86836103a8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61043161042c61042784610405565b61040e565b610405565b9050919050565b5f819050919050565b61044a83610417565b61045e61045682610438565b8484546103b4565b825550505050565b5f90565b610472610466565b61047d818484610441565b505050565b5b818110156104a0576104955f8261046a565b600181019050610483565b5050565b601f8211156104e5576104b681610387565b6104bf84610399565b810160208510156104ce578190505b6104e26104da85610399565b830182610482565b50505b505050565b5f82821c905092915050565b5f6105055f19846008026104ea565b1980831691505092915050565b5f61051d83836104f6565b9150826002028217905092915050565b61053682610320565b67ffffffffffffffff81111561054f5761054e6100f5565b5b6105598254610357565b6105648282856104a4565b5f60209050601f831160018114610595575f8415610583578287015190505b61058d8582610512565b8655506105f4565b601f1984166105a386610387565b5f5b828110156105ca578489015182556001820191506020850194506020810190506105a5565b868310156105e757848901516105e3601f8916826104f6565b8355505b6001600288020188555050505b505050505050565b6128ed806106095f395ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb14610340578063dd62ed3e14610370578063f2fde38b146103a0578063f5daf8ff146103bc578063fe1195ec146103da5761012a565b806370a082311461028857806379cc6790146102b85780638da5cb5b146102e857806395d89b41146103065780639f191484146103245761012a565b806323b872dd116100f257806323b872dd146101e65780632d688ca814610216578063313ce5671461023257806340c10f191461025057806342966c681461026c5761012a565b806301ffc9a71461012e57806306fdde031461015e578063095ea7b31461017c57806318160ddd146101ac5780631988513b146101ca575b5f80fd5b61014860048036038101906101439190611998565b6103f6565b60405161015591906119dd565b60405180910390f35b61016661046f565b6040516101739190611a66565b60405180910390f35b61019660048036038101906101919190611b13565b6104fb565b6040516101a391906119dd565b60405180910390f35b6101b46105e8565b6040516101c19190611b60565b60405180910390f35b6101e460048036038101906101df9190611b79565b6105ee565b005b61020060048036038101906101fb9190611b79565b61066d565b60405161020d91906119dd565b60405180910390f35b610230600480360381019061022b9190611b13565b610888565b005b61023a610905565b6040516102479190611be4565b60405180910390f35b61026a60048036038101906102659190611b13565b610917565b005b61028660048036038101906102819190611bfd565b610a36565b005b6102a2600480360381019061029d9190611c28565b610afe565b6040516102af9190611b60565b60405180910390f35b6102d260048036038101906102cd9190611b13565b610b13565b6040516102df91906119dd565b60405180910390f35b6102f0610d2c565b6040516102fd9190611c62565b60405180910390f35b61030e610d4f565b60405161031b9190611a66565b60405180910390f35b61033e60048036038101906103399190611dd1565b610ddb565b005b61035a60048036038101906103559190611b13565b611053565b60405161036791906119dd565b60405180910390f35b61038a60048036038101906103859190611e59565b611124565b6040516103979190611b60565b60405180910390f35b6103ba60048036038101906103b59190611c28565b611144565b005b6103c461128c565b6040516103d191906119dd565b60405180910390f35b6103f460048036038101906103ef9190611b13565b61129e565b005b5f7f8da6da19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061046857506104678261131b565b5b9050919050565b6003805461047c90611ec4565b80601f01602080910402602001604051908101604052809291908181526020018280546104a890611ec4565b80156104f35780601f106104ca576101008083540402835291602001916104f3565b820191905f5260205f20905b8154815290600101906020018083116104d657829003601f168201915b505050505081565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d69190611b60565b60405180910390a36001905092915050565b60065481565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065490611f3e565b60405180910390fd5b610668838383611384565b505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016106a99190611c62565b602060405180830381865afa1580156106c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e89190611f86565b15610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90612021565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156107e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107da906120af565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461086a91906120fa565b9250508190555061087c858585611384565b60019150509392505050565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ee90611f3e565b60405180910390fd5b610901828261160f565b5050565b60055f9054906101000a900460ff1681565b8160f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016109529190611c62565b602060405180830381865afa15801561096d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109919190611f86565b156109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c890612177565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a27575f80fd5b610a31838361160f565b505050565b3360f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610a719190611c62565b602060405180830381865afa158015610a8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab09190611f86565b15610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906121df565b60405180910390fd5b610afa33836117de565b5050565b6001602052805f5260405f205f915090505481565b5f8260f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610b4f9190611c62565b602060405180830381865afa158015610b6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8e9190611f86565b15610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc5906121df565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c809061226d565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d1091906120fa565b92505081905550610d2184846117de565b600191505092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60048054610d5c90611ec4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8890611ec4565b8015610dd35780601f10610daa57610100808354040283529160200191610dd3565b820191905f5260205f20905b815481529060010190602001808311610db657829003601f168201915b505050505081565b60f173ffffffffffffffffffffffffffffffffffffffff166301116078336040518263ffffffff1660e01b8152600401610e159190611c62565b602060405180830381865afa158015610e30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e549190611f86565b610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a906122fb565b60405180910390fd5b60075f9054906101000a900460ff1615610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990612363565b60405180910390fd5b5f835111610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c906123cb565b60405180910390fd5b5f825111610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90612433565b60405180910390fd5b60128160ff161115610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa69061249b565b60405180910390fd5b82828260035f60045f60055f8691906101000a81548160ff021916908360ff160217905550859190509081610fe49190612656565b50849190509081610ff59190612656565b50505050600160075f6101000a81548160ff0219169083151502179055507f3c16037886713f9479597685e40515c99616fa75e3c2003b658c4e5457695d7d83838360405161104693929190612725565b60405180910390a1505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b815260040161108f9190611c62565b602060405180830381865afa1580156110aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ce9190611f86565b1561110e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110590612021565b60405180910390fd5b611119338585611384565b600191505092915050565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461119a575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111d1575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075f9054906101000a900460ff1681565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490611f3e565b60405180910390fd5b61131782826117de565b5050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b81526004016113bf9190611c62565b602060405180830381865afa1580156113da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fe9190611f86565b61147e5760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b815260040161143c9190611c62565b6020604051808303815f875af1158015611458573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147c9190611f86565b505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f5906127d8565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461154a91906120fa565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461159d91906127f6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116019190611b60565b60405180910390a350505050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b815260040161164a9190611c62565b602060405180830381865afa158015611665573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116899190611f86565b6117095760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016116c79190611c62565b6020604051808303815f875af11580156116e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117079190611f86565b505b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461175591906127f6565b925050819055508160065f82825461176d91906127f6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117d19190611b60565b60405180910390a3505050565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561185e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185590612899565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118aa91906120fa565b925050819055508060065f8282546118c291906120fa565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119269190611b60565b60405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61197781611943565b8114611981575f80fd5b50565b5f813590506119928161196e565b92915050565b5f602082840312156119ad576119ac61193b565b5b5f6119ba84828501611984565b91505092915050565b5f8115159050919050565b6119d7816119c3565b82525050565b5f6020820190506119f05f8301846119ce565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a38826119f6565b611a428185611a00565b9350611a52818560208601611a10565b611a5b81611a1e565b840191505092915050565b5f6020820190508181035f830152611a7e8184611a2e565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611aaf82611a86565b9050919050565b611abf81611aa5565b8114611ac9575f80fd5b50565b5f81359050611ada81611ab6565b92915050565b5f819050919050565b611af281611ae0565b8114611afc575f80fd5b50565b5f81359050611b0d81611ae9565b92915050565b5f8060408385031215611b2957611b2861193b565b5b5f611b3685828601611acc565b9250506020611b4785828601611aff565b9150509250929050565b611b5a81611ae0565b82525050565b5f602082019050611b735f830184611b51565b92915050565b5f805f60608486031215611b9057611b8f61193b565b5b5f611b9d86828701611acc565b9350506020611bae86828701611acc565b9250506040611bbf86828701611aff565b9150509250925092565b5f60ff82169050919050565b611bde81611bc9565b82525050565b5f602082019050611bf75f830184611bd5565b92915050565b5f60208284031215611c1257611c1161193b565b5b5f611c1f84828501611aff565b91505092915050565b5f60208284031215611c3d57611c3c61193b565b5b5f611c4a84828501611acc565b91505092915050565b611c5c81611aa5565b82525050565b5f602082019050611c755f830184611c53565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611cb982611a1e565b810181811067ffffffffffffffff82111715611cd857611cd7611c83565b5b80604052505050565b5f611cea611932565b9050611cf68282611cb0565b919050565b5f67ffffffffffffffff821115611d1557611d14611c83565b5b611d1e82611a1e565b9050602081019050919050565b828183375f83830152505050565b5f611d4b611d4684611cfb565b611ce1565b905082815260208101848484011115611d6757611d66611c7f565b5b611d72848285611d2b565b509392505050565b5f82601f830112611d8e57611d8d611c7b565b5b8135611d9e848260208601611d39565b91505092915050565b611db081611bc9565b8114611dba575f80fd5b50565b5f81359050611dcb81611da7565b92915050565b5f805f60608486031215611de857611de761193b565b5b5f84013567ffffffffffffffff811115611e0557611e0461193f565b5b611e1186828701611d7a565b935050602084013567ffffffffffffffff811115611e3257611e3161193f565b5b611e3e86828701611d7a565b9250506040611e4f86828701611dbd565b9150509250925092565b5f8060408385031215611e6f57611e6e61193b565b5b5f611e7c85828601611acc565b9250506020611e8d85828601611acc565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611edb57607f821691505b602082108103611eee57611eed611e97565b5b50919050565b7f45524332303a2063616c6c6572206973206e6f742074686520636861696e00005f82015250565b5f611f28601e83611a00565b9150611f3382611ef4565b602082019050919050565b5f6020820190508181035f830152611f5581611f1c565b9050919050565b611f65816119c3565b8114611f6f575f80fd5b50565b5f81519050611f8081611f5c565b92915050565b5f60208284031215611f9b57611f9a61193b565b5b5f611fa884828501611f72565b91505092915050565b7f45524332303a207472616e7366657220746f20626c6f636b65642061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61200b602283611a00565b915061201682611fb1565b604082019050919050565b5f6020820190508181035f83015261203881611fff565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612099602883611a00565b91506120a48261203f565b604082019050919050565b5f6020820190508181035f8301526120c68161208d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61210482611ae0565b915061210f83611ae0565b9250828203905081811115612127576121266120cd565b5b92915050565b7f45524332303a206d696e7420746f20626c6f636b6564206164647265737300005f82015250565b5f612161601e83611a00565b915061216c8261212d565b602082019050919050565b5f6020820190508181035f83015261218e81612155565b9050919050565b7f45524332303a206275726e2066726f6d206d6f64756c652061646472657373005f82015250565b5f6121c9601f83611a00565b91506121d482612195565b602082019050919050565b5f6020820190508181035f8301526121f6816121bd565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f612257602483611a00565b9150612262826121fd565b604082019050919050565b5f6020820190508181035f8301526122848161224b565b9050919050565b7f45524332303a2063616c6c6572206973206e6f742074686520617574686f72695f8201527f7479000000000000000000000000000000000000000000000000000000000000602082015250565b5f6122e5602283611a00565b91506122f08261228b565b604082019050919050565b5f6020820190508181035f830152612312816122d9565b9050919050565b7f45524332303a206d65746164617461207365616c6564000000000000000000005f82015250565b5f61234d601683611a00565b915061235882612319565b602082019050919050565b5f6020820190508181035f83015261237a81612341565b9050919050565b7f45524332303a20656d707479206e616d650000000000000000000000000000005f82015250565b5f6123b5601183611a00565b91506123c082612381565b602082019050919050565b5f6020820190508181035f8301526123e2816123a9565b9050919050565b7f45524332303a20656d7074792073796d626f6c000000000000000000000000005f82015250565b5f61241d601383611a00565b9150612428826123e9565b602082019050919050565b5f6020820190508181035f83015261244a81612411565b9050919050565b7f45524332303a20696e76616c696420646563696d616c730000000000000000005f82015250565b5f612485601783611a00565b915061249082612451565b602082019050919050565b5f6020820190508181035f8301526124b281612479565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026125157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826124da565b61251f86836124da565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61255a61255561255084611ae0565b612537565b611ae0565b9050919050565b5f819050919050565b61257383612540565b61258761257f82612561565b8484546124e6565b825550505050565b5f90565b61259b61258f565b6125a681848461256a565b505050565b5b818110156125c9576125be5f82612593565b6001810190506125ac565b5050565b601f82111561260e576125df816124b9565b6125e8846124cb565b810160208510156125f7578190505b61260b612603856124cb565b8301826125ab565b50505b505050565b5f82821c905092915050565b5f61262e5f1984600802612613565b1980831691505092915050565b5f612646838361261f565b9150826002028217905092915050565b61265f826119f6565b67ffffffffffffffff81111561267857612677611c83565b5b6126828254611ec4565b61268d8282856125cd565b5f60209050601f8311600181146126be575f84156126ac578287015190505b6126b6858261263b565b86555061271d565b601f1984166126cc866124b9565b5f5b828110156126f3578489015182556001820191506020850194506020810190506126ce565b86831015612710578489015161270c601f89168261261f565b8355505b6001600288020188555050505b505050505050565b5f6060820190508181035f83015261273d8186611a2e565b905081810360208301526127518185611a2e565b90506127606040830184611bd5565b949350505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6127c2602683611a00565b91506127cd82612768565b604082019050919050565b5f6020820190508181035f8301526127ef816127b6565b9050919050565b5f61280082611ae0565b915061280b83611ae0565b9250828201905080821115612823576128226120cd565b5b92915050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f612883602283611a00565b915061288e82612829565b604082019050919050565b5f6020820190508181035f8301526128b081612877565b905091905056fea2646970667358221220ddc46a991c355f1d38e4fc526c6df714059d09f75a456f7f6f7e655d0fd17f6564736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b50604051612ef6380380612ef683398181016040528101906100319190610284565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836003908161007f919061052d565b50826004908161008f919061052d565b508160055f6101000a81548160ff021916908360ff1602179055508060075f6101000a81548160ff021916908315150217905550505050506105fc565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61012b826100e5565b810181811067ffffffffffffffff8211171561014a576101496100f5565b5b80604052505050565b5f61015c6100cc565b90506101688282610122565b919050565b5f67ffffffffffffffff821115610187576101866100f5565b5b610190826100e5565b9050602081019050919050565b8281835e5f83830152505050565b5f6101bd6101b88461016d565b610153565b9050828152602081018484840111156101d9576101d86100e1565b5b6101e484828561019d565b509392505050565b5f82601f830112610200576101ff6100dd565b5b81516102108482602086016101ab565b91505092915050565b5f60ff82169050919050565b61022e81610219565b8114610238575f80fd5b50565b5f8151905061024981610225565b92915050565b5f8115159050919050565b6102638161024f565b811461026d575f80fd5b50565b5f8151905061027e8161025a565b92915050565b5f805f806080858703121561029c5761029b6100d5565b5b5f85015167ffffffffffffffff8111156102b9576102b86100d9565b5b6102c5878288016101ec565b945050602085015167ffffffffffffffff8111156102e6576102e56100d9565b5b6102f2878288016101ec565b93505060406103038782880161023b565b925050606061031487828801610270565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061036e57607f821691505b6020821081036103815761038061032a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103a8565b6103ed86836103a8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61043161042c61042784610405565b61040e565b610405565b9050919050565b5f819050919050565b61044a83610417565b61045e61045682610438565b8484546103b4565b825550505050565b5f90565b610472610466565b61047d818484610441565b505050565b5b818110156104a0576104955f8261046a565b600181019050610483565b5050565b601f8211156104e5576104b681610387565b6104bf84610399565b810160208510156104ce578190505b6104e26104da85610399565b830182610482565b50505b505050565b5f82821c905092915050565b5f6105055f19846008026104ea565b1980831691505092915050565b5f61051d83836104f6565b9150826002028217905092915050565b61053682610320565b67ffffffffffffffff81111561054f5761054e6100f5565b5b6105598254610357565b6105648282856104a4565b5f60209050601f831160018114610595575f8415610583578287015190505b61058d8582610512565b8655506105f4565b601f1984166105a386610387565b5f5b828110156105ca578489015182556001820191506020850194506020810190506105a5565b868310156105e757848901516105e3601f8916826104f6565b8355505b6001600288020188555050505b505050505050565b6128ed806106095f395ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb14610340578063dd62ed3e14610370578063f2fde38b146103a0578063f5daf8ff146103bc578063fe1195ec146103da5761012a565b806370a082311461028857806379cc6790146102b85780638da5cb5b146102e857806395d89b41146103065780639f191484146103245761012a565b806323b872dd116100f257806323b872dd146101e65780632d688ca814610216578063313ce5671461023257806340c10f191461025057806342966c681461026c5761012a565b806301ffc9a71461012e57806306fdde031461015e578063095ea7b31461017c57806318160ddd146101ac5780631988513b146101ca575b5f80fd5b61014860048036038101906101439190611998565b6103f6565b60405161015591906119dd565b60405180910390f35b61016661046f565b6040516101739190611a66565b60405180910390f35b61019660048036038101906101919190611b13565b6104fb565b6040516101a391906119dd565b60405180910390f35b6101b46105e8565b6040516101c19190611b60565b60405180910390f35b6101e460048036038101906101df9190611b79565b6105ee565b005b61020060048036038101906101fb9190611b79565b61066d565b60405161020d91906119dd565b60405180910390f35b610230600480360381019061022b9190611b13565b610888565b005b61023a610905565b6040516102479190611be4565b60405180910390f35b61026a60048036038101906102659190611b13565b610917565b005b61028660048036038101906102819190611bfd565b610a36565b005b6102a2600480360381019061029d9190611c28565b610afe565b6040516102af9190611b60565b60405180910390f35b6102d260048036038101906102cd9190611b13565b610b13565b6040516102df91906119dd565b60405180910390f35b6102f0610d2c565b6040516102fd9190611c62565b60405180910390f35b61030e610d4f565b60405161031b9190611a66565b60405180910390f35b61033e60048036038101906103399190611dd1565b610ddb565b005b61035a60048036038101906103559190611b13565b611053565b60405161036791906119dd565b60405180910390f35b61038a60048036038101906103859190611e59565b611124565b6040516103979190611b60565b60405180910390f35b6103ba60048036038101906103b59190611c28565b611144565b005b6103c461128c565b6040516103d191906119dd565b60405180910390f35b6103f460048036038101906103ef9190611b13565b61129e565b005b5f7f8da6da19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061046857506104678261131b565b5b9050919050565b6003805461047c90611ec4565b80601f01602080910402602001604051908101604052809291908181526020018280546104a890611ec4565b80156104f35780601f106104ca576101008083540402835291602001916104f3565b820191905f5260205f20905b8154815290600101906020018083116104d657829003601f168201915b505050505081565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d69190611b60565b60405180910390a36001905092915050565b60065481565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065490611f3e565b60405180910390fd5b610668838383611384565b505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016106a99190611c62565b602060405180830381865afa1580156106c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e89190611f86565b15610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90612021565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156107e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107da906120af565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461086a91906120fa565b9250508190555061087c858585611384565b60019150509392505050565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ee90611f3e565b60405180910390fd5b610901828261160f565b5050565b60055f9054906101000a900460ff1681565b8160f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016109529190611c62565b602060405180830381865afa15801561096d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109919190611f86565b156109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c890612177565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a27575f80fd5b610a31838361160f565b505050565b3360f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610a719190611c62565b602060405180830381865afa158015610a8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab09190611f86565b15610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906121df565b60405180910390fd5b610afa33836117de565b5050565b6001602052805f5260405f205f915090505481565b5f8260f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610b4f9190611c62565b602060405180830381865afa158015610b6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8e9190611f86565b15610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc5906121df565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c809061226d565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d1091906120fa565b92505081905550610d2184846117de565b600191505092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60048054610d5c90611ec4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8890611ec4565b8015610dd35780601f10610daa57610100808354040283529160200191610dd3565b820191905f5260205f20905b815481529060010190602001808311610db657829003601f168201915b505050505081565b60f173ffffffffffffffffffffffffffffffffffffffff166301116078336040518263ffffffff1660e01b8152600401610e159190611c62565b602060405180830381865afa158015610e30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e549190611f86565b610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a906122fb565b60405180910390fd5b60075f9054906101000a900460ff1615610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990612363565b60405180910390fd5b5f835111610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c906123cb565b60405180910390fd5b5f825111610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90612433565b60405180910390fd5b60128160ff161115610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa69061249b565b60405180910390fd5b82828260035f60045f60055f8691906101000a81548160ff021916908360ff160217905550859190509081610fe49190612656565b50849190509081610ff59190612656565b50505050600160075f6101000a81548160ff0219169083151502179055507f3c16037886713f9479597685e40515c99616fa75e3c2003b658c4e5457695d7d83838360405161104693929190612725565b60405180910390a1505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b815260040161108f9190611c62565b602060405180830381865afa1580156110aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ce9190611f86565b1561110e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110590612021565b60405180910390fd5b611119338585611384565b600191505092915050565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461119a575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111d1575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075f9054906101000a900460ff1681565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490611f3e565b60405180910390fd5b61131782826117de565b5050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b81526004016113bf9190611c62565b602060405180830381865afa1580156113da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fe9190611f86565b61147e5760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b815260040161143c9190611c62565b6020604051808303815f875af1158015611458573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147c9190611f86565b505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f5906127d8565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461154a91906120fa565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461159d91906127f6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116019190611b60565b60405180910390a350505050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b815260040161164a9190611c62565b602060405180830381865afa158015611665573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116899190611f86565b6117095760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016116c79190611c62565b6020604051808303815f875af11580156116e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117079190611f86565b505b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461175591906127f6565b925050819055508160065f82825461176d91906127f6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117d19190611b60565b60405180910390a3505050565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561185e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185590612899565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118aa91906120fa565b925050819055508060065f8282546118c291906120fa565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119269190611b60565b60405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61197781611943565b8114611981575f80fd5b50565b5f813590506119928161196e565b92915050565b5f602082840312156119ad576119ac61193b565b5b5f6119ba84828501611984565b91505092915050565b5f8115159050919050565b6119d7816119c3565b82525050565b5f6020820190506119f05f8301846119ce565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a38826119f6565b611a428185611a00565b9350611a52818560208601611a10565b611a5b81611a1e565b840191505092915050565b5f6020820190508181035f830152611a7e8184611a2e565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611aaf82611a86565b9050919050565b611abf81611aa5565b8114611ac9575f80fd5b50565b5f81359050611ada81611ab6565b92915050565b5f819050919050565b611af281611ae0565b8114611afc575f80fd5b50565b5f81359050611b0d81611ae9565b92915050565b5f8060408385031215611b2957611b2861193b565b5b5f611b3685828601611acc565b9250506020611b4785828601611aff565b9150509250929050565b611b5a81611ae0565b82525050565b5f602082019050611b735f830184611b51565b92915050565b5f805f60608486031215611b9057611b8f61193b565b5b5f611b9d86828701611acc565b9350506020611bae86828701611acc565b9250506040611bbf86828701611aff565b9150509250925092565b5f60ff82169050919050565b611bde81611bc9565b82525050565b5f602082019050611bf75f830184611bd5565b92915050565b5f60208284031215611c1257611c1161193b565b5b5f611c1f84828501611aff565b91505092915050565b5f60208284031215611c3d57611c3c61193b565b5b5f611c4a84828501611acc565b91505092915050565b611c5c81611aa5565b82525050565b5f602082019050611c755f830184611c53565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611cb982611a1e565b810181811067ffffffffffffffff82111715611cd857611cd7611c83565b5b80604052505050565b5f611cea611932565b9050611cf68282611cb0565b919050565b5f67ffffffffffffffff821115611d1557611d14611c83565b5b611d1e82611a1e565b9050602081019050919050565b828183375f83830152505050565b5f611d4b611d4684611cfb565b611ce1565b905082815260208101848484011115611d6757611d66611c7f565b5b611d72848285611d2b565b509392505050565b5f82601f830112611d8e57611d8d611c7b565b5b8135611d9e848260208601611d39565b91505092915050565b611db081611bc9565b8114611dba575f80fd5b50565b5f81359050611dcb81611da7565b92915050565b5f805f60608486031215611de857611de761193b565b5b5f84013567ffffffffffffffff811115611e0557611e0461193f565b5b611e1186828701611d7a565b935050602084013567ffffffffffffffff811115611e3257611e3161193f565b5b611e3e86828701611d7a565b9250506040611e4f86828701611dbd565b9150509250925092565b5f8060408385031215611e6f57611e6e61193b565b5b5f611e7c85828601611acc565b9250506020611e8d85828601611acc565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611edb57607f821691505b602082108103611eee57611eed611e97565b5b50919050565b7f45524332303a2063616c6c6572206973206e6f742074686520636861696e00005f82015250565b5f611f28601e83611a00565b9150611f3382611ef4565b602082019050919050565b5f6020820190508181035f830152611f5581611f1c565b9050919050565b611f65816119c3565b8114611f6f575f80fd5b50565b5f81519050611f8081611f5c565b92915050565b5f60208284031215611f9b57611f9a61193b565b5b5f611fa884828501611f72565b91505092915050565b7f45524332303a207472616e7366657220746f20626c6f636b65642061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61200b602283611a00565b915061201682611fb1565b604082019050919050565b5f6020820190508181035f83015261203881611fff565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612099602883611a00565b91506120a48261203f565b604082019050919050565b5f6020820190508181035f8301526120c68161208d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61210482611ae0565b915061210f83611ae0565b9250828203905081811115612127576121266120cd565b5b92915050565b7f45524332303a206d696e7420746f20626c6f636b6564206164647265737300005f82015250565b5f612161601e83611a00565b915061216c8261212d565b602082019050919050565b5f6020820190508181035f83015261218e81612155565b9050919050565b7f45524332303a206275726e2066726f6d206d6f64756c652061646472657373005f82015250565b5f6121c9601f83611a00565b91506121d482612195565b602082019050919050565b5f6020820190508181035f8301526121f6816121bd565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f612257602483611a00565b9150612262826121fd565b604082019050919050565b5f6020820190508181035f8301526122848161224b565b9050919050565b7f45524332303a2063616c6c6572206973206e6f742074686520617574686f72695f8201527f7479000000000000000000000000000000000000000000000000000000000000602082015250565b5f6122e5602283611a00565b91506122f08261228b565b604082019050919050565b5f6020820190508181035f830152612312816122d9565b9050919050565b7f45524332303a206d65746164617461207365616c6564000000000000000000005f82015250565b5f61234d601683611a00565b915061235882612319565b602082019050919050565b5f6020820190508181035f83015261237a81612341565b9050919050565b7f45524332303a20656d707479206e616d650000000000000000000000000000005f82015250565b5f6123b5601183611a00565b91506123c082612381565b602082019050919050565b5f6020820190508181035f8301526123e2816123a9565b9050919050565b7f45524332303a20656d7074792073796d626f6c000000000000000000000000005f82015250565b5f61241d601383611a00565b9150612428826123e9565b602082019050919050565b5f6020820190508181035f83015261244a81612411565b9050919050565b7f45524332303a20696e76616c696420646563696d616c730000000000000000005f82015250565b5f612485601783611a00565b915061249082612451565b602082019050919050565b5f6020820190508181035f8301526124b281612479565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026125157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826124da565b61251f86836124da565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61255a61255561255084611ae0565b612537565b611ae0565b9050919050565b5f819050919050565b61257383612540565b61258761257f82612561565b8484546124e6565b825550505050565b5f90565b61259b61258f565b6125a681848461256a565b505050565b5b818110156125c9576125be5f82612593565b6001810190506125ac565b5050565b601f82111561260e576125df816124b9565b6125e8846124cb565b810160208510156125f7578190505b61260b612603856124cb565b8301826125ab565b50505b505050565b5f82821c905092915050565b5f61262e5f1984600802612613565b1980831691505092915050565b5f612646838361261f565b9150826002028217905092915050565b61265f826119f6565b67ffffffffffffffff81111561267857612677611c83565b5b6126828254611ec4565b61268d8282856125cd565b5f60209050601f8311600181146126be575f84156126ac578287015190505b6126b6858261263b565b86555061271d565b601f1984166126cc866124b9565b5f5b828110156126f3578489015182556001820191506020850194506020810190506126ce565b86831015612710578489015161270c601f89168261261f565b8355505b6001600288020188555050505b505050505050565b5f6060820190508181035f83015261273d8186611a2e565b905081810360208301526127518185611a2e565b90506127606040830184611bd5565b949350505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6127c2602683611a00565b91506127cd82612768565b604082019050919050565b5f6020820190508181035f8301526127ef816127b6565b9050919050565b5f61280082611ae0565b915061280b83611ae0565b9250828201905080821115612823576128226120cd565b5b92915050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f612883602283611a00565b915061288e82612829565b604082019050919050565b5f6020820190508181035f8301526128b081612877565b905091905056fea26469706673582212202470ef44a10593a4ea9213cd832d4339546af287aeebae3e6aba2646591f4b8364736f6c63430008190033", } // Erc20ABI is the input ABI used to generate the binding from. diff --git a/x/evm/contracts/erc20/ERC20.sol b/x/evm/contracts/erc20/ERC20.sol index 3ce5d839..3b83490b 100644 --- a/x/evm/contracts/erc20/ERC20.sol +++ b/x/evm/contracts/erc20/ERC20.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; +pragma solidity ^0.8.25; import "../i_erc20/IERC20.sol"; import "../ownable/Ownable.sol"; diff --git a/x/evm/contracts/erc20_acl/ERC20ACL.go b/x/evm/contracts/erc20_acl/ERC20ACL.go index 2a8a71f1..528f3654 100644 --- a/x/evm/contracts/erc20_acl/ERC20ACL.go +++ b/x/evm/contracts/erc20_acl/ERC20ACL.go @@ -32,7 +32,7 @@ var ( // Erc20AclMetaData contains all meta data concerning the Erc20Acl contract. var Erc20AclMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x6080604052348015600e575f80fd5b50603e80601a5f395ff3fe60806040525f80fdfea264697066735822122051721dd437e4359c8183be282a2b641270104bf4f1324171e662a353fa04d02664736f6c63430008190033", + Bin: "0x6080604052348015600e575f80fd5b50603e80601a5f395ff3fe60806040525f80fdfea2646970667358221220e1320a4768b39c7760981f87a5c869e9a39632f23b40f2e15f243182d14a23fc64736f6c63430008190033", } // Erc20AclABI is the input ABI used to generate the binding from. diff --git a/x/evm/contracts/erc20_acl/ERC20ACL.sol b/x/evm/contracts/erc20_acl/ERC20ACL.sol index b5dcea14..b9f245e1 100644 --- a/x/evm/contracts/erc20_acl/ERC20ACL.sol +++ b/x/evm/contracts/erc20_acl/ERC20ACL.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; +pragma solidity ^0.8.25; import "../i_cosmos/ICosmos.sol"; diff --git a/x/evm/contracts/erc20_factory/ERC20Factory.go b/x/evm/contracts/erc20_factory/ERC20Factory.go index 41865127..66d0fbfa 100644 --- a/x/evm/contracts/erc20_factory/ERC20Factory.go +++ b/x/evm/contracts/erc20_factory/ERC20Factory.go @@ -32,7 +32,7 @@ var ( // Erc20FactoryMetaData contains all meta data concerning the Erc20Factory contract. var Erc20FactoryMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"erc20\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC20Created\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"createERC20\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052348015600e575f80fd5b506134d98061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c806306ef1a861461002d575b5f80fd5b6100476004803603810190610042919061039e565b61005d565b6040516100549190610465565b60405180910390f35b5f80848484600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141560405161009f9061020e565b6100ac9493929190610507565b604051809103905ff0801580156100c5573d5f803e3d5ffd5b50905060f273ffffffffffffffffffffffffffffffffffffffff1663d126274a826040518263ffffffff1660e01b81526004016101029190610465565b6020604051808303815f875af115801561011e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101429190610582565b508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b815260040161017c9190610465565b5f604051808303815f87803b158015610193575f80fd5b505af11580156101a5573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f85e892981b234101136bc30081e0a5c44345bebc0940193230c20a43b279e2d160405160405180910390a3809150509392505050565b612ef6806105ae83390190565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61027a82610234565b810181811067ffffffffffffffff8211171561029957610298610244565b5b80604052505050565b5f6102ab61021b565b90506102b78282610271565b919050565b5f67ffffffffffffffff8211156102d6576102d5610244565b5b6102df82610234565b9050602081019050919050565b828183375f83830152505050565b5f61030c610307846102bc565b6102a2565b90508281526020810184848401111561032857610327610230565b5b6103338482856102ec565b509392505050565b5f82601f83011261034f5761034e61022c565b5b813561035f8482602086016102fa565b91505092915050565b5f60ff82169050919050565b61037d81610368565b8114610387575f80fd5b50565b5f8135905061039881610374565b92915050565b5f805f606084860312156103b5576103b4610224565b5b5f84013567ffffffffffffffff8111156103d2576103d1610228565b5b6103de8682870161033b565b935050602084013567ffffffffffffffff8111156103ff576103fe610228565b5b61040b8682870161033b565b925050604061041c8682870161038a565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61044f82610426565b9050919050565b61045f81610445565b82525050565b5f6020820190506104785f830184610456565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6104b08261047e565b6104ba8185610488565b93506104ca818560208601610498565b6104d381610234565b840191505092915050565b6104e781610368565b82525050565b5f8115159050919050565b610501816104ed565b82525050565b5f6080820190508181035f83015261051f81876104a6565b9050818103602083015261053381866104a6565b905061054260408301856104de565b61054f60608301846104f8565b95945050505050565b610561816104ed565b811461056b575f80fd5b50565b5f8151905061057c81610558565b92915050565b5f6020828403121561059757610596610224565b5b5f6105a48482850161056e565b9150509291505056fe608060405234801561000f575f80fd5b50604051612ef6380380612ef683398181016040528101906100319190610284565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836003908161007f919061052d565b50826004908161008f919061052d565b508160055f6101000a81548160ff021916908360ff1602179055508060075f6101000a81548160ff021916908315150217905550505050506105fc565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61012b826100e5565b810181811067ffffffffffffffff8211171561014a576101496100f5565b5b80604052505050565b5f61015c6100cc565b90506101688282610122565b919050565b5f67ffffffffffffffff821115610187576101866100f5565b5b610190826100e5565b9050602081019050919050565b8281835e5f83830152505050565b5f6101bd6101b88461016d565b610153565b9050828152602081018484840111156101d9576101d86100e1565b5b6101e484828561019d565b509392505050565b5f82601f830112610200576101ff6100dd565b5b81516102108482602086016101ab565b91505092915050565b5f60ff82169050919050565b61022e81610219565b8114610238575f80fd5b50565b5f8151905061024981610225565b92915050565b5f8115159050919050565b6102638161024f565b811461026d575f80fd5b50565b5f8151905061027e8161025a565b92915050565b5f805f806080858703121561029c5761029b6100d5565b5b5f85015167ffffffffffffffff8111156102b9576102b86100d9565b5b6102c5878288016101ec565b945050602085015167ffffffffffffffff8111156102e6576102e56100d9565b5b6102f2878288016101ec565b93505060406103038782880161023b565b925050606061031487828801610270565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061036e57607f821691505b6020821081036103815761038061032a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103a8565b6103ed86836103a8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61043161042c61042784610405565b61040e565b610405565b9050919050565b5f819050919050565b61044a83610417565b61045e61045682610438565b8484546103b4565b825550505050565b5f90565b610472610466565b61047d818484610441565b505050565b5b818110156104a0576104955f8261046a565b600181019050610483565b5050565b601f8211156104e5576104b681610387565b6104bf84610399565b810160208510156104ce578190505b6104e26104da85610399565b830182610482565b50505b505050565b5f82821c905092915050565b5f6105055f19846008026104ea565b1980831691505092915050565b5f61051d83836104f6565b9150826002028217905092915050565b61053682610320565b67ffffffffffffffff81111561054f5761054e6100f5565b5b6105598254610357565b6105648282856104a4565b5f60209050601f831160018114610595575f8415610583578287015190505b61058d8582610512565b8655506105f4565b601f1984166105a386610387565b5f5b828110156105ca578489015182556001820191506020850194506020810190506105a5565b868310156105e757848901516105e3601f8916826104f6565b8355505b6001600288020188555050505b505050505050565b6128ed806106095f395ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb14610340578063dd62ed3e14610370578063f2fde38b146103a0578063f5daf8ff146103bc578063fe1195ec146103da5761012a565b806370a082311461028857806379cc6790146102b85780638da5cb5b146102e857806395d89b41146103065780639f191484146103245761012a565b806323b872dd116100f257806323b872dd146101e65780632d688ca814610216578063313ce5671461023257806340c10f191461025057806342966c681461026c5761012a565b806301ffc9a71461012e57806306fdde031461015e578063095ea7b31461017c57806318160ddd146101ac5780631988513b146101ca575b5f80fd5b61014860048036038101906101439190611998565b6103f6565b60405161015591906119dd565b60405180910390f35b61016661046f565b6040516101739190611a66565b60405180910390f35b61019660048036038101906101919190611b13565b6104fb565b6040516101a391906119dd565b60405180910390f35b6101b46105e8565b6040516101c19190611b60565b60405180910390f35b6101e460048036038101906101df9190611b79565b6105ee565b005b61020060048036038101906101fb9190611b79565b61066d565b60405161020d91906119dd565b60405180910390f35b610230600480360381019061022b9190611b13565b610888565b005b61023a610905565b6040516102479190611be4565b60405180910390f35b61026a60048036038101906102659190611b13565b610917565b005b61028660048036038101906102819190611bfd565b610a36565b005b6102a2600480360381019061029d9190611c28565b610afe565b6040516102af9190611b60565b60405180910390f35b6102d260048036038101906102cd9190611b13565b610b13565b6040516102df91906119dd565b60405180910390f35b6102f0610d2c565b6040516102fd9190611c62565b60405180910390f35b61030e610d4f565b60405161031b9190611a66565b60405180910390f35b61033e60048036038101906103399190611dd1565b610ddb565b005b61035a60048036038101906103559190611b13565b611053565b60405161036791906119dd565b60405180910390f35b61038a60048036038101906103859190611e59565b611124565b6040516103979190611b60565b60405180910390f35b6103ba60048036038101906103b59190611c28565b611144565b005b6103c461128c565b6040516103d191906119dd565b60405180910390f35b6103f460048036038101906103ef9190611b13565b61129e565b005b5f7f8da6da19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061046857506104678261131b565b5b9050919050565b6003805461047c90611ec4565b80601f01602080910402602001604051908101604052809291908181526020018280546104a890611ec4565b80156104f35780601f106104ca576101008083540402835291602001916104f3565b820191905f5260205f20905b8154815290600101906020018083116104d657829003601f168201915b505050505081565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d69190611b60565b60405180910390a36001905092915050565b60065481565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065490611f3e565b60405180910390fd5b610668838383611384565b505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016106a99190611c62565b602060405180830381865afa1580156106c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e89190611f86565b15610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90612021565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156107e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107da906120af565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461086a91906120fa565b9250508190555061087c858585611384565b60019150509392505050565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ee90611f3e565b60405180910390fd5b610901828261160f565b5050565b60055f9054906101000a900460ff1681565b8160f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016109529190611c62565b602060405180830381865afa15801561096d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109919190611f86565b156109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c890612177565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a27575f80fd5b610a31838361160f565b505050565b3360f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610a719190611c62565b602060405180830381865afa158015610a8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab09190611f86565b15610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906121df565b60405180910390fd5b610afa33836117de565b5050565b6001602052805f5260405f205f915090505481565b5f8260f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610b4f9190611c62565b602060405180830381865afa158015610b6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8e9190611f86565b15610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc5906121df565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c809061226d565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d1091906120fa565b92505081905550610d2184846117de565b600191505092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60048054610d5c90611ec4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8890611ec4565b8015610dd35780601f10610daa57610100808354040283529160200191610dd3565b820191905f5260205f20905b815481529060010190602001808311610db657829003601f168201915b505050505081565b60f173ffffffffffffffffffffffffffffffffffffffff166301116078336040518263ffffffff1660e01b8152600401610e159190611c62565b602060405180830381865afa158015610e30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e549190611f86565b610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a906122fb565b60405180910390fd5b60075f9054906101000a900460ff1615610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990612363565b60405180910390fd5b5f835111610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c906123cb565b60405180910390fd5b5f825111610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90612433565b60405180910390fd5b60128160ff161115610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa69061249b565b60405180910390fd5b82828260035f60045f60055f8691906101000a81548160ff021916908360ff160217905550859190509081610fe49190612656565b50849190509081610ff59190612656565b50505050600160075f6101000a81548160ff0219169083151502179055507f3c16037886713f9479597685e40515c99616fa75e3c2003b658c4e5457695d7d83838360405161104693929190612725565b60405180910390a1505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b815260040161108f9190611c62565b602060405180830381865afa1580156110aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ce9190611f86565b1561110e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110590612021565b60405180910390fd5b611119338585611384565b600191505092915050565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461119a575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111d1575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075f9054906101000a900460ff1681565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490611f3e565b60405180910390fd5b61131782826117de565b5050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b81526004016113bf9190611c62565b602060405180830381865afa1580156113da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fe9190611f86565b61147e5760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b815260040161143c9190611c62565b6020604051808303815f875af1158015611458573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147c9190611f86565b505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f5906127d8565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461154a91906120fa565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461159d91906127f6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116019190611b60565b60405180910390a350505050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b815260040161164a9190611c62565b602060405180830381865afa158015611665573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116899190611f86565b6117095760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016116c79190611c62565b6020604051808303815f875af11580156116e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117079190611f86565b505b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461175591906127f6565b925050819055508160065f82825461176d91906127f6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117d19190611b60565b60405180910390a3505050565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561185e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185590612899565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118aa91906120fa565b925050819055508060065f8282546118c291906120fa565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119269190611b60565b60405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61197781611943565b8114611981575f80fd5b50565b5f813590506119928161196e565b92915050565b5f602082840312156119ad576119ac61193b565b5b5f6119ba84828501611984565b91505092915050565b5f8115159050919050565b6119d7816119c3565b82525050565b5f6020820190506119f05f8301846119ce565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a38826119f6565b611a428185611a00565b9350611a52818560208601611a10565b611a5b81611a1e565b840191505092915050565b5f6020820190508181035f830152611a7e8184611a2e565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611aaf82611a86565b9050919050565b611abf81611aa5565b8114611ac9575f80fd5b50565b5f81359050611ada81611ab6565b92915050565b5f819050919050565b611af281611ae0565b8114611afc575f80fd5b50565b5f81359050611b0d81611ae9565b92915050565b5f8060408385031215611b2957611b2861193b565b5b5f611b3685828601611acc565b9250506020611b4785828601611aff565b9150509250929050565b611b5a81611ae0565b82525050565b5f602082019050611b735f830184611b51565b92915050565b5f805f60608486031215611b9057611b8f61193b565b5b5f611b9d86828701611acc565b9350506020611bae86828701611acc565b9250506040611bbf86828701611aff565b9150509250925092565b5f60ff82169050919050565b611bde81611bc9565b82525050565b5f602082019050611bf75f830184611bd5565b92915050565b5f60208284031215611c1257611c1161193b565b5b5f611c1f84828501611aff565b91505092915050565b5f60208284031215611c3d57611c3c61193b565b5b5f611c4a84828501611acc565b91505092915050565b611c5c81611aa5565b82525050565b5f602082019050611c755f830184611c53565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611cb982611a1e565b810181811067ffffffffffffffff82111715611cd857611cd7611c83565b5b80604052505050565b5f611cea611932565b9050611cf68282611cb0565b919050565b5f67ffffffffffffffff821115611d1557611d14611c83565b5b611d1e82611a1e565b9050602081019050919050565b828183375f83830152505050565b5f611d4b611d4684611cfb565b611ce1565b905082815260208101848484011115611d6757611d66611c7f565b5b611d72848285611d2b565b509392505050565b5f82601f830112611d8e57611d8d611c7b565b5b8135611d9e848260208601611d39565b91505092915050565b611db081611bc9565b8114611dba575f80fd5b50565b5f81359050611dcb81611da7565b92915050565b5f805f60608486031215611de857611de761193b565b5b5f84013567ffffffffffffffff811115611e0557611e0461193f565b5b611e1186828701611d7a565b935050602084013567ffffffffffffffff811115611e3257611e3161193f565b5b611e3e86828701611d7a565b9250506040611e4f86828701611dbd565b9150509250925092565b5f8060408385031215611e6f57611e6e61193b565b5b5f611e7c85828601611acc565b9250506020611e8d85828601611acc565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611edb57607f821691505b602082108103611eee57611eed611e97565b5b50919050565b7f45524332303a2063616c6c6572206973206e6f742074686520636861696e00005f82015250565b5f611f28601e83611a00565b9150611f3382611ef4565b602082019050919050565b5f6020820190508181035f830152611f5581611f1c565b9050919050565b611f65816119c3565b8114611f6f575f80fd5b50565b5f81519050611f8081611f5c565b92915050565b5f60208284031215611f9b57611f9a61193b565b5b5f611fa884828501611f72565b91505092915050565b7f45524332303a207472616e7366657220746f20626c6f636b65642061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61200b602283611a00565b915061201682611fb1565b604082019050919050565b5f6020820190508181035f83015261203881611fff565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612099602883611a00565b91506120a48261203f565b604082019050919050565b5f6020820190508181035f8301526120c68161208d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61210482611ae0565b915061210f83611ae0565b9250828203905081811115612127576121266120cd565b5b92915050565b7f45524332303a206d696e7420746f20626c6f636b6564206164647265737300005f82015250565b5f612161601e83611a00565b915061216c8261212d565b602082019050919050565b5f6020820190508181035f83015261218e81612155565b9050919050565b7f45524332303a206275726e2066726f6d206d6f64756c652061646472657373005f82015250565b5f6121c9601f83611a00565b91506121d482612195565b602082019050919050565b5f6020820190508181035f8301526121f6816121bd565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f612257602483611a00565b9150612262826121fd565b604082019050919050565b5f6020820190508181035f8301526122848161224b565b9050919050565b7f45524332303a2063616c6c6572206973206e6f742074686520617574686f72695f8201527f7479000000000000000000000000000000000000000000000000000000000000602082015250565b5f6122e5602283611a00565b91506122f08261228b565b604082019050919050565b5f6020820190508181035f830152612312816122d9565b9050919050565b7f45524332303a206d65746164617461207365616c6564000000000000000000005f82015250565b5f61234d601683611a00565b915061235882612319565b602082019050919050565b5f6020820190508181035f83015261237a81612341565b9050919050565b7f45524332303a20656d707479206e616d650000000000000000000000000000005f82015250565b5f6123b5601183611a00565b91506123c082612381565b602082019050919050565b5f6020820190508181035f8301526123e2816123a9565b9050919050565b7f45524332303a20656d7074792073796d626f6c000000000000000000000000005f82015250565b5f61241d601383611a00565b9150612428826123e9565b602082019050919050565b5f6020820190508181035f83015261244a81612411565b9050919050565b7f45524332303a20696e76616c696420646563696d616c730000000000000000005f82015250565b5f612485601783611a00565b915061249082612451565b602082019050919050565b5f6020820190508181035f8301526124b281612479565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026125157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826124da565b61251f86836124da565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61255a61255561255084611ae0565b612537565b611ae0565b9050919050565b5f819050919050565b61257383612540565b61258761257f82612561565b8484546124e6565b825550505050565b5f90565b61259b61258f565b6125a681848461256a565b505050565b5b818110156125c9576125be5f82612593565b6001810190506125ac565b5050565b601f82111561260e576125df816124b9565b6125e8846124cb565b810160208510156125f7578190505b61260b612603856124cb565b8301826125ab565b50505b505050565b5f82821c905092915050565b5f61262e5f1984600802612613565b1980831691505092915050565b5f612646838361261f565b9150826002028217905092915050565b61265f826119f6565b67ffffffffffffffff81111561267857612677611c83565b5b6126828254611ec4565b61268d8282856125cd565b5f60209050601f8311600181146126be575f84156126ac578287015190505b6126b6858261263b565b86555061271d565b601f1984166126cc866124b9565b5f5b828110156126f3578489015182556001820191506020850194506020810190506126ce565b86831015612710578489015161270c601f89168261261f565b8355505b6001600288020188555050505b505050505050565b5f6060820190508181035f83015261273d8186611a2e565b905081810360208301526127518185611a2e565b90506127606040830184611bd5565b949350505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6127c2602683611a00565b91506127cd82612768565b604082019050919050565b5f6020820190508181035f8301526127ef816127b6565b9050919050565b5f61280082611ae0565b915061280b83611ae0565b9250828201905080821115612823576128226120cd565b5b92915050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f612883602283611a00565b915061288e82612829565b604082019050919050565b5f6020820190508181035f8301526128b081612877565b905091905056fea2646970667358221220ddc46a991c355f1d38e4fc526c6df714059d09f75a456f7f6f7e655d0fd17f6564736f6c63430008190033a2646970667358221220875372b987d31258650bd13b3f9c8719323a3f57d7fb774452a918d5dc7691d064736f6c63430008190033", + Bin: "0x6080604052348015600e575f80fd5b506134d98061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c806306ef1a861461002d575b5f80fd5b6100476004803603810190610042919061039e565b61005d565b6040516100549190610465565b60405180910390f35b5f80848484600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141560405161009f9061020e565b6100ac9493929190610507565b604051809103905ff0801580156100c5573d5f803e3d5ffd5b50905060f273ffffffffffffffffffffffffffffffffffffffff1663d126274a826040518263ffffffff1660e01b81526004016101029190610465565b6020604051808303815f875af115801561011e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101429190610582565b508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b336040518263ffffffff1660e01b815260040161017c9190610465565b5f604051808303815f87803b158015610193575f80fd5b505af11580156101a5573d5f803e3d5ffd5b505050503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f85e892981b234101136bc30081e0a5c44345bebc0940193230c20a43b279e2d160405160405180910390a3809150509392505050565b612ef6806105ae83390190565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61027a82610234565b810181811067ffffffffffffffff8211171561029957610298610244565b5b80604052505050565b5f6102ab61021b565b90506102b78282610271565b919050565b5f67ffffffffffffffff8211156102d6576102d5610244565b5b6102df82610234565b9050602081019050919050565b828183375f83830152505050565b5f61030c610307846102bc565b6102a2565b90508281526020810184848401111561032857610327610230565b5b6103338482856102ec565b509392505050565b5f82601f83011261034f5761034e61022c565b5b813561035f8482602086016102fa565b91505092915050565b5f60ff82169050919050565b61037d81610368565b8114610387575f80fd5b50565b5f8135905061039881610374565b92915050565b5f805f606084860312156103b5576103b4610224565b5b5f84013567ffffffffffffffff8111156103d2576103d1610228565b5b6103de8682870161033b565b935050602084013567ffffffffffffffff8111156103ff576103fe610228565b5b61040b8682870161033b565b925050604061041c8682870161038a565b9150509250925092565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61044f82610426565b9050919050565b61045f81610445565b82525050565b5f6020820190506104785f830184610456565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6104b08261047e565b6104ba8185610488565b93506104ca818560208601610498565b6104d381610234565b840191505092915050565b6104e781610368565b82525050565b5f8115159050919050565b610501816104ed565b82525050565b5f6080820190508181035f83015261051f81876104a6565b9050818103602083015261053381866104a6565b905061054260408301856104de565b61054f60608301846104f8565b95945050505050565b610561816104ed565b811461056b575f80fd5b50565b5f8151905061057c81610558565b92915050565b5f6020828403121561059757610596610224565b5b5f6105a48482850161056e565b9150509291505056fe608060405234801561000f575f80fd5b50604051612ef6380380612ef683398181016040528101906100319190610284565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836003908161007f919061052d565b50826004908161008f919061052d565b508160055f6101000a81548160ff021916908360ff1602179055508060075f6101000a81548160ff021916908315150217905550505050506105fc565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61012b826100e5565b810181811067ffffffffffffffff8211171561014a576101496100f5565b5b80604052505050565b5f61015c6100cc565b90506101688282610122565b919050565b5f67ffffffffffffffff821115610187576101866100f5565b5b610190826100e5565b9050602081019050919050565b8281835e5f83830152505050565b5f6101bd6101b88461016d565b610153565b9050828152602081018484840111156101d9576101d86100e1565b5b6101e484828561019d565b509392505050565b5f82601f830112610200576101ff6100dd565b5b81516102108482602086016101ab565b91505092915050565b5f60ff82169050919050565b61022e81610219565b8114610238575f80fd5b50565b5f8151905061024981610225565b92915050565b5f8115159050919050565b6102638161024f565b811461026d575f80fd5b50565b5f8151905061027e8161025a565b92915050565b5f805f806080858703121561029c5761029b6100d5565b5b5f85015167ffffffffffffffff8111156102b9576102b86100d9565b5b6102c5878288016101ec565b945050602085015167ffffffffffffffff8111156102e6576102e56100d9565b5b6102f2878288016101ec565b93505060406103038782880161023b565b925050606061031487828801610270565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061036e57607f821691505b6020821081036103815761038061032a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826103a8565b6103ed86836103a8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61043161042c61042784610405565b61040e565b610405565b9050919050565b5f819050919050565b61044a83610417565b61045e61045682610438565b8484546103b4565b825550505050565b5f90565b610472610466565b61047d818484610441565b505050565b5b818110156104a0576104955f8261046a565b600181019050610483565b5050565b601f8211156104e5576104b681610387565b6104bf84610399565b810160208510156104ce578190505b6104e26104da85610399565b830182610482565b50505b505050565b5f82821c905092915050565b5f6105055f19846008026104ea565b1980831691505092915050565b5f61051d83836104f6565b9150826002028217905092915050565b61053682610320565b67ffffffffffffffff81111561054f5761054e6100f5565b5b6105598254610357565b6105648282856104a4565b5f60209050601f831160018114610595575f8415610583578287015190505b61058d8582610512565b8655506105f4565b601f1984166105a386610387565b5f5b828110156105ca578489015182556001820191506020850194506020810190506105a5565b868310156105e757848901516105e3601f8916826104f6565b8355505b6001600288020188555050505b505050505050565b6128ed806106095f395ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c806370a08231116100ab578063a9059cbb1161006f578063a9059cbb14610340578063dd62ed3e14610370578063f2fde38b146103a0578063f5daf8ff146103bc578063fe1195ec146103da5761012a565b806370a082311461028857806379cc6790146102b85780638da5cb5b146102e857806395d89b41146103065780639f191484146103245761012a565b806323b872dd116100f257806323b872dd146101e65780632d688ca814610216578063313ce5671461023257806340c10f191461025057806342966c681461026c5761012a565b806301ffc9a71461012e57806306fdde031461015e578063095ea7b31461017c57806318160ddd146101ac5780631988513b146101ca575b5f80fd5b61014860048036038101906101439190611998565b6103f6565b60405161015591906119dd565b60405180910390f35b61016661046f565b6040516101739190611a66565b60405180910390f35b61019660048036038101906101919190611b13565b6104fb565b6040516101a391906119dd565b60405180910390f35b6101b46105e8565b6040516101c19190611b60565b60405180910390f35b6101e460048036038101906101df9190611b79565b6105ee565b005b61020060048036038101906101fb9190611b79565b61066d565b60405161020d91906119dd565b60405180910390f35b610230600480360381019061022b9190611b13565b610888565b005b61023a610905565b6040516102479190611be4565b60405180910390f35b61026a60048036038101906102659190611b13565b610917565b005b61028660048036038101906102819190611bfd565b610a36565b005b6102a2600480360381019061029d9190611c28565b610afe565b6040516102af9190611b60565b60405180910390f35b6102d260048036038101906102cd9190611b13565b610b13565b6040516102df91906119dd565b60405180910390f35b6102f0610d2c565b6040516102fd9190611c62565b60405180910390f35b61030e610d4f565b60405161031b9190611a66565b60405180910390f35b61033e60048036038101906103399190611dd1565b610ddb565b005b61035a60048036038101906103559190611b13565b611053565b60405161036791906119dd565b60405180910390f35b61038a60048036038101906103859190611e59565b611124565b6040516103979190611b60565b60405180910390f35b6103ba60048036038101906103b59190611c28565b611144565b005b6103c461128c565b6040516103d191906119dd565b60405180910390f35b6103f460048036038101906103ef9190611b13565b61129e565b005b5f7f8da6da19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061046857506104678261131b565b5b9050919050565b6003805461047c90611ec4565b80601f01602080910402602001604051908101604052809291908181526020018280546104a890611ec4565b80156104f35780601f106104ca576101008083540402835291602001916104f3565b820191905f5260205f20905b8154815290600101906020018083116104d657829003601f168201915b505050505081565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105d69190611b60565b60405180910390a36001905092915050565b60065481565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065490611f3e565b60405180910390fd5b610668838383611384565b505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016106a99190611c62565b602060405180830381865afa1580156106c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e89190611f86565b15610728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071f90612021565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156107e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107da906120af565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461086a91906120fa565b9250508190555061087c858585611384565b60019150509392505050565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ee90611f3e565b60405180910390fd5b610901828261160f565b5050565b60055f9054906101000a900460ff1681565b8160f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016109529190611c62565b602060405180830381865afa15801561096d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109919190611f86565b156109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c890612177565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a27575f80fd5b610a31838361160f565b505050565b3360f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610a719190611c62565b602060405180830381865afa158015610a8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab09190611f86565b15610af0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae7906121df565b60405180910390fd5b610afa33836117de565b5050565b6001602052805f5260405f205f915090505481565b5f8260f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610b4f9190611c62565b602060405180830381865afa158015610b6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8e9190611f86565b15610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc5906121df565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c809061226d565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d1091906120fa565b92505081905550610d2184846117de565b600191505092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60048054610d5c90611ec4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8890611ec4565b8015610dd35780601f10610daa57610100808354040283529160200191610dd3565b820191905f5260205f20905b815481529060010190602001808311610db657829003601f168201915b505050505081565b60f173ffffffffffffffffffffffffffffffffffffffff166301116078336040518263ffffffff1660e01b8152600401610e159190611c62565b602060405180830381865afa158015610e30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e549190611f86565b610e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8a906122fb565b60405180910390fd5b60075f9054906101000a900460ff1615610ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed990612363565b60405180910390fd5b5f835111610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c906123cb565b60405180910390fd5b5f825111610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90612433565b60405180910390fd5b60128160ff161115610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa69061249b565b60405180910390fd5b82828260035f60045f60055f8691906101000a81548160ff021916908360ff160217905550859190509081610fe49190612656565b50849190509081610ff59190612656565b50505050600160075f6101000a81548160ff0219169083151502179055507f3c16037886713f9479597685e40515c99616fa75e3c2003b658c4e5457695d7d83838360405161104693929190612725565b60405180910390a1505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b815260040161108f9190611c62565b602060405180830381865afa1580156110aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110ce9190611f86565b1561110e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110590612021565b60405180910390fd5b611119338585611384565b600191505092915050565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461119a575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111d1575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075f9054906101000a900460ff1681565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490611f3e565b60405180910390fd5b61131782826117de565b5050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b81526004016113bf9190611c62565b602060405180830381865afa1580156113da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113fe9190611f86565b61147e5760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b815260040161143c9190611c62565b6020604051808303815f875af1158015611458573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147c9190611f86565b505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156114fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f5906127d8565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461154a91906120fa565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461159d91906127f6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116019190611b60565b60405180910390a350505050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b815260040161164a9190611c62565b602060405180830381865afa158015611665573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116899190611f86565b6117095760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016116c79190611c62565b6020604051808303815f875af11580156116e3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117079190611f86565b505b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461175591906127f6565b925050819055508160065f82825461176d91906127f6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117d19190611b60565b60405180910390a3505050565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561185e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185590612899565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118aa91906120fa565b925050819055508060065f8282546118c291906120fa565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119269190611b60565b60405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61197781611943565b8114611981575f80fd5b50565b5f813590506119928161196e565b92915050565b5f602082840312156119ad576119ac61193b565b5b5f6119ba84828501611984565b91505092915050565b5f8115159050919050565b6119d7816119c3565b82525050565b5f6020820190506119f05f8301846119ce565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611a38826119f6565b611a428185611a00565b9350611a52818560208601611a10565b611a5b81611a1e565b840191505092915050565b5f6020820190508181035f830152611a7e8184611a2e565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611aaf82611a86565b9050919050565b611abf81611aa5565b8114611ac9575f80fd5b50565b5f81359050611ada81611ab6565b92915050565b5f819050919050565b611af281611ae0565b8114611afc575f80fd5b50565b5f81359050611b0d81611ae9565b92915050565b5f8060408385031215611b2957611b2861193b565b5b5f611b3685828601611acc565b9250506020611b4785828601611aff565b9150509250929050565b611b5a81611ae0565b82525050565b5f602082019050611b735f830184611b51565b92915050565b5f805f60608486031215611b9057611b8f61193b565b5b5f611b9d86828701611acc565b9350506020611bae86828701611acc565b9250506040611bbf86828701611aff565b9150509250925092565b5f60ff82169050919050565b611bde81611bc9565b82525050565b5f602082019050611bf75f830184611bd5565b92915050565b5f60208284031215611c1257611c1161193b565b5b5f611c1f84828501611aff565b91505092915050565b5f60208284031215611c3d57611c3c61193b565b5b5f611c4a84828501611acc565b91505092915050565b611c5c81611aa5565b82525050565b5f602082019050611c755f830184611c53565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611cb982611a1e565b810181811067ffffffffffffffff82111715611cd857611cd7611c83565b5b80604052505050565b5f611cea611932565b9050611cf68282611cb0565b919050565b5f67ffffffffffffffff821115611d1557611d14611c83565b5b611d1e82611a1e565b9050602081019050919050565b828183375f83830152505050565b5f611d4b611d4684611cfb565b611ce1565b905082815260208101848484011115611d6757611d66611c7f565b5b611d72848285611d2b565b509392505050565b5f82601f830112611d8e57611d8d611c7b565b5b8135611d9e848260208601611d39565b91505092915050565b611db081611bc9565b8114611dba575f80fd5b50565b5f81359050611dcb81611da7565b92915050565b5f805f60608486031215611de857611de761193b565b5b5f84013567ffffffffffffffff811115611e0557611e0461193f565b5b611e1186828701611d7a565b935050602084013567ffffffffffffffff811115611e3257611e3161193f565b5b611e3e86828701611d7a565b9250506040611e4f86828701611dbd565b9150509250925092565b5f8060408385031215611e6f57611e6e61193b565b5b5f611e7c85828601611acc565b9250506020611e8d85828601611acc565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611edb57607f821691505b602082108103611eee57611eed611e97565b5b50919050565b7f45524332303a2063616c6c6572206973206e6f742074686520636861696e00005f82015250565b5f611f28601e83611a00565b9150611f3382611ef4565b602082019050919050565b5f6020820190508181035f830152611f5581611f1c565b9050919050565b611f65816119c3565b8114611f6f575f80fd5b50565b5f81519050611f8081611f5c565b92915050565b5f60208284031215611f9b57611f9a61193b565b5b5f611fa884828501611f72565b91505092915050565b7f45524332303a207472616e7366657220746f20626c6f636b65642061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61200b602283611a00565b915061201682611fb1565b604082019050919050565b5f6020820190508181035f83015261203881611fff565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612099602883611a00565b91506120a48261203f565b604082019050919050565b5f6020820190508181035f8301526120c68161208d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61210482611ae0565b915061210f83611ae0565b9250828203905081811115612127576121266120cd565b5b92915050565b7f45524332303a206d696e7420746f20626c6f636b6564206164647265737300005f82015250565b5f612161601e83611a00565b915061216c8261212d565b602082019050919050565b5f6020820190508181035f83015261218e81612155565b9050919050565b7f45524332303a206275726e2066726f6d206d6f64756c652061646472657373005f82015250565b5f6121c9601f83611a00565b91506121d482612195565b602082019050919050565b5f6020820190508181035f8301526121f6816121bd565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f612257602483611a00565b9150612262826121fd565b604082019050919050565b5f6020820190508181035f8301526122848161224b565b9050919050565b7f45524332303a2063616c6c6572206973206e6f742074686520617574686f72695f8201527f7479000000000000000000000000000000000000000000000000000000000000602082015250565b5f6122e5602283611a00565b91506122f08261228b565b604082019050919050565b5f6020820190508181035f830152612312816122d9565b9050919050565b7f45524332303a206d65746164617461207365616c6564000000000000000000005f82015250565b5f61234d601683611a00565b915061235882612319565b602082019050919050565b5f6020820190508181035f83015261237a81612341565b9050919050565b7f45524332303a20656d707479206e616d650000000000000000000000000000005f82015250565b5f6123b5601183611a00565b91506123c082612381565b602082019050919050565b5f6020820190508181035f8301526123e2816123a9565b9050919050565b7f45524332303a20656d7074792073796d626f6c000000000000000000000000005f82015250565b5f61241d601383611a00565b9150612428826123e9565b602082019050919050565b5f6020820190508181035f83015261244a81612411565b9050919050565b7f45524332303a20696e76616c696420646563696d616c730000000000000000005f82015250565b5f612485601783611a00565b915061249082612451565b602082019050919050565b5f6020820190508181035f8301526124b281612479565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026125157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826124da565b61251f86836124da565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61255a61255561255084611ae0565b612537565b611ae0565b9050919050565b5f819050919050565b61257383612540565b61258761257f82612561565b8484546124e6565b825550505050565b5f90565b61259b61258f565b6125a681848461256a565b505050565b5b818110156125c9576125be5f82612593565b6001810190506125ac565b5050565b601f82111561260e576125df816124b9565b6125e8846124cb565b810160208510156125f7578190505b61260b612603856124cb565b8301826125ab565b50505b505050565b5f82821c905092915050565b5f61262e5f1984600802612613565b1980831691505092915050565b5f612646838361261f565b9150826002028217905092915050565b61265f826119f6565b67ffffffffffffffff81111561267857612677611c83565b5b6126828254611ec4565b61268d8282856125cd565b5f60209050601f8311600181146126be575f84156126ac578287015190505b6126b6858261263b565b86555061271d565b601f1984166126cc866124b9565b5f5b828110156126f3578489015182556001820191506020850194506020810190506126ce565b86831015612710578489015161270c601f89168261261f565b8355505b6001600288020188555050505b505050505050565b5f6060820190508181035f83015261273d8186611a2e565b905081810360208301526127518185611a2e565b90506127606040830184611bd5565b949350505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6127c2602683611a00565b91506127cd82612768565b604082019050919050565b5f6020820190508181035f8301526127ef816127b6565b9050919050565b5f61280082611ae0565b915061280b83611ae0565b9250828201905080821115612823576128226120cd565b5b92915050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f612883602283611a00565b915061288e82612829565b604082019050919050565b5f6020820190508181035f8301526128b081612877565b905091905056fea26469706673582212202470ef44a10593a4ea9213cd832d4339546af287aeebae3e6aba2646591f4b8364736f6c63430008190033a26469706673582212201d74653081e8063d500c2e5edca0d1f989dd6688881fccdd1965b3785e2714b564736f6c63430008190033", } // Erc20FactoryABI is the input ABI used to generate the binding from. diff --git a/x/evm/contracts/erc20_factory/ERC20Factory.sol b/x/evm/contracts/erc20_factory/ERC20Factory.sol index 850df4d2..7fe50bb8 100644 --- a/x/evm/contracts/erc20_factory/ERC20Factory.sol +++ b/x/evm/contracts/erc20_factory/ERC20Factory.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; +pragma solidity ^0.8.25; import "../erc20/ERC20.sol"; import "../i_erc20_registry/IERC20Registry.sol"; diff --git a/x/evm/contracts/erc20_registry/ERC20Registry.go b/x/evm/contracts/erc20_registry/ERC20Registry.go index 9d08bb46..c87b304a 100644 --- a/x/evm/contracts/erc20_registry/ERC20Registry.go +++ b/x/evm/contracts/erc20_registry/ERC20Registry.go @@ -32,7 +32,7 @@ var ( // Erc20RegistryMetaData contains all meta data concerning the Erc20Registry contract. var Erc20RegistryMetaData = &bind.MetaData{ ABI: "[]", - Bin: "0x6080604052348015600e575f80fd5b50603e80601a5f395ff3fe60806040525f80fdfea2646970667358221220846a0e596ee4a14eab170a8eb4fb0be6ec6a029c6b3b840ffb95a0852d87fc1964736f6c63430008190033", + Bin: "0x6080604052348015600e575f80fd5b50603e80601a5f395ff3fe60806040525f80fdfea26469706673582212208e9e63a21f5e0d303e95138aacd9c756ad2a30e27628c151b23dd99da75eaf7564736f6c63430008190033", } // Erc20RegistryABI is the input ABI used to generate the binding from. diff --git a/x/evm/contracts/erc20_registry/ERC20Registry.sol b/x/evm/contracts/erc20_registry/ERC20Registry.sol index 962efc45..e80b7e8b 100644 --- a/x/evm/contracts/erc20_registry/ERC20Registry.sol +++ b/x/evm/contracts/erc20_registry/ERC20Registry.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; +pragma solidity ^0.8.25; import "../i_erc20_registry/IERC20Registry.sol"; diff --git a/x/evm/contracts/erc20_wrapper/ERC20Wrapper.go b/x/evm/contracts/erc20_wrapper/ERC20Wrapper.go index a81aa06d..a18f3d95 100644 --- a/x/evm/contracts/erc20_wrapper/ERC20Wrapper.go +++ b/x/evm/contracts/erc20_wrapper/ERC20Wrapper.go @@ -32,7 +32,7 @@ var ( // Erc20WrapperMetaData contains all meta data concerning the Erc20Wrapper contract. var Erc20WrapperMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20Factory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"},{\"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\":\"factory\",\"outputs\":[{\"internalType\":\"contractERC20Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"callback_id\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"ibc_ack\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"callback_id\",\"type\":\"uint64\"}],\"name\":\"ibc_timeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"originToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wrappedAmt\",\"type\":\"uint256\"}],\"name\":\"unwrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"channel\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"receiver\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"}],\"name\":\"wrap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"wrappedTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040525f8060146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550348015610037575f80fd5b50604051612d24380380612d2483398181016040528101906100599190610130565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505061015b565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100ff826100d6565b9050919050565b61010f816100f5565b8114610119575f80fd5b50565b5f8151905061012a81610106565b92915050565b5f60208284031215610145576101446100d2565b5b5f6101528482850161011c565b91505092915050565b608051612baa61017a5f395f81816109a70152610fd00152612baa5ff3fe608060405234801561000f575f80fd5b5060043610610091575f3560e01c80638da5cb5b116100645780638da5cb5b146101195780639a11143214610137578063c45a015514610153578063d5c6b50414610171578063f2fde38b146101a157610091565b806301ffc9a7146100955780630d4f1f9d146100c557806331a503f0146100e15780638cc7104f146100fd575b5f80fd5b6100af60048036038101906100aa91906118d6565b6101bd565b6040516100bc919061191b565b60405180910390f35b6100df60048036038101906100da919061199b565b610226565b005b6100fb60048036038101906100f691906119d9565b6102a7565b005b61011760048036038101906101129190611a91565b610321565b005b610121610569565b60405161012e9190611af0565b60405180910390f35b610151600480360381019061014c9190611c45565b61058c565b005b61015b6109a5565b6040516101689190611d4f565b60405180910390f35b61018b60048036038101906101869190611d68565b6109c9565b6040516101989190611af0565b60405180910390f35b6101bb60048036038101906101b69190611d68565b6109f9565b005b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028b90611e13565b60405180910390fd5b806102a3576102a282610b41565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030c90611e13565b60405180910390fd5b61031e81610b41565b50565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036103ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e690611e7b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166379cc679033846040518363ffffffff1660e01b815260040161042a929190611ea8565b6020604051808303815f875af1158015610446573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046a9190611ee3565b505f6104e48360068773ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104df9190611f44565b610e6f565b90508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85836040518363ffffffff1660e01b8152600401610521929190611ea8565b6020604051808303815f875af115801561053d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105619190611ee3565b505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61059584610f3e565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016105d293929190611f6f565b6020604051808303815f875af11580156105ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106129190611ee3565b505f61068c838673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610661573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106859190611f44565b6006610e6f565b905060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401610725929190611ea8565b5f604051808303815f87803b15801561073c575f80fd5b505af115801561074e573d5f803e3d5ffd5b5050505060015f60148282829054906101000a900467ffffffffffffffff166107779190611fd1565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018281525060025f8060149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201559050505f61091f8760015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848689611278565b905060f173ffffffffffffffffffffffffffffffffffffffff1663d46f64e6826040518263ffffffff1660e01b815260040161095b919061205c565b6020604051808303815f875af1158015610977573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099b9190611ee3565b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4f575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a86575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60025f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f206040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152505090505f60015f836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf090611e7b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166342966c6883604001516040518263ffffffff1660e01b8152600401610d36919061207c565b5f604051808303815f87803b158015610d4d575f80fd5b505af1158015610d5f573d5f803e3d5ffd5b505050505f610de483604001516006856020015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dbb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ddf9190611f44565b610e6f565b9050826020015173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb845f0151836040518363ffffffff1660e01b8152600401610e28929190611ea8565b6020604051808303815f875af1158015610e44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e689190611ee3565b5050505050565b5f8160ff168360ff161115610eb0575f8284610e8b9190612095565b60ff16600a610e9a91906121f8565b90508085610ea8919061226f565b915050610ef5565b8160ff168360ff161015610ef0575f8383610ecb9190612095565b60ff16600a610eda91906121f8565b90508085610ee8919061229f565b915050610ef4565b8390505b5b5f8103610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e9061232a565b60405180910390fd5b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff1660015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611275575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166306ef1a866040518060400160405280600781526020017f57726170706564000000000000000000000000000000000000000000000000008152508473ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa158015611088573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906110b091906123b6565b6040516020016110c1929190612437565b6040516020818303038152906040526040518060400160405280600181526020017f57000000000000000000000000000000000000000000000000000000000000008152508573ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561114e573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061117691906123b6565b604051602001611187929190612437565b60405160208183030381529060405260066040518463ffffffff1660e01b81526004016111b693929190612469565b6020604051808303815f875af11580156111d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f691906124c0565b90508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b50565b60608560f173ffffffffffffffffffffffffffffffffffffffff166381cf0f6a876040518263ffffffff1660e01b81526004016112b59190611af0565b5f604051808303815f875af11580156112d0573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906112f891906123b6565b611301866113ea565b60f173ffffffffffffffffffffffffffffffffffffffff16636af32a55306040518263ffffffff1660e01b815260040161133b9190611af0565b5f604051808303815f875af1158015611356573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061137e91906123b6565b85611388886113ea565b6113b05f60149054906101000a900467ffffffffffffffff1667ffffffffffffffff166113ea565b6113b9306114b4565b6040516020016113d098979695949392919061298f565b604051602081830303815290604052905095945050505050565b60605f60016113f8846114e1565b0190505f8167ffffffffffffffff81111561141657611415611b21565b5b6040519080825280601f01601f1916602001820160405280156114485781602001600182028036833780820191505090505b5090505f82602001820190505b6001156114a9578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161149e5761149d612242565b5b0494505f8503611455575b819350505050919050565b60606114da8273ffffffffffffffffffffffffffffffffffffffff16601460ff16611632565b9050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061153d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161153357611532612242565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061157a576d04ee2d6d415b85acef810000000083816115705761156f612242565b5b0492506020810190505b662386f26fc1000083106115a957662386f26fc10000838161159f5761159e612242565b5b0492506010810190505b6305f5e10083106115d2576305f5e10083816115c8576115c7612242565b5b0492506008810190505b61271083106115f75761271083816115ed576115ec612242565b5b0492506004810190505b6064831061161a57606483816116105761160f612242565b5b0492506002810190505b600a8310611629576001810190505b80915050919050565b60605f8390505f6002846002611648919061229f565b6116529190612ac6565b67ffffffffffffffff81111561166b5761166a611b21565b5b6040519080825280601f01601f19166020018201604052801561169d5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106116d4576116d3612af9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061173757611736612af9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6001856002611775919061229f565b61177f9190612ac6565b90505b600181111561181e577f3031323334353637383961626364656600000000000000000000000000000000600f8416601081106117c1576117c0612af9565b5b1a60f81b8282815181106117d8576117d7612af9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600483901c92508061181790612b26565b9050611782565b505f82146118655784846040517fe22e27eb00000000000000000000000000000000000000000000000000000000815260040161185c929190612b4d565b60405180910390fd5b809250505092915050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118b581611881565b81146118bf575f80fd5b50565b5f813590506118d0816118ac565b92915050565b5f602082840312156118eb576118ea611879565b5b5f6118f8848285016118c2565b91505092915050565b5f8115159050919050565b61191581611901565b82525050565b5f60208201905061192e5f83018461190c565b92915050565b5f67ffffffffffffffff82169050919050565b61195081611934565b811461195a575f80fd5b50565b5f8135905061196b81611947565b92915050565b61197a81611901565b8114611984575f80fd5b50565b5f8135905061199581611971565b92915050565b5f80604083850312156119b1576119b0611879565b5b5f6119be8582860161195d565b92505060206119cf85828601611987565b9150509250929050565b5f602082840312156119ee576119ed611879565b5b5f6119fb8482850161195d565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611a2d82611a04565b9050919050565b611a3d81611a23565b8114611a47575f80fd5b50565b5f81359050611a5881611a34565b92915050565b5f819050919050565b611a7081611a5e565b8114611a7a575f80fd5b50565b5f81359050611a8b81611a67565b92915050565b5f805f60608486031215611aa857611aa7611879565b5b5f611ab586828701611a4a565b9350506020611ac686828701611a4a565b9250506040611ad786828701611a7d565b9150509250925092565b611aea81611a23565b82525050565b5f602082019050611b035f830184611ae1565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b5782611b11565b810181811067ffffffffffffffff82111715611b7657611b75611b21565b5b80604052505050565b5f611b88611870565b9050611b948282611b4e565b919050565b5f67ffffffffffffffff821115611bb357611bb2611b21565b5b611bbc82611b11565b9050602081019050919050565b828183375f83830152505050565b5f611be9611be484611b99565b611b7f565b905082815260208101848484011115611c0557611c04611b0d565b5b611c10848285611bc9565b509392505050565b5f82601f830112611c2c57611c2b611b09565b5b8135611c3c848260208601611bd7565b91505092915050565b5f805f805f60a08688031215611c5e57611c5d611879565b5b5f86013567ffffffffffffffff811115611c7b57611c7a61187d565b5b611c8788828901611c18565b9550506020611c9888828901611a4a565b945050604086013567ffffffffffffffff811115611cb957611cb861187d565b5b611cc588828901611c18565b9350506060611cd688828901611a7d565b9250506080611ce788828901611a7d565b9150509295509295909350565b5f819050919050565b5f611d17611d12611d0d84611a04565b611cf4565b611a04565b9050919050565b5f611d2882611cfd565b9050919050565b5f611d3982611d1e565b9050919050565b611d4981611d2f565b82525050565b5f602082019050611d625f830184611d40565b92915050565b5f60208284031215611d7d57611d7c611879565b5b5f611d8a84828501611a4a565b91505092915050565b5f82825260208201905092915050565b7f6f6e6c792074686520636f6e747261637420697473656c662063616e2063616c5f8201527f6c20746869732066756e6374696f6e0000000000000000000000000000000000602082015250565b5f611dfd602f83611d93565b9150611e0882611da3565b604082019050919050565b5f6020820190508181035f830152611e2a81611df1565b9050919050565b7f7772617070656420746f6b656e20646f65736e277420657869737400000000005f82015250565b5f611e65601b83611d93565b9150611e7082611e31565b602082019050919050565b5f6020820190508181035f830152611e9281611e59565b9050919050565b611ea281611a5e565b82525050565b5f604082019050611ebb5f830185611ae1565b611ec86020830184611e99565b9392505050565b5f81519050611edd81611971565b92915050565b5f60208284031215611ef857611ef7611879565b5b5f611f0584828501611ecf565b91505092915050565b5f60ff82169050919050565b611f2381611f0e565b8114611f2d575f80fd5b50565b5f81519050611f3e81611f1a565b92915050565b5f60208284031215611f5957611f58611879565b5b5f611f6684828501611f30565b91505092915050565b5f606082019050611f825f830186611ae1565b611f8f6020830185611ae1565b611f9c6040830184611e99565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611fdb82611934565b9150611fe683611934565b9250828201905067ffffffffffffffff81111561200657612005611fa4565b5b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f61202e8261200c565b6120388185611d93565b9350612048818560208601612016565b61205181611b11565b840191505092915050565b5f6020820190508181035f8301526120748184612024565b905092915050565b5f60208201905061208f5f830184611e99565b92915050565b5f61209f82611f0e565b91506120aa83611f0e565b9250828203905060ff8111156120c3576120c2611fa4565b5b92915050565b5f8160011c9050919050565b5f808291508390505b600185111561211e578086048111156120fa576120f9611fa4565b5b60018516156121095780820291505b8081029050612117856120c9565b94506120de565b94509492505050565b5f8261213657600190506121f1565b81612143575f90506121f1565b8160018114612159576002811461216357612192565b60019150506121f1565b60ff84111561217557612174611fa4565b5b8360020a91508482111561218c5761218b611fa4565b5b506121f1565b5060208310610133831016604e8410600b84101617156121c75782820a9050838111156121c2576121c1611fa4565b5b6121f1565b6121d484848460016120d5565b925090508184048111156121eb576121ea611fa4565b5b81810290505b9392505050565b5f61220282611a5e565b915061220d83611a5e565b925061223a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612127565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61227982611a5e565b915061228483611a5e565b92508261229457612293612242565b5b828204905092915050565b5f6122a982611a5e565b91506122b483611a5e565b92508282026122c281611a5e565b915082820484148315176122d9576122d8611fa4565b5b5092915050565b7f636f6e76657274656420616d6f756e74206973207a65726f00000000000000005f82015250565b5f612314601883611d93565b915061231f826122e0565b602082019050919050565b5f6020820190508181035f83015261234181612308565b9050919050565b5f61235a61235584611b99565b611b7f565b90508281526020810184848401111561237657612375611b0d565b5b612381848285612016565b509392505050565b5f82601f83011261239d5761239c611b09565b5b81516123ad848260208601612348565b91505092915050565b5f602082840312156123cb576123ca611879565b5b5f82015167ffffffffffffffff8111156123e8576123e761187d565b5b6123f484828501612389565b91505092915050565b5f81905092915050565b5f6124118261200c565b61241b81856123fd565b935061242b818560208601612016565b80840191505092915050565b5f6124428285612407565b915061244e8284612407565b91508190509392505050565b61246381611f0e565b82525050565b5f6060820190508181035f8301526124818186612024565b905081810360208301526124958185612024565b90506124a4604083018461245a565b949350505050565b5f815190506124ba81611a34565b92915050565b5f602082840312156124d5576124d4611879565b5b5f6124e2848285016124ac565b91505092915050565b7f7b224074797065223a20222f6962632e6170706c69636174696f6e732e7472615f8201527f6e736665722e76312e4d73675472616e73666572222c00000000000000000000602082015250565b5f6125456036836123fd565b9150612550826124eb565b603682019050919050565b7f22736f757263655f706f7274223a20227472616e73666572222c0000000000005f82015250565b5f61258f601a836123fd565b915061259a8261255b565b601a82019050919050565b7f22736f757263655f6368616e6e656c223a2022000000000000000000000000005f82015250565b5f6125d96013836123fd565b91506125e4826125a5565b601382019050919050565b7f222c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f6126236002836123fd565b915061262e826125ef565b600282019050919050565b7f22746f6b656e223a207b202264656e6f6d223a202200000000000000000000005f82015250565b5f61266d6015836123fd565b915061267882612639565b601582019050919050565b7f22616d6f756e74223a20220000000000000000000000000000000000000000005f82015250565b5f6126b7600b836123fd565b91506126c282612683565b600b82019050919050565b7f227d2c00000000000000000000000000000000000000000000000000000000005f82015250565b5f6127016003836123fd565b915061270c826126cd565b600382019050919050565b7f2273656e646572223a20220000000000000000000000000000000000000000005f82015250565b5f61274b600b836123fd565b915061275682612717565b600b82019050919050565b7f227265636569766572223a2022000000000000000000000000000000000000005f82015250565b5f612795600d836123fd565b91506127a082612761565b600d82019050919050565b7f2274696d656f75745f686569676874223a207b227265766973696f6e5f6e756d5f8201527f626572223a202230222c227265766973696f6e5f686569676874223a2022302260208201527f7d2c000000000000000000000000000000000000000000000000000000000000604082015250565b5f61282b6042836123fd565b9150612836826127ab565b604282019050919050565b7f2274696d656f75745f74696d657374616d70223a2022000000000000000000005f82015250565b5f6128756016836123fd565b915061288082612841565b601682019050919050565b7f226d656d6f223a20227b5c2265766d5c223a207b5c226173796e635f63616c6c5f8201527f6261636b5c223a207b5c2269645c223a20000000000000000000000000000000602082015250565b5f6128e56031836123fd565b91506128f08261288b565b603182019050919050565b7f2c5c22636f6e74726163745f616464726573735c223a5c2200000000000000005f82015250565b5f61292f6018836123fd565b915061293a826128fb565b601882019050919050565b7f5c227d7d7d227d000000000000000000000000000000000000000000000000005f82015250565b5f6129796007836123fd565b915061298482612945565b600782019050919050565b5f61299982612539565b91506129a482612583565b91506129af826125cd565b91506129bb828b612407565b91506129c682612617565b91506129d182612661565b91506129dd828a612407565b91506129e882612617565b91506129f3826126ab565b91506129ff8289612407565b9150612a0a826126f5565b9150612a158261273f565b9150612a218288612407565b9150612a2c82612617565b9150612a3782612789565b9150612a438287612407565b9150612a4e82612617565b9150612a598261281f565b9150612a6482612869565b9150612a708286612407565b9150612a7b82612617565b9150612a86826128d9565b9150612a928285612407565b9150612a9d82612923565b9150612aa98284612407565b9150612ab48261296d565b91508190509998505050505050505050565b5f612ad082611a5e565b9150612adb83611a5e565b9250828201905080821115612af357612af2611fa4565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612b3082611a5e565b91505f8203612b4257612b41611fa4565b5b600182039050919050565b5f604082019050612b605f830185611e99565b612b6d6020830184611e99565b939250505056fea2646970667358221220364e498e68d0eb78cd05cfe2ebc4e77e54c00c19ef88f578ee41d1574270a39464736f6c63430008190033", + Bin: "0x60a06040525f8060146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550348015610037575f80fd5b50604051612d24380380612d2483398181016040528101906100599190610130565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505061015b565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100ff826100d6565b9050919050565b61010f816100f5565b8114610119575f80fd5b50565b5f8151905061012a81610106565b92915050565b5f60208284031215610145576101446100d2565b5b5f6101528482850161011c565b91505092915050565b608051612baa61017a5f395f81816109a70152610fd00152612baa5ff3fe608060405234801561000f575f80fd5b5060043610610091575f3560e01c80638da5cb5b116100645780638da5cb5b146101195780639a11143214610137578063c45a015514610153578063d5c6b50414610171578063f2fde38b146101a157610091565b806301ffc9a7146100955780630d4f1f9d146100c557806331a503f0146100e15780638cc7104f146100fd575b5f80fd5b6100af60048036038101906100aa91906118d6565b6101bd565b6040516100bc919061191b565b60405180910390f35b6100df60048036038101906100da919061199b565b610226565b005b6100fb60048036038101906100f691906119d9565b6102a7565b005b61011760048036038101906101129190611a91565b610321565b005b610121610569565b60405161012e9190611af0565b60405180910390f35b610151600480360381019061014c9190611c45565b61058c565b005b61015b6109a5565b6040516101689190611d4f565b60405180910390f35b61018b60048036038101906101869190611d68565b6109c9565b6040516101989190611af0565b60405180910390f35b6101bb60048036038101906101b69190611d68565b6109f9565b005b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161028b90611e13565b60405180910390fd5b806102a3576102a282610b41565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030c90611e13565b60405180910390fd5b61031e81610b41565b50565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036103ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e690611e7b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166379cc679033846040518363ffffffff1660e01b815260040161042a929190611ea8565b6020604051808303815f875af1158015610446573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046a9190611ee3565b505f6104e48360068773ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104df9190611f44565b610e6f565b90508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85836040518363ffffffff1660e01b8152600401610521929190611ea8565b6020604051808303815f875af115801561053d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105619190611ee3565b505050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61059584610f3e565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016105d293929190611f6f565b6020604051808303815f875af11580156105ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106129190611ee3565b505f61068c838673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610661573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106859190611f44565b6006610e6f565b905060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401610725929190611ea8565b5f604051808303815f87803b15801561073c575f80fd5b505af115801561074e573d5f803e3d5ffd5b5050505060015f60148282829054906101000a900467ffffffffffffffff166107779190611fd1565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018281525060025f8060149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201559050505f61091f8760015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848689611278565b905060f173ffffffffffffffffffffffffffffffffffffffff1663d46f64e6826040518263ffffffff1660e01b815260040161095b919061205c565b6020604051808303815f875af1158015610977573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061099b9190611ee3565b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4f575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a86575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60025f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f206040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152505090505f60015f836020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf090611e7b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166342966c6883604001516040518263ffffffff1660e01b8152600401610d36919061207c565b5f604051808303815f87803b158015610d4d575f80fd5b505af1158015610d5f573d5f803e3d5ffd5b505050505f610de483604001516006856020015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dbb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ddf9190611f44565b610e6f565b9050826020015173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb845f0151836040518363ffffffff1660e01b8152600401610e28929190611ea8565b6020604051808303815f875af1158015610e44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e689190611ee3565b5050505050565b5f8160ff168360ff161115610eb0575f8284610e8b9190612095565b60ff16600a610e9a91906121f8565b90508085610ea8919061226f565b915050610ef5565b8160ff168360ff161015610ef0575f8383610ecb9190612095565b60ff16600a610eda91906121f8565b90508085610ee8919061229f565b915050610ef4565b8390505b5b5f8103610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e9061232a565b60405180910390fd5b9392505050565b5f73ffffffffffffffffffffffffffffffffffffffff1660015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611275575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166306ef1a866040518060400160405280600781526020017f57726170706564000000000000000000000000000000000000000000000000008152508473ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa158015611088573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906110b091906123b6565b6040516020016110c1929190612437565b6040516020818303038152906040526040518060400160405280600181526020017f57000000000000000000000000000000000000000000000000000000000000008152508573ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa15801561114e573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061117691906123b6565b604051602001611187929190612437565b60405160208183030381529060405260066040518463ffffffff1660e01b81526004016111b693929190612469565b6020604051808303815f875af11580156111d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f691906124c0565b90508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b50565b60608560f173ffffffffffffffffffffffffffffffffffffffff166381cf0f6a876040518263ffffffff1660e01b81526004016112b59190611af0565b5f604051808303815f875af11580156112d0573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906112f891906123b6565b611301866113ea565b60f173ffffffffffffffffffffffffffffffffffffffff16636af32a55306040518263ffffffff1660e01b815260040161133b9190611af0565b5f604051808303815f875af1158015611356573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061137e91906123b6565b85611388886113ea565b6113b05f60149054906101000a900467ffffffffffffffff1667ffffffffffffffff166113ea565b6113b9306114b4565b6040516020016113d098979695949392919061298f565b604051602081830303815290604052905095945050505050565b60605f60016113f8846114e1565b0190505f8167ffffffffffffffff81111561141657611415611b21565b5b6040519080825280601f01601f1916602001820160405280156114485781602001600182028036833780820191505090505b5090505f82602001820190505b6001156114a9578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161149e5761149d612242565b5b0494505f8503611455575b819350505050919050565b60606114da8273ffffffffffffffffffffffffffffffffffffffff16601460ff16611632565b9050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061153d577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161153357611532612242565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061157a576d04ee2d6d415b85acef810000000083816115705761156f612242565b5b0492506020810190505b662386f26fc1000083106115a957662386f26fc10000838161159f5761159e612242565b5b0492506010810190505b6305f5e10083106115d2576305f5e10083816115c8576115c7612242565b5b0492506008810190505b61271083106115f75761271083816115ed576115ec612242565b5b0492506004810190505b6064831061161a57606483816116105761160f612242565b5b0492506002810190505b600a8310611629576001810190505b80915050919050565b60605f8390505f6002846002611648919061229f565b6116529190612ac6565b67ffffffffffffffff81111561166b5761166a611b21565b5b6040519080825280601f01601f19166020018201604052801561169d5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f815181106116d4576116d3612af9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061173757611736612af9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6001856002611775919061229f565b61177f9190612ac6565b90505b600181111561181e577f3031323334353637383961626364656600000000000000000000000000000000600f8416601081106117c1576117c0612af9565b5b1a60f81b8282815181106117d8576117d7612af9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600483901c92508061181790612b26565b9050611782565b505f82146118655784846040517fe22e27eb00000000000000000000000000000000000000000000000000000000815260040161185c929190612b4d565b60405180910390fd5b809250505092915050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118b581611881565b81146118bf575f80fd5b50565b5f813590506118d0816118ac565b92915050565b5f602082840312156118eb576118ea611879565b5b5f6118f8848285016118c2565b91505092915050565b5f8115159050919050565b61191581611901565b82525050565b5f60208201905061192e5f83018461190c565b92915050565b5f67ffffffffffffffff82169050919050565b61195081611934565b811461195a575f80fd5b50565b5f8135905061196b81611947565b92915050565b61197a81611901565b8114611984575f80fd5b50565b5f8135905061199581611971565b92915050565b5f80604083850312156119b1576119b0611879565b5b5f6119be8582860161195d565b92505060206119cf85828601611987565b9150509250929050565b5f602082840312156119ee576119ed611879565b5b5f6119fb8482850161195d565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611a2d82611a04565b9050919050565b611a3d81611a23565b8114611a47575f80fd5b50565b5f81359050611a5881611a34565b92915050565b5f819050919050565b611a7081611a5e565b8114611a7a575f80fd5b50565b5f81359050611a8b81611a67565b92915050565b5f805f60608486031215611aa857611aa7611879565b5b5f611ab586828701611a4a565b9350506020611ac686828701611a4a565b9250506040611ad786828701611a7d565b9150509250925092565b611aea81611a23565b82525050565b5f602082019050611b035f830184611ae1565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b5782611b11565b810181811067ffffffffffffffff82111715611b7657611b75611b21565b5b80604052505050565b5f611b88611870565b9050611b948282611b4e565b919050565b5f67ffffffffffffffff821115611bb357611bb2611b21565b5b611bbc82611b11565b9050602081019050919050565b828183375f83830152505050565b5f611be9611be484611b99565b611b7f565b905082815260208101848484011115611c0557611c04611b0d565b5b611c10848285611bc9565b509392505050565b5f82601f830112611c2c57611c2b611b09565b5b8135611c3c848260208601611bd7565b91505092915050565b5f805f805f60a08688031215611c5e57611c5d611879565b5b5f86013567ffffffffffffffff811115611c7b57611c7a61187d565b5b611c8788828901611c18565b9550506020611c9888828901611a4a565b945050604086013567ffffffffffffffff811115611cb957611cb861187d565b5b611cc588828901611c18565b9350506060611cd688828901611a7d565b9250506080611ce788828901611a7d565b9150509295509295909350565b5f819050919050565b5f611d17611d12611d0d84611a04565b611cf4565b611a04565b9050919050565b5f611d2882611cfd565b9050919050565b5f611d3982611d1e565b9050919050565b611d4981611d2f565b82525050565b5f602082019050611d625f830184611d40565b92915050565b5f60208284031215611d7d57611d7c611879565b5b5f611d8a84828501611a4a565b91505092915050565b5f82825260208201905092915050565b7f6f6e6c792074686520636f6e747261637420697473656c662063616e2063616c5f8201527f6c20746869732066756e6374696f6e0000000000000000000000000000000000602082015250565b5f611dfd602f83611d93565b9150611e0882611da3565b604082019050919050565b5f6020820190508181035f830152611e2a81611df1565b9050919050565b7f7772617070656420746f6b656e20646f65736e277420657869737400000000005f82015250565b5f611e65601b83611d93565b9150611e7082611e31565b602082019050919050565b5f6020820190508181035f830152611e9281611e59565b9050919050565b611ea281611a5e565b82525050565b5f604082019050611ebb5f830185611ae1565b611ec86020830184611e99565b9392505050565b5f81519050611edd81611971565b92915050565b5f60208284031215611ef857611ef7611879565b5b5f611f0584828501611ecf565b91505092915050565b5f60ff82169050919050565b611f2381611f0e565b8114611f2d575f80fd5b50565b5f81519050611f3e81611f1a565b92915050565b5f60208284031215611f5957611f58611879565b5b5f611f6684828501611f30565b91505092915050565b5f606082019050611f825f830186611ae1565b611f8f6020830185611ae1565b611f9c6040830184611e99565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611fdb82611934565b9150611fe683611934565b9250828201905067ffffffffffffffff81111561200657612005611fa4565b5b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f61202e8261200c565b6120388185611d93565b9350612048818560208601612016565b61205181611b11565b840191505092915050565b5f6020820190508181035f8301526120748184612024565b905092915050565b5f60208201905061208f5f830184611e99565b92915050565b5f61209f82611f0e565b91506120aa83611f0e565b9250828203905060ff8111156120c3576120c2611fa4565b5b92915050565b5f8160011c9050919050565b5f808291508390505b600185111561211e578086048111156120fa576120f9611fa4565b5b60018516156121095780820291505b8081029050612117856120c9565b94506120de565b94509492505050565b5f8261213657600190506121f1565b81612143575f90506121f1565b8160018114612159576002811461216357612192565b60019150506121f1565b60ff84111561217557612174611fa4565b5b8360020a91508482111561218c5761218b611fa4565b5b506121f1565b5060208310610133831016604e8410600b84101617156121c75782820a9050838111156121c2576121c1611fa4565b5b6121f1565b6121d484848460016120d5565b925090508184048111156121eb576121ea611fa4565b5b81810290505b9392505050565b5f61220282611a5e565b915061220d83611a5e565b925061223a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612127565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61227982611a5e565b915061228483611a5e565b92508261229457612293612242565b5b828204905092915050565b5f6122a982611a5e565b91506122b483611a5e565b92508282026122c281611a5e565b915082820484148315176122d9576122d8611fa4565b5b5092915050565b7f636f6e76657274656420616d6f756e74206973207a65726f00000000000000005f82015250565b5f612314601883611d93565b915061231f826122e0565b602082019050919050565b5f6020820190508181035f83015261234181612308565b9050919050565b5f61235a61235584611b99565b611b7f565b90508281526020810184848401111561237657612375611b0d565b5b612381848285612016565b509392505050565b5f82601f83011261239d5761239c611b09565b5b81516123ad848260208601612348565b91505092915050565b5f602082840312156123cb576123ca611879565b5b5f82015167ffffffffffffffff8111156123e8576123e761187d565b5b6123f484828501612389565b91505092915050565b5f81905092915050565b5f6124118261200c565b61241b81856123fd565b935061242b818560208601612016565b80840191505092915050565b5f6124428285612407565b915061244e8284612407565b91508190509392505050565b61246381611f0e565b82525050565b5f6060820190508181035f8301526124818186612024565b905081810360208301526124958185612024565b90506124a4604083018461245a565b949350505050565b5f815190506124ba81611a34565b92915050565b5f602082840312156124d5576124d4611879565b5b5f6124e2848285016124ac565b91505092915050565b7f7b224074797065223a20222f6962632e6170706c69636174696f6e732e7472615f8201527f6e736665722e76312e4d73675472616e73666572222c00000000000000000000602082015250565b5f6125456036836123fd565b9150612550826124eb565b603682019050919050565b7f22736f757263655f706f7274223a20227472616e73666572222c0000000000005f82015250565b5f61258f601a836123fd565b915061259a8261255b565b601a82019050919050565b7f22736f757263655f6368616e6e656c223a2022000000000000000000000000005f82015250565b5f6125d96013836123fd565b91506125e4826125a5565b601382019050919050565b7f222c0000000000000000000000000000000000000000000000000000000000005f82015250565b5f6126236002836123fd565b915061262e826125ef565b600282019050919050565b7f22746f6b656e223a207b202264656e6f6d223a202200000000000000000000005f82015250565b5f61266d6015836123fd565b915061267882612639565b601582019050919050565b7f22616d6f756e74223a20220000000000000000000000000000000000000000005f82015250565b5f6126b7600b836123fd565b91506126c282612683565b600b82019050919050565b7f227d2c00000000000000000000000000000000000000000000000000000000005f82015250565b5f6127016003836123fd565b915061270c826126cd565b600382019050919050565b7f2273656e646572223a20220000000000000000000000000000000000000000005f82015250565b5f61274b600b836123fd565b915061275682612717565b600b82019050919050565b7f227265636569766572223a2022000000000000000000000000000000000000005f82015250565b5f612795600d836123fd565b91506127a082612761565b600d82019050919050565b7f2274696d656f75745f686569676874223a207b227265766973696f6e5f6e756d5f8201527f626572223a202230222c227265766973696f6e5f686569676874223a2022302260208201527f7d2c000000000000000000000000000000000000000000000000000000000000604082015250565b5f61282b6042836123fd565b9150612836826127ab565b604282019050919050565b7f2274696d656f75745f74696d657374616d70223a2022000000000000000000005f82015250565b5f6128756016836123fd565b915061288082612841565b601682019050919050565b7f226d656d6f223a20227b5c2265766d5c223a207b5c226173796e635f63616c6c5f8201527f6261636b5c223a207b5c2269645c223a20000000000000000000000000000000602082015250565b5f6128e56031836123fd565b91506128f08261288b565b603182019050919050565b7f2c5c22636f6e74726163745f616464726573735c223a5c2200000000000000005f82015250565b5f61292f6018836123fd565b915061293a826128fb565b601882019050919050565b7f5c227d7d7d227d000000000000000000000000000000000000000000000000005f82015250565b5f6129796007836123fd565b915061298482612945565b600782019050919050565b5f61299982612539565b91506129a482612583565b91506129af826125cd565b91506129bb828b612407565b91506129c682612617565b91506129d182612661565b91506129dd828a612407565b91506129e882612617565b91506129f3826126ab565b91506129ff8289612407565b9150612a0a826126f5565b9150612a158261273f565b9150612a218288612407565b9150612a2c82612617565b9150612a3782612789565b9150612a438287612407565b9150612a4e82612617565b9150612a598261281f565b9150612a6482612869565b9150612a708286612407565b9150612a7b82612617565b9150612a86826128d9565b9150612a928285612407565b9150612a9d82612923565b9150612aa98284612407565b9150612ab48261296d565b91508190509998505050505050505050565b5f612ad082611a5e565b9150612adb83611a5e565b9250828201905080821115612af357612af2611fa4565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612b3082611a5e565b91505f8203612b4257612b41611fa4565b5b600182039050919050565b5f604082019050612b605f830185611e99565b612b6d6020830184611e99565b939250505056fea2646970667358221220d95a9dd66d4432f3d2051948acfdc88475473bfacb638290d7dadca8c3cbe87364736f6c63430008190033", } // Erc20WrapperABI is the input ABI used to generate the binding from. diff --git a/x/evm/contracts/erc20_wrapper/ERC20Wrapper.sol b/x/evm/contracts/erc20_wrapper/ERC20Wrapper.sol index 34f6c8ce..c8cab570 100644 --- a/x/evm/contracts/erc20_wrapper/ERC20Wrapper.sol +++ b/x/evm/contracts/erc20_wrapper/ERC20Wrapper.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; +pragma solidity ^0.8.25; import "../strings/Strings.sol"; import "../i_cosmos/ICosmos.sol"; diff --git a/x/evm/contracts/i_cosmos/ICosmos.sol b/x/evm/contracts/i_cosmos/ICosmos.sol index 8de077bc..99cad161 100644 --- a/x/evm/contracts/i_cosmos/ICosmos.sol +++ b/x/evm/contracts/i_cosmos/ICosmos.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; +pragma solidity ^0.8.25; /// @dev The ICosmos contract's address. address constant COSMOS_ADDRESS = 0x00000000000000000000000000000000000000f1; diff --git a/x/evm/contracts/i_erc20/IERC20.sol b/x/evm/contracts/i_erc20/IERC20.sol index 89087c83..e7632978 100644 --- a/x/evm/contracts/i_erc20/IERC20.sol +++ b/x/evm/contracts/i_erc20/IERC20.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; +pragma solidity ^0.8.25; import {IERC165} from "../i_erc165/IERC165.sol"; diff --git a/x/evm/contracts/i_erc20_registry/IERC20Registry.sol b/x/evm/contracts/i_erc20_registry/IERC20Registry.sol index d4fcf26d..ce23d863 100644 --- a/x/evm/contracts/i_erc20_registry/IERC20Registry.sol +++ b/x/evm/contracts/i_erc20_registry/IERC20Registry.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; +pragma solidity ^0.8.25; /// @dev The IERC20Registry contract's address. address constant ERC20_REGISTRY_ADDRESS = 0x00000000000000000000000000000000000000F2; diff --git a/x/evm/contracts/i_ibc_async_callback/IIBCAsyncCallback.sol b/x/evm/contracts/i_ibc_async_callback/IIBCAsyncCallback.sol index 1571ff7b..aa5ea7a7 100644 --- a/x/evm/contracts/i_ibc_async_callback/IIBCAsyncCallback.sol +++ b/x/evm/contracts/i_ibc_async_callback/IIBCAsyncCallback.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; +pragma solidity ^0.8.25; interface IIBCAsyncCallback { function ibc_ack(uint64 callback_id, bool success) external; diff --git a/x/evm/contracts/ics721_erc721/ICS721ERC721.go b/x/evm/contracts/ics721_erc721/ICS721ERC721.go index ef4c7a98..50a711f4 100644 --- a/x/evm/contracts/ics721_erc721/ICS721ERC721.go +++ b/x/evm/contracts/ics721_erc721/ICS721ERC721.go @@ -32,7 +32,7 @@ var ( // Ics721Erc721MetaData contains all meta data concerning the Ics721Erc721 contract. var Ics721Erc721MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"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\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenUri\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_tokenOriginId\",\"type\":\"string\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenUri\",\"type\":\"string\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenOriginId\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051612902380380612902833981810160405281019061003191906101e8565b8181815f9081610041919061046b565b508060019081610051919061046b565b5050503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505061053a565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6100fa826100b4565b810181811067ffffffffffffffff82111715610119576101186100c4565b5b80604052505050565b5f61012b61009b565b905061013782826100f1565b919050565b5f67ffffffffffffffff821115610156576101556100c4565b5b61015f826100b4565b9050602081019050919050565b8281835e5f83830152505050565b5f61018c6101878461013c565b610122565b9050828152602081018484840111156101a8576101a76100b0565b5b6101b384828561016c565b509392505050565b5f82601f8301126101cf576101ce6100ac565b5b81516101df84826020860161017a565b91505092915050565b5f80604083850312156101fe576101fd6100a4565b5b5f83015167ffffffffffffffff81111561021b5761021a6100a8565b5b610227858286016101bb565b925050602083015167ffffffffffffffff811115610248576102476100a8565b5b610254858286016101bb565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806102ac57607f821691505b6020821081036102bf576102be610268565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826102e6565b61032b86836102e6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61036f61036a61036584610343565b61034c565b610343565b9050919050565b5f819050919050565b61038883610355565b61039c61039482610376565b8484546102f2565b825550505050565b5f90565b6103b06103a4565b6103bb81848461037f565b505050565b5b818110156103de576103d35f826103a8565b6001810190506103c1565b5050565b601f821115610423576103f4816102c5565b6103fd846102d7565b8101602085101561040c578190505b610420610418856102d7565b8301826103c0565b50505b505050565b5f82821c905092915050565b5f6104435f1984600802610428565b1980831691505092915050565b5f61045b8383610434565b9150826002028217905092915050565b6104748261025e565b67ffffffffffffffff81111561048d5761048c6100c4565b5b6104978254610295565b6104a28282856103e2565b5f60209050601f8311600181146104d3575f84156104c1578287015190505b6104cb8582610450565b865550610532565b601f1984166104e1866102c5565b5f5b82811015610508578489015182556001820191506020850194506020810190506104e3565b868310156105255784890151610521601f891682610434565b8355505b6001600288020188555050505b505050505050565b6123bb806105475f395ff3fe608060405234801561000f575f80fd5b506004361061011f575f3560e01c80636c8a5e77116100ab578063b88d4fde1161006f578063b88d4fde14610315578063c87b56dd14610331578063d3fc986414610361578063e985e9c51461037d578063f2fde38b146103ad5761011f565b80636c8a5e771461025d57806370a082311461028d5780638da5cb5b146102bd57806395d89b41146102db578063a22cb465146102f95761011f565b806323b872dd116100f257806323b872dd146101bd5780632fb102cf146101d957806342842e0e146101f557806342966c68146102115780636352211e1461022d5761011f565b806301ffc9a71461012357806306fdde0314610153578063081812fc14610171578063095ea7b3146101a1575b5f80fd5b61013d600480360381019061013891906118de565b6103c9565b60405161014a9190611923565b60405180910390f35b61015b6104aa565b60405161016891906119ac565b60405180910390f35b61018b600480360381019061018691906119ff565b610539565b6040516101989190611a69565b60405180910390f35b6101bb60048036038101906101b69190611aac565b610554565b005b6101d760048036038101906101d29190611aea565b61056a565b005b6101f360048036038101906101ee9190611c66565b610669565b005b61020f600480360381019061020a9190611aea565b61070f565b005b61022b600480360381019061022691906119ff565b61072e565b005b610247600480360381019061024291906119ff565b61079c565b6040516102549190611a69565b60405180910390f35b610277600480360381019061027291906119ff565b6107ad565b60405161028491906119ac565b60405180910390f35b6102a760048036038101906102a29190611d02565b61084e565b6040516102b49190611d3c565b60405180910390f35b6102c5610904565b6040516102d29190611a69565b60405180910390f35b6102e3610929565b6040516102f091906119ac565b60405180910390f35b610313600480360381019061030e9190611d7f565b6109b9565b005b61032f600480360381019061032a9190611e5b565b6109cf565b005b61034b600480360381019061034691906119ff565b6109f4565b60405161035891906119ac565b60405180910390f35b61037b60048036038101906103769190611edb565b610a95565b005b61039760048036038101906103929190611f47565b610b0c565b6040516103a49190611923565b60405180910390f35b6103c760048036038101906103c29190611d02565b610b9a565b005b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061049357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104a357506104a282610ce7565b5b9050919050565b60605f80546104b890611fb2565b80601f01602080910402602001604051908101604052809291908181526020018280546104e490611fb2565b801561052f5780601f106105065761010080835404028352916020019161052f565b820191905f5260205f20905b81548152906001019060200180831161051257829003601f168201915b5050505050905090565b5f61054382610d50565b5061054d82610dd6565b9050919050565b6105668282610561610e0f565b610e16565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105da575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016105d19190611a69565b60405180910390fd5b5f6105ed83836105e8610e0f565b610e28565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610663578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161065a93929190611fe2565b60405180910390fd5b50505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106c1575f80fd5b6106cb8484611033565b8160075f8581526020019081526020015f2090816106e991906121b4565b508060085f8581526020019081526020015f20908161070891906121b4565b5050505050565b61072983838360405180602001604052805f8152506109cf565b505050565b5f61073882610d50565b9050610745813384611050565b61078f57610751610e0f565b826040517f177e802f000000000000000000000000000000000000000000000000000000008152600401610786929190612283565b60405180910390fd5b61079882611110565b5050565b5f6107a682610d50565b9050919050565b606060085f8381526020019081526020015f2080546107cb90611fb2565b80601f01602080910402602001604051908101604052809291908181526020018280546107f790611fb2565b80156108425780601f1061081957610100808354040283529160200191610842565b820191905f5260205f20905b81548152906001019060200180831161082557829003601f168201915b50505050509050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108bf575f6040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016108b69190611a69565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606001805461093890611fb2565b80601f016020809104026020016040519081016040528092919081815260200182805461096490611fb2565b80156109af5780601f10610986576101008083540402835291602001916109af565b820191905f5260205f20905b81548152906001019060200180831161099257829003601f168201915b5050505050905090565b6109cb6109c4610e0f565b8383611192565b5050565b6109da84848461056a565b6109ee6109e5610e0f565b858585856112fb565b50505050565b606060075f8381526020019081526020015f208054610a1290611fb2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3e90611fb2565b8015610a895780601f10610a6057610100808354040283529160200191610a89565b820191905f5260205f20905b815481529060010190602001808311610a6c57829003601f168201915b50505050509050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aed575f80fd5b610b0783838360405180602001604052805f815250610669565b505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bf2575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c29575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f80610d5b836114a7565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dcd57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610dc49190611d3c565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b610e2383838360016114e0565b505050565b5f80610e33846114a7565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610e7457610e7381848661169f565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610eff57610eb35f855f806114e0565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610f7e57600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b61104c828260405180602001604052805f815250611762565b5050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561110757508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806110c857506110c78484610b0c565b5b8061110657508273ffffffffffffffffffffffffffffffffffffffff166110ee83610dd6565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f61111c5f835f610e28565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361118e57816040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016111859190611d3c565b60405180910390fd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361120257816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016111f99190611a69565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516112ee9190611923565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b11156114a0578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b815260040161135994939291906122fc565b6020604051808303815f875af192505050801561139457506040513d601f19601f82011682018060405250810190611391919061235a565b60015b611415573d805f81146113c2576040519150601f19603f3d011682016040523d82523d5f602084013e6113c7565b606091505b505f81510361140d57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016114049190611a69565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461149e57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016114959190611a69565b60405180910390fd5b505b5050505050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b808061151857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561164a575f61152784610d50565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561159157508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156115a457506115a28184610b0c565b155b156115e657826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016115dd9190611a69565b60405180910390fd5b811561164857838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6116aa838383611050565b61175d575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361171e57806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016117159190611d3c565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401611754929190612283565b60405180910390fd5b505050565b61176c8383611785565b611780611777610e0f565b5f8585856112fb565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f5575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016117ec9190611a69565b60405180910390fd5b5f61180183835f610e28565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611873575f6040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260040161186a9190611a69565b60405180910390fd5b505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118bd81611889565b81146118c7575f80fd5b50565b5f813590506118d8816118b4565b92915050565b5f602082840312156118f3576118f2611881565b5b5f611900848285016118ca565b91505092915050565b5f8115159050919050565b61191d81611909565b82525050565b5f6020820190506119365f830184611914565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61197e8261193c565b6119888185611946565b9350611998818560208601611956565b6119a181611964565b840191505092915050565b5f6020820190508181035f8301526119c48184611974565b905092915050565b5f819050919050565b6119de816119cc565b81146119e8575f80fd5b50565b5f813590506119f9816119d5565b92915050565b5f60208284031215611a1457611a13611881565b5b5f611a21848285016119eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611a5382611a2a565b9050919050565b611a6381611a49565b82525050565b5f602082019050611a7c5f830184611a5a565b92915050565b611a8b81611a49565b8114611a95575f80fd5b50565b5f81359050611aa681611a82565b92915050565b5f8060408385031215611ac257611ac1611881565b5b5f611acf85828601611a98565b9250506020611ae0858286016119eb565b9150509250929050565b5f805f60608486031215611b0157611b00611881565b5b5f611b0e86828701611a98565b9350506020611b1f86828701611a98565b9250506040611b30868287016119eb565b9150509250925092565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b7882611964565b810181811067ffffffffffffffff82111715611b9757611b96611b42565b5b80604052505050565b5f611ba9611878565b9050611bb58282611b6f565b919050565b5f67ffffffffffffffff821115611bd457611bd3611b42565b5b611bdd82611964565b9050602081019050919050565b828183375f83830152505050565b5f611c0a611c0584611bba565b611ba0565b905082815260208101848484011115611c2657611c25611b3e565b5b611c31848285611bea565b509392505050565b5f82601f830112611c4d57611c4c611b3a565b5b8135611c5d848260208601611bf8565b91505092915050565b5f805f8060808587031215611c7e57611c7d611881565b5b5f611c8b87828801611a98565b9450506020611c9c878288016119eb565b935050604085013567ffffffffffffffff811115611cbd57611cbc611885565b5b611cc987828801611c39565b925050606085013567ffffffffffffffff811115611cea57611ce9611885565b5b611cf687828801611c39565b91505092959194509250565b5f60208284031215611d1757611d16611881565b5b5f611d2484828501611a98565b91505092915050565b611d36816119cc565b82525050565b5f602082019050611d4f5f830184611d2d565b92915050565b611d5e81611909565b8114611d68575f80fd5b50565b5f81359050611d7981611d55565b92915050565b5f8060408385031215611d9557611d94611881565b5b5f611da285828601611a98565b9250506020611db385828601611d6b565b9150509250929050565b5f67ffffffffffffffff821115611dd757611dd6611b42565b5b611de082611964565b9050602081019050919050565b5f611dff611dfa84611dbd565b611ba0565b905082815260208101848484011115611e1b57611e1a611b3e565b5b611e26848285611bea565b509392505050565b5f82601f830112611e4257611e41611b3a565b5b8135611e52848260208601611ded565b91505092915050565b5f805f8060808587031215611e7357611e72611881565b5b5f611e8087828801611a98565b9450506020611e9187828801611a98565b9350506040611ea2878288016119eb565b925050606085013567ffffffffffffffff811115611ec357611ec2611885565b5b611ecf87828801611e2e565b91505092959194509250565b5f805f60608486031215611ef257611ef1611881565b5b5f611eff86828701611a98565b9350506020611f10868287016119eb565b925050604084013567ffffffffffffffff811115611f3157611f30611885565b5b611f3d86828701611c39565b9150509250925092565b5f8060408385031215611f5d57611f5c611881565b5b5f611f6a85828601611a98565b9250506020611f7b85828601611a98565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611fc957607f821691505b602082108103611fdc57611fdb611f85565b5b50919050565b5f606082019050611ff55f830186611a5a565b6120026020830185611d2d565b61200f6040830184611a5a565b949350505050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026120737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612038565b61207d8683612038565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6120b86120b36120ae846119cc565b612095565b6119cc565b9050919050565b5f819050919050565b6120d18361209e565b6120e56120dd826120bf565b848454612044565b825550505050565b5f90565b6120f96120ed565b6121048184846120c8565b505050565b5b818110156121275761211c5f826120f1565b60018101905061210a565b5050565b601f82111561216c5761213d81612017565b61214684612029565b81016020851015612155578190505b61216961216185612029565b830182612109565b50505b505050565b5f82821c905092915050565b5f61218c5f1984600802612171565b1980831691505092915050565b5f6121a4838361217d565b9150826002028217905092915050565b6121bd8261193c565b67ffffffffffffffff8111156121d6576121d5611b42565b5b6121e08254611fb2565b6121eb82828561212b565b5f60209050601f83116001811461221c575f841561220a578287015190505b6122148582612199565b86555061227b565b601f19841661222a86612017565b5f5b828110156122515784890151825560018201915060208501945060208101905061222c565b8683101561226e578489015161226a601f89168261217d565b8355505b6001600288020188555050505b505050505050565b5f6040820190506122965f830185611a5a565b6122a36020830184611d2d565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6122ce826122aa565b6122d881856122b4565b93506122e8818560208601611956565b6122f181611964565b840191505092915050565b5f60808201905061230f5f830187611a5a565b61231c6020830186611a5a565b6123296040830185611d2d565b818103606083015261233b81846122c4565b905095945050505050565b5f81519050612354816118b4565b92915050565b5f6020828403121561236f5761236e611881565b5b5f61237c84828501612346565b9150509291505056fea26469706673582212205b7f14c9f2a2cae21c8aafffb39cf58ccae4748ad1eb8928addc7750dabf451964736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b50604051612902380380612902833981810160405281019061003191906101e8565b8181815f9081610041919061046b565b508060019081610051919061046b565b5050503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505061053a565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6100fa826100b4565b810181811067ffffffffffffffff82111715610119576101186100c4565b5b80604052505050565b5f61012b61009b565b905061013782826100f1565b919050565b5f67ffffffffffffffff821115610156576101556100c4565b5b61015f826100b4565b9050602081019050919050565b8281835e5f83830152505050565b5f61018c6101878461013c565b610122565b9050828152602081018484840111156101a8576101a76100b0565b5b6101b384828561016c565b509392505050565b5f82601f8301126101cf576101ce6100ac565b5b81516101df84826020860161017a565b91505092915050565b5f80604083850312156101fe576101fd6100a4565b5b5f83015167ffffffffffffffff81111561021b5761021a6100a8565b5b610227858286016101bb565b925050602083015167ffffffffffffffff811115610248576102476100a8565b5b610254858286016101bb565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806102ac57607f821691505b6020821081036102bf576102be610268565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826102e6565b61032b86836102e6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61036f61036a61036584610343565b61034c565b610343565b9050919050565b5f819050919050565b61038883610355565b61039c61039482610376565b8484546102f2565b825550505050565b5f90565b6103b06103a4565b6103bb81848461037f565b505050565b5b818110156103de576103d35f826103a8565b6001810190506103c1565b5050565b601f821115610423576103f4816102c5565b6103fd846102d7565b8101602085101561040c578190505b610420610418856102d7565b8301826103c0565b50505b505050565b5f82821c905092915050565b5f6104435f1984600802610428565b1980831691505092915050565b5f61045b8383610434565b9150826002028217905092915050565b6104748261025e565b67ffffffffffffffff81111561048d5761048c6100c4565b5b6104978254610295565b6104a28282856103e2565b5f60209050601f8311600181146104d3575f84156104c1578287015190505b6104cb8582610450565b865550610532565b601f1984166104e1866102c5565b5f5b82811015610508578489015182556001820191506020850194506020810190506104e3565b868310156105255784890151610521601f891682610434565b8355505b6001600288020188555050505b505050505050565b6123bb806105475f395ff3fe608060405234801561000f575f80fd5b506004361061011f575f3560e01c80636c8a5e77116100ab578063b88d4fde1161006f578063b88d4fde14610315578063c87b56dd14610331578063d3fc986414610361578063e985e9c51461037d578063f2fde38b146103ad5761011f565b80636c8a5e771461025d57806370a082311461028d5780638da5cb5b146102bd57806395d89b41146102db578063a22cb465146102f95761011f565b806323b872dd116100f257806323b872dd146101bd5780632fb102cf146101d957806342842e0e146101f557806342966c68146102115780636352211e1461022d5761011f565b806301ffc9a71461012357806306fdde0314610153578063081812fc14610171578063095ea7b3146101a1575b5f80fd5b61013d600480360381019061013891906118de565b6103c9565b60405161014a9190611923565b60405180910390f35b61015b6104aa565b60405161016891906119ac565b60405180910390f35b61018b600480360381019061018691906119ff565b610539565b6040516101989190611a69565b60405180910390f35b6101bb60048036038101906101b69190611aac565b610554565b005b6101d760048036038101906101d29190611aea565b61056a565b005b6101f360048036038101906101ee9190611c66565b610669565b005b61020f600480360381019061020a9190611aea565b61070f565b005b61022b600480360381019061022691906119ff565b61072e565b005b610247600480360381019061024291906119ff565b61079c565b6040516102549190611a69565b60405180910390f35b610277600480360381019061027291906119ff565b6107ad565b60405161028491906119ac565b60405180910390f35b6102a760048036038101906102a29190611d02565b61084e565b6040516102b49190611d3c565b60405180910390f35b6102c5610904565b6040516102d29190611a69565b60405180910390f35b6102e3610929565b6040516102f091906119ac565b60405180910390f35b610313600480360381019061030e9190611d7f565b6109b9565b005b61032f600480360381019061032a9190611e5b565b6109cf565b005b61034b600480360381019061034691906119ff565b6109f4565b60405161035891906119ac565b60405180910390f35b61037b60048036038101906103769190611edb565b610a95565b005b61039760048036038101906103929190611f47565b610b0c565b6040516103a49190611923565b60405180910390f35b6103c760048036038101906103c29190611d02565b610b9a565b005b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061049357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104a357506104a282610ce7565b5b9050919050565b60605f80546104b890611fb2565b80601f01602080910402602001604051908101604052809291908181526020018280546104e490611fb2565b801561052f5780601f106105065761010080835404028352916020019161052f565b820191905f5260205f20905b81548152906001019060200180831161051257829003601f168201915b5050505050905090565b5f61054382610d50565b5061054d82610dd6565b9050919050565b6105668282610561610e0f565b610e16565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105da575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016105d19190611a69565b60405180910390fd5b5f6105ed83836105e8610e0f565b610e28565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610663578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161065a93929190611fe2565b60405180910390fd5b50505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106c1575f80fd5b6106cb8484611033565b8160075f8581526020019081526020015f2090816106e991906121b4565b508060085f8581526020019081526020015f20908161070891906121b4565b5050505050565b61072983838360405180602001604052805f8152506109cf565b505050565b5f61073882610d50565b9050610745813384611050565b61078f57610751610e0f565b826040517f177e802f000000000000000000000000000000000000000000000000000000008152600401610786929190612283565b60405180910390fd5b61079882611110565b5050565b5f6107a682610d50565b9050919050565b606060085f8381526020019081526020015f2080546107cb90611fb2565b80601f01602080910402602001604051908101604052809291908181526020018280546107f790611fb2565b80156108425780601f1061081957610100808354040283529160200191610842565b820191905f5260205f20905b81548152906001019060200180831161082557829003601f168201915b50505050509050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108bf575f6040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016108b69190611a69565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606001805461093890611fb2565b80601f016020809104026020016040519081016040528092919081815260200182805461096490611fb2565b80156109af5780601f10610986576101008083540402835291602001916109af565b820191905f5260205f20905b81548152906001019060200180831161099257829003601f168201915b5050505050905090565b6109cb6109c4610e0f565b8383611192565b5050565b6109da84848461056a565b6109ee6109e5610e0f565b858585856112fb565b50505050565b606060075f8381526020019081526020015f208054610a1290611fb2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3e90611fb2565b8015610a895780601f10610a6057610100808354040283529160200191610a89565b820191905f5260205f20905b815481529060010190602001808311610a6c57829003601f168201915b50505050509050919050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aed575f80fd5b610b0783838360405180602001604052805f815250610669565b505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bf2575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c29575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f80610d5b836114a7565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dcd57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610dc49190611d3c565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b610e2383838360016114e0565b505050565b5f80610e33846114a7565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610e7457610e7381848661169f565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610eff57610eb35f855f806114e0565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610f7e57600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b61104c828260405180602001604052805f815250611762565b5050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561110757508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806110c857506110c78484610b0c565b5b8061110657508273ffffffffffffffffffffffffffffffffffffffff166110ee83610dd6565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f61111c5f835f610e28565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361118e57816040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016111859190611d3c565b60405180910390fd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361120257816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016111f99190611a69565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516112ee9190611923565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b11156114a0578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b815260040161135994939291906122fc565b6020604051808303815f875af192505050801561139457506040513d601f19601f82011682018060405250810190611391919061235a565b60015b611415573d805f81146113c2576040519150601f19603f3d011682016040523d82523d5f602084013e6113c7565b606091505b505f81510361140d57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016114049190611a69565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461149e57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016114959190611a69565b60405180910390fd5b505b5050505050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b808061151857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561164a575f61152784610d50565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561159157508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156115a457506115a28184610b0c565b155b156115e657826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016115dd9190611a69565b60405180910390fd5b811561164857838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6116aa838383611050565b61175d575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361171e57806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016117159190611d3c565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401611754929190612283565b60405180910390fd5b505050565b61176c8383611785565b611780611777610e0f565b5f8585856112fb565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f5575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016117ec9190611a69565b60405180910390fd5b5f61180183835f610e28565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611873575f6040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260040161186a9190611a69565b60405180910390fd5b505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118bd81611889565b81146118c7575f80fd5b50565b5f813590506118d8816118b4565b92915050565b5f602082840312156118f3576118f2611881565b5b5f611900848285016118ca565b91505092915050565b5f8115159050919050565b61191d81611909565b82525050565b5f6020820190506119365f830184611914565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61197e8261193c565b6119888185611946565b9350611998818560208601611956565b6119a181611964565b840191505092915050565b5f6020820190508181035f8301526119c48184611974565b905092915050565b5f819050919050565b6119de816119cc565b81146119e8575f80fd5b50565b5f813590506119f9816119d5565b92915050565b5f60208284031215611a1457611a13611881565b5b5f611a21848285016119eb565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611a5382611a2a565b9050919050565b611a6381611a49565b82525050565b5f602082019050611a7c5f830184611a5a565b92915050565b611a8b81611a49565b8114611a95575f80fd5b50565b5f81359050611aa681611a82565b92915050565b5f8060408385031215611ac257611ac1611881565b5b5f611acf85828601611a98565b9250506020611ae0858286016119eb565b9150509250929050565b5f805f60608486031215611b0157611b00611881565b5b5f611b0e86828701611a98565b9350506020611b1f86828701611a98565b9250506040611b30868287016119eb565b9150509250925092565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611b7882611964565b810181811067ffffffffffffffff82111715611b9757611b96611b42565b5b80604052505050565b5f611ba9611878565b9050611bb58282611b6f565b919050565b5f67ffffffffffffffff821115611bd457611bd3611b42565b5b611bdd82611964565b9050602081019050919050565b828183375f83830152505050565b5f611c0a611c0584611bba565b611ba0565b905082815260208101848484011115611c2657611c25611b3e565b5b611c31848285611bea565b509392505050565b5f82601f830112611c4d57611c4c611b3a565b5b8135611c5d848260208601611bf8565b91505092915050565b5f805f8060808587031215611c7e57611c7d611881565b5b5f611c8b87828801611a98565b9450506020611c9c878288016119eb565b935050604085013567ffffffffffffffff811115611cbd57611cbc611885565b5b611cc987828801611c39565b925050606085013567ffffffffffffffff811115611cea57611ce9611885565b5b611cf687828801611c39565b91505092959194509250565b5f60208284031215611d1757611d16611881565b5b5f611d2484828501611a98565b91505092915050565b611d36816119cc565b82525050565b5f602082019050611d4f5f830184611d2d565b92915050565b611d5e81611909565b8114611d68575f80fd5b50565b5f81359050611d7981611d55565b92915050565b5f8060408385031215611d9557611d94611881565b5b5f611da285828601611a98565b9250506020611db385828601611d6b565b9150509250929050565b5f67ffffffffffffffff821115611dd757611dd6611b42565b5b611de082611964565b9050602081019050919050565b5f611dff611dfa84611dbd565b611ba0565b905082815260208101848484011115611e1b57611e1a611b3e565b5b611e26848285611bea565b509392505050565b5f82601f830112611e4257611e41611b3a565b5b8135611e52848260208601611ded565b91505092915050565b5f805f8060808587031215611e7357611e72611881565b5b5f611e8087828801611a98565b9450506020611e9187828801611a98565b9350506040611ea2878288016119eb565b925050606085013567ffffffffffffffff811115611ec357611ec2611885565b5b611ecf87828801611e2e565b91505092959194509250565b5f805f60608486031215611ef257611ef1611881565b5b5f611eff86828701611a98565b9350506020611f10868287016119eb565b925050604084013567ffffffffffffffff811115611f3157611f30611885565b5b611f3d86828701611c39565b9150509250925092565b5f8060408385031215611f5d57611f5c611881565b5b5f611f6a85828601611a98565b9250506020611f7b85828601611a98565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611fc957607f821691505b602082108103611fdc57611fdb611f85565b5b50919050565b5f606082019050611ff55f830186611a5a565b6120026020830185611d2d565b61200f6040830184611a5a565b949350505050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026120737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612038565b61207d8683612038565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6120b86120b36120ae846119cc565b612095565b6119cc565b9050919050565b5f819050919050565b6120d18361209e565b6120e56120dd826120bf565b848454612044565b825550505050565b5f90565b6120f96120ed565b6121048184846120c8565b505050565b5b818110156121275761211c5f826120f1565b60018101905061210a565b5050565b601f82111561216c5761213d81612017565b61214684612029565b81016020851015612155578190505b61216961216185612029565b830182612109565b50505b505050565b5f82821c905092915050565b5f61218c5f1984600802612171565b1980831691505092915050565b5f6121a4838361217d565b9150826002028217905092915050565b6121bd8261193c565b67ffffffffffffffff8111156121d6576121d5611b42565b5b6121e08254611fb2565b6121eb82828561212b565b5f60209050601f83116001811461221c575f841561220a578287015190505b6122148582612199565b86555061227b565b601f19841661222a86612017565b5f5b828110156122515784890151825560018201915060208501945060208101905061222c565b8683101561226e578489015161226a601f89168261217d565b8355505b6001600288020188555050505b505050505050565b5f6040820190506122965f830185611a5a565b6122a36020830184611d2d565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6122ce826122aa565b6122d881856122b4565b93506122e8818560208601611956565b6122f181611964565b840191505092915050565b5f60808201905061230f5f830187611a5a565b61231c6020830186611a5a565b6123296040830185611d2d565b818103606083015261233b81846122c4565b905095945050505050565b5f81519050612354816118b4565b92915050565b5f6020828403121561236f5761236e611881565b5b5f61237c84828501612346565b9150509291505056fea264697066735822122060f7a3def98481841a33eb38752093b0be74f6f9bab24d72ced1ae088afea6da64736f6c63430008190033", } // Ics721Erc721ABI is the input ABI used to generate the binding from. diff --git a/x/evm/contracts/initia_erc20/InitiaERC20.go b/x/evm/contracts/initia_erc20/InitiaERC20.go index 4cbe5608..dfc71461 100644 --- a/x/evm/contracts/initia_erc20/InitiaERC20.go +++ b/x/evm/contracts/initia_erc20/InitiaERC20.go @@ -32,7 +32,7 @@ var ( // InitiaErc20MetaData contains all meta data concerning the InitiaErc20 contract. var InitiaErc20MetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"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\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sudoTransfer\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051612479380380612479833981810160405281019061003191906102a5565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060f273ffffffffffffffffffffffffffffffffffffffff16635e6c57596040518163ffffffff1660e01b81526004016020604051808303815f875af11580156100bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100df9190610362565b5082600390816100ef919061059a565b5081600490816100ff919061059a565b508060055f6101000a81548160ff021916908360ff160217905550505050610669565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6101818261013b565b810181811067ffffffffffffffff821117156101a05761019f61014b565b5b80604052505050565b5f6101b2610122565b90506101be8282610178565b919050565b5f67ffffffffffffffff8211156101dd576101dc61014b565b5b6101e68261013b565b9050602081019050919050565b8281835e5f83830152505050565b5f61021361020e846101c3565b6101a9565b90508281526020810184848401111561022f5761022e610137565b5b61023a8482856101f3565b509392505050565b5f82601f83011261025657610255610133565b5b8151610266848260208601610201565b91505092915050565b5f60ff82169050919050565b6102848161026f565b811461028e575f80fd5b50565b5f8151905061029f8161027b565b92915050565b5f805f606084860312156102bc576102bb61012b565b5b5f84015167ffffffffffffffff8111156102d9576102d861012f565b5b6102e586828701610242565b935050602084015167ffffffffffffffff8111156103065761030561012f565b5b61031286828701610242565b925050604061032386828701610291565b9150509250925092565b5f8115159050919050565b6103418161032d565b811461034b575f80fd5b50565b5f8151905061035c81610338565b92915050565b5f602082840312156103775761037661012b565b5b5f6103848482850161034e565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806103db57607f821691505b6020821081036103ee576103ed610397565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610415565b61045a8683610415565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61049e61049961049484610472565b61047b565b610472565b9050919050565b5f819050919050565b6104b783610484565b6104cb6104c3826104a5565b848454610421565b825550505050565b5f90565b6104df6104d3565b6104ea8184846104ae565b505050565b5b8181101561050d576105025f826104d7565b6001810190506104f0565b5050565b601f82111561055257610523816103f4565b61052c84610406565b8101602085101561053b578190505b61054f61054785610406565b8301826104ef565b50505b505050565b5f82821c905092915050565b5f6105725f1984600802610557565b1980831691505092915050565b5f61058a8383610563565b9150826002028217905092915050565b6105a38261038d565b67ffffffffffffffff8111156105bc576105bb61014b565b5b6105c682546103c4565b6105d1828285610511565b5f60209050601f831160018114610602575f84156105f0578287015190505b6105fa858261057f565b865550610661565b601f198416610610866103f4565b5f5b8281101561063757848901518255600182019150602085019450602081019050610612565b868310156106545784890151610650601f891682610563565b8355505b6001600288020188555050505b505050505050565b611e03806106765f395ff3fe608060405234801561000f575f80fd5b50600436106100fe575f3560e01c806342966c681161009557806395d89b411161006457806395d89b41146102be578063a9059cbb146102dc578063dd62ed3e1461030c578063f2fde38b1461033c576100fe565b806342966c681461022457806370a082311461024057806379cc6790146102705780638da5cb5b146102a0576100fe565b80631988513b116100d15780631988513b1461019e57806323b872dd146101ba578063313ce567146101ea57806340c10f1914610208576100fe565b806301ffc9a71461010257806306fdde0314610132578063095ea7b31461015057806318160ddd14610180575b5f80fd5b61011c60048036038101906101179190611569565b610358565b60405161012991906115ae565b60405180910390f35b61013a6103d1565b6040516101479190611637565b60405180910390f35b61016a600480360381019061016591906116e4565b61045d565b60405161017791906115ae565b60405180910390f35b61018861054a565b6040516101959190611731565b60405180910390f35b6101b860048036038101906101b3919061174a565b610550565b005b6101d460048036038101906101cf919061174a565b6105cf565b6040516101e191906115ae565b60405180910390f35b6101f26107ea565b6040516101ff91906117b5565b60405180910390f35b610222600480360381019061021d91906116e4565b6107fc565b005b61023e600480360381019061023991906117ce565b61091b565b005b61025a600480360381019061025591906117f9565b6109e3565b6040516102679190611731565b60405180910390f35b61028a600480360381019061028591906116e4565b6109f8565b60405161029791906115ae565b60405180910390f35b6102a8610c11565b6040516102b59190611833565b60405180910390f35b6102c6610c34565b6040516102d39190611637565b60405180910390f35b6102f660048036038101906102f191906116e4565b610cc0565b60405161030391906115ae565b60405180910390f35b6103266004803603810190610321919061184c565b610d91565b6040516103339190611731565b60405180910390f35b610356600480360381019061035191906117f9565b610db1565b005b5f7f8da6da19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103ca57506103c982610ef9565b5b9050919050565b600380546103de906118b7565b80601f016020809104026020016040519081016040528092919081815260200182805461040a906118b7565b80156104555780601f1061042c57610100808354040283529160200191610455565b820191905f5260205f20905b81548152906001019060200180831161043857829003601f168201915b505050505081565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105389190611731565b60405180910390a36001905092915050565b60065481565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690611931565b60405180910390fd5b6105ca838383610f62565b505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b815260040161060b9190611833565b602060405180830381865afa158015610626573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064a9190611979565b1561068a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068190611a14565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073c90611aa2565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107cc9190611aed565b925050819055506107de858585610f62565b60019150509392505050565b60055f9054906101000a900460ff1681565b8160f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016108379190611833565b602060405180830381865afa158015610852573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108769190611979565b156108b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ad90611b6a565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461090c575f80fd5b61091683836111ed565b505050565b3360f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b81526004016109569190611833565b602060405180830381865afa158015610971573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109959190611979565b156109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc90611bd2565b60405180910390fd5b6109df33836113bc565b5050565b6001602052805f5260405f205f915090505481565b5f8260f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610a349190611833565b602060405180830381865afa158015610a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a739190611979565b15610ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaa90611bd2565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6590611c60565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bf59190611aed565b92505081905550610c0684846113bc565b600191505092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60048054610c41906118b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6d906118b7565b8015610cb85780601f10610c8f57610100808354040283529160200191610cb8565b820191905f5260205f20905b815481529060010190602001808311610c9b57829003601f168201915b505050505081565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b8152600401610cfc9190611833565b602060405180830381865afa158015610d17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3b9190611979565b15610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7290611a14565b60405180910390fd5b610d86338585610f62565b600191505092915050565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e07575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e3e575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b8152600401610f9d9190611833565b602060405180830381865afa158015610fb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fdc9190611979565b61105c5760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b815260040161101a9190611833565b6020604051808303815f875af1158015611036573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105a9190611979565b505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d390611cee565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546111289190611aed565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461117b9190611d0c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111df9190611731565b60405180910390a350505050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b81526004016112289190611833565b602060405180830381865afa158015611243573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112679190611979565b6112e75760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016112a59190611833565b6020604051808303815f875af11580156112c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e59190611979565b505b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546113339190611d0c565b925050819055508160065f82825461134b9190611d0c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113af9190611731565b60405180910390a3505050565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390611daf565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114889190611aed565b925050819055508060065f8282546114a09190611aed565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115049190611731565b60405180910390a35050565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61154881611514565b8114611552575f80fd5b50565b5f813590506115638161153f565b92915050565b5f6020828403121561157e5761157d611510565b5b5f61158b84828501611555565b91505092915050565b5f8115159050919050565b6115a881611594565b82525050565b5f6020820190506115c15f83018461159f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611609826115c7565b61161381856115d1565b93506116238185602086016115e1565b61162c816115ef565b840191505092915050565b5f6020820190508181035f83015261164f81846115ff565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61168082611657565b9050919050565b61169081611676565b811461169a575f80fd5b50565b5f813590506116ab81611687565b92915050565b5f819050919050565b6116c3816116b1565b81146116cd575f80fd5b50565b5f813590506116de816116ba565b92915050565b5f80604083850312156116fa576116f9611510565b5b5f6117078582860161169d565b9250506020611718858286016116d0565b9150509250929050565b61172b816116b1565b82525050565b5f6020820190506117445f830184611722565b92915050565b5f805f6060848603121561176157611760611510565b5b5f61176e8682870161169d565b935050602061177f8682870161169d565b9250506040611790868287016116d0565b9150509250925092565b5f60ff82169050919050565b6117af8161179a565b82525050565b5f6020820190506117c85f8301846117a6565b92915050565b5f602082840312156117e3576117e2611510565b5b5f6117f0848285016116d0565b91505092915050565b5f6020828403121561180e5761180d611510565b5b5f61181b8482850161169d565b91505092915050565b61182d81611676565b82525050565b5f6020820190506118465f830184611824565b92915050565b5f806040838503121561186257611861611510565b5b5f61186f8582860161169d565b92505060206118808582860161169d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806118ce57607f821691505b6020821081036118e1576118e061188a565b5b50919050565b7f45524332303a2063616c6c6572206973206e6f742074686520636861696e00005f82015250565b5f61191b601e836115d1565b9150611926826118e7565b602082019050919050565b5f6020820190508181035f8301526119488161190f565b9050919050565b61195881611594565b8114611962575f80fd5b50565b5f815190506119738161194f565b92915050565b5f6020828403121561198e5761198d611510565b5b5f61199b84828501611965565b91505092915050565b7f45524332303a207472616e7366657220746f20626c6f636b65642061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6119fe6022836115d1565b9150611a09826119a4565b604082019050919050565b5f6020820190508181035f830152611a2b816119f2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611a8c6028836115d1565b9150611a9782611a32565b604082019050919050565b5f6020820190508181035f830152611ab981611a80565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611af7826116b1565b9150611b02836116b1565b9250828203905081811115611b1a57611b19611ac0565b5b92915050565b7f45524332303a206d696e7420746f20626c6f636b6564206164647265737300005f82015250565b5f611b54601e836115d1565b9150611b5f82611b20565b602082019050919050565b5f6020820190508181035f830152611b8181611b48565b9050919050565b7f45524332303a206275726e2066726f6d206d6f64756c652061646472657373005f82015250565b5f611bbc601f836115d1565b9150611bc782611b88565b602082019050919050565b5f6020820190508181035f830152611be981611bb0565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f611c4a6024836115d1565b9150611c5582611bf0565b604082019050919050565b5f6020820190508181035f830152611c7781611c3e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611cd86026836115d1565b9150611ce382611c7e565b604082019050919050565b5f6020820190508181035f830152611d0581611ccc565b9050919050565b5f611d16826116b1565b9150611d21836116b1565b9250828201905080821115611d3957611d38611ac0565b5b92915050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f611d996022836115d1565b9150611da482611d3f565b604082019050919050565b5f6020820190508181035f830152611dc681611d8d565b905091905056fea2646970667358221220bde7c267f79f9dd12e900445223d1ed1c3562283f4d5401b9cb1dfb6fe47440564736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b50604051612479380380612479833981810160405281019061003191906102a5565b335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060f273ffffffffffffffffffffffffffffffffffffffff16635e6c57596040518163ffffffff1660e01b81526004016020604051808303815f875af11580156100bb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100df9190610362565b5082600390816100ef919061059a565b5081600490816100ff919061059a565b508060055f6101000a81548160ff021916908360ff160217905550505050610669565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6101818261013b565b810181811067ffffffffffffffff821117156101a05761019f61014b565b5b80604052505050565b5f6101b2610122565b90506101be8282610178565b919050565b5f67ffffffffffffffff8211156101dd576101dc61014b565b5b6101e68261013b565b9050602081019050919050565b8281835e5f83830152505050565b5f61021361020e846101c3565b6101a9565b90508281526020810184848401111561022f5761022e610137565b5b61023a8482856101f3565b509392505050565b5f82601f83011261025657610255610133565b5b8151610266848260208601610201565b91505092915050565b5f60ff82169050919050565b6102848161026f565b811461028e575f80fd5b50565b5f8151905061029f8161027b565b92915050565b5f805f606084860312156102bc576102bb61012b565b5b5f84015167ffffffffffffffff8111156102d9576102d861012f565b5b6102e586828701610242565b935050602084015167ffffffffffffffff8111156103065761030561012f565b5b61031286828701610242565b925050604061032386828701610291565b9150509250925092565b5f8115159050919050565b6103418161032d565b811461034b575f80fd5b50565b5f8151905061035c81610338565b92915050565b5f602082840312156103775761037661012b565b5b5f6103848482850161034e565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806103db57607f821691505b6020821081036103ee576103ed610397565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610415565b61045a8683610415565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61049e61049961049484610472565b61047b565b610472565b9050919050565b5f819050919050565b6104b783610484565b6104cb6104c3826104a5565b848454610421565b825550505050565b5f90565b6104df6104d3565b6104ea8184846104ae565b505050565b5b8181101561050d576105025f826104d7565b6001810190506104f0565b5050565b601f82111561055257610523816103f4565b61052c84610406565b8101602085101561053b578190505b61054f61054785610406565b8301826104ef565b50505b505050565b5f82821c905092915050565b5f6105725f1984600802610557565b1980831691505092915050565b5f61058a8383610563565b9150826002028217905092915050565b6105a38261038d565b67ffffffffffffffff8111156105bc576105bb61014b565b5b6105c682546103c4565b6105d1828285610511565b5f60209050601f831160018114610602575f84156105f0578287015190505b6105fa858261057f565b865550610661565b601f198416610610866103f4565b5f5b8281101561063757848901518255600182019150602085019450602081019050610612565b868310156106545784890151610650601f891682610563565b8355505b6001600288020188555050505b505050505050565b611e03806106765f395ff3fe608060405234801561000f575f80fd5b50600436106100fe575f3560e01c806342966c681161009557806395d89b411161006457806395d89b41146102be578063a9059cbb146102dc578063dd62ed3e1461030c578063f2fde38b1461033c576100fe565b806342966c681461022457806370a082311461024057806379cc6790146102705780638da5cb5b146102a0576100fe565b80631988513b116100d15780631988513b1461019e57806323b872dd146101ba578063313ce567146101ea57806340c10f1914610208576100fe565b806301ffc9a71461010257806306fdde0314610132578063095ea7b31461015057806318160ddd14610180575b5f80fd5b61011c60048036038101906101179190611569565b610358565b60405161012991906115ae565b60405180910390f35b61013a6103d1565b6040516101479190611637565b60405180910390f35b61016a600480360381019061016591906116e4565b61045d565b60405161017791906115ae565b60405180910390f35b61018861054a565b6040516101959190611731565b60405180910390f35b6101b860048036038101906101b3919061174a565b610550565b005b6101d460048036038101906101cf919061174a565b6105cf565b6040516101e191906115ae565b60405180910390f35b6101f26107ea565b6040516101ff91906117b5565b60405180910390f35b610222600480360381019061021d91906116e4565b6107fc565b005b61023e600480360381019061023991906117ce565b61091b565b005b61025a600480360381019061025591906117f9565b6109e3565b6040516102679190611731565b60405180910390f35b61028a600480360381019061028591906116e4565b6109f8565b60405161029791906115ae565b60405180910390f35b6102a8610c11565b6040516102b59190611833565b60405180910390f35b6102c6610c34565b6040516102d39190611637565b60405180910390f35b6102f660048036038101906102f191906116e4565b610cc0565b60405161030391906115ae565b60405180910390f35b6103266004803603810190610321919061184c565b610d91565b6040516103339190611731565b60405180910390f35b610356600480360381019061035191906117f9565b610db1565b005b5f7f8da6da19000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806103ca57506103c982610ef9565b5b9050919050565b600380546103de906118b7565b80601f016020809104026020016040519081016040528092919081815260200182805461040a906118b7565b80156104555780601f1061042c57610100808354040283529160200191610455565b820191905f5260205f20905b81548152906001019060200180831161043857829003601f168201915b505050505081565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105389190611731565b60405180910390a36001905092915050565b60065481565b600173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b690611931565b60405180910390fd5b6105ca838383610f62565b505050565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b815260040161060b9190611833565b602060405180830381865afa158015610626573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064a9190611979565b1561068a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068190611a14565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073c90611aa2565b60405180910390fd5b8260025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107cc9190611aed565b925050819055506107de858585610f62565b60019150509392505050565b60055f9054906101000a900460ff1681565b8160f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b81526004016108379190611833565b602060405180830381865afa158015610852573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108769190611979565b156108b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ad90611b6a565b60405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461090c575f80fd5b61091683836111ed565b505050565b3360f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b81526004016109569190611833565b602060405180830381865afa158015610971573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109959190611979565b156109d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cc90611bd2565b60405180910390fd5b6109df33836113bc565b5050565b6001602052805f5260405f205f915090505481565b5f8260f173ffffffffffffffffffffffffffffffffffffffff166360dc402f826040518263ffffffff1660e01b8152600401610a349190611833565b602060405180830381865afa158015610a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a739190611979565b15610ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaa90611bd2565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6590611c60565b60405180910390fd5b8260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bf59190611aed565b92505081905550610c0684846113bc565b600191505092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60048054610c41906118b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6d906118b7565b8015610cb85780601f10610c8f57610100808354040283529160200191610cb8565b820191905f5260205f20905b815481529060010190602001808311610c9b57829003601f168201915b505050505081565b5f8260f173ffffffffffffffffffffffffffffffffffffffff1663f2af9ac9826040518263ffffffff1660e01b8152600401610cfc9190611833565b602060405180830381865afa158015610d17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3b9190611979565b15610d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7290611a14565b60405180910390fd5b610d86338585610f62565b600191505092915050565b6002602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e07575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e3e575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b8152600401610f9d9190611833565b602060405180830381865afa158015610fb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fdc9190611979565b61105c5760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b815260040161101a9190611833565b6020604051808303815f875af1158015611036573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105a9190611979565b505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156110dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d390611cee565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546111289190611aed565b925050819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461117b9190611d0c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111df9190611731565b60405180910390a350505050565b8160f273ffffffffffffffffffffffffffffffffffffffff16634e25ab64826040518263ffffffff1660e01b81526004016112289190611833565b602060405180830381865afa158015611243573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112679190611979565b6112e75760f273ffffffffffffffffffffffffffffffffffffffff1663ceeae52a826040518263ffffffff1660e01b81526004016112a59190611833565b6020604051808303815f875af11580156112c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e59190611979565b505b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546113339190611d0c565b925050819055508160065f82825461134b9190611d0c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113af9190611731565b60405180910390a3505050565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390611daf565b60405180910390fd5b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114889190611aed565b925050819055508060065f8282546114a09190611aed565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115049190611731565b60405180910390a35050565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61154881611514565b8114611552575f80fd5b50565b5f813590506115638161153f565b92915050565b5f6020828403121561157e5761157d611510565b5b5f61158b84828501611555565b91505092915050565b5f8115159050919050565b6115a881611594565b82525050565b5f6020820190506115c15f83018461159f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611609826115c7565b61161381856115d1565b93506116238185602086016115e1565b61162c816115ef565b840191505092915050565b5f6020820190508181035f83015261164f81846115ff565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61168082611657565b9050919050565b61169081611676565b811461169a575f80fd5b50565b5f813590506116ab81611687565b92915050565b5f819050919050565b6116c3816116b1565b81146116cd575f80fd5b50565b5f813590506116de816116ba565b92915050565b5f80604083850312156116fa576116f9611510565b5b5f6117078582860161169d565b9250506020611718858286016116d0565b9150509250929050565b61172b816116b1565b82525050565b5f6020820190506117445f830184611722565b92915050565b5f805f6060848603121561176157611760611510565b5b5f61176e8682870161169d565b935050602061177f8682870161169d565b9250506040611790868287016116d0565b9150509250925092565b5f60ff82169050919050565b6117af8161179a565b82525050565b5f6020820190506117c85f8301846117a6565b92915050565b5f602082840312156117e3576117e2611510565b5b5f6117f0848285016116d0565b91505092915050565b5f6020828403121561180e5761180d611510565b5b5f61181b8482850161169d565b91505092915050565b61182d81611676565b82525050565b5f6020820190506118465f830184611824565b92915050565b5f806040838503121561186257611861611510565b5b5f61186f8582860161169d565b92505060206118808582860161169d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806118ce57607f821691505b6020821081036118e1576118e061188a565b5b50919050565b7f45524332303a2063616c6c6572206973206e6f742074686520636861696e00005f82015250565b5f61191b601e836115d1565b9150611926826118e7565b602082019050919050565b5f6020820190508181035f8301526119488161190f565b9050919050565b61195881611594565b8114611962575f80fd5b50565b5f815190506119738161194f565b92915050565b5f6020828403121561198e5761198d611510565b5b5f61199b84828501611965565b91505092915050565b7f45524332303a207472616e7366657220746f20626c6f636b65642061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6119fe6022836115d1565b9150611a09826119a4565b604082019050919050565b5f6020820190508181035f830152611a2b816119f2565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611a8c6028836115d1565b9150611a9782611a32565b604082019050919050565b5f6020820190508181035f830152611ab981611a80565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611af7826116b1565b9150611b02836116b1565b9250828203905081811115611b1a57611b19611ac0565b5b92915050565b7f45524332303a206d696e7420746f20626c6f636b6564206164647265737300005f82015250565b5f611b54601e836115d1565b9150611b5f82611b20565b602082019050919050565b5f6020820190508181035f830152611b8181611b48565b9050919050565b7f45524332303a206275726e2066726f6d206d6f64756c652061646472657373005f82015250565b5f611bbc601f836115d1565b9150611bc782611b88565b602082019050919050565b5f6020820190508181035f830152611be981611bb0565b9050919050565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f775f8201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b5f611c4a6024836115d1565b9150611c5582611bf0565b604082019050919050565b5f6020820190508181035f830152611c7781611c3e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f611cd86026836115d1565b9150611ce382611c7e565b604082019050919050565b5f6020820190508181035f830152611d0581611ccc565b9050919050565b5f611d16826116b1565b9150611d21836116b1565b9250828201905080821115611d3957611d38611ac0565b5b92915050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f611d996022836115d1565b9150611da482611d3f565b604082019050919050565b5f6020820190508181035f830152611dc681611d8d565b905091905056fea264697066735822122066dbab623b3de8459f53ebe5e3cb35fbd415d9fb7487a398b5e957a1692f6f4c64736f6c63430008190033", } // InitiaErc20ABI is the input ABI used to generate the binding from. diff --git a/x/evm/contracts/initia_erc20/InitiaERC20.sol b/x/evm/contracts/initia_erc20/InitiaERC20.sol index 2c4fcf0d..1fa3932d 100644 --- a/x/evm/contracts/initia_erc20/InitiaERC20.sol +++ b/x/evm/contracts/initia_erc20/InitiaERC20.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; +pragma solidity ^0.8.25; import "../i_erc20/IERC20.sol"; import "../ownable/Ownable.sol"; diff --git a/x/evm/contracts/ownable/Ownable.go b/x/evm/contracts/ownable/Ownable.go index 181f27e5..3ff49e73 100644 --- a/x/evm/contracts/ownable/Ownable.go +++ b/x/evm/contracts/ownable/Ownable.go @@ -32,7 +32,7 @@ var ( // OwnableMetaData contains all meta data concerning the Ownable contract. var OwnableMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052348015600e575f80fd5b50335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102c48061005b5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c80638da5cb5b14610038578063f2fde38b14610056575b5f80fd5b610040610072565b60405161004d919061021c565b60405180910390f35b610070600480360381019061006b9190610263565b610095565b005b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100eb575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610122575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610206826101dd565b9050919050565b610216816101fc565b82525050565b5f60208201905061022f5f83018461020d565b92915050565b5f80fd5b610242816101fc565b811461024c575f80fd5b50565b5f8135905061025d81610239565b92915050565b5f6020828403121561027857610277610235565b5b5f6102858482850161024f565b9150509291505056fea2646970667358221220e29d7837036a1938183c7a2dd1092242878c0c96b4338f00deb99da015235f8964736f6c63430008190033", + Bin: "0x6080604052348015600e575f80fd5b50335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102c48061005b5f395ff3fe608060405234801561000f575f80fd5b5060043610610034575f3560e01c80638da5cb5b14610038578063f2fde38b14610056575b5f80fd5b610040610072565b60405161004d919061021c565b60405180910390f35b610070600480360381019061006b9190610263565b610095565b005b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100eb575f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610122575f80fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610206826101dd565b9050919050565b610216816101fc565b82525050565b5f60208201905061022f5f83018461020d565b92915050565b5f80fd5b610242816101fc565b811461024c575f80fd5b50565b5f8135905061025d81610239565b92915050565b5f6020828403121561027857610277610235565b5b5f6102858482850161024f565b9150509291505056fea26469706673582212201744cd6d5161a2aa114c580fd893494526a1b586d624ff57184639cbc5a11c5e64736f6c63430008190033", } // OwnableABI is the input ABI used to generate the binding from. diff --git a/x/evm/contracts/ownable/Ownable.sol b/x/evm/contracts/ownable/Ownable.sol index 24e1ce3f..93fcaba8 100644 --- a/x/evm/contracts/ownable/Ownable.sol +++ b/x/evm/contracts/ownable/Ownable.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; +pragma solidity ^0.8.25; /** * @title Ownable diff --git a/x/evm/contracts/strings/Strings.go b/x/evm/contracts/strings/Strings.go index 48e34324..817f8c67 100644 --- a/x/evm/contracts/strings/Strings.go +++ b/x/evm/contracts/strings/Strings.go @@ -32,7 +32,7 @@ var ( // StringsMetaData contains all meta data concerning the Strings contract. var StringsMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"}]", - Bin: "0x6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212207cea6ebfd7378fbf433703a620a8e875f70b903e45da1c6c41a9531cb913fd0f64736f6c63430008190033", + Bin: "0x6055604b600b8282823980515f1a607314603f577f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea2646970667358221220d95abe4b8c23d2d648b516cef1a3027ea9f64d843bcd43fb31d1314016328aaf64736f6c63430008190033", } // StringsABI is the input ABI used to generate the binding from. diff --git a/x/evm/contracts/strings/Strings.sol b/x/evm/contracts/strings/Strings.sol index 98d8b054..7f0bb287 100644 --- a/x/evm/contracts/strings/Strings.sol +++ b/x/evm/contracts/strings/Strings.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.24; +pragma solidity ^0.8.25; //ref. https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Strings.sol library Strings {