diff --git a/.github/workflows/solhint.yml b/.github/workflows/solhint.yml deleted file mode 100644 index ebfdd1d1b..000000000 --- a/.github/workflows/solhint.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Solhint - -on: - push: - paths: - - "solidity/contracts/**" - pull_request: - paths: - - "solidity/contracts/**" - -permissions: - contents: read - -concurrency: - group: '${{ github.workflow }} @ ${{ github.head_ref || github.ref }}' - cancel-in-progress: true - -jobs: - solhint: - name: runner solhint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 18 - check-latest: false - cache: "yarn" - cache-dependency-path: solidity/yarn.lock - - run: cd solidity && yarn install && yarn lint:sol diff --git a/.github/workflows/solidity.yml b/.github/workflows/solidity.yml new file mode 100644 index 000000000..03ff5231d --- /dev/null +++ b/.github/workflows/solidity.yml @@ -0,0 +1,45 @@ +name: solidity + +on: + push: + branches: + - main + paths: + - "solidity/**" + pull_request: + paths: + - "solidity/**" + +permissions: + contents: read + +concurrency: + group: '${{ github.workflow }} @ ${{ github.head_ref || github.ref }}' + cancel-in-progress: true + +jobs: + compile: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 18 + check-latest: false + cache: "yarn" + cache-dependency-path: solidity/yarn.lock + - run: cd solidity && yarn install && yarn lint:sol && yarn compile + + abigen: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install abigen + run: | + wget -q https://gethstore.blob.core.windows.net/builds/geth-alltools-linux-amd64-1.12.0-e501b3b0.tar.gz + tar -zxvf geth-alltools-linux-amd64-1.12.0-e501b3b0.tar.gz + sudo mv geth-alltools-linux-amd64-1.12.0-e501b3b0/abigen /usr/local/bin + - name: Run abigen + run: make contract-abigen + - name: Check diff + run: git diff --exit-code diff --git a/contract/ERC1967Proxy.go b/contract/ERC1967Proxy.go index 51493b7e8..f4f2360c9 100644 --- a/contract/ERC1967Proxy.go +++ b/contract/ERC1967Proxy.go @@ -32,7 +32,7 @@ var ( // ERC1967ProxyMetaData contains all meta data concerning the ERC1967Proxy contract. var ERC1967ProxyMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x6080604052604051610730380380610730833981016040819052610022916102dc565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d08383604051806060016040528060278152602001610709602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103a5565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a0578251610299576001600160a01b0385163b6102995760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102aa565b6102aa83836102b2565b949350505050565b8151156102c25781518083602001fd5b8060405162461bcd60e51b815260040161014891906103c1565b600080604083850312156102ee578182fd5b82516001600160a01b0381168114610304578283fd5b60208401519092506001600160401b0380821115610320578283fd5b818501915085601f830112610333578283fd5b81518181111561034557610345610420565b604051601f8201601f19908116603f0116810190838211818310171561036d5761036d610420565b81604052828152886020848701011115610385578586fd5b6103968360208301602088016103f4565b80955050505050509250929050565b600082516103b78184602087016103f4565b9190910192915050565b60006020825282518060208401526103e08160408501602087016103f4565b601f01601f19169190910160400192915050565b60005b8381101561040f5781810151838201526020016103f7565b838111156100645750506000910152565b634e487b7160e01b600052604160045260246000fd5b6102c4806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e8383604051806060016040528060278152602001610268602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e091906101e8565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101ac5782516101a5576001600160a01b0385163b6101a55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b6565b6101b683836101be565b949350505050565b8151156101ce5781518083602001fd5b8060405162461bcd60e51b815260040161019c9190610204565b600082516101fa818460208701610237565b9190910192915050565b6000602082528251806020840152610223816040850160208701610237565b601f01601f19169190910160400192915050565b60005b8381101561025257818101518382015260200161023a565b83811115610261576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220deb2a2ad2a8fa4eae182b95438a3a809218100e1ad9c4e195104129b21e87f2e64736f6c63430008020033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", + Bin: "0x6080604052604051610730380380610730833981016040819052610022916102dc565b61002e82826000610035565b5050610436565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d08383604051806060016040528060278152602001610709602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103a5565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a0578251610299576001600160a01b0385163b6102995760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102aa565b6102aa83836102b2565b949350505050565b8151156102c25781518083602001fd5b8060405162461bcd60e51b815260040161014891906103c1565b600080604083850312156102ee578182fd5b82516001600160a01b0381168114610304578283fd5b60208401519092506001600160401b0380821115610320578283fd5b818501915085601f830112610333578283fd5b81518181111561034557610345610420565b604051601f8201601f19908116603f0116810190838211818310171561036d5761036d610420565b81604052828152886020848701011115610385578586fd5b6103968360208301602088016103f4565b80955050505050509250929050565b600082516103b78184602087016103f4565b9190910192915050565b60006020825282518060208401526103e08160408501602087016103f4565b601f01601f19169190910160400192915050565b60005b8381101561040f5781810151838201526020016103f7565b838111156100645750506000910152565b634e487b7160e01b600052604160045260246000fd5b6102c4806104456000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e8383604051806060016040528060278152602001610268602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e091906101e8565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101ac5782516101a5576001600160a01b0385163b6101a55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b6565b6101b683836101be565b949350505050565b8151156101ce5781518083602001fd5b8060405162461bcd60e51b815260040161019c9190610204565b600082516101fa818460208701610237565b9190910192915050565b6000602082528251806020840152610223816040850160208701610237565b601f01601f19169190910160400192915050565b60005b8381101561025257818101518382015260200161023a565b83811115610261576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204a4228021495d41d2906656dd1b0bafce5db0fb5eb7d07c6650bc812bf8f676d64736f6c63430008020033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", } // ERC1967ProxyABI is the input ABI used to generate the binding from. diff --git a/contract/FIP20Upgradable.go b/contract/FIP20Upgradable.go index e9545f71b..7dc54883e 100644 --- a/contract/FIP20Upgradable.go +++ b/contract/FIP20Upgradable.go @@ -32,7 +32,7 @@ var ( // FIP20UpgradableMetaData contains all meta data concerning the FIP20Upgradable contract. var FIP20UpgradableMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"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\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"recipient\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"target\",\"type\":\"bytes32\"}],\"name\":\"TransferCrossChain\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"module_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"module\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"string\",\"name\":\"recipient\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"target\",\"type\":\"bytes32\"}],\"name\":\"transferCrossChain\",\"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\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", - Bin: "0x60a06040526d100100000000000000000000000060805234801561002257600080fd5b5060805160601c611e0361005d6000396000818161056c015281816105ac01528181610662015281816106a201526107310152611e036000f3fe60806040526004361061011f5760003560e01c8063715018a6116100a0578063b86d529811610064578063b86d529814610306578063c5cb9b5114610324578063dd62ed3e14610344578063de7ea79d1461038a578063f2fde38b146103aa5761011f565b8063715018a61461026a5780638da5cb5b1461027f57806395d89b41146102b15780639dc29fac146102c6578063a9059cbb146102e65761011f565b80633659cfe6116100e75780633659cfe6146101e057806340c10f19146102025780634f1ef2861461022257806352d1902d1461023557806370a082311461024a5761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461017f57806323b872dd1461019e578063313ce567146101be575b600080fd5b34801561013057600080fd5b506101396103ca565b6040516101469190611b46565b60405180910390f35b34801561015b57600080fd5b5061016f61016a3660046118d3565b61045c565b6040519015158152602001610146565b34801561018b57600080fd5b5060cc545b604051908152602001610146565b3480156101aa57600080fd5b5061016f6101b9366004611839565b6104b2565b3480156101ca57600080fd5b5060cb5460405160ff9091168152602001610146565b3480156101ec57600080fd5b506102006101fb3660046117ed565b610561565b005b34801561020e57600080fd5b5061020061021d3660046118d3565b610641565b610200610230366004611874565b610657565b34801561024157600080fd5b50610190610724565b34801561025657600080fd5b506101906102653660046117ed565b6107d7565b34801561027657600080fd5b506102006107f6565b34801561028b57600080fd5b506097546001600160a01b03165b6040516001600160a01b039091168152602001610146565b3480156102bd57600080fd5b5061013961080a565b3480156102d257600080fd5b506102006102e13660046118d3565b610819565b3480156102f257600080fd5b5061016f6103013660046118d3565b61082b565b34801561031257600080fd5b5060cf546001600160a01b0316610299565b34801561033057600080fd5b5061016f61033f366004611a27565b610841565b34801561035057600080fd5b5061019061035f366004611807565b6001600160a01b03918216600090815260ce6020908152604080832093909416825291909152205490565b34801561039657600080fd5b506102006103a536600461199e565b6108f7565b3480156103b657600080fd5b506102006103c53660046117ed565b610a66565b606060c980546103d990611d1f565b80601f016020809104026020016040519081016040528092919081815260200182805461040590611d1f565b80156104525780601f1061042757610100808354040283529160200191610452565b820191906000526020600020905b81548152906001019060200180831161043557829003601f168201915b5050505050905090565b6000610469338484610adc565b6040518281526001600160a01b0384169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259060200160405180910390a350600192915050565b6001600160a01b038316600090815260ce60209081526040808320338452909152812054828110156105355760405162461bcd60e51b815260206004820152602160248201527f7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b60648201526084015b60405180910390fd5b61054985336105448685611cdc565b610adc565b610554858585610b5e565b60019150505b9392505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156105aa5760405162461bcd60e51b815260040161052c90611b88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105f3600080516020611d87833981519152546001600160a01b031690565b6001600160a01b0316146106195760405162461bcd60e51b815260040161052c90611bd4565b61062281610d0d565b6040805160008082526020820190925261063e91839190610d15565b50565b610649610e99565b6106538282610ef3565b5050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156106a05760405162461bcd60e51b815260040161052c90611b88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106e9600080516020611d87833981519152546001600160a01b031690565b6001600160a01b03161461070f5760405162461bcd60e51b815260040161052c90611bd4565b61071882610d0d565b61065382826001610d15565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107c45760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161052c565b50600080516020611d8783398151915290565b6001600160a01b038116600090815260cd60205260409020545b919050565b6107fe610e99565b6108086000610fd2565b565b606060ca80546103d990611d1f565b610821610e99565b6106538282611024565b6000610838338484610b5e565b50600192915050565b600063ffffffff333b16156108985760405162461bcd60e51b815260206004820152601960248201527f63616c6c65722063616e6e6f7420626520636f6e747261637400000000000000604482015260640161052c565b6108a53386868686611166565b336001600160a01b03167f282dd1817b996776123a00596764d4d54cc16460c9854f7a23f6be020ba0463d868686866040516108e49493929190611b59565b60405180910390a2506001949350505050565b600054610100900460ff16158080156109175750600054600160ff909116105b806109315750303b158015610931575060005460ff166001145b6109945760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161052c565b6000805460ff1916600117905580156109b7576000805461ff0019166101001790555b84516109ca9060c99060208801906116e0565b5083516109de9060ca9060208701906116e0565b5060cb805460ff191660ff851617905560cf80546001600160a01b0319166001600160a01b038416179055610a11611285565b610a196112b4565b8015610a5f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610a6e610e99565b6001600160a01b038116610ad35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052c565b61063e81610fd2565b6001600160a01b038316610b325760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f2061646472657373000000604482015260640161052c565b6001600160a01b03928316600090815260ce602090815260408083209490951682529290925291902055565b6001600160a01b038316610bb45760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161052c565b6001600160a01b038216610c0a5760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f206164647265737300000000604482015260640161052c565b6001600160a01b038316600090815260cd602052604090205481811015610c735760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161052c565b610c7d8282611cdc565b6001600160a01b03808616600090815260cd60205260408082209390935590851681529081208054849290610cb3908490611cc4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cff91815260200190565b60405180910390a350505050565b61063e610e99565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610d4d57610d48836112db565b610e94565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8657600080fd5b505afa925050508015610db6575060408051601f3d908101601f19168201909252610db39181019061191c565b60015b610e195760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161052c565b600080516020611d878339815191528114610e885760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161052c565b50610e94838383611377565b505050565b6097546001600160a01b031633146108085760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052c565b6001600160a01b038216610f495760405162461bcd60e51b815260206004820152601860248201527f6d696e7420746f20746865207a65726f20616464726573730000000000000000604482015260640161052c565b8060cc6000828254610f5b9190611cc4565b90915550506001600160a01b038216600090815260cd602052604081208054839290610f88908490611cc4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661107a5760405162461bcd60e51b815260206004820152601a60248201527f6275726e2066726f6d20746865207a65726f2061646472657373000000000000604482015260640161052c565b6001600160a01b038216600090815260cd6020526040902054818110156110e35760405162461bcd60e51b815260206004820152601b60248201527f6275726e20616d6f756e7420657863656564732062616c616e63650000000000604482015260640161052c565b6110ed8282611cdc565b6001600160a01b038416600090815260cd602052604081209190915560cc805484929061111b908490611cdc565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6001600160a01b0385166111bc5760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161052c565b60008451116112015760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c9958da5c1a595b9d607a1b604482015260640161052c565b8061123f5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081d185c99d95d60921b604482015260640161052c565b60cf546112609086906001600160a01b031661125b8587611cc4565b610b5e565b61127d8585858585604051806020016040528060008152506113a2565b505050505050565b600054610100900460ff166112ac5760405162461bcd60e51b815260040161052c90611c20565b61080861145a565b600054610100900460ff166108085760405162461bcd60e51b815260040161052c90611c20565b6001600160a01b0381163b6113485760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161052c565b600080516020611d8783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6113808361148a565b60008251118061138d5750805b15610e945761139c83836114ca565b50505050565b600080806110046113b78a8a8a8a8a8a6115be565b6040516113c49190611aa5565b6000604051808303816000865af19150503d8060008114611401576040519150601f19603f3d011682016040523d82523d6000602084013e611406565b606091505b5091509150611444828260405180604001604052806016815260200175199a5c0b58dc9bdcdccb58da185a5b8819985a5b195960521b815250611611565b61144d8161168b565b9998505050505050505050565b600054610100900460ff166114815760405162461bcd60e51b815260040161052c90611c20565b61080833610fd2565b611493816112db565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6115325760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161052c565b600080846001600160a01b03168460405161154d9190611aa5565b600060405180830381855af49150503d8060008114611588576040519150601f19603f3d011682016040523d82523d6000602084013e61158d565b606091505b50915091506115b58282604051806060016040528060278152602001611da7602791396116a2565b95945050505050565b60608686868686866040516024016115db96959493929190611afe565b60408051601f198184030181529190526020810180516001600160e01b0316633c3e7d7760e01b17905290509695505050505050565b82610e945760008280602001905181019061162c9190611934565b9050600182511015611652578060405162461bcd60e51b815260040161052c9190611b46565b8181604051602001611665929190611ac1565b60408051601f198184030181529082905262461bcd60e51b825261052c91600401611b46565b6000808280602001905181019061055a91906118fc565b606083156116b157508161055a565b61055a83838151156116c65781518083602001fd5b8060405162461bcd60e51b815260040161052c9190611b46565b8280546116ec90611d1f565b90600052602060002090601f01602090048101928261170e5760008555611754565b82601f1061172757805160ff1916838001178555611754565b82800160010185558215611754579182015b82811115611754578251825591602001919060010190611739565b50611760929150611764565b5090565b5b808211156117605760008155600101611765565b600061178c61178784611c9c565b611c6b565b90508281528383830111156117a057600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b03811681146107f157600080fd5b600082601f8301126117de578081fd5b61055a83833560208501611779565b6000602082840312156117fe578081fd5b61055a826117b7565b60008060408385031215611819578081fd5b611822836117b7565b9150611830602084016117b7565b90509250929050565b60008060006060848603121561184d578081fd5b611856846117b7565b9250611864602085016117b7565b9150604084013590509250925092565b60008060408385031215611886578182fd5b61188f836117b7565b9150602083013567ffffffffffffffff8111156118aa578182fd5b8301601f810185136118ba578182fd5b6118c985823560208401611779565b9150509250929050565b600080604083850312156118e5578182fd5b6118ee836117b7565b946020939093013593505050565b60006020828403121561190d578081fd5b8151801515811461055a578182fd5b60006020828403121561192d578081fd5b5051919050565b600060208284031215611945578081fd5b815167ffffffffffffffff81111561195b578182fd5b8201601f8101841361196b578182fd5b805161197961178782611c9c565b81815285602083850101111561198d578384fd5b6115b5826020830160208601611cf3565b600080600080608085870312156119b3578081fd5b843567ffffffffffffffff808211156119ca578283fd5b6119d6888389016117ce565b955060208701359150808211156119eb578283fd5b506119f8878288016117ce565b935050604085013560ff81168114611a0e578182fd5b9150611a1c606086016117b7565b905092959194509250565b60008060008060808587031215611a3c578384fd5b843567ffffffffffffffff811115611a52578485fd5b611a5e878288016117ce565b97602087013597506040870135966060013595509350505050565b60008151808452611a91816020860160208601611cf3565b601f01601f19169290920160200192915050565b60008251611ab7818460208701611cf3565b9190910192915050565b60008351611ad3818460208801611cf3565b6101d160f51b9083019081528351611af2816002840160208801611cf3565b01600201949350505050565b6001600160a01b038716815260c060208201819052600090611b2290830188611a79565b86604084015285606084015284608084015282810360a084015261144d8185611a79565b60006020825261055a6020830184611a79565b600060808252611b6c6080830187611a79565b6020830195909552506040810192909252606090910152919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff81118282101715611c9457611c94611d70565b604052919050565b600067ffffffffffffffff821115611cb657611cb6611d70565b50601f01601f191660200190565b60008219821115611cd757611cd7611d5a565b500190565b600082821015611cee57611cee611d5a565b500390565b60005b83811015611d0e578181015183820152602001611cf6565b8381111561139c5750506000910152565b600281046001821680611d3357607f821691505b60208210811415611d5457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b7a4014c45185116ae9728d5f18a5476a7a86290d18c76f4d69943b837b6a5ea64736f6c63430008020033", + Bin: "0x60a06040526d100100000000000000000000000060805234801561002257600080fd5b5060805160601c611e0361005d6000396000818161056c015281816105ac01528181610662015281816106a201526107310152611e036000f3fe60806040526004361061011f5760003560e01c8063715018a6116100a0578063b86d529811610064578063b86d529814610306578063c5cb9b5114610324578063dd62ed3e14610344578063de7ea79d1461038a578063f2fde38b146103aa5761011f565b8063715018a61461026a5780638da5cb5b1461027f57806395d89b41146102b15780639dc29fac146102c6578063a9059cbb146102e65761011f565b80633659cfe6116100e75780633659cfe6146101e057806340c10f19146102025780634f1ef2861461022257806352d1902d1461023557806370a082311461024a5761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461017f57806323b872dd1461019e578063313ce567146101be575b600080fd5b34801561013057600080fd5b506101396103ca565b6040516101469190611b46565b60405180910390f35b34801561015b57600080fd5b5061016f61016a3660046118d3565b61045c565b6040519015158152602001610146565b34801561018b57600080fd5b5060cc545b604051908152602001610146565b3480156101aa57600080fd5b5061016f6101b9366004611839565b6104b2565b3480156101ca57600080fd5b5060cb5460405160ff9091168152602001610146565b3480156101ec57600080fd5b506102006101fb3660046117ed565b610561565b005b34801561020e57600080fd5b5061020061021d3660046118d3565b610641565b610200610230366004611874565b610657565b34801561024157600080fd5b50610190610724565b34801561025657600080fd5b506101906102653660046117ed565b6107d7565b34801561027657600080fd5b506102006107f6565b34801561028b57600080fd5b506097546001600160a01b03165b6040516001600160a01b039091168152602001610146565b3480156102bd57600080fd5b5061013961080a565b3480156102d257600080fd5b506102006102e13660046118d3565b610819565b3480156102f257600080fd5b5061016f6103013660046118d3565b61082b565b34801561031257600080fd5b5060cf546001600160a01b0316610299565b34801561033057600080fd5b5061016f61033f366004611a27565b610841565b34801561035057600080fd5b5061019061035f366004611807565b6001600160a01b03918216600090815260ce6020908152604080832093909416825291909152205490565b34801561039657600080fd5b506102006103a536600461199e565b6108f7565b3480156103b657600080fd5b506102006103c53660046117ed565b610a66565b606060c980546103d990611d1f565b80601f016020809104026020016040519081016040528092919081815260200182805461040590611d1f565b80156104525780601f1061042757610100808354040283529160200191610452565b820191906000526020600020905b81548152906001019060200180831161043557829003601f168201915b5050505050905090565b6000610469338484610adc565b6040518281526001600160a01b0384169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259060200160405180910390a350600192915050565b6001600160a01b038316600090815260ce60209081526040808320338452909152812054828110156105355760405162461bcd60e51b815260206004820152602160248201527f7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b60648201526084015b60405180910390fd5b61054985336105448685611cdc565b610adc565b610554858585610b5e565b60019150505b9392505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156105aa5760405162461bcd60e51b815260040161052c90611b88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166105f3600080516020611d87833981519152546001600160a01b031690565b6001600160a01b0316146106195760405162461bcd60e51b815260040161052c90611bd4565b61062281610d0d565b6040805160008082526020820190925261063e91839190610d15565b50565b610649610e99565b6106538282610ef3565b5050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156106a05760405162461bcd60e51b815260040161052c90611b88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106e9600080516020611d87833981519152546001600160a01b031690565b6001600160a01b03161461070f5760405162461bcd60e51b815260040161052c90611bd4565b61071882610d0d565b61065382826001610d15565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107c45760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161052c565b50600080516020611d8783398151915290565b6001600160a01b038116600090815260cd60205260409020545b919050565b6107fe610e99565b6108086000610fd2565b565b606060ca80546103d990611d1f565b610821610e99565b6106538282611024565b6000610838338484610b5e565b50600192915050565b600063ffffffff333b16156108985760405162461bcd60e51b815260206004820152601960248201527f63616c6c65722063616e6e6f7420626520636f6e747261637400000000000000604482015260640161052c565b6108a53386868686611166565b336001600160a01b03167f282dd1817b996776123a00596764d4d54cc16460c9854f7a23f6be020ba0463d868686866040516108e49493929190611b59565b60405180910390a2506001949350505050565b600054610100900460ff16158080156109175750600054600160ff909116105b806109315750303b158015610931575060005460ff166001145b6109945760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161052c565b6000805460ff1916600117905580156109b7576000805461ff0019166101001790555b84516109ca9060c99060208801906116e0565b5083516109de9060ca9060208701906116e0565b5060cb805460ff191660ff851617905560cf80546001600160a01b0319166001600160a01b038416179055610a11611285565b610a196112b4565b8015610a5f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610a6e610e99565b6001600160a01b038116610ad35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161052c565b61063e81610fd2565b6001600160a01b038316610b325760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f2061646472657373000000604482015260640161052c565b6001600160a01b03928316600090815260ce602090815260408083209490951682529290925291902055565b6001600160a01b038316610bb45760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161052c565b6001600160a01b038216610c0a5760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f206164647265737300000000604482015260640161052c565b6001600160a01b038316600090815260cd602052604090205481811015610c735760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161052c565b610c7d8282611cdc565b6001600160a01b03808616600090815260cd60205260408082209390935590851681529081208054849290610cb3908490611cc4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cff91815260200190565b60405180910390a350505050565b61063e610e99565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610d4d57610d48836112db565b610e94565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8657600080fd5b505afa925050508015610db6575060408051601f3d908101601f19168201909252610db39181019061191c565b60015b610e195760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161052c565b600080516020611d878339815191528114610e885760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161052c565b50610e94838383611377565b505050565b6097546001600160a01b031633146108085760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161052c565b6001600160a01b038216610f495760405162461bcd60e51b815260206004820152601860248201527f6d696e7420746f20746865207a65726f20616464726573730000000000000000604482015260640161052c565b8060cc6000828254610f5b9190611cc4565b90915550506001600160a01b038216600090815260cd602052604081208054839290610f88908490611cc4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661107a5760405162461bcd60e51b815260206004820152601a60248201527f6275726e2066726f6d20746865207a65726f2061646472657373000000000000604482015260640161052c565b6001600160a01b038216600090815260cd6020526040902054818110156110e35760405162461bcd60e51b815260206004820152601b60248201527f6275726e20616d6f756e7420657863656564732062616c616e63650000000000604482015260640161052c565b6110ed8282611cdc565b6001600160a01b038416600090815260cd602052604081209190915560cc805484929061111b908490611cdc565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6001600160a01b0385166111bc5760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161052c565b60008451116112015760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c9958da5c1a595b9d607a1b604482015260640161052c565b8061123f5760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081d185c99d95d60921b604482015260640161052c565b60cf546112609086906001600160a01b031661125b8587611cc4565b610b5e565b61127d8585858585604051806020016040528060008152506113a2565b505050505050565b600054610100900460ff166112ac5760405162461bcd60e51b815260040161052c90611c20565b61080861145a565b600054610100900460ff166108085760405162461bcd60e51b815260040161052c90611c20565b6001600160a01b0381163b6113485760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161052c565b600080516020611d8783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6113808361148a565b60008251118061138d5750805b15610e945761139c83836114ca565b50505050565b600080806110046113b78a8a8a8a8a8a6115be565b6040516113c49190611aa5565b6000604051808303816000865af19150503d8060008114611401576040519150601f19603f3d011682016040523d82523d6000602084013e611406565b606091505b5091509150611444828260405180604001604052806016815260200175199a5c0b58dc9bdcdccb58da185a5b8819985a5b195960521b815250611611565b61144d8161168b565b9998505050505050505050565b600054610100900460ff166114815760405162461bcd60e51b815260040161052c90611c20565b61080833610fd2565b611493816112db565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6115325760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161052c565b600080846001600160a01b03168460405161154d9190611aa5565b600060405180830381855af49150503d8060008114611588576040519150601f19603f3d011682016040523d82523d6000602084013e61158d565b606091505b50915091506115b58282604051806060016040528060278152602001611da7602791396116a2565b95945050505050565b60608686868686866040516024016115db96959493929190611afe565b60408051601f198184030181529190526020810180516001600160e01b0316633c3e7d7760e01b17905290509695505050505050565b82610e945760008280602001905181019061162c9190611934565b9050600182511015611652578060405162461bcd60e51b815260040161052c9190611b46565b8181604051602001611665929190611ac1565b60408051601f198184030181529082905262461bcd60e51b825261052c91600401611b46565b6000808280602001905181019061055a91906118fc565b606083156116b157508161055a565b61055a83838151156116c65781518083602001fd5b8060405162461bcd60e51b815260040161052c9190611b46565b8280546116ec90611d1f565b90600052602060002090601f01602090048101928261170e5760008555611754565b82601f1061172757805160ff1916838001178555611754565b82800160010185558215611754579182015b82811115611754578251825591602001919060010190611739565b50611760929150611764565b5090565b5b808211156117605760008155600101611765565b600061178c61178784611c9c565b611c6b565b90508281528383830111156117a057600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b03811681146107f157600080fd5b600082601f8301126117de578081fd5b61055a83833560208501611779565b6000602082840312156117fe578081fd5b61055a826117b7565b60008060408385031215611819578081fd5b611822836117b7565b9150611830602084016117b7565b90509250929050565b60008060006060848603121561184d578081fd5b611856846117b7565b9250611864602085016117b7565b9150604084013590509250925092565b60008060408385031215611886578182fd5b61188f836117b7565b9150602083013567ffffffffffffffff8111156118aa578182fd5b8301601f810185136118ba578182fd5b6118c985823560208401611779565b9150509250929050565b600080604083850312156118e5578182fd5b6118ee836117b7565b946020939093013593505050565b60006020828403121561190d578081fd5b8151801515811461055a578182fd5b60006020828403121561192d578081fd5b5051919050565b600060208284031215611945578081fd5b815167ffffffffffffffff81111561195b578182fd5b8201601f8101841361196b578182fd5b805161197961178782611c9c565b81815285602083850101111561198d578384fd5b6115b5826020830160208601611cf3565b600080600080608085870312156119b3578081fd5b843567ffffffffffffffff808211156119ca578283fd5b6119d6888389016117ce565b955060208701359150808211156119eb578283fd5b506119f8878288016117ce565b935050604085013560ff81168114611a0e578182fd5b9150611a1c606086016117b7565b905092959194509250565b60008060008060808587031215611a3c578384fd5b843567ffffffffffffffff811115611a52578485fd5b611a5e878288016117ce565b97602087013597506040870135966060013595509350505050565b60008151808452611a91816020860160208601611cf3565b601f01601f19169290920160200192915050565b60008251611ab7818460208701611cf3565b9190910192915050565b60008351611ad3818460208801611cf3565b6101d160f51b9083019081528351611af2816002840160208801611cf3565b01600201949350505050565b6001600160a01b038716815260c060208201819052600090611b2290830188611a79565b86604084015285606084015284608084015282810360a084015261144d8185611a79565b60006020825261055a6020830184611a79565b600060808252611b6c6080830187611a79565b6020830195909552506040810192909252606090910152919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff81118282101715611c9457611c94611d70565b604052919050565b600067ffffffffffffffff821115611cb657611cb6611d70565b50601f01601f191660200190565b60008219821115611cd757611cd7611d5a565b500190565b600082821015611cee57611cee611d5a565b500390565b60005b83811015611d0e578181015183820152602001611cf6565b8381111561139c5750506000910152565b600281046001821680611d3357607f821691505b60208210811415611d5457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122051e0aed842c0559223420ca2eefef201271cb3ffa78d13dd3d726b371752d56364736f6c63430008020033", } // FIP20UpgradableABI is the input ABI used to generate the binding from. diff --git a/contract/WFXUpgradable.go b/contract/WFXUpgradable.go index 2f60f1922..0c6e4be4e 100644 --- a/contract/WFXUpgradable.go +++ b/contract/WFXUpgradable.go @@ -32,7 +32,7 @@ var ( // WFXUpgradableMetaData contains all meta data concerning the WFXUpgradable contract. var WFXUpgradableMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"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\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"recipient\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"target\",\"type\":\"bytes32\"}],\"name\":\"TransferCrossChain\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"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\":\"Withdraw\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"module_\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"module\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"string\",\"name\":\"recipient\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"target\",\"type\":\"bytes32\"}],\"name\":\"transferCrossChain\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"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\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60a06040526d100200000000000000000000000060805234801561002257600080fd5b5060805160601c611f2861005d6000396000818161060001528181610640015281816106f60152818161073601526107c50152611f286000f3fe6080604052600436106101395760003560e01c80638da5cb5b116100ab578063c5cb9b511161006f578063c5cb9b5114610364578063d0e30db014610148578063dd62ed3e14610377578063de7ea79d146103bd578063f2fde38b146103dd578063f3fef3a3146103fd57610148565b80638da5cb5b146102bf57806395d89b41146102f15780639dc29fac14610306578063a9059cbb14610326578063b86d52981461034657610148565b80633659cfe6116100fd5780633659cfe61461020c57806340c10f191461022c5780634f1ef2861461024c57806352d1902d1461025f57806370a0823114610274578063715018a6146102aa57610148565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101ca578063313ce567146101ea57610148565b366101485761014661041d565b005b61014661041d565b34801561015c57600080fd5b5061016561045e565b6040516101729190611c56565b60405180910390f35b34801561018757600080fd5b5061019b6101963660046119f8565b6104f0565b6040519015158152602001610172565b3480156101b757600080fd5b5060cc545b604051908152602001610172565b3480156101d657600080fd5b5061019b6101e5366004611957565b610546565b3480156101f657600080fd5b5060cb5460405160ff9091168152602001610172565b34801561021857600080fd5b506101466102273660046118d8565b6105f5565b34801561023857600080fd5b506101466102473660046119f8565b6106d5565b61014661025a366004611997565b6106eb565b34801561026b57600080fd5b506101bc6107b8565b34801561028057600080fd5b506101bc61028f3660046118d8565b6001600160a01b0316600090815260cd602052604090205490565b3480156102b657600080fd5b5061014661086b565b3480156102cb57600080fd5b506097546001600160a01b03165b6040516001600160a01b039091168152602001610172565b3480156102fd57600080fd5b5061016561087f565b34801561031257600080fd5b506101466103213660046119f8565b61088e565b34801561033257600080fd5b5061019b6103413660046119f8565b6108a0565b34801561035257600080fd5b5060cf546001600160a01b03166102d9565b61019b610372366004611b37565b6108b6565b34801561038357600080fd5b506101bc61039236600461191f565b6001600160a01b03918216600090815260ce6020908152604080832093909416825291909152205490565b3480156103c957600080fd5b506101466103d8366004611aac565b61097a565b3480156103e957600080fd5b506101466103f83660046118d8565b610ae9565b34801561040957600080fd5b506101466104183660046118f4565b610b5f565b6104273334610be5565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b606060c9805461046d90611e2f565b80601f016020809104026020016040519081016040528092919081815260200182805461049990611e2f565b80156104e65780601f106104bb576101008083540402835291602001916104e6565b820191906000526020600020905b8154815290600101906020018083116104c957829003601f168201915b5050505050905090565b60006104fd338484610cbd565b6040518281526001600160a01b0384169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259060200160405180910390a350600192915050565b6001600160a01b038316600090815260ce60209081526040808320338452909152812054828110156105c95760405162461bcd60e51b815260206004820152602160248201527f7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b60648201526084015b60405180910390fd5b6105dd85336105d88685611dec565b610cbd565b6105e8858585610d3f565b60019150505b9392505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561063e5760405162461bcd60e51b81526004016105c090611c98565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610687600080516020611eac833981519152546001600160a01b031690565b6001600160a01b0316146106ad5760405162461bcd60e51b81526004016105c090611ce4565b6106b681610eee565b604080516000808252602082019092526106d291839190610ef6565b50565b6106dd61107a565b6106e78282610be5565b5050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156107345760405162461bcd60e51b81526004016105c090611c98565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661077d600080516020611eac833981519152546001600160a01b031690565b6001600160a01b0316146107a35760405162461bcd60e51b81526004016105c090611ce4565b6107ac82610eee565b6106e782826001610ef6565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108585760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016105c0565b50600080516020611eac83398151915290565b61087361107a565b61087d60006110d4565b565b606060ca805461046d90611e2f565b61089661107a565b6106e78282611126565b60006108ad338484610d3f565b50600192915050565b600063ffffffff333b161561090d5760405162461bcd60e51b815260206004820152601960248201527f63616c6c65722063616e6e6f7420626520636f6e74726163740000000000000060448201526064016105c0565b341561091b5761091b61041d565b6109283386868686611268565b336001600160a01b03167f282dd1817b996776123a00596764d4d54cc16460c9854f7a23f6be020ba0463d868686866040516109679493929190611c69565b60405180910390a2506001949350505050565b600054610100900460ff161580801561099a5750600054600160ff909116105b806109b45750303b1580156109b4575060005460ff166001145b610a175760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105c0565b6000805460ff191660011790558015610a3a576000805461ff0019166101001790555b8451610a4d9060c99060208801906117e2565b508351610a619060ca9060208701906117e2565b5060cb805460ff191660ff851617905560cf80546001600160a01b0319166001600160a01b038416179055610a94611387565b610a9c6113b6565b8015610ae2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610af161107a565b6001600160a01b038116610b565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105c0565b6106d2816110d4565b610b693382611126565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610b9f573d6000803e3d6000fd5b506040518181526001600160a01b0383169033907f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb906020015b60405180910390a35050565b6001600160a01b038216610c3b5760405162461bcd60e51b815260206004820152601860248201527f6d696e7420746f20746865207a65726f2061646472657373000000000000000060448201526064016105c0565b8060cc6000828254610c4d9190611dd4565b90915550506001600160a01b038216600090815260cd602052604081208054839290610c7a908490611dd4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610bd9565b6001600160a01b038316610d135760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f206164647265737300000060448201526064016105c0565b6001600160a01b03928316600090815260ce602090815260408083209490951682529290925291902055565b6001600160a01b038316610d955760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f2061646472657373000060448201526064016105c0565b6001600160a01b038216610deb5760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f20616464726573730000000060448201526064016105c0565b6001600160a01b038316600090815260cd602052604090205481811015610e545760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657220616d6f756e7420657863656564732062616c616e63650060448201526064016105c0565b610e5e8282611dec565b6001600160a01b03808616600090815260cd60205260408082209390935590851681529081208054849290610e94908490611dd4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ee091815260200190565b60405180910390a350505050565b6106d261107a565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f2e57610f29836113dd565b611075565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f6757600080fd5b505afa925050508015610f97575060408051601f3d908101601f19168201909252610f9491810190611a2a565b60015b610ffa5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016105c0565b600080516020611eac83398151915281146110695760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016105c0565b50611075838383611479565b505050565b6097546001600160a01b0316331461087d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105c0565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661117c5760405162461bcd60e51b815260206004820152601a60248201527f6275726e2066726f6d20746865207a65726f206164647265737300000000000060448201526064016105c0565b6001600160a01b038216600090815260cd6020526040902054818110156111e55760405162461bcd60e51b815260206004820152601b60248201527f6275726e20616d6f756e7420657863656564732062616c616e6365000000000060448201526064016105c0565b6111ef8282611dec565b6001600160a01b038416600090815260cd602052604081209190915560cc805484929061121d908490611dec565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6001600160a01b0385166112be5760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f2061646472657373000060448201526064016105c0565b60008451116113035760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c9958da5c1a595b9d607a1b60448201526064016105c0565b806113415760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081d185c99d95d60921b60448201526064016105c0565b60cf546113629086906001600160a01b031661135d8587611dd4565b610d3f565b61137f8585858585604051806020016040528060008152506114a4565b505050505050565b600054610100900460ff166113ae5760405162461bcd60e51b81526004016105c090611d30565b61087d61155c565b600054610100900460ff1661087d5760405162461bcd60e51b81526004016105c090611d30565b6001600160a01b0381163b61144a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016105c0565b600080516020611eac83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6114828361158c565b60008251118061148f5750805b156110755761149e83836115cc565b50505050565b600080806110046114b98a8a8a8a8a8a6116c0565b6040516114c69190611bb5565b6000604051808303816000865af19150503d8060008114611503576040519150601f19603f3d011682016040523d82523d6000602084013e611508565b606091505b5091509150611546828260405180604001604052806016815260200175199a5c0b58dc9bdcdccb58da185a5b8819985a5b195960521b815250611713565b61154f8161178d565b9998505050505050505050565b600054610100900460ff166115835760405162461bcd60e51b81526004016105c090611d30565b61087d336110d4565b611595816113dd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6116345760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016105c0565b600080846001600160a01b03168460405161164f9190611bb5565b600060405180830381855af49150503d806000811461168a576040519150601f19603f3d011682016040523d82523d6000602084013e61168f565b606091505b50915091506116b78282604051806060016040528060278152602001611ecc602791396117a4565b95945050505050565b60608686868686866040516024016116dd96959493929190611c0e565b60408051601f198184030181529190526020810180516001600160e01b0316633c3e7d7760e01b17905290509695505050505050565b826110755760008280602001905181019061172e9190611a42565b9050600182511015611754578060405162461bcd60e51b81526004016105c09190611c56565b8181604051602001611767929190611bd1565b60408051601f198184030181529082905262461bcd60e51b82526105c091600401611c56565b600080828060200190518101906105ee9190611a0a565b606083156117b35750816105ee565b6105ee83838151156117c85781518083602001fd5b8060405162461bcd60e51b81526004016105c09190611c56565b8280546117ee90611e2f565b90600052602060002090601f0160209004810192826118105760008555611856565b82601f1061182957805160ff1916838001178555611856565b82800160010185558215611856579182015b8281111561185657825182559160200191906001019061183b565b50611862929150611866565b5090565b5b808211156118625760008155600101611867565b600061188e61188984611dac565b611d7b565b90508281528383830111156118a257600080fd5b828260208301376000602084830101529392505050565b600082601f8301126118c9578081fd5b6105ee8383356020850161187b565b6000602082840312156118e9578081fd5b81356105ee81611e96565b60008060408385031215611906578081fd5b823561191181611e96565b946020939093013593505050565b60008060408385031215611931578182fd5b823561193c81611e96565b9150602083013561194c81611e96565b809150509250929050565b60008060006060848603121561196b578081fd5b833561197681611e96565b9250602084013561198681611e96565b929592945050506040919091013590565b600080604083850312156119a9578182fd5b82356119b481611e96565b9150602083013567ffffffffffffffff8111156119cf578182fd5b8301601f810185136119df578182fd5b6119ee8582356020840161187b565b9150509250929050565b60008060408385031215611906578182fd5b600060208284031215611a1b578081fd5b815180151581146105ee578182fd5b600060208284031215611a3b578081fd5b5051919050565b600060208284031215611a53578081fd5b815167ffffffffffffffff811115611a69578182fd5b8201601f81018413611a79578182fd5b8051611a8761188982611dac565b818152856020838501011115611a9b578384fd5b6116b7826020830160208601611e03565b60008060008060808587031215611ac1578081fd5b843567ffffffffffffffff80821115611ad8578283fd5b611ae4888389016118b9565b95506020870135915080821115611af9578283fd5b50611b06878288016118b9565b935050604085013560ff81168114611b1c578182fd5b91506060850135611b2c81611e96565b939692955090935050565b60008060008060808587031215611b4c578384fd5b843567ffffffffffffffff811115611b62578485fd5b611b6e878288016118b9565b97602087013597506040870135966060013595509350505050565b60008151808452611ba1816020860160208601611e03565b601f01601f19169290920160200192915050565b60008251611bc7818460208701611e03565b9190910192915050565b60008351611be3818460208801611e03565b6101d160f51b9083019081528351611c02816002840160208801611e03565b01600201949350505050565b6001600160a01b038716815260c060208201819052600090611c3290830188611b89565b86604084015285606084015284608084015282810360a084015261154f8185611b89565b6000602082526105ee6020830184611b89565b600060808252611c7c6080830187611b89565b6020830195909552506040810192909252606090910152919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff81118282101715611da457611da4611e80565b604052919050565b600067ffffffffffffffff821115611dc657611dc6611e80565b50601f01601f191660200190565b60008219821115611de757611de7611e6a565b500190565b600082821015611dfe57611dfe611e6a565b500390565b60005b83811015611e1e578181015183820152602001611e06565b8381111561149e5750506000910152565b600281046001821680611e4357607f821691505b60208210811415611e6457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146106d257600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203507a3906cfc30be8c2a4f8308f41ad4797330c08a156e37c4f9450f60bb1f3a64736f6c63430008020033", + Bin: "0x60a06040526d100200000000000000000000000060805234801561002257600080fd5b5060805160601c611f2861005d6000396000818161060001528181610640015281816106f60152818161073601526107c50152611f286000f3fe6080604052600436106101395760003560e01c80638da5cb5b116100ab578063c5cb9b511161006f578063c5cb9b5114610364578063d0e30db014610148578063dd62ed3e14610377578063de7ea79d146103bd578063f2fde38b146103dd578063f3fef3a3146103fd57610148565b80638da5cb5b146102bf57806395d89b41146102f15780639dc29fac14610306578063a9059cbb14610326578063b86d52981461034657610148565b80633659cfe6116100fd5780633659cfe61461020c57806340c10f191461022c5780634f1ef2861461024c57806352d1902d1461025f57806370a0823114610274578063715018a6146102aa57610148565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101ca578063313ce567146101ea57610148565b366101485761014661041d565b005b61014661041d565b34801561015c57600080fd5b5061016561045e565b6040516101729190611c56565b60405180910390f35b34801561018757600080fd5b5061019b6101963660046119f8565b6104f0565b6040519015158152602001610172565b3480156101b757600080fd5b5060cc545b604051908152602001610172565b3480156101d657600080fd5b5061019b6101e5366004611957565b610546565b3480156101f657600080fd5b5060cb5460405160ff9091168152602001610172565b34801561021857600080fd5b506101466102273660046118d8565b6105f5565b34801561023857600080fd5b506101466102473660046119f8565b6106d5565b61014661025a366004611997565b6106eb565b34801561026b57600080fd5b506101bc6107b8565b34801561028057600080fd5b506101bc61028f3660046118d8565b6001600160a01b0316600090815260cd602052604090205490565b3480156102b657600080fd5b5061014661086b565b3480156102cb57600080fd5b506097546001600160a01b03165b6040516001600160a01b039091168152602001610172565b3480156102fd57600080fd5b5061016561087f565b34801561031257600080fd5b506101466103213660046119f8565b61088e565b34801561033257600080fd5b5061019b6103413660046119f8565b6108a0565b34801561035257600080fd5b5060cf546001600160a01b03166102d9565b61019b610372366004611b37565b6108b6565b34801561038357600080fd5b506101bc61039236600461191f565b6001600160a01b03918216600090815260ce6020908152604080832093909416825291909152205490565b3480156103c957600080fd5b506101466103d8366004611aac565b61097a565b3480156103e957600080fd5b506101466103f83660046118d8565b610ae9565b34801561040957600080fd5b506101466104183660046118f4565b610b5f565b6104273334610be5565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b606060c9805461046d90611e2f565b80601f016020809104026020016040519081016040528092919081815260200182805461049990611e2f565b80156104e65780601f106104bb576101008083540402835291602001916104e6565b820191906000526020600020905b8154815290600101906020018083116104c957829003601f168201915b5050505050905090565b60006104fd338484610cbd565b6040518281526001600160a01b0384169033907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259060200160405180910390a350600192915050565b6001600160a01b038316600090815260ce60209081526040808320338452909152812054828110156105c95760405162461bcd60e51b815260206004820152602160248201527f7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b60648201526084015b60405180910390fd5b6105dd85336105d88685611dec565b610cbd565b6105e8858585610d3f565b60019150505b9392505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561063e5760405162461bcd60e51b81526004016105c090611c98565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610687600080516020611eac833981519152546001600160a01b031690565b6001600160a01b0316146106ad5760405162461bcd60e51b81526004016105c090611ce4565b6106b681610eee565b604080516000808252602082019092526106d291839190610ef6565b50565b6106dd61107a565b6106e78282610be5565b5050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156107345760405162461bcd60e51b81526004016105c090611c98565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661077d600080516020611eac833981519152546001600160a01b031690565b6001600160a01b0316146107a35760405162461bcd60e51b81526004016105c090611ce4565b6107ac82610eee565b6106e782826001610ef6565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108585760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016105c0565b50600080516020611eac83398151915290565b61087361107a565b61087d60006110d4565b565b606060ca805461046d90611e2f565b61089661107a565b6106e78282611126565b60006108ad338484610d3f565b50600192915050565b600063ffffffff333b161561090d5760405162461bcd60e51b815260206004820152601960248201527f63616c6c65722063616e6e6f7420626520636f6e74726163740000000000000060448201526064016105c0565b341561091b5761091b61041d565b6109283386868686611268565b336001600160a01b03167f282dd1817b996776123a00596764d4d54cc16460c9854f7a23f6be020ba0463d868686866040516109679493929190611c69565b60405180910390a2506001949350505050565b600054610100900460ff161580801561099a5750600054600160ff909116105b806109b45750303b1580156109b4575060005460ff166001145b610a175760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105c0565b6000805460ff191660011790558015610a3a576000805461ff0019166101001790555b8451610a4d9060c99060208801906117e2565b508351610a619060ca9060208701906117e2565b5060cb805460ff191660ff851617905560cf80546001600160a01b0319166001600160a01b038416179055610a94611387565b610a9c6113b6565b8015610ae2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610af161107a565b6001600160a01b038116610b565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105c0565b6106d2816110d4565b610b693382611126565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610b9f573d6000803e3d6000fd5b506040518181526001600160a01b0383169033907f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb906020015b60405180910390a35050565b6001600160a01b038216610c3b5760405162461bcd60e51b815260206004820152601860248201527f6d696e7420746f20746865207a65726f2061646472657373000000000000000060448201526064016105c0565b8060cc6000828254610c4d9190611dd4565b90915550506001600160a01b038216600090815260cd602052604081208054839290610c7a908490611dd4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610bd9565b6001600160a01b038316610d135760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f206164647265737300000060448201526064016105c0565b6001600160a01b03928316600090815260ce602090815260408083209490951682529290925291902055565b6001600160a01b038316610d955760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f2061646472657373000060448201526064016105c0565b6001600160a01b038216610deb5760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f20616464726573730000000060448201526064016105c0565b6001600160a01b038316600090815260cd602052604090205481811015610e545760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657220616d6f756e7420657863656564732062616c616e63650060448201526064016105c0565b610e5e8282611dec565b6001600160a01b03808616600090815260cd60205260408082209390935590851681529081208054849290610e94908490611dd4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ee091815260200190565b60405180910390a350505050565b6106d261107a565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f2e57610f29836113dd565b611075565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f6757600080fd5b505afa925050508015610f97575060408051601f3d908101601f19168201909252610f9491810190611a2a565b60015b610ffa5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016105c0565b600080516020611eac83398151915281146110695760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016105c0565b50611075838383611479565b505050565b6097546001600160a01b0316331461087d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105c0565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661117c5760405162461bcd60e51b815260206004820152601a60248201527f6275726e2066726f6d20746865207a65726f206164647265737300000000000060448201526064016105c0565b6001600160a01b038216600090815260cd6020526040902054818110156111e55760405162461bcd60e51b815260206004820152601b60248201527f6275726e20616d6f756e7420657863656564732062616c616e6365000000000060448201526064016105c0565b6111ef8282611dec565b6001600160a01b038416600090815260cd602052604081209190915560cc805484929061121d908490611dec565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6001600160a01b0385166112be5760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f2061646472657373000060448201526064016105c0565b60008451116113035760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c9958da5c1a595b9d607a1b60448201526064016105c0565b806113415760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081d185c99d95d60921b60448201526064016105c0565b60cf546113629086906001600160a01b031661135d8587611dd4565b610d3f565b61137f8585858585604051806020016040528060008152506114a4565b505050505050565b600054610100900460ff166113ae5760405162461bcd60e51b81526004016105c090611d30565b61087d61155c565b600054610100900460ff1661087d5760405162461bcd60e51b81526004016105c090611d30565b6001600160a01b0381163b61144a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016105c0565b600080516020611eac83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6114828361158c565b60008251118061148f5750805b156110755761149e83836115cc565b50505050565b600080806110046114b98a8a8a8a8a8a6116c0565b6040516114c69190611bb5565b6000604051808303816000865af19150503d8060008114611503576040519150601f19603f3d011682016040523d82523d6000602084013e611508565b606091505b5091509150611546828260405180604001604052806016815260200175199a5c0b58dc9bdcdccb58da185a5b8819985a5b195960521b815250611713565b61154f8161178d565b9998505050505050505050565b600054610100900460ff166115835760405162461bcd60e51b81526004016105c090611d30565b61087d336110d4565b611595816113dd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6116345760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016105c0565b600080846001600160a01b03168460405161164f9190611bb5565b600060405180830381855af49150503d806000811461168a576040519150601f19603f3d011682016040523d82523d6000602084013e61168f565b606091505b50915091506116b78282604051806060016040528060278152602001611ecc602791396117a4565b95945050505050565b60608686868686866040516024016116dd96959493929190611c0e565b60408051601f198184030181529190526020810180516001600160e01b0316633c3e7d7760e01b17905290509695505050505050565b826110755760008280602001905181019061172e9190611a42565b9050600182511015611754578060405162461bcd60e51b81526004016105c09190611c56565b8181604051602001611767929190611bd1565b60408051601f198184030181529082905262461bcd60e51b82526105c091600401611c56565b600080828060200190518101906105ee9190611a0a565b606083156117b35750816105ee565b6105ee83838151156117c85781518083602001fd5b8060405162461bcd60e51b81526004016105c09190611c56565b8280546117ee90611e2f565b90600052602060002090601f0160209004810192826118105760008555611856565b82601f1061182957805160ff1916838001178555611856565b82800160010185558215611856579182015b8281111561185657825182559160200191906001019061183b565b50611862929150611866565b5090565b5b808211156118625760008155600101611867565b600061188e61188984611dac565b611d7b565b90508281528383830111156118a257600080fd5b828260208301376000602084830101529392505050565b600082601f8301126118c9578081fd5b6105ee8383356020850161187b565b6000602082840312156118e9578081fd5b81356105ee81611e96565b60008060408385031215611906578081fd5b823561191181611e96565b946020939093013593505050565b60008060408385031215611931578182fd5b823561193c81611e96565b9150602083013561194c81611e96565b809150509250929050565b60008060006060848603121561196b578081fd5b833561197681611e96565b9250602084013561198681611e96565b929592945050506040919091013590565b600080604083850312156119a9578182fd5b82356119b481611e96565b9150602083013567ffffffffffffffff8111156119cf578182fd5b8301601f810185136119df578182fd5b6119ee8582356020840161187b565b9150509250929050565b60008060408385031215611906578182fd5b600060208284031215611a1b578081fd5b815180151581146105ee578182fd5b600060208284031215611a3b578081fd5b5051919050565b600060208284031215611a53578081fd5b815167ffffffffffffffff811115611a69578182fd5b8201601f81018413611a79578182fd5b8051611a8761188982611dac565b818152856020838501011115611a9b578384fd5b6116b7826020830160208601611e03565b60008060008060808587031215611ac1578081fd5b843567ffffffffffffffff80821115611ad8578283fd5b611ae4888389016118b9565b95506020870135915080821115611af9578283fd5b50611b06878288016118b9565b935050604085013560ff81168114611b1c578182fd5b91506060850135611b2c81611e96565b939692955090935050565b60008060008060808587031215611b4c578384fd5b843567ffffffffffffffff811115611b62578485fd5b611b6e878288016118b9565b97602087013597506040870135966060013595509350505050565b60008151808452611ba1816020860160208601611e03565b601f01601f19169290920160200192915050565b60008251611bc7818460208701611e03565b9190910192915050565b60008351611be3818460208801611e03565b6101d160f51b9083019081528351611c02816002840160208801611e03565b01600201949350505050565b6001600160a01b038716815260c060208201819052600090611c3290830188611b89565b86604084015285606084015284608084015282810360a084015261154f8185611b89565b6000602082526105ee6020830184611b89565b600060808252611c7c6080830187611b89565b6020830195909552506040810192909252606090910152919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff81118282101715611da457611da4611e80565b604052919050565b600067ffffffffffffffff821115611dc657611dc6611e80565b50601f01601f191660200190565b60008219821115611de757611de7611e6a565b500190565b600082821015611dfe57611dfe611e6a565b500390565b60005b83811015611e1e578181015183820152602001611e06565b8381111561149e5750506000910152565b600281046001821680611e4357607f821691505b60208210811415611e6457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146106d257600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220329f459379d500b1802da32bf0b10425e36219065c59c312766c85ed6ee4460c64736f6c63430008020033", } // WFXUpgradableABI is the input ABI used to generate the binding from. diff --git a/contract/compile.sh b/contract/compile.sh index 10495817f..7ddbd77db 100755 --- a/contract/compile.sh +++ b/contract/compile.sh @@ -9,6 +9,11 @@ for cmd in "${commands[@]}"; do fi done +abigen_version=$(abigen --version | awk '{print $3}') +if ! [[ "$abigen_version" =~ ^1.12.0-stable.* ]]; then + echo "expected abigen version 1.12.0, but got $abigen_version, please upgrade abigen first" && exit 1 +fi + project_dir="$(git rev-parse --show-toplevel)" if [ ! -d "$project_dir/solidity/contracts/node_modules" ]; then echo "===> Installing node modules" diff --git a/tests/contract/CrossChainTest.go b/tests/contract/CrossChainTest.go index 3a912ffe8..60e74b857 100644 --- a/tests/contract/CrossChainTest.go +++ b/tests/contract/CrossChainTest.go @@ -32,7 +32,7 @@ var ( // CrossChainTestMetaData contains all meta data concerning the CrossChainTest contract. var CrossChainTestMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_target\",\"type\":\"bytes32\"}],\"name\":\"bridgeCoinAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_chain\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_txID\",\"type\":\"uint256\"}],\"name\":\"cancelSendToExternal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_receipt\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_target\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"_memo\",\"type\":\"string\"}],\"name\":\"crossChain\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_chain\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_txID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"}],\"name\":\"increaseBridgeFee\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50610cea806100206000396000f3fe60806040526004361061003f5760003560e01c80630b56c19014610044578063160d7c73146100795780638fefb7651461008c578063c79a6b7b146100ba575b600080fd5b34801561005057600080fd5b5061006461005f3660046109ff565b6100cd565b60405190151581526020015b60405180910390f35b6100646100873660046108e8565b6100e0565b34801561009857600080fd5b506100ac6100a73660046108bf565b610397565b604051908152602001610070565b6100646100c8366004610a42565b6103a3565b60006100d983836103ba565b9392505050565b60006001600160a01b03871615610230576001600160a01b0387166323b872dd333061010c888a610c4a565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401602060405180830381600087803b15801561015b57600080fd5b505af115801561016f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101939190610975565b506001600160a01b03871663095ea7b36110046101b08789610c4a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156101f657600080fd5b505af115801561020a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022e9190610975565b505b6001600160a01b0387161561032657604051636eb1769f60e11b815230600482015261100460248201526000906001600160a01b0389169063dd62ed3e9060440160206040518083038186803b15801561028957600080fd5b505afa15801561029d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c19190610a9f565b90506102cd8587610c4a565b81146103205760405162461bcd60e51b815260206004820181905260248201527f616c6c6f77616e6365206e6f7420657175616c20616d6f756e74202b2066656560448201526064015b60405180910390fd5b5061037e565b6103308486610c4a565b341461037e5760405162461bcd60e51b815260206004820181905260248201527f6d73672e76616c7565206e6f7420657175616c20616d6f756e74202b206665656044820152606401610317565b61038c878787878787610468565b979650505050505050565b60006100d9838361051d565b60006103b18585858561060a565b95945050505050565b600080806110046103cb86866106ba565b6040516103d89190610ae3565b6000604051808303816000865af19150503d8060008114610415576040519150601f19603f3d011682016040523d82523d6000602084013e61041a565b606091505b509150915061045f82826040518060400160405280601e81526020017f63616e63656c2073656e6420746f2065787465726e616c206661696c65640000815250610701565b6103b181610780565b600080806110043461047e8b8b8b8b8b8b6107a0565b60405161048b9190610ae3565b60006040518083038185875af1925050503d80600081146104c8576040519150601f19603f3d011682016040523d82523d6000602084013e6104cd565b606091505b509150915061050782826040518060400160405280601281526020017118dc9bdcdccb58da185a5b8819985a5b195960721b815250610701565b61051081610780565b9998505050505050505050565b6000808061100461057a86866040516001600160a01b03831660248201526044810182905260609060640160408051601f198184030181529190526020810180516001600160e01b0316638fefb76560e01b179052905092915050565b6040516105879190610ae3565b600060405180830381855afa9150503d80600081146105c2576040519150601f19603f3d011682016040523d82523d6000602084013e6105c7565b606091505b5091509150610601828260405180604001604052806012815260200171189c9a5919d94818dbda5b8819985a5b195960721b815250610701565b6103b1816107f3565b6000808061100461061d8888888861080a565b60405161062a9190610ae3565b6000604051808303816000865af19150503d8060008114610667576040519150601f19603f3d011682016040523d82523d6000602084013e61066c565b606091505b50915091506106b182826040518060400160405280601a81526020017f696e6372656173652062726964676520666565206661696c6564000000000000815250610701565b61038c81610780565b606082826040516024016106cf929190610b97565b60408051601f198184030181529190526020810180516001600160e01b031663eeb3593d60e01b179052905092915050565b8261077b5760008280602001905181019061071c9190610995565b9050600182511015610742578060405162461bcd60e51b81526004016103179190610b84565b8181604051602001610755929190610aff565b60408051601f198184030181529082905262461bcd60e51b825261031791600401610b84565b505050565b600080828060200190518101906107979190610975565b9150505b919050565b60608686868686866040516024016107bd96959493929190610b3c565b60408051601f198184030181529190526020810180516001600160e01b031663160d7c7360e01b17905290509695505050505050565b600080828060200190518101906107979190610a9f565b6060848484846040516024016108239493929190610bb9565b60408051601f198184030181529190526020810180516001600160e01b0316639b45009d60e01b1790529050949350505050565b80356001600160a01b038116811461079b57600080fd5b600082601f83011261087e578081fd5b813561089161088c82610c22565b610bf1565b8181528460208386010111156108a5578283fd5b816020850160208301379081016020019190915292915050565b600080604083850312156108d1578182fd5b6108da83610857565b946020939093013593505050565b60008060008060008060c08789031215610900578182fd5b61090987610857565b9550602087013567ffffffffffffffff80821115610925578384fd5b6109318a838b0161086e565b965060408901359550606089013594506080890135935060a089013591508082111561095b578283fd5b5061096889828a0161086e565b9150509295509295509295565b600060208284031215610986578081fd5b815180151581146100d9578182fd5b6000602082840312156109a6578081fd5b815167ffffffffffffffff8111156109bc578182fd5b8201601f810184136109cc578182fd5b80516109da61088c82610c22565b8181528560208385010111156109ee578384fd5b6103b1826020830160208601610c6e565b60008060408385031215610a11578182fd5b823567ffffffffffffffff811115610a27578283fd5b610a338582860161086e565b95602094909401359450505050565b60008060008060808587031215610a57578384fd5b843567ffffffffffffffff811115610a6d578485fd5b610a798782880161086e565b94505060208501359250610a8f60408601610857565b9396929550929360600135925050565b600060208284031215610ab0578081fd5b5051919050565b60008151808452610acf816020860160208601610c6e565b601f01601f19169290920160200192915050565b60008251610af5818460208701610c6e565b9190910192915050565b60008351610b11818460208801610c6e565b6101d160f51b9083019081528351610b30816002840160208801610c6e565b01600201949350505050565b6001600160a01b038716815260c060208201819052600090610b6090830188610ab7565b86604084015285606084015284608084015282810360a08401526105108185610ab7565b6000602082526100d96020830184610ab7565b600060408252610baa6040830185610ab7565b90508260208301529392505050565b600060808252610bcc6080830187610ab7565b6020830195909552506001600160a01b03929092166040830152606090910152919050565b604051601f8201601f1916810167ffffffffffffffff81118282101715610c1a57610c1a610c9e565b604052919050565b600067ffffffffffffffff821115610c3c57610c3c610c9e565b50601f01601f191660200190565b60008219821115610c6957634e487b7160e01b81526011600452602481fd5b500190565b60005b83811015610c89578181015183820152602001610c71565b83811115610c98576000848401525b50505050565b634e487b7160e01b600052604160045260246000fdfea264697066735822122035d403e3435759d42b917f4b5349cdbee214ce1df1cda8b106e6282816b673e964736f6c63430008020033", + Bin: "0x608060405234801561001057600080fd5b50610cea806100206000396000f3fe60806040526004361061003f5760003560e01c80630b56c19014610044578063160d7c73146100795780638fefb7651461008c578063c79a6b7b146100ba575b600080fd5b34801561005057600080fd5b5061006461005f3660046109ff565b6100cd565b60405190151581526020015b60405180910390f35b6100646100873660046108e8565b6100e0565b34801561009857600080fd5b506100ac6100a73660046108bf565b610397565b604051908152602001610070565b6100646100c8366004610a42565b6103a3565b60006100d983836103ba565b9392505050565b60006001600160a01b03871615610230576001600160a01b0387166323b872dd333061010c888a610c4a565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401602060405180830381600087803b15801561015b57600080fd5b505af115801561016f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101939190610975565b506001600160a01b03871663095ea7b36110046101b08789610c4a565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156101f657600080fd5b505af115801561020a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061022e9190610975565b505b6001600160a01b0387161561032657604051636eb1769f60e11b815230600482015261100460248201526000906001600160a01b0389169063dd62ed3e9060440160206040518083038186803b15801561028957600080fd5b505afa15801561029d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c19190610a9f565b90506102cd8587610c4a565b81146103205760405162461bcd60e51b815260206004820181905260248201527f616c6c6f77616e6365206e6f7420657175616c20616d6f756e74202b2066656560448201526064015b60405180910390fd5b5061037e565b6103308486610c4a565b341461037e5760405162461bcd60e51b815260206004820181905260248201527f6d73672e76616c7565206e6f7420657175616c20616d6f756e74202b206665656044820152606401610317565b61038c878787878787610468565b979650505050505050565b60006100d9838361051d565b60006103b18585858561060a565b95945050505050565b600080806110046103cb86866106ba565b6040516103d89190610ae3565b6000604051808303816000865af19150503d8060008114610415576040519150601f19603f3d011682016040523d82523d6000602084013e61041a565b606091505b509150915061045f82826040518060400160405280601e81526020017f63616e63656c2073656e6420746f2065787465726e616c206661696c65640000815250610701565b6103b181610780565b600080806110043461047e8b8b8b8b8b8b6107a0565b60405161048b9190610ae3565b60006040518083038185875af1925050503d80600081146104c8576040519150601f19603f3d011682016040523d82523d6000602084013e6104cd565b606091505b509150915061050782826040518060400160405280601281526020017118dc9bdcdccb58da185a5b8819985a5b195960721b815250610701565b61051081610780565b9998505050505050505050565b6000808061100461057a86866040516001600160a01b03831660248201526044810182905260609060640160408051601f198184030181529190526020810180516001600160e01b0316638fefb76560e01b179052905092915050565b6040516105879190610ae3565b600060405180830381855afa9150503d80600081146105c2576040519150601f19603f3d011682016040523d82523d6000602084013e6105c7565b606091505b5091509150610601828260405180604001604052806012815260200171189c9a5919d94818dbda5b8819985a5b195960721b815250610701565b6103b1816107f3565b6000808061100461061d8888888861080a565b60405161062a9190610ae3565b6000604051808303816000865af19150503d8060008114610667576040519150601f19603f3d011682016040523d82523d6000602084013e61066c565b606091505b50915091506106b182826040518060400160405280601a81526020017f696e6372656173652062726964676520666565206661696c6564000000000000815250610701565b61038c81610780565b606082826040516024016106cf929190610b97565b60408051601f198184030181529190526020810180516001600160e01b031663eeb3593d60e01b179052905092915050565b8261077b5760008280602001905181019061071c9190610995565b9050600182511015610742578060405162461bcd60e51b81526004016103179190610b84565b8181604051602001610755929190610aff565b60408051601f198184030181529082905262461bcd60e51b825261031791600401610b84565b505050565b600080828060200190518101906107979190610975565b9150505b919050565b60608686868686866040516024016107bd96959493929190610b3c565b60408051601f198184030181529190526020810180516001600160e01b031663160d7c7360e01b17905290509695505050505050565b600080828060200190518101906107979190610a9f565b6060848484846040516024016108239493929190610bb9565b60408051601f198184030181529190526020810180516001600160e01b0316639b45009d60e01b1790529050949350505050565b80356001600160a01b038116811461079b57600080fd5b600082601f83011261087e578081fd5b813561089161088c82610c22565b610bf1565b8181528460208386010111156108a5578283fd5b816020850160208301379081016020019190915292915050565b600080604083850312156108d1578182fd5b6108da83610857565b946020939093013593505050565b60008060008060008060c08789031215610900578182fd5b61090987610857565b9550602087013567ffffffffffffffff80821115610925578384fd5b6109318a838b0161086e565b965060408901359550606089013594506080890135935060a089013591508082111561095b578283fd5b5061096889828a0161086e565b9150509295509295509295565b600060208284031215610986578081fd5b815180151581146100d9578182fd5b6000602082840312156109a6578081fd5b815167ffffffffffffffff8111156109bc578182fd5b8201601f810184136109cc578182fd5b80516109da61088c82610c22565b8181528560208385010111156109ee578384fd5b6103b1826020830160208601610c6e565b60008060408385031215610a11578182fd5b823567ffffffffffffffff811115610a27578283fd5b610a338582860161086e565b95602094909401359450505050565b60008060008060808587031215610a57578384fd5b843567ffffffffffffffff811115610a6d578485fd5b610a798782880161086e565b94505060208501359250610a8f60408601610857565b9396929550929360600135925050565b600060208284031215610ab0578081fd5b5051919050565b60008151808452610acf816020860160208601610c6e565b601f01601f19169290920160200192915050565b60008251610af5818460208701610c6e565b9190910192915050565b60008351610b11818460208801610c6e565b6101d160f51b9083019081528351610b30816002840160208801610c6e565b01600201949350505050565b6001600160a01b038716815260c060208201819052600090610b6090830188610ab7565b86604084015285606084015284608084015282810360a08401526105108185610ab7565b6000602082526100d96020830184610ab7565b600060408252610baa6040830185610ab7565b90508260208301529392505050565b600060808252610bcc6080830187610ab7565b6020830195909552506001600160a01b03929092166040830152606090910152919050565b604051601f8201601f1916810167ffffffffffffffff81118282101715610c1a57610c1a610c9e565b604052919050565b600067ffffffffffffffff821115610c3c57610c3c610c9e565b50601f01601f191660200190565b60008219821115610c6957634e487b7160e01b81526011600452602481fd5b500190565b60005b83811015610c89578181015183820152602001610c71565b83811115610c98576000848401525b50505050565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220967af813a3fbc39dcf52c663908ee2066ea3d3dace71c7a0ca0858e247f4ce8c64736f6c63430008020033", } // CrossChainTestABI is the input ABI used to generate the binding from. diff --git a/tests/contract/ERC721TokenTest.go b/tests/contract/ERC721TokenTest.go index a5d6a9033..6d1139b1f 100644 --- a/tests/contract/ERC721TokenTest.go +++ b/tests/contract/ERC721TokenTest.go @@ -31,8 +31,8 @@ var ( // ERC721TokenTestMetaData contains all meta data concerning the ERC721TokenTest contract. var ERC721TokenTestMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"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\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"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\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"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\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":[],\"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\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"safeMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]", - Bin: "0x60a06040523060601b60805234801561001757600080fd5b50610020610025565b6100e5565b600054610100900460ff16156100915760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100e3576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60805160601c6123536200012060003960008181610660015281816106a00152818161075b0152818161079b015261082e01526123536000f3fe60806040526004361061012a5760003560e01c806370a08231116100ab578063a22cb4651161006f578063a22cb46514610313578063b88d4fde14610333578063c87b56dd14610353578063d204c45e14610373578063e985e9c514610393578063f2fde38b146103dc5761012a565b806370a0823114610296578063715018a6146102b65780638129fc1c146102cb5780638da5cb5b146102e057806395d89b41146102fe5761012a565b80633659cfe6116100f25780633659cfe61461020057806342842e0e146102205780634f1ef2861461024057806352d1902d146102535780636352211e146102765761012a565b806301ffc9a71461012f57806306fdde0314610164578063081812fc14610186578063095ea7b3146101be57806323b872dd146101e0575b600080fd5b34801561013b57600080fd5b5061014f61014a366004611f65565b6103fc565b60405190151581526020015b60405180910390f35b34801561017057600080fd5b50610179610450565b60405161015b9190612069565b34801561019257600080fd5b506101a66101a1366004611f9d565b6104e2565b6040516001600160a01b03909116815260200161015b565b3480156101ca57600080fd5b506101de6101d9366004611f24565b610509565b005b3480156101ec57600080fd5b506101de6101fb366004611da8565b610624565b34801561020c57600080fd5b506101de61021b366004611d5c565b610655565b34801561022c57600080fd5b506101de61023b366004611da8565b610735565b6101de61024e366004611e83565b610750565b34801561025f57600080fd5b50610268610821565b60405190815260200161015b565b34801561028257600080fd5b506101a6610291366004611f9d565b6108d4565b3480156102a257600080fd5b506102686102b1366004611d5c565b610934565b3480156102c257600080fd5b506101de6109ba565b3480156102d757600080fd5b506101de6109ce565b3480156102ec57600080fd5b5060c9546001600160a01b03166101a6565b34801561030a57600080fd5b50610179610b3a565b34801561031f57600080fd5b506101de61032e366004611e49565b610b49565b34801561033f57600080fd5b506101de61034e366004611de3565b610b54565b34801561035f57600080fd5b5061017961036e366004611f9d565b610b8c565b34801561037f57600080fd5b506101de61038e366004611ecf565b610b97565b34801561039f57600080fd5b5061014f6103ae366004611d76565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b3480156103e857600080fd5b506101de6103f7366004611d5c565b610bd0565b60006001600160e01b031982166380ac58cd60e01b148061042d57506001600160e01b03198216635b5e139f60e01b145b8061044857506301ffc9a760e01b6001600160e01b03198316145b90505b919050565b60606065805461045f9061226f565b80601f016020809104026020016040519081016040528092919081815260200182805461048b9061226f565b80156104d85780601f106104ad576101008083540402835291602001916104d8565b820191906000526020600020905b8154815290600101906020018083116104bb57829003601f168201915b5050505050905090565b60006104ed82610c46565b506000908152606960205260409020546001600160a01b031690565b6000610514826108d4565b9050806001600160a01b0316836001600160a01b031614156105875760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806105a357506105a381336103ae565b6106155760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161057e565b61061f8383610ca5565b505050565b61062e3382610d13565b61064a5760405162461bcd60e51b815260040161057e9061207c565b61061f838383610d92565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561069e5760405162461bcd60e51b815260040161057e90612160565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106e76000805160206122d7833981519152546001600160a01b031690565b6001600160a01b03161461070d5760405162461bcd60e51b815260040161057e906121ac565b61071681610ef6565b6040805160008082526020820190925261073291839190610efe565b50565b61061f83838360405180602001604052806000815250610b54565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156107995760405162461bcd60e51b815260040161057e90612160565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107e26000805160206122d7833981519152546001600160a01b031690565b6001600160a01b0316146108085760405162461bcd60e51b815260040161057e906121ac565b61081182610ef6565b61081d82826001610efe565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108c15760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161057e565b506000805160206122d783398151915290565b6000818152606760205260408120546001600160a01b0316806104485760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161057e565b60006001600160a01b03821661099e5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161057e565b506001600160a01b031660009081526068602052604090205490565b6109c261107d565b6109cc60006110d7565b565b600054610100900460ff16158080156109ee5750600054600160ff909116105b80610a085750303b158015610a08575060005460ff166001145b610a6b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161057e565b6000805460ff191660011790558015610a8e576000805461ff0019166101001790555b610ada6040518060400160405280600f81526020016e115490cdcc8c551bdad95b95195cdd608a1b8152506040518060400160405280600381526020016215151560ea1b815250611129565b610ae261115a565b610aea611181565b610af261115a565b8015610732576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60606066805461045f9061226f565b61081d3383836111b0565b610b5e3383610d13565b610b7a5760405162461bcd60e51b815260040161057e9061207c565b610b868484848461127f565b50505050565b6060610448826112b2565b610b9f61107d565b6000610bab61015f5490565b9050610bbc61015f80546001019055565b610bc683826113d3565b61061f81836113ed565b610bd861107d565b6001600160a01b038116610c3d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161057e565b610732816110d7565b6000818152606760205260409020546001600160a01b03166107325760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161057e565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610cda826108d4565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610d1f836108d4565b9050806001600160a01b0316846001600160a01b03161480610d6657506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b80610d8a5750836001600160a01b0316610d7f846104e2565b6001600160a01b0316145b949350505050565b826001600160a01b0316610da5826108d4565b6001600160a01b031614610dcb5760405162461bcd60e51b815260040161057e9061211b565b6001600160a01b038216610e2d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161057e565b826001600160a01b0316610e40826108d4565b6001600160a01b031614610e665760405162461bcd60e51b815260040161057e9061211b565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a461061f565b61073261107d565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610f3657610f3183611487565b61061f565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f6f57600080fd5b505afa925050508015610f9f575060408051601f3d908101601f19168201909252610f9c91810190611f4d565b60015b6110025760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161057e565b6000805160206122d783398151915281146110715760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161057e565b5061061f838383611523565b60c9546001600160a01b031633146109cc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161057e565b60c980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166111505760405162461bcd60e51b815260040161057e906121f8565b61081d8282611548565b600054610100900460ff166109cc5760405162461bcd60e51b815260040161057e906121f8565b600054610100900460ff166111a85760405162461bcd60e51b815260040161057e906121f8565b6109cc611596565b816001600160a01b0316836001600160a01b031614156112125760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161057e565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61128a848484610d92565b611296848484846115c6565b610b865760405162461bcd60e51b815260040161057e906120c9565b60606112bd82610c46565b600082815260976020526040812080546112d69061226f565b80601f01602080910402602001604051908101604052809291908181526020018280546113029061226f565b801561134f5780601f106113245761010080835404028352916020019161134f565b820191906000526020600020905b81548152906001019060200180831161133257829003601f168201915b50505050509050600061138460408051808201909152600f81526e1a5c199cce8bcbdd195cdd0b5d5c9b608a1b602082015290565b90508051600014156113985750905061044b565b8151156113ca5780826040516020016113b2929190611ffd565b6040516020818303038152906040529250505061044b565b610d8a846116d3565b61081d82826040518060200160405280600081525061175e565b6000828152606760205260409020546001600160a01b03166114685760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b606482015260840161057e565b6000828152609760209081526040909120825161061f92840190611c17565b6001600160a01b0381163b6114f45760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161057e565b6000805160206122d783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61152c83611791565b6000825111806115395750805b1561061f57610b8683836117d1565b600054610100900460ff1661156f5760405162461bcd60e51b815260040161057e906121f8565b8151611582906065906020850190611c17565b50805161061f906066906020840190611c17565b600054610100900460ff166115bd5760405162461bcd60e51b815260040161057e906121f8565b6109cc336110d7565b60006001600160a01b0384163b156116c857604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061160a90339089908890889060040161202c565b602060405180830381600087803b15801561162457600080fd5b505af1925050508015611654575060408051601f3d908101601f1916820190925261165191810190611f81565b60015b6116ae573d808015611682576040519150601f19603f3d011682016040523d82523d6000602084013e611687565b606091505b5080516116a65760405162461bcd60e51b815260040161057e906120c9565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610d8a565b506001949350505050565b60606116de82610c46565b600061170c60408051808201909152600f81526e1a5c199cce8bcbdd195cdd0b5d5c9b608a1b602082015290565b9050600081511161172c5760405180602001604052806000815250611757565b80611736846118c5565b604051602001611747929190611ffd565b6040516020818303038152906040525b9392505050565b6117688383611970565b61177560008484846115c6565b61061f5760405162461bcd60e51b815260040161057e906120c9565b61179a81611487565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b6118395760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161057e565b600080846001600160a01b0316846040516118549190611fe1565b600060405180830381855af49150503d806000811461188f576040519150601f19603f3d011682016040523d82523d6000602084013e611894565b606091505b50915091506118bc82826040518060600160405280602781526020016122f760279139611afc565b95945050505050565b606060006118d283611b15565b600101905060008167ffffffffffffffff81111561190057634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561192a576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461196357611968565b611934565b509392505050565b6001600160a01b0382166119c65760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161057e565b6000818152606760205260409020546001600160a01b031615611a2b5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161057e565b6000818152606760205260409020546001600160a01b031615611a905760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161057e565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461081d565b60608315611b0b575081611757565b6117578383611bed565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611b545772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611b80576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611b9e57662386f26fc10000830492506010015b6305f5e1008310611bb6576305f5e100830492506008015b6127108310611bca57612710830492506004015b60648310611bdc576064830492506002015b600a83106104485760010192915050565b815115611bfd5781518083602001fd5b8060405162461bcd60e51b815260040161057e9190612069565b828054611c239061226f565b90600052602060002090601f016020900481019282611c455760008555611c8b565b82601f10611c5e57805160ff1916838001178555611c8b565b82800160010185558215611c8b579182015b82811115611c8b578251825591602001919060010190611c70565b50611c97929150611c9b565b5090565b5b80821115611c975760008155600101611c9c565b600067ffffffffffffffff80841115611ccb57611ccb6122aa565b604051601f8501601f19908116603f01168101908282118183101715611cf357611cf36122aa565b81604052809350858152868686011115611d0c57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461044b57600080fd5b600082601f830112611d4d578081fd5b61175783833560208501611cb0565b600060208284031215611d6d578081fd5b61175782611d26565b60008060408385031215611d88578081fd5b611d9183611d26565b9150611d9f60208401611d26565b90509250929050565b600080600060608486031215611dbc578081fd5b611dc584611d26565b9250611dd360208501611d26565b9150604084013590509250925092565b60008060008060808587031215611df8578081fd5b611e0185611d26565b9350611e0f60208601611d26565b925060408501359150606085013567ffffffffffffffff811115611e31578182fd5b611e3d87828801611d3d565b91505092959194509250565b60008060408385031215611e5b578182fd5b611e6483611d26565b915060208301358015158114611e78578182fd5b809150509250929050565b60008060408385031215611e95578182fd5b611e9e83611d26565b9150602083013567ffffffffffffffff811115611eb9578182fd5b611ec585828601611d3d565b9150509250929050565b60008060408385031215611ee1578182fd5b611eea83611d26565b9150602083013567ffffffffffffffff811115611f05578182fd5b8301601f81018513611f15578182fd5b611ec585823560208401611cb0565b60008060408385031215611f36578182fd5b611f3f83611d26565b946020939093013593505050565b600060208284031215611f5e578081fd5b5051919050565b600060208284031215611f76578081fd5b8135611757816122c0565b600060208284031215611f92578081fd5b8151611757816122c0565b600060208284031215611fae578081fd5b5035919050565b60008151808452611fcd816020860160208601612243565b601f01601f19169290920160200192915050565b60008251611ff3818460208701612243565b9190910192915050565b6000835161200f818460208801612243565b835190830190612023818360208801612243565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061205f90830184611fb5565b9695505050505050565b6000602082526117576020830184611fb5565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60005b8381101561225e578181015183820152602001612246565b83811115610b865750506000910152565b60028104600182168061228357607f821691505b602082108114156122a457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461073257600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220bd2693924b842c669c62b22c0b6678eb51ad3bcf35e6481ab6f48e18b211239364736f6c63430008020033", + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"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\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_id\",\"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\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"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: "0x60806040523480156200001157600080fd5b50604051620018a6380380620018a6833981016040819052620000349162000237565b8151829082906200004d906000906020850190620000de565b50805162000063906001906020840190620000de565b505050620000806200007a6200008860201b60201c565b6200008c565b5050620002f1565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000ec906200029e565b90600052602060002090601f0160209004810192826200011057600085556200015b565b82601f106200012b57805160ff19168380011785556200015b565b828001600101855582156200015b579182015b828111156200015b5782518255916020019190600101906200013e565b50620001699291506200016d565b5090565b5b808211156200016957600081556001016200016e565b600082601f83011262000195578081fd5b81516001600160401b0380821115620001b257620001b2620002db565b604051601f8301601f19908116603f01168101908282118183101715620001dd57620001dd620002db565b81604052838152602092508683858801011115620001f9578485fd5b8491505b838210156200021c5785820183015181830184015290820190620001fd565b838211156200022d57848385830101525b9695505050505050565b600080604083850312156200024a578182fd5b82516001600160401b038082111562000261578384fd5b6200026f8683870162000184565b9350602085015191508082111562000285578283fd5b50620002948582860162000184565b9150509250929050565b600281046001821680620002b357607f821691505b60208210811415620002d557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6115a580620003016000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a22cb46511610071578063a22cb46514610239578063b88d4fde1461024c578063c87b56dd1461025f578063e985e9c514610272578063f2fde38b146102ae57610116565b806370a08231146101f7578063715018a6146102185780638da5cb5b1461022057806395d89b411461023157610116565b806323b872dd116100e957806323b872dd1461019857806340c10f19146101ab57806342842e0e146101be57806342966c68146101d15780636352211e146101e457610116565b806301ffc9a71461011b57806306fdde0314610143578063081812fc14610158578063095ea7b314610183575b600080fd5b61012e6101293660046112fd565b6102c1565b60405190151581526020015b60405180910390f35b61014b610315565b60405161013a91906113e5565b61016b610166366004611335565b6103a7565b6040516001600160a01b03909116815260200161013a565b6101966101913660046112d4565b6103ce565b005b6101966101a636600461118a565b6104e9565b6101966101b93660046112d4565b61051b565b6101966101cc36600461118a565b610531565b6101966101df366004611335565b61054c565b61016b6101f2366004611335565b61057d565b61020a61020536600461113e565b6105dd565b60405190815260200161013a565b610196610663565b6006546001600160a01b031661016b565b61014b610677565b61019661024736600461129a565b610686565b61019661025a3660046111c5565b610691565b61014b61026d366004611335565b6106c9565b61012e610280366004611158565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101966102bc36600461113e565b610754565b60006001600160e01b031982166380ac58cd60e01b14806102f257506001600160e01b03198216635b5e139f60e01b145b8061030d57506301ffc9a760e01b6001600160e01b03198316145b90505b919050565b60606000805461032490611508565b80601f016020809104026020016040519081016040528092919081815260200182805461035090611508565b801561039d5780601f106103725761010080835404028352916020019161039d565b820191906000526020600020905b81548152906001019060200180831161038057829003601f168201915b5050505050905090565b60006103b2826107ca565b506000908152600460205260409020546001600160a01b031690565b60006103d98261057d565b9050806001600160a01b0316836001600160a01b0316141561044c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061046857506104688133610280565b6104da5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610443565b6104e48383610829565b505050565b6104f4335b82610897565b6105105760405162461bcd60e51b8152600401610443906113f8565b6104e4838383610916565b610523610a7a565b61052d8282610ad4565b5050565b6104e483838360405180602001604052806000815250610691565b610555336104ee565b6105715760405162461bcd60e51b8152600401610443906113f8565b61057a81610aee565b50565b6000818152600260205260408120546001600160a01b03168061030d5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610443565b60006001600160a01b0382166106475760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610443565b506001600160a01b031660009081526003602052604090205490565b61066b610a7a565b6106756000610b84565b565b60606001805461032490611508565b61052d338383610bd6565b61069b3383610897565b6106b75760405162461bcd60e51b8152600401610443906113f8565b6106c384848484610ca5565b50505050565b60606106d4826107ca565b600061070260408051808201909152600f81526e1a5c199cce8bcbdd195cdd0b5d5c9b608a1b602082015290565b90506000815111610722576040518060200160405280600081525061074d565b8061072c84610cd8565b60405160200161073d929190611379565b6040516020818303038152906040525b9392505050565b61075c610a7a565b6001600160a01b0381166107c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610443565b61057a81610b84565b6000818152600260205260409020546001600160a01b031661057a5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610443565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061085e8261057d565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806108a38361057d565b9050806001600160a01b0316846001600160a01b031614806108ea57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b8061090e5750836001600160a01b0316610903846103a7565b6001600160a01b0316145b949350505050565b826001600160a01b03166109298261057d565b6001600160a01b03161461094f5760405162461bcd60e51b815260040161044390611497565b6001600160a01b0382166109b15760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610443565b826001600160a01b03166109c48261057d565b6001600160a01b0316146109ea5760405162461bcd60e51b815260040161044390611497565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a46104e4565b6006546001600160a01b031633146106755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610443565b61052d828260405180602001604052806000815250610d83565b6000610af98261057d565b9050610b048261057d565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a461052d565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03161415610c385760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610443565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610cb0848484610916565b610cbc84848484610db6565b6106c35760405162461bcd60e51b815260040161044390611445565b60606000610ce583610ec3565b600101905060008167ffffffffffffffff811115610d1357634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610d3d576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610d7657610d7b565b610d47565b509392505050565b610d8d8383610f9b565b610d9a6000848484610db6565b6104e45760405162461bcd60e51b815260040161044390611445565b60006001600160a01b0384163b15610eb857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610dfa9033908990889088906004016113a8565b602060405180830381600087803b158015610e1457600080fd5b505af1925050508015610e44575060408051601f3d908101601f19168201909252610e4191810190611319565b60015b610e9e573d808015610e72576040519150601f19603f3d011682016040523d82523d6000602084013e610e77565b606091505b508051610e965760405162461bcd60e51b815260040161044390611445565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061090e565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610f025772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610f2e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610f4c57662386f26fc10000830492506010015b6305f5e1008310610f64576305f5e100830492506008015b6127108310610f7857612710830492506004015b60648310610f8a576064830492506002015b600a831061030d5760010192915050565b6001600160a01b038216610ff15760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610443565b6000818152600260205260409020546001600160a01b0316156110565760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610443565b6000818152600260205260409020546001600160a01b0316156110bb5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610443565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a461052d565b80356001600160a01b038116811461031057600080fd5b60006020828403121561114f578081fd5b61074d82611127565b6000806040838503121561116a578081fd5b61117383611127565b915061118160208401611127565b90509250929050565b60008060006060848603121561119e578081fd5b6111a784611127565b92506111b560208501611127565b9150604084013590509250925092565b600080600080608085870312156111da578081fd5b6111e385611127565b93506111f160208601611127565b925060408501359150606085013567ffffffffffffffff80821115611214578283fd5b818701915087601f830112611227578283fd5b81358181111561123957611239611543565b604051601f8201601f19908116603f0116810190838211818310171561126157611261611543565b816040528281528a6020848701011115611279578586fd5b82602086016020830137918201602001949094529598949750929550505050565b600080604083850312156112ac578182fd5b6112b583611127565b9150602083013580151581146112c9578182fd5b809150509250929050565b600080604083850312156112e6578182fd5b6112ef83611127565b946020939093013593505050565b60006020828403121561130e578081fd5b813561074d81611559565b60006020828403121561132a578081fd5b815161074d81611559565b600060208284031215611346578081fd5b5035919050565b600081518084526113658160208601602086016114dc565b601f01601f19169290920160200192915050565b6000835161138b8184602088016114dc565b83519083019061139f8183602088016114dc565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906113db9083018461134d565b9695505050505050565b60006020825261074d602083018461134d565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60005b838110156114f75781810151838201526020016114df565b838111156106c35750506000910152565b60028104600182168061151c57607f821691505b6020821081141561153d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461057a57600080fdfea2646970667358221220dcc0cae356be8188658915bbb74110de16b265a6ba298f6f79db93769079e02b64736f6c63430008020033", } // ERC721TokenTestABI is the input ABI used to generate the binding from. @@ -44,7 +44,7 @@ var ERC721TokenTestABI = ERC721TokenTestMetaData.ABI var ERC721TokenTestBin = ERC721TokenTestMetaData.Bin // DeployERC721TokenTest deploys a new Ethereum contract, binding an instance of ERC721TokenTest to it. -func DeployERC721TokenTest(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721TokenTest, error) { +func DeployERC721TokenTest(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string) (common.Address, *types.Transaction, *ERC721TokenTest, error) { parsed, err := ERC721TokenTestMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -53,7 +53,7 @@ func DeployERC721TokenTest(auth *bind.TransactOpts, backend bind.ContractBackend return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC721TokenTestBin), backend) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC721TokenTestBin), backend, name, symbol) if err != nil { return common.Address{}, nil, nil, err } @@ -388,37 +388,6 @@ func (_ERC721TokenTest *ERC721TokenTestCallerSession) OwnerOf(tokenId *big.Int) return _ERC721TokenTest.Contract.OwnerOf(&_ERC721TokenTest.CallOpts, tokenId) } -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_ERC721TokenTest *ERC721TokenTestCaller) ProxiableUUID(opts *bind.CallOpts) ([32]byte, error) { - var out []interface{} - err := _ERC721TokenTest.contract.Call(opts, &out, "proxiableUUID") - - if err != nil { - return *new([32]byte), err - } - - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - - return out0, err - -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_ERC721TokenTest *ERC721TokenTestSession) ProxiableUUID() ([32]byte, error) { - return _ERC721TokenTest.Contract.ProxiableUUID(&_ERC721TokenTest.CallOpts) -} - -// ProxiableUUID is a free data retrieval call binding the contract method 0x52d1902d. -// -// Solidity: function proxiableUUID() view returns(bytes32) -func (_ERC721TokenTest *ERC721TokenTestCallerSession) ProxiableUUID() ([32]byte, error) { - return _ERC721TokenTest.Contract.ProxiableUUID(&_ERC721TokenTest.CallOpts) -} - // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7. // // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool) @@ -533,25 +502,46 @@ func (_ERC721TokenTest *ERC721TokenTestTransactorSession) Approve(to common.Addr return _ERC721TokenTest.Contract.Approve(&_ERC721TokenTest.TransactOpts, to, tokenId) } -// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// Burn is a paid mutator transaction binding the contract method 0x42966c68. +// +// Solidity: function burn(uint256 tokenId) returns() +func (_ERC721TokenTest *ERC721TokenTestTransactor) Burn(opts *bind.TransactOpts, tokenId *big.Int) (*types.Transaction, error) { + return _ERC721TokenTest.contract.Transact(opts, "burn", tokenId) +} + +// Burn is a paid mutator transaction binding the contract method 0x42966c68. // -// Solidity: function initialize() returns() -func (_ERC721TokenTest *ERC721TokenTestTransactor) Initialize(opts *bind.TransactOpts) (*types.Transaction, error) { - return _ERC721TokenTest.contract.Transact(opts, "initialize") +// Solidity: function burn(uint256 tokenId) returns() +func (_ERC721TokenTest *ERC721TokenTestSession) Burn(tokenId *big.Int) (*types.Transaction, error) { + return _ERC721TokenTest.Contract.Burn(&_ERC721TokenTest.TransactOpts, tokenId) } -// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// Burn is a paid mutator transaction binding the contract method 0x42966c68. // -// Solidity: function initialize() returns() -func (_ERC721TokenTest *ERC721TokenTestSession) Initialize() (*types.Transaction, error) { - return _ERC721TokenTest.Contract.Initialize(&_ERC721TokenTest.TransactOpts) +// Solidity: function burn(uint256 tokenId) returns() +func (_ERC721TokenTest *ERC721TokenTestTransactorSession) Burn(tokenId *big.Int) (*types.Transaction, error) { + return _ERC721TokenTest.Contract.Burn(&_ERC721TokenTest.TransactOpts, tokenId) } -// Initialize is a paid mutator transaction binding the contract method 0x8129fc1c. +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. // -// Solidity: function initialize() returns() -func (_ERC721TokenTest *ERC721TokenTestTransactorSession) Initialize() (*types.Transaction, error) { - return _ERC721TokenTest.Contract.Initialize(&_ERC721TokenTest.TransactOpts) +// Solidity: function mint(address _to, uint256 _id) returns() +func (_ERC721TokenTest *ERC721TokenTestTransactor) Mint(opts *bind.TransactOpts, _to common.Address, _id *big.Int) (*types.Transaction, error) { + return _ERC721TokenTest.contract.Transact(opts, "mint", _to, _id) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address _to, uint256 _id) returns() +func (_ERC721TokenTest *ERC721TokenTestSession) Mint(_to common.Address, _id *big.Int) (*types.Transaction, error) { + return _ERC721TokenTest.Contract.Mint(&_ERC721TokenTest.TransactOpts, _to, _id) +} + +// Mint is a paid mutator transaction binding the contract method 0x40c10f19. +// +// Solidity: function mint(address _to, uint256 _id) returns() +func (_ERC721TokenTest *ERC721TokenTestTransactorSession) Mint(_to common.Address, _id *big.Int) (*types.Transaction, error) { + return _ERC721TokenTest.Contract.Mint(&_ERC721TokenTest.TransactOpts, _to, _id) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. @@ -575,27 +565,6 @@ func (_ERC721TokenTest *ERC721TokenTestTransactorSession) RenounceOwnership() (* return _ERC721TokenTest.Contract.RenounceOwnership(&_ERC721TokenTest.TransactOpts) } -// SafeMint is a paid mutator transaction binding the contract method 0xd204c45e. -// -// Solidity: function safeMint(address to, string uri) returns() -func (_ERC721TokenTest *ERC721TokenTestTransactor) SafeMint(opts *bind.TransactOpts, to common.Address, uri string) (*types.Transaction, error) { - return _ERC721TokenTest.contract.Transact(opts, "safeMint", to, uri) -} - -// SafeMint is a paid mutator transaction binding the contract method 0xd204c45e. -// -// Solidity: function safeMint(address to, string uri) returns() -func (_ERC721TokenTest *ERC721TokenTestSession) SafeMint(to common.Address, uri string) (*types.Transaction, error) { - return _ERC721TokenTest.Contract.SafeMint(&_ERC721TokenTest.TransactOpts, to, uri) -} - -// SafeMint is a paid mutator transaction binding the contract method 0xd204c45e. -// -// Solidity: function safeMint(address to, string uri) returns() -func (_ERC721TokenTest *ERC721TokenTestTransactorSession) SafeMint(to common.Address, uri string) (*types.Transaction, error) { - return _ERC721TokenTest.Contract.SafeMint(&_ERC721TokenTest.TransactOpts, to, uri) -} - // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e. // // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns() @@ -701,183 +670,6 @@ func (_ERC721TokenTest *ERC721TokenTestTransactorSession) TransferOwnership(newO return _ERC721TokenTest.Contract.TransferOwnership(&_ERC721TokenTest.TransactOpts, newOwner) } -// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. -// -// Solidity: function upgradeTo(address newImplementation) returns() -func (_ERC721TokenTest *ERC721TokenTestTransactor) UpgradeTo(opts *bind.TransactOpts, newImplementation common.Address) (*types.Transaction, error) { - return _ERC721TokenTest.contract.Transact(opts, "upgradeTo", newImplementation) -} - -// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. -// -// Solidity: function upgradeTo(address newImplementation) returns() -func (_ERC721TokenTest *ERC721TokenTestSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { - return _ERC721TokenTest.Contract.UpgradeTo(&_ERC721TokenTest.TransactOpts, newImplementation) -} - -// UpgradeTo is a paid mutator transaction binding the contract method 0x3659cfe6. -// -// Solidity: function upgradeTo(address newImplementation) returns() -func (_ERC721TokenTest *ERC721TokenTestTransactorSession) UpgradeTo(newImplementation common.Address) (*types.Transaction, error) { - return _ERC721TokenTest.Contract.UpgradeTo(&_ERC721TokenTest.TransactOpts, newImplementation) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_ERC721TokenTest *ERC721TokenTestTransactor) UpgradeToAndCall(opts *bind.TransactOpts, newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _ERC721TokenTest.contract.Transact(opts, "upgradeToAndCall", newImplementation, data) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_ERC721TokenTest *ERC721TokenTestSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _ERC721TokenTest.Contract.UpgradeToAndCall(&_ERC721TokenTest.TransactOpts, newImplementation, data) -} - -// UpgradeToAndCall is a paid mutator transaction binding the contract method 0x4f1ef286. -// -// Solidity: function upgradeToAndCall(address newImplementation, bytes data) payable returns() -func (_ERC721TokenTest *ERC721TokenTestTransactorSession) UpgradeToAndCall(newImplementation common.Address, data []byte) (*types.Transaction, error) { - return _ERC721TokenTest.Contract.UpgradeToAndCall(&_ERC721TokenTest.TransactOpts, newImplementation, data) -} - -// ERC721TokenTestAdminChangedIterator is returned from FilterAdminChanged and is used to iterate over the raw logs and unpacked data for AdminChanged events raised by the ERC721TokenTest contract. -type ERC721TokenTestAdminChangedIterator struct { - Event *ERC721TokenTestAdminChanged // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC721TokenTestAdminChangedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC721TokenTestAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC721TokenTestAdminChanged) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721TokenTestAdminChangedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC721TokenTestAdminChangedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC721TokenTestAdminChanged represents a AdminChanged event raised by the ERC721TokenTest contract. -type ERC721TokenTestAdminChanged struct { - PreviousAdmin common.Address - NewAdmin common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterAdminChanged is a free log retrieval operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ERC721TokenTest *ERC721TokenTestFilterer) FilterAdminChanged(opts *bind.FilterOpts) (*ERC721TokenTestAdminChangedIterator, error) { - - logs, sub, err := _ERC721TokenTest.contract.FilterLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return &ERC721TokenTestAdminChangedIterator{contract: _ERC721TokenTest.contract, event: "AdminChanged", logs: logs, sub: sub}, nil -} - -// WatchAdminChanged is a free log subscription operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ERC721TokenTest *ERC721TokenTestFilterer) WatchAdminChanged(opts *bind.WatchOpts, sink chan<- *ERC721TokenTestAdminChanged) (event.Subscription, error) { - - logs, sub, err := _ERC721TokenTest.contract.WatchLogs(opts, "AdminChanged") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC721TokenTestAdminChanged) - if err := _ERC721TokenTest.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseAdminChanged is a log parse operation binding the contract event 0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f. -// -// Solidity: event AdminChanged(address previousAdmin, address newAdmin) -func (_ERC721TokenTest *ERC721TokenTestFilterer) ParseAdminChanged(log types.Log) (*ERC721TokenTestAdminChanged, error) { - event := new(ERC721TokenTestAdminChanged) - if err := _ERC721TokenTest.contract.UnpackLog(event, "AdminChanged", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // ERC721TokenTestApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721TokenTest contract. type ERC721TokenTestApprovalIterator struct { Event *ERC721TokenTestApproval // Event containing the contract specifics and raw log @@ -1194,284 +986,6 @@ func (_ERC721TokenTest *ERC721TokenTestFilterer) ParseApprovalForAll(log types.L return event, nil } -// ERC721TokenTestBeaconUpgradedIterator is returned from FilterBeaconUpgraded and is used to iterate over the raw logs and unpacked data for BeaconUpgraded events raised by the ERC721TokenTest contract. -type ERC721TokenTestBeaconUpgradedIterator struct { - Event *ERC721TokenTestBeaconUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC721TokenTestBeaconUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC721TokenTestBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC721TokenTestBeaconUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721TokenTestBeaconUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC721TokenTestBeaconUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC721TokenTestBeaconUpgraded represents a BeaconUpgraded event raised by the ERC721TokenTest contract. -type ERC721TokenTestBeaconUpgraded struct { - Beacon common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterBeaconUpgraded is a free log retrieval operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ERC721TokenTest *ERC721TokenTestFilterer) FilterBeaconUpgraded(opts *bind.FilterOpts, beacon []common.Address) (*ERC721TokenTestBeaconUpgradedIterator, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _ERC721TokenTest.contract.FilterLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return &ERC721TokenTestBeaconUpgradedIterator{contract: _ERC721TokenTest.contract, event: "BeaconUpgraded", logs: logs, sub: sub}, nil -} - -// WatchBeaconUpgraded is a free log subscription operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ERC721TokenTest *ERC721TokenTestFilterer) WatchBeaconUpgraded(opts *bind.WatchOpts, sink chan<- *ERC721TokenTestBeaconUpgraded, beacon []common.Address) (event.Subscription, error) { - - var beaconRule []interface{} - for _, beaconItem := range beacon { - beaconRule = append(beaconRule, beaconItem) - } - - logs, sub, err := _ERC721TokenTest.contract.WatchLogs(opts, "BeaconUpgraded", beaconRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC721TokenTestBeaconUpgraded) - if err := _ERC721TokenTest.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseBeaconUpgraded is a log parse operation binding the contract event 0x1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e. -// -// Solidity: event BeaconUpgraded(address indexed beacon) -func (_ERC721TokenTest *ERC721TokenTestFilterer) ParseBeaconUpgraded(log types.Log) (*ERC721TokenTestBeaconUpgraded, error) { - event := new(ERC721TokenTestBeaconUpgraded) - if err := _ERC721TokenTest.contract.UnpackLog(event, "BeaconUpgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - -// ERC721TokenTestInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ERC721TokenTest contract. -type ERC721TokenTestInitializedIterator struct { - Event *ERC721TokenTestInitialized // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC721TokenTestInitializedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC721TokenTestInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC721TokenTestInitialized) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721TokenTestInitializedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC721TokenTestInitializedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC721TokenTestInitialized represents a Initialized event raised by the ERC721TokenTest contract. -type ERC721TokenTestInitialized struct { - Version uint8 - Raw types.Log // Blockchain specific contextual infos -} - -// FilterInitialized is a free log retrieval operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_ERC721TokenTest *ERC721TokenTestFilterer) FilterInitialized(opts *bind.FilterOpts) (*ERC721TokenTestInitializedIterator, error) { - - logs, sub, err := _ERC721TokenTest.contract.FilterLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return &ERC721TokenTestInitializedIterator{contract: _ERC721TokenTest.contract, event: "Initialized", logs: logs, sub: sub}, nil -} - -// WatchInitialized is a free log subscription operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_ERC721TokenTest *ERC721TokenTestFilterer) WatchInitialized(opts *bind.WatchOpts, sink chan<- *ERC721TokenTestInitialized) (event.Subscription, error) { - - logs, sub, err := _ERC721TokenTest.contract.WatchLogs(opts, "Initialized") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC721TokenTestInitialized) - if err := _ERC721TokenTest.contract.UnpackLog(event, "Initialized", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseInitialized is a log parse operation binding the contract event 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498. -// -// Solidity: event Initialized(uint8 version) -func (_ERC721TokenTest *ERC721TokenTestFilterer) ParseInitialized(log types.Log) (*ERC721TokenTestInitialized, error) { - event := new(ERC721TokenTestInitialized) - if err := _ERC721TokenTest.contract.UnpackLog(event, "Initialized", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - // ERC721TokenTestOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ERC721TokenTest contract. type ERC721TokenTestOwnershipTransferredIterator struct { Event *ERC721TokenTestOwnershipTransferred // Event containing the contract specifics and raw log @@ -1786,147 +1300,3 @@ func (_ERC721TokenTest *ERC721TokenTestFilterer) ParseTransfer(log types.Log) (* event.Raw = log return event, nil } - -// ERC721TokenTestUpgradedIterator is returned from FilterUpgraded and is used to iterate over the raw logs and unpacked data for Upgraded events raised by the ERC721TokenTest contract. -type ERC721TokenTestUpgradedIterator struct { - Event *ERC721TokenTestUpgraded // Event containing the contract specifics and raw log - - contract *bind.BoundContract // Generic contract to use for unpacking event data - event string // Event name to use for unpacking event data - - logs chan types.Log // Log channel receiving the found contract events - sub ethereum.Subscription // Subscription for errors, completion and termination - done bool // Whether the subscription completed delivering logs - fail error // Occurred error to stop iteration -} - -// Next advances the iterator to the subsequent event, returning whether there -// are any more events found. In case of a retrieval or parsing error, false is -// returned and Error() can be queried for the exact failure. -func (it *ERC721TokenTestUpgradedIterator) Next() bool { - // If the iterator failed, stop iterating - if it.fail != nil { - return false - } - // If the iterator completed, deliver directly whatever's available - if it.done { - select { - case log := <-it.logs: - it.Event = new(ERC721TokenTestUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - // Iterator still in progress, wait for either a data or an error event - select { - case log := <-it.logs: - it.Event = new(ERC721TokenTestUpgraded) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -// Error returns any retrieval or parsing error occurred during filtering. -func (it *ERC721TokenTestUpgradedIterator) Error() error { - return it.fail -} - -// Close terminates the iteration process, releasing any pending underlying -// resources. -func (it *ERC721TokenTestUpgradedIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -// ERC721TokenTestUpgraded represents a Upgraded event raised by the ERC721TokenTest contract. -type ERC721TokenTestUpgraded struct { - Implementation common.Address - Raw types.Log // Blockchain specific contextual infos -} - -// FilterUpgraded is a free log retrieval operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC721TokenTest *ERC721TokenTestFilterer) FilterUpgraded(opts *bind.FilterOpts, implementation []common.Address) (*ERC721TokenTestUpgradedIterator, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ERC721TokenTest.contract.FilterLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return &ERC721TokenTestUpgradedIterator{contract: _ERC721TokenTest.contract, event: "Upgraded", logs: logs, sub: sub}, nil -} - -// WatchUpgraded is a free log subscription operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC721TokenTest *ERC721TokenTestFilterer) WatchUpgraded(opts *bind.WatchOpts, sink chan<- *ERC721TokenTestUpgraded, implementation []common.Address) (event.Subscription, error) { - - var implementationRule []interface{} - for _, implementationItem := range implementation { - implementationRule = append(implementationRule, implementationItem) - } - - logs, sub, err := _ERC721TokenTest.contract.WatchLogs(opts, "Upgraded", implementationRule) - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - // New log arrived, parse the event and forward to the user - event := new(ERC721TokenTestUpgraded) - if err := _ERC721TokenTest.contract.UnpackLog(event, "Upgraded", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -// ParseUpgraded is a log parse operation binding the contract event 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b. -// -// Solidity: event Upgraded(address indexed implementation) -func (_ERC721TokenTest *ERC721TokenTestFilterer) ParseUpgraded(log types.Log) (*ERC721TokenTestUpgraded, error) { - event := new(ERC721TokenTestUpgraded) - if err := _ERC721TokenTest.contract.UnpackLog(event, "Upgraded", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} diff --git a/tests/contract/StakingTest.go b/tests/contract/StakingTest.go index 3efc65b26..15a90d6b8 100644 --- a/tests/contract/StakingTest.go +++ b/tests/contract/StakingTest.go @@ -26,12 +26,13 @@ var ( _ = common.Big1 _ = types.BloomLookup _ = event.NewSubscription + _ = abi.ConvertType ) // StakingTestMetaData contains all meta data concerning the StakingTest contract. var StakingTestMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"validator\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"ApproveShares\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"validator\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Delegate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"valSrc\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"valDst\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"completionTime\",\"type\":\"uint256\"}],\"name\":\"Redelegate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"validator\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"token\",\"type\":\"uint256\"}],\"name\":\"TransferShares\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"validator\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"completionTime\",\"type\":\"uint256\"}],\"name\":\"Undelegate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"validator\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_val\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"}],\"name\":\"allowanceShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_val\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"}],\"name\":\"approveShares\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_val\",\"type\":\"string\"}],\"name\":\"delegate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_val\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_del\",\"type\":\"address\"}],\"name\":\"delegation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_val\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_del\",\"type\":\"address\"}],\"name\":\"delegationRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_valSrc\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_valDst\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"}],\"name\":\"redelegate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_val\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"}],\"name\":\"transferFromShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_val\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"}],\"name\":\"transferShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_val\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"}],\"name\":\"undelegate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"validatorShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_val\",\"type\":\"string\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50611555806100206000396000f3fe60806040526004361061009c5760003560e01c80637dd0209d116100645780637dd0209d146101795780638dfc8897146101b45780639ddb511a146101d4578063bf98d772146101e7578063d5c498eb1461021f578063dc6ffc7d1461023f5761009c565b8063161298c1146100a157806331fb67c2146100db57806349da433e1461010957806351af513a146101395780637b625c0f14610159575b600080fd5b3480156100ad57600080fd5b506100c16100bc366004611120565b61025f565b604080519283526020830191909152015b60405180910390f35b3480156100e757600080fd5b506100fb6100f6366004610f77565b61027e565b6040519081526020016100d2565b34801561011557600080fd5b50610129610124366004611120565b610293565b60405190151581526020016100d2565b34801561014557600080fd5b506100fb610154366004611014565b6102aa565b34801561016557600080fd5b506100fb610174366004611060565b6102bd565b34801561018557600080fd5b50610199610194366004611175565b6102d2565b604080519384526020840192909252908201526060016100d2565b3480156101c057600080fd5b506101996101cf3660046111df565b610362565b6100c16101e2366004610f77565b6103bb565b3480156101f357600080fd5b506100fb610202366004610f77565b805160208183018101805160008252928201919093012091525481565b34801561022b57600080fd5b506100c161023a366004611014565b61040c565b34801561024b57600080fd5b506100c161025a3660046110bc565b610424565b600080600080610270878787610445565b909890975095505050505050565b60008061028a836104fc565b9150505b919050565b6000806102a185858561059b565b95945050505050565b60006102b6838361064c565b9392505050565b60006102ca8484846106f8565b949350505050565b6000806000806000806102e68989896107a5565b9250925092508660008a6040516102fd91906112b6565b9081526020016040518091039020600082825461031a91906114ac565b925050819055508660008960405161033291906112b6565b9081526020016040518091039020600082825461034f9190611494565b9091555092999198509650945050505050565b600080600080600080610375888861085b565b9250925092508660008960405161038c91906112b6565b908152602001604051809103902060008282546103a991906114ac565b90915550929891975095509350505050565b6000806000806103cb853461090e565b91509150816000866040516103e091906112b6565b908152602001604051809103902060008282546103fd9190611494565b90915550919350915050915091565b60008061041984846109bc565b915091509250929050565b60008060008061043688888888610a54565b90999098509650505050505050565b6000808080611003610458888888610b14565b60405161046591906112b6565b6000604051808303816000865af19150503d80600081146104a2576040519150601f19603f3d011682016040523d82523d6000602084013e6104a7565b606091505b50915091506104e58282604051806040016040528060168152602001751d1c985b9cd9995c881cda185c995cc819985a5b195960521b815250610b5e565b6104ee81610be6565b935093505050935093915050565b6000808061100361050c85610c0c565b60405161051991906112b6565b6000604051808303816000865af19150503d8060008114610556576040519150601f19603f3d011682016040523d82523d6000602084013e61055b565b606091505b509150915061059282826040518060400160405280600f81526020016e1dda5d1a191c985dc819985a5b1959608a1b815250610b5e565b6102ca81610c50565b600080806110036105ad878787610c67565b6040516105ba91906112b6565b6000604051808303816000865af19150503d80600081146105f7576040519150601f19603f3d011682016040523d82523d6000602084013e6105fc565b606091505b5091509150610639828260405180604001604052806015815260200174185c1c1c9bdd99481cda185c995cc819985a5b1959605a1b815250610b5e565b61064281610cb1565b9695505050505050565b6000808061100361065d8686610cc8565b60405161066a91906112b6565b600060405180830381855afa9150503d80600081146106a5576040519150601f19603f3d011682016040523d82523d6000602084013e6106aa565b606091505b50915091506106ef82826040518060400160405280601881526020017f64656c65676174696f6e52657761726473206661696c65640000000000000000815250610b5e565b6102a181610c50565b6000808061100361070a878787610d0f565b60405161071791906112b6565b600060405180830381855afa9150503d8060008114610752576040519150601f19603f3d011682016040523d82523d6000602084013e610757565b606091505b509150915061079c82826040518060400160405280601781526020017f616c6c6f77616e636520736861726573206661696c6564000000000000000000815250610b5e565b61064281610c50565b6000808080806110036107b9898989610d59565b6040516107c691906112b6565b6000604051808303816000865af19150503d8060008114610803576040519150601f19603f3d011682016040523d82523d6000602084013e610808565b606091505b50915091506108418282604051806040016040528060118152602001701c9959195b1959d85d194819985a5b1959607a1b815250610b5e565b61084a81610da3565b945094509450505093509350939050565b60008080808061100361086e8888610dd0565b60405161087b91906112b6565b6000604051808303816000865af19150503d80600081146108b8576040519150601f19603f3d011682016040523d82523d6000602084013e6108bd565b606091505b50915091506108f68282604051806040016040528060118152602001701d5b99195b1959d85d194819985a5b1959607a1b815250610b5e565b6108ff81610da3565b94509450945050509250925092565b60008080806110038561092088610e17565b60405161092d91906112b6565b60006040518083038185875af1925050503d806000811461096a576040519150601f19603f3d011682016040523d82523d6000602084013e61096f565b606091505b50915091506109a682826040518060400160405280600f81526020016e19195b1959d85d194819985a5b1959608a1b815250610b5e565b6109af81610be6565b9350935050509250929050565b60008080806110036109ce8787610e5b565b6040516109db91906112b6565b600060405180830381855afa9150503d8060008114610a16576040519150601f19603f3d011682016040523d82523d6000602084013e610a1b565b606091505b50915091506109a682826040518060400160405280601181526020017019195b1959d85d1a5bdb8819985a5b1959607a1b815250610b5e565b6000808080611003610a6889898989610ea2565b604051610a7591906112b6565b6000604051808303816000865af19150503d8060008114610ab2576040519150601f19603f3d011682016040523d82523d6000602084013e610ab7565b606091505b5091509150610afc82826040518060400160405280601a81526020017f7472616e7366657246726f6d20736861726573206661696c6564000000000000815250610b5e565b610b0581610be6565b93509350505094509492505050565b6060838383604051602401610b2b939291906113b5565b60408051601f198184030181529190526020810180516001600160e01b031663161298c160e01b17905290509392505050565b82610be157600082806020019051810190610b799190610faa565b9050600182511015610ba8578060405162461bcd60e51b8152600401610b9f919061130f565b60405180910390fd5b8181604051602001610bbb9291906112d2565b60408051601f198184030181529082905262461bcd60e51b8252610b9f9160040161130f565b505050565b60008060008084806020019051810190610c00919061123a565b90945092505050915091565b606081604051602401610c1f919061130f565b60408051601f198184030181529190526020810180516001600160e01b03166318fdb3e160e11b1790529050919050565b6000808280602001905181019061028a9190611222565b6060838383604051602401610c7e939291906113b5565b60408051601f198184030181529190526020810180516001600160e01b03166324ed219f60e11b17905290509392505050565b6000808280602001905181019061028a9190610f57565b60608282604051602401610cdd929190611322565b60408051601f198184030181529190526020810180516001600160e01b03166328d7a89d60e11b179052905092915050565b6060838383604051602401610d269392919061134c565b60408051601f198184030181529190526020810180516001600160e01b0316637b625c0f60e01b17905290509392505050565b6060838383604051602401610d70939291906113e3565b60408051601f198184030181529190526020810180516001600160e01b0316637dd0209d60e01b17905290509392505050565b60008060008060008086806020019051810190610dc0919061125d565b9199909850909650945050505050565b60608282604051602401610de5929190611419565b60408051601f198184030181529190526020810180516001600160e01b0316638dfc889760e01b179052905092915050565b606081604051602401610e2a919061130f565b60408051601f198184030181529190526020810180516001600160e01b0316634eeda88d60e11b1790529050919050565b60608282604051602401610e70929190611322565b60408051601f198184030181529190526020810180516001600160e01b031663d5c498eb60e01b179052905092915050565b606084848484604051602401610ebb949392919061137f565b60408051601f198184030181529190526020810180516001600160e01b031663dc6ffc7d60e01b1790529050949350505050565b80356001600160a01b038116811461028e57600080fd5b600082601f830112610f16578081fd5b8135610f29610f248261146c565b61143b565b818152846020838601011115610f3d578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215610f68578081fd5b815180151581146102b6578182fd5b600060208284031215610f88578081fd5b813567ffffffffffffffff811115610f9e578182fd5b6102ca84828501610f06565b600060208284031215610fbb578081fd5b815167ffffffffffffffff811115610fd1578182fd5b8201601f81018413610fe1578182fd5b8051610fef610f248261146c565b818152856020838501011115611003578384fd5b6102a18260208301602086016114c3565b60008060408385031215611026578081fd5b823567ffffffffffffffff81111561103c578182fd5b61104885828601610f06565b92505061105760208401610eef565b90509250929050565b600080600060608486031215611074578081fd5b833567ffffffffffffffff81111561108a578182fd5b61109686828701610f06565b9350506110a560208501610eef565b91506110b360408501610eef565b90509250925092565b600080600080608085870312156110d1578081fd5b843567ffffffffffffffff8111156110e7578182fd5b6110f387828801610f06565b94505061110260208601610eef565b925061111060408601610eef565b9396929550929360600135925050565b600080600060608486031215611134578283fd5b833567ffffffffffffffff81111561114a578384fd5b61115686828701610f06565b93505061116560208501610eef565b9150604084013590509250925092565b600080600060608486031215611189578283fd5b833567ffffffffffffffff808211156111a0578485fd5b6111ac87838801610f06565b945060208601359150808211156111c1578384fd5b506111ce86828701610f06565b925050604084013590509250925092565b600080604083850312156111f1578182fd5b823567ffffffffffffffff811115611207578283fd5b61121385828601610f06565b95602094909401359450505050565b600060208284031215611233578081fd5b5051919050565b6000806040838503121561124c578182fd5b505080516020909101519092909150565b600080600060608486031215611271578283fd5b8351925060208401519150604084015190509250925092565b600081518084526112a28160208601602086016114c3565b601f01601f19169290920160200192915050565b600082516112c88184602087016114c3565b9190910192915050565b600083516112e48184602088016114c3565b6101d160f51b90830190815283516113038160028401602088016114c3565b01600201949350505050565b6000602082526102b6602083018461128a565b600060408252611335604083018561128a565b905060018060a01b03831660208301529392505050565b60006060825261135f606083018661128a565b6001600160a01b0394851660208401529290931660409091015292915050565b600060808252611392608083018761128a565b6001600160a01b0395861660208401529390941660408201526060015292915050565b6000606082526113c8606083018661128a565b6001600160a01b039490941660208301525060400152919050565b6000606082526113f6606083018661128a565b8281036020840152611408818661128a565b915050826040830152949350505050565b60006040825261142c604083018561128a565b90508260208301529392505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171561146457611464611509565b604052919050565b600067ffffffffffffffff82111561148657611486611509565b50601f01601f191660200190565b600082198211156114a7576114a76114f3565b500190565b6000828210156114be576114be6114f3565b500390565b60005b838110156114de5781810151838201526020016114c6565b838111156114ed576000848401525b50505050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220250a9d153356eb12970fb26254ec7c40dd7822b03743d4ba250ce240f88a31b564736f6c63430008020033", + Bin: "0x608060405234801561001057600080fd5b50611555806100206000396000f3fe60806040526004361061009c5760003560e01c80637dd0209d116100645780637dd0209d146101795780638dfc8897146101b45780639ddb511a146101d4578063bf98d772146101e7578063d5c498eb1461021f578063dc6ffc7d1461023f5761009c565b8063161298c1146100a157806331fb67c2146100db57806349da433e1461010957806351af513a146101395780637b625c0f14610159575b600080fd5b3480156100ad57600080fd5b506100c16100bc366004611120565b61025f565b604080519283526020830191909152015b60405180910390f35b3480156100e757600080fd5b506100fb6100f6366004610f77565b61027e565b6040519081526020016100d2565b34801561011557600080fd5b50610129610124366004611120565b610293565b60405190151581526020016100d2565b34801561014557600080fd5b506100fb610154366004611014565b6102aa565b34801561016557600080fd5b506100fb610174366004611060565b6102bd565b34801561018557600080fd5b50610199610194366004611175565b6102d2565b604080519384526020840192909252908201526060016100d2565b3480156101c057600080fd5b506101996101cf3660046111df565b610362565b6100c16101e2366004610f77565b6103bb565b3480156101f357600080fd5b506100fb610202366004610f77565b805160208183018101805160008252928201919093012091525481565b34801561022b57600080fd5b506100c161023a366004611014565b61040c565b34801561024b57600080fd5b506100c161025a3660046110bc565b610424565b600080600080610270878787610445565b909890975095505050505050565b60008061028a836104fc565b9150505b919050565b6000806102a185858561059b565b95945050505050565b60006102b6838361064c565b9392505050565b60006102ca8484846106f8565b949350505050565b6000806000806000806102e68989896107a5565b9250925092508660008a6040516102fd91906112b6565b9081526020016040518091039020600082825461031a91906114ac565b925050819055508660008960405161033291906112b6565b9081526020016040518091039020600082825461034f9190611494565b9091555092999198509650945050505050565b600080600080600080610375888861085b565b9250925092508660008960405161038c91906112b6565b908152602001604051809103902060008282546103a991906114ac565b90915550929891975095509350505050565b6000806000806103cb853461090e565b91509150816000866040516103e091906112b6565b908152602001604051809103902060008282546103fd9190611494565b90915550919350915050915091565b60008061041984846109bc565b915091509250929050565b60008060008061043688888888610a54565b90999098509650505050505050565b6000808080611003610458888888610b14565b60405161046591906112b6565b6000604051808303816000865af19150503d80600081146104a2576040519150601f19603f3d011682016040523d82523d6000602084013e6104a7565b606091505b50915091506104e58282604051806040016040528060168152602001751d1c985b9cd9995c881cda185c995cc819985a5b195960521b815250610b5e565b6104ee81610be6565b935093505050935093915050565b6000808061100361050c85610c0c565b60405161051991906112b6565b6000604051808303816000865af19150503d8060008114610556576040519150601f19603f3d011682016040523d82523d6000602084013e61055b565b606091505b509150915061059282826040518060400160405280600f81526020016e1dda5d1a191c985dc819985a5b1959608a1b815250610b5e565b6102ca81610c50565b600080806110036105ad878787610c67565b6040516105ba91906112b6565b6000604051808303816000865af19150503d80600081146105f7576040519150601f19603f3d011682016040523d82523d6000602084013e6105fc565b606091505b5091509150610639828260405180604001604052806015815260200174185c1c1c9bdd99481cda185c995cc819985a5b1959605a1b815250610b5e565b61064281610cb1565b9695505050505050565b6000808061100361065d8686610cc8565b60405161066a91906112b6565b600060405180830381855afa9150503d80600081146106a5576040519150601f19603f3d011682016040523d82523d6000602084013e6106aa565b606091505b50915091506106ef82826040518060400160405280601881526020017f64656c65676174696f6e52657761726473206661696c65640000000000000000815250610b5e565b6102a181610c50565b6000808061100361070a878787610d0f565b60405161071791906112b6565b600060405180830381855afa9150503d8060008114610752576040519150601f19603f3d011682016040523d82523d6000602084013e610757565b606091505b509150915061079c82826040518060400160405280601781526020017f616c6c6f77616e636520736861726573206661696c6564000000000000000000815250610b5e565b61064281610c50565b6000808080806110036107b9898989610d59565b6040516107c691906112b6565b6000604051808303816000865af19150503d8060008114610803576040519150601f19603f3d011682016040523d82523d6000602084013e610808565b606091505b50915091506108418282604051806040016040528060118152602001701c9959195b1959d85d194819985a5b1959607a1b815250610b5e565b61084a81610da3565b945094509450505093509350939050565b60008080808061100361086e8888610dd0565b60405161087b91906112b6565b6000604051808303816000865af19150503d80600081146108b8576040519150601f19603f3d011682016040523d82523d6000602084013e6108bd565b606091505b50915091506108f68282604051806040016040528060118152602001701d5b99195b1959d85d194819985a5b1959607a1b815250610b5e565b6108ff81610da3565b94509450945050509250925092565b60008080806110038561092088610e17565b60405161092d91906112b6565b60006040518083038185875af1925050503d806000811461096a576040519150601f19603f3d011682016040523d82523d6000602084013e61096f565b606091505b50915091506109a682826040518060400160405280600f81526020016e19195b1959d85d194819985a5b1959608a1b815250610b5e565b6109af81610be6565b9350935050509250929050565b60008080806110036109ce8787610e5b565b6040516109db91906112b6565b600060405180830381855afa9150503d8060008114610a16576040519150601f19603f3d011682016040523d82523d6000602084013e610a1b565b606091505b50915091506109a682826040518060400160405280601181526020017019195b1959d85d1a5bdb8819985a5b1959607a1b815250610b5e565b6000808080611003610a6889898989610ea2565b604051610a7591906112b6565b6000604051808303816000865af19150503d8060008114610ab2576040519150601f19603f3d011682016040523d82523d6000602084013e610ab7565b606091505b5091509150610afc82826040518060400160405280601a81526020017f7472616e7366657246726f6d20736861726573206661696c6564000000000000815250610b5e565b610b0581610be6565b93509350505094509492505050565b6060838383604051602401610b2b939291906113b5565b60408051601f198184030181529190526020810180516001600160e01b031663161298c160e01b17905290509392505050565b82610be157600082806020019051810190610b799190610faa565b9050600182511015610ba8578060405162461bcd60e51b8152600401610b9f919061130f565b60405180910390fd5b8181604051602001610bbb9291906112d2565b60408051601f198184030181529082905262461bcd60e51b8252610b9f9160040161130f565b505050565b60008060008084806020019051810190610c00919061123a565b90945092505050915091565b606081604051602401610c1f919061130f565b60408051601f198184030181529190526020810180516001600160e01b03166318fdb3e160e11b1790529050919050565b6000808280602001905181019061028a9190611222565b6060838383604051602401610c7e939291906113b5565b60408051601f198184030181529190526020810180516001600160e01b03166324ed219f60e11b17905290509392505050565b6000808280602001905181019061028a9190610f57565b60608282604051602401610cdd929190611322565b60408051601f198184030181529190526020810180516001600160e01b03166328d7a89d60e11b179052905092915050565b6060838383604051602401610d269392919061134c565b60408051601f198184030181529190526020810180516001600160e01b0316637b625c0f60e01b17905290509392505050565b6060838383604051602401610d70939291906113e3565b60408051601f198184030181529190526020810180516001600160e01b0316637dd0209d60e01b17905290509392505050565b60008060008060008086806020019051810190610dc0919061125d565b9199909850909650945050505050565b60608282604051602401610de5929190611419565b60408051601f198184030181529190526020810180516001600160e01b0316638dfc889760e01b179052905092915050565b606081604051602401610e2a919061130f565b60408051601f198184030181529190526020810180516001600160e01b0316634eeda88d60e11b1790529050919050565b60608282604051602401610e70929190611322565b60408051601f198184030181529190526020810180516001600160e01b031663d5c498eb60e01b179052905092915050565b606084848484604051602401610ebb949392919061137f565b60408051601f198184030181529190526020810180516001600160e01b031663dc6ffc7d60e01b1790529050949350505050565b80356001600160a01b038116811461028e57600080fd5b600082601f830112610f16578081fd5b8135610f29610f248261146c565b61143b565b818152846020838601011115610f3d578283fd5b816020850160208301379081016020019190915292915050565b600060208284031215610f68578081fd5b815180151581146102b6578182fd5b600060208284031215610f88578081fd5b813567ffffffffffffffff811115610f9e578182fd5b6102ca84828501610f06565b600060208284031215610fbb578081fd5b815167ffffffffffffffff811115610fd1578182fd5b8201601f81018413610fe1578182fd5b8051610fef610f248261146c565b818152856020838501011115611003578384fd5b6102a18260208301602086016114c3565b60008060408385031215611026578081fd5b823567ffffffffffffffff81111561103c578182fd5b61104885828601610f06565b92505061105760208401610eef565b90509250929050565b600080600060608486031215611074578081fd5b833567ffffffffffffffff81111561108a578182fd5b61109686828701610f06565b9350506110a560208501610eef565b91506110b360408501610eef565b90509250925092565b600080600080608085870312156110d1578081fd5b843567ffffffffffffffff8111156110e7578182fd5b6110f387828801610f06565b94505061110260208601610eef565b925061111060408601610eef565b9396929550929360600135925050565b600080600060608486031215611134578283fd5b833567ffffffffffffffff81111561114a578384fd5b61115686828701610f06565b93505061116560208501610eef565b9150604084013590509250925092565b600080600060608486031215611189578283fd5b833567ffffffffffffffff808211156111a0578485fd5b6111ac87838801610f06565b945060208601359150808211156111c1578384fd5b506111ce86828701610f06565b925050604084013590509250925092565b600080604083850312156111f1578182fd5b823567ffffffffffffffff811115611207578283fd5b61121385828601610f06565b95602094909401359450505050565b600060208284031215611233578081fd5b5051919050565b6000806040838503121561124c578182fd5b505080516020909101519092909150565b600080600060608486031215611271578283fd5b8351925060208401519150604084015190509250925092565b600081518084526112a28160208601602086016114c3565b601f01601f19169290920160200192915050565b600082516112c88184602087016114c3565b9190910192915050565b600083516112e48184602088016114c3565b6101d160f51b90830190815283516113038160028401602088016114c3565b01600201949350505050565b6000602082526102b6602083018461128a565b600060408252611335604083018561128a565b905060018060a01b03831660208301529392505050565b60006060825261135f606083018661128a565b6001600160a01b0394851660208401529290931660409091015292915050565b600060808252611392608083018761128a565b6001600160a01b0395861660208401529390941660408201526060015292915050565b6000606082526113c8606083018661128a565b6001600160a01b039490941660208301525060400152919050565b6000606082526113f6606083018661128a565b8281036020840152611408818661128a565b915050826040830152949350505050565b60006040825261142c604083018561128a565b90508260208301529392505050565b604051601f8201601f1916810167ffffffffffffffff8111828210171561146457611464611509565b604052919050565b600067ffffffffffffffff82111561148657611486611509565b50601f01601f191660200190565b600082198211156114a7576114a76114f3565b500190565b6000828210156114be576114be6114f3565b500390565b60005b838110156114de5781810151838201526020016114c6565b838111156114ed576000848401525b50505050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220a837a862eb270a5990249e6fffe7811e0d34dbdfce8c282abfe5e8ffc2f97d4a64736f6c63430008020033", } // StakingTestABI is the input ABI used to generate the binding from.