From 86027f9d208f3dfcb38eab74d716cbceeef89727 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Negovanovi=C4=87?= Date: Thu, 6 Apr 2023 23:55:34 +0200 Subject: [PATCH] Consolidate deposit and withdrawal erc20 with multiple commitments per epoch tests --- .../polybft/contractsapi/bindings-gen/main.go | 1 + .../polybft/contractsapi/contractsapi.go | 16 + consensus/polybft/contractsapi/gen_sc_data.go | 8 +- e2e-polybft/e2e/bridge_test.go | 276 +++++++++++------- 4 files changed, 199 insertions(+), 102 deletions(-) diff --git a/consensus/polybft/contractsapi/bindings-gen/main.go b/consensus/polybft/contractsapi/bindings-gen/main.go index dbcdb51719..11143b16c4 100644 --- a/consensus/polybft/contractsapi/bindings-gen/main.go +++ b/consensus/polybft/contractsapi/bindings-gen/main.go @@ -139,6 +139,7 @@ func main() { "RootERC20", gensc.RootERC20, []string{ + "balanceOf", "approve", "mint", }, diff --git a/consensus/polybft/contractsapi/contractsapi.go b/consensus/polybft/contractsapi/contractsapi.go index dea0cf7a84..3f2c270e95 100644 --- a/consensus/polybft/contractsapi/contractsapi.go +++ b/consensus/polybft/contractsapi/contractsapi.go @@ -723,6 +723,22 @@ func (d *DepositToRootERC20PredicateFn) DecodeAbi(buf []byte) error { return decodeMethod(RootERC20Predicate.Abi.Methods["depositTo"], buf, d) } +type BalanceOfRootERC20Fn struct { + Account types.Address `abi:"account"` +} + +func (b *BalanceOfRootERC20Fn) Sig() []byte { + return RootERC20.Abi.Methods["balanceOf"].ID() +} + +func (b *BalanceOfRootERC20Fn) EncodeAbi() ([]byte, error) { + return RootERC20.Abi.Methods["balanceOf"].Encode(b) +} + +func (b *BalanceOfRootERC20Fn) DecodeAbi(buf []byte) error { + return decodeMethod(RootERC20.Abi.Methods["balanceOf"], buf, b) +} + type ApproveRootERC20Fn struct { Spender types.Address `abi:"spender"` Amount *big.Int `abi:"amount"` diff --git a/consensus/polybft/contractsapi/gen_sc_data.go b/consensus/polybft/contractsapi/gen_sc_data.go index cb25642b21..7b41460aa5 100644 --- a/consensus/polybft/contractsapi/gen_sc_data.go +++ b/consensus/polybft/contractsapi/gen_sc_data.go @@ -8,7 +8,7 @@ var NativeERC20Artifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \" var NativeERC20MintableArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"NativeERC20Mintable\",\n \"sourceName\": \"contracts/child/NativeERC20Mintable.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"only\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"Unauthorized\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferStarted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TOKEN_CONTRACT\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"SYSTEM\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"acceptOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"subtractedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"decreaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"addedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"increaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"predicate_\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner_\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"rootToken_\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"symbol_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"decimals_\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pendingOwner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"rootToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b5061001a3361001f565b610098565b603480546001600160a01b031916905561004381610046602090811b6108ce17901c565b50565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6114ad806100a76000396000f3fe608060405234801561001057600080fd5b50600436106101795760003560e01c8063715018a6116100d9578063a457c2d711610087578063a457c2d7146102e3578063a9059cbb146102f6578063dd62ed3e14610309578063e0563ab11461031c578063e30c397814610325578063e619870514610336578063f2fde38b1461034757600080fd5b8063715018a61461029457806379ba50971461029c5780638da5cb5b146102a4578063947287cf146102b557806395d89b41146102be57806397e5230d146102c65780639dc29fac146102d057600080fd5b8063284017f511610136578063284017f51461021e578063313ce56714610227578063395093511461023c5780633b878c221461024f57806340c10f191461025857806351351d531461026b57806370a082311461027957600080fd5b806306fdde031461017e578063095ea7b31461019c57806318160ddd146101bf5780631f2d0065146101d1578063238b4bc5146101f657806323b872dd1461020b575b600080fd5b61018661035a565b6040516101939190610fce565b60405180910390f35b6101af6101aa36600461101d565b6103ec565b6040519015158152602001610193565b6036545b604051908152602001610193565b6038546001600160a01b03165b6040516001600160a01b039091168152602001610193565b610209610204366004611090565b610406565b005b6101af61021936600461114b565b610625565b6101de61202081565b603b5460405160ff9091168152602001610193565b6101af61024a36600461101d565b610649565b6101de61101081565b6101af61026636600461101d565b61066b565b6101de6002600160a01b0381565b6101c3610287366004611187565b6001600160a01b03163190565b6102096106c0565b6102096106d4565b6033546001600160a01b03166101de565b6101c361520881565b61018661074e565b6101c3620249f081565b6101af6102de36600461101d565b61075d565b6101af6102f136600461101d565b6107a9565b6101af61030436600461101d565b610824565b6101c36103173660046111a9565b610832565b6101de61203081565b6034546001600160a01b03166101de565b6037546001600160a01b03166101de565b610209610355366004611187565b61085d565b606060398054610369906111dc565b80601f0160208091040260200160405190810160405280929190818152602001828054610395906111dc565b80156103e25780601f106103b7576101008083540402835291602001916103e2565b820191906000526020600020905b8154815290600101906020018083116103c557829003601f168201915b5050505050905090565b6000336103fa818585610920565b60019150505b92915050565b600054610100900460ff16158080156104265750600054600160ff909116105b806104405750303b158015610440575060005460ff166001145b6104a85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156104cb576000805461ff0019166101001790555b336002600160a01b031461050f5760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b604482015260640161049f565b6001600160a01b0388166105705760405162461bcd60e51b815260206004820152602260248201527f4e617469766545524332303a20496e76616c6964206f776e6572206164647265604482015261737360f01b606482015260840161049f565b603780546001600160a01b03808c166001600160a01b03199283161790925560388054928a169290911691909117905560396105ad86888361127b565b50603a6105bb84868361127b565b50603b805460ff191660ff84161790556105d488610a44565b801561061a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b600033610633858285610a5d565b61063e858585610ad7565b506001949350505050565b6000336103fa81858561065c8383610832565b6106669190611352565b610920565b6037546000906001600160a01b031633148061069157506033546001600160a01b031633145b6106ad5760405162461bcd60e51b815260040161049f90611365565b6106b78383610c9c565b50600192915050565b6106c8610df6565b6106d26000610a44565b565b60345433906001600160a01b031681146107425760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161049f565b61074b81610a44565b50565b6060603a8054610369906111dc565b6037546000906001600160a01b031633148061078357506033546001600160a01b031633145b61079f5760405162461bcd60e51b815260040161049f90611365565b6106b78383610e50565b600033816107b78286610832565b9050838110156108175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161049f565b61063e8286868403610920565b6000336103fa818585610ad7565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b610865610df6565b603480546001600160a01b0383166001600160a01b031990911681179091556108966033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166109825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049f565b6001600160a01b0382166109e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049f565b6001600160a01b0383811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b603480546001600160a01b031916905561074b816108ce565b6000610a698484610832565b90506000198114610ad15781811015610ac45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161049f565b610ad18484848403610920565b50505050565b6001600160a01b038316610b3b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049f565b6001600160a01b038216610b9d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049f565b6000806120206001600160a01b0316858585604051602001610bc1939291906113b2565b60408051601f1981840301815290829052610bdb916113d6565b6000604051808303816000865af19150503d8060008114610c18576040519150601f19603f3d011682016040523d82523d6000602084013e610c1d565b606091505b5091509150818015610c3e575080806020019051810190610c3e91906113f2565b610c5a5760405162461bcd60e51b815260040161049f90611414565b836001600160a01b0316856001600160a01b031660008051602061145883398151915285604051610c8d91815260200190565b60405180910390a35050505050565b6001600160a01b038216610cf25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161049f565b8060366000828254610d049190611352565b9091555050604051600090819061202090610d27908390879087906020016113b2565b60408051601f1981840301815290829052610d41916113d6565b6000604051808303816000865af19150503d8060008114610d7e576040519150601f19603f3d011682016040523d82523d6000602084013e610d83565b606091505b5091509150818015610da4575080806020019051810190610da491906113f2565b610dc05760405162461bcd60e51b815260040161049f90611414565b6040518381526001600160a01b03851690600090600080516020611458833981519152906020015b60405180910390a350505050565b6033546001600160a01b031633146106d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161049f565b6001600160a01b038216610eb05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161049f565b8060366000828254610ec29190611444565b9091555050604051600090819061202090610ee5908690849087906020016113b2565b60408051601f1981840301815290829052610eff916113d6565b6000604051808303816000865af19150503d8060008114610f3c576040519150601f19603f3d011682016040523d82523d6000602084013e610f41565b606091505b5091509150818015610f62575080806020019051810190610f6291906113f2565b610f7e5760405162461bcd60e51b815260040161049f90611414565b6040518381526000906001600160a01b0386169060008051602061145883398151915290602001610de8565b60005b83811015610fc5578181015183820152602001610fad565b50506000910152565b6020815260008251806020840152610fed816040850160208701610faa565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461101857600080fd5b919050565b6000806040838503121561103057600080fd5b61103983611001565b946020939093013593505050565b60008083601f84011261105957600080fd5b50813567ffffffffffffffff81111561107157600080fd5b60208301915083602082850101111561108957600080fd5b9250929050565b60008060008060008060008060c0898b0312156110ac57600080fd5b6110b589611001565b97506110c360208a01611001565b96506110d160408a01611001565b9550606089013567ffffffffffffffff808211156110ee57600080fd5b6110fa8c838d01611047565b909750955060808b013591508082111561111357600080fd5b506111208b828c01611047565b90945092505060a089013560ff8116811461113a57600080fd5b809150509295985092959890939650565b60008060006060848603121561116057600080fd5b61116984611001565b925061117760208501611001565b9150604084013590509250925092565b60006020828403121561119957600080fd5b6111a282611001565b9392505050565b600080604083850312156111bc57600080fd5b6111c583611001565b91506111d360208401611001565b90509250929050565b600181811c908216806111f057607f821691505b60208210810361121057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b601f82111561127657600081815260208120601f850160051c810160208610156112535750805b601f850160051c820191505b818110156112725782815560010161125f565b5050505b505050565b67ffffffffffffffff83111561129357611293611216565b6112a7836112a183546111dc565b8361122c565b6000601f8411600181146112db57600085156112c35750838201355b600019600387901b1c1916600186901b178355611335565b600083815260209020601f19861690835b8281101561130c57868501358255602094850194600190920191016112ec565b50868210156113295760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104005761040061133c565b6020808252602d908201527f4e617469766545524332303a204f6e6c7920707265646963617465206f72206f60408201526c1ddb995c8818d85b8818d85b1b609a1b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600082516113e8818460208701610faa565b9190910192915050565b60006020828403121561140457600080fd5b815180151581146111a257600080fd5b60208082526016908201527514149150d3d35412531157d0d0531317d1905253115160521b604082015260600190565b818103818111156104005761040061133c56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209be318415f88ce7ef3eb3e9be7eed0fb2e93811e73c7b0d5b1fd4e46144f210d64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101795760003560e01c8063715018a6116100d9578063a457c2d711610087578063a457c2d7146102e3578063a9059cbb146102f6578063dd62ed3e14610309578063e0563ab11461031c578063e30c397814610325578063e619870514610336578063f2fde38b1461034757600080fd5b8063715018a61461029457806379ba50971461029c5780638da5cb5b146102a4578063947287cf146102b557806395d89b41146102be57806397e5230d146102c65780639dc29fac146102d057600080fd5b8063284017f511610136578063284017f51461021e578063313ce56714610227578063395093511461023c5780633b878c221461024f57806340c10f191461025857806351351d531461026b57806370a082311461027957600080fd5b806306fdde031461017e578063095ea7b31461019c57806318160ddd146101bf5780631f2d0065146101d1578063238b4bc5146101f657806323b872dd1461020b575b600080fd5b61018661035a565b6040516101939190610fce565b60405180910390f35b6101af6101aa36600461101d565b6103ec565b6040519015158152602001610193565b6036545b604051908152602001610193565b6038546001600160a01b03165b6040516001600160a01b039091168152602001610193565b610209610204366004611090565b610406565b005b6101af61021936600461114b565b610625565b6101de61202081565b603b5460405160ff9091168152602001610193565b6101af61024a36600461101d565b610649565b6101de61101081565b6101af61026636600461101d565b61066b565b6101de6002600160a01b0381565b6101c3610287366004611187565b6001600160a01b03163190565b6102096106c0565b6102096106d4565b6033546001600160a01b03166101de565b6101c361520881565b61018661074e565b6101c3620249f081565b6101af6102de36600461101d565b61075d565b6101af6102f136600461101d565b6107a9565b6101af61030436600461101d565b610824565b6101c36103173660046111a9565b610832565b6101de61203081565b6034546001600160a01b03166101de565b6037546001600160a01b03166101de565b610209610355366004611187565b61085d565b606060398054610369906111dc565b80601f0160208091040260200160405190810160405280929190818152602001828054610395906111dc565b80156103e25780601f106103b7576101008083540402835291602001916103e2565b820191906000526020600020905b8154815290600101906020018083116103c557829003601f168201915b5050505050905090565b6000336103fa818585610920565b60019150505b92915050565b600054610100900460ff16158080156104265750600054600160ff909116105b806104405750303b158015610440575060005460ff166001145b6104a85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156104cb576000805461ff0019166101001790555b336002600160a01b031461050f5760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b604482015260640161049f565b6001600160a01b0388166105705760405162461bcd60e51b815260206004820152602260248201527f4e617469766545524332303a20496e76616c6964206f776e6572206164647265604482015261737360f01b606482015260840161049f565b603780546001600160a01b03808c166001600160a01b03199283161790925560388054928a169290911691909117905560396105ad86888361127b565b50603a6105bb84868361127b565b50603b805460ff191660ff84161790556105d488610a44565b801561061a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b600033610633858285610a5d565b61063e858585610ad7565b506001949350505050565b6000336103fa81858561065c8383610832565b6106669190611352565b610920565b6037546000906001600160a01b031633148061069157506033546001600160a01b031633145b6106ad5760405162461bcd60e51b815260040161049f90611365565b6106b78383610c9c565b50600192915050565b6106c8610df6565b6106d26000610a44565b565b60345433906001600160a01b031681146107425760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161049f565b61074b81610a44565b50565b6060603a8054610369906111dc565b6037546000906001600160a01b031633148061078357506033546001600160a01b031633145b61079f5760405162461bcd60e51b815260040161049f90611365565b6106b78383610e50565b600033816107b78286610832565b9050838110156108175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161049f565b61063e8286868403610920565b6000336103fa818585610ad7565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b610865610df6565b603480546001600160a01b0383166001600160a01b031990911681179091556108966033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166109825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049f565b6001600160a01b0382166109e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049f565b6001600160a01b0383811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b603480546001600160a01b031916905561074b816108ce565b6000610a698484610832565b90506000198114610ad15781811015610ac45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161049f565b610ad18484848403610920565b50505050565b6001600160a01b038316610b3b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049f565b6001600160a01b038216610b9d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049f565b6000806120206001600160a01b0316858585604051602001610bc1939291906113b2565b60408051601f1981840301815290829052610bdb916113d6565b6000604051808303816000865af19150503d8060008114610c18576040519150601f19603f3d011682016040523d82523d6000602084013e610c1d565b606091505b5091509150818015610c3e575080806020019051810190610c3e91906113f2565b610c5a5760405162461bcd60e51b815260040161049f90611414565b836001600160a01b0316856001600160a01b031660008051602061145883398151915285604051610c8d91815260200190565b60405180910390a35050505050565b6001600160a01b038216610cf25760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161049f565b8060366000828254610d049190611352565b9091555050604051600090819061202090610d27908390879087906020016113b2565b60408051601f1981840301815290829052610d41916113d6565b6000604051808303816000865af19150503d8060008114610d7e576040519150601f19603f3d011682016040523d82523d6000602084013e610d83565b606091505b5091509150818015610da4575080806020019051810190610da491906113f2565b610dc05760405162461bcd60e51b815260040161049f90611414565b6040518381526001600160a01b03851690600090600080516020611458833981519152906020015b60405180910390a350505050565b6033546001600160a01b031633146106d25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161049f565b6001600160a01b038216610eb05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161049f565b8060366000828254610ec29190611444565b9091555050604051600090819061202090610ee5908690849087906020016113b2565b60408051601f1981840301815290829052610eff916113d6565b6000604051808303816000865af19150503d8060008114610f3c576040519150601f19603f3d011682016040523d82523d6000602084013e610f41565b606091505b5091509150818015610f62575080806020019051810190610f6291906113f2565b610f7e5760405162461bcd60e51b815260040161049f90611414565b6040518381526000906001600160a01b0386169060008051602061145883398151915290602001610de8565b60005b83811015610fc5578181015183820152602001610fad565b50506000910152565b6020815260008251806020840152610fed816040850160208701610faa565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461101857600080fd5b919050565b6000806040838503121561103057600080fd5b61103983611001565b946020939093013593505050565b60008083601f84011261105957600080fd5b50813567ffffffffffffffff81111561107157600080fd5b60208301915083602082850101111561108957600080fd5b9250929050565b60008060008060008060008060c0898b0312156110ac57600080fd5b6110b589611001565b97506110c360208a01611001565b96506110d160408a01611001565b9550606089013567ffffffffffffffff808211156110ee57600080fd5b6110fa8c838d01611047565b909750955060808b013591508082111561111357600080fd5b506111208b828c01611047565b90945092505060a089013560ff8116811461113a57600080fd5b809150509295985092959890939650565b60008060006060848603121561116057600080fd5b61116984611001565b925061117760208501611001565b9150604084013590509250925092565b60006020828403121561119957600080fd5b6111a282611001565b9392505050565b600080604083850312156111bc57600080fd5b6111c583611001565b91506111d360208401611001565b90509250929050565b600181811c908216806111f057607f821691505b60208210810361121057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b601f82111561127657600081815260208120601f850160051c810160208610156112535750805b601f850160051c820191505b818110156112725782815560010161125f565b5050505b505050565b67ffffffffffffffff83111561129357611293611216565b6112a7836112a183546111dc565b8361122c565b6000601f8411600181146112db57600085156112c35750838201355b600019600387901b1c1916600186901b178355611335565b600083815260209020601f19861690835b8281101561130c57868501358255602094850194600190920191016112ec565b50868210156113295760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104005761040061133c565b6020808252602d908201527f4e617469766545524332303a204f6e6c7920707265646963617465206f72206f60408201526c1ddb995c8818d85b8818d85b1b609a1b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600082516113e8818460208701610faa565b9190910192915050565b60006020828403121561140457600080fd5b815180151581146111a257600080fd5b60208082526016908201527514149150d3d35412531157d0d0531317d1905253115160521b604082015260600190565b818103818111156104005761040061133c56feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209be318415f88ce7ef3eb3e9be7eed0fb2e93811e73c7b0d5b1fd4e46144f210d64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" var ChildERC20Artifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"ChildERC20\",\n \"sourceName\": \"contracts/child/ChildERC20.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"relayerAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"functionSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"MetaTransactionExecuted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"subtractedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"decreaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"functionSignature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sigR\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sigS\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"sigV\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"executeMetaTransaction\",\n \"outputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getNonce\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"nonce\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"addedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"increaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"rootToken_\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"symbol_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"decimals_\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"rootToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b506118e3806100206000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806340c10f19116100a2578063a457c2d711610071578063a457c2d71461026b578063a9059cbb1461027e578063dd62ed3e14610291578063e6198705146102a4578063f6d2ee86146102b557600080fd5b806340c10f191461021457806370a082311461022757806395d89b41146102505780639dc29fac1461025857600080fd5b80631f2d0065116100e95780631f2d00651461018157806323b872dd146101a65780632d0335ab146101b9578063313ce567146101e2578063395093511461020157600080fd5b806306fdde031461011b578063095ea7b3146101395780630c53c51c1461015c57806318160ddd1461016f575b600080fd5b6101236102ca565b6040516101309190611371565b60405180910390f35b61014c6101473660046113a7565b61035c565b6040519015158152602001610130565b61012361016a36600461142b565b610380565b603c545b604051908152602001610130565b606d546001600160a01b03165b6040516001600160a01b039091168152602001610130565b61014c6101b43660046114a1565b610663565b6101736101c73660046114dd565b6001600160a01b031660009081526006602052604090205490565b606d54600160a01b900460ff1660405160ff9091168152602001610130565b61014c61020f3660046113a7565b610691565b61014c6102223660046113a7565b6106bd565b6101736102353660046114dd565b6001600160a01b03166000908152603a602052604090205490565b6101236106fd565b61014c6102663660046113a7565b61070c565b61014c6102793660046113a7565b610743565b61014c61028c3660046113a7565b6107c9565b61017361029f3660046114f8565b6107e1565b606c546001600160a01b031661018e565b6102c86102c336600461152b565b61080c565b005b6060603d80546102d9906115af565b80601f0160208091040260200160405190810160405280929190818152602001828054610305906115af565b80156103525780601f1061032757610100808354040283529160200191610352565b820191906000526020600020905b81548152906001019060200180831161033557829003601f168201915b5050505050905090565b600080610367610a8c565b9050610374818585610a9b565b60019150505b92915050565b606060006103c387878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610bc092505050565b90506001600160e01b031960003581169082160361044e5760405162461bcd60e51b815260206004820152603d60248201527f66756e6374696f6e5369676e61747572652063616e206e6f74206265206f662060448201527f657865637574654d6574615472616e73616374696f6e206d6574686f6400000060648201526084015b60405180910390fd5b604080516060810182526001600160a01b038a16600081815260066020908152848220548452808401929092528351601f8b0183900483028101830185528a815290938301918b908b9081908401838280828437600092019190915250505091525090506104bf8982888888610bdb565b6105155760405162461bcd60e51b815260206004820152602160248201527f5369676e657220616e64207369676e617475726520646f206e6f74206d6174636044820152600d60fb1b6064820152608401610445565b600660008a6001600160a01b03166001600160a01b031681526020019081526020016000206000815460010191905081905550600080306001600160a01b03168a8a8d60405160200161056a939291906115e9565b60408051601f19818403018152908290526105849161160f565b6000604051808303816000865af19150503d80600081146105c1576040519150601f19603f3d011682016040523d82523d6000602084013e6105c6565b606091505b5091509150816106185760405162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c000000006044820152606401610445565b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b8b338c8c60405161064d949392919061162b565b60405180910390a19a9950505050505050505050565b60008061066e610a8c565b905061067b858285610cb7565b610686858585610d31565b506001949350505050565b60008061069c610a8c565b90506103748185856106ae85896107e1565b6106b89190611677565b610a9b565b606c546000906001600160a01b031633146106ea5760405162461bcd60e51b815260040161044590611698565b6106f48383610eca565b50600192915050565b6060603e80546102d9906115af565b606c546000906001600160a01b031633146107395760405162461bcd60e51b815260040161044590611698565b6106f48383610f7a565b60008061074e610a8c565b9050600061075c82866107e1565b9050838110156107bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610445565b6106868286868403610a9b565b6000806107d4610a8c565b9050610374818585610d31565b6001600160a01b039182166000908152603b6020908152604080832093909416825291909152205490565b600754610100900460ff161580801561082c5750600754600160ff909116105b806108465750303b158015610846575060075460ff166001145b6108a95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610445565b6007805460ff1916600117905580156108cc576007805461ff0019166101001790555b6001600160a01b038716158015906108e357508415155b80156108ee57508215155b61093a5760405162461bcd60e51b815260206004820152601e60248201527f4368696c6445524332303a204241445f494e495449414c495a4154494f4e00006044820152606401610445565b606d805460ff8416600160a01b026001600160a81b03199091166001600160a01b038a1617179055606c80546001600160a01b03191633179055604080516020601f88018190048102820181019092528681526109e591889088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061109992505050565b610a3d86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152603160f81b602082015291506110ca9050565b8015610a83576007805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6000610a96611136565b905090565b6001600160a01b038316610afd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610445565b6001600160a01b038216610b5e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610445565b6001600160a01b038381166000818152603b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60008151600003610bd357506000919050565b506020015190565b6000806001610bf1610bec88611192565b61120f565b6040805160008152602081018083529290925260ff861690820152606081018790526080810186905260a0016020604051602081039080840390855afa158015610c3f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c965760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610445565b866001600160a01b0316816001600160a01b03161491505095945050505050565b6000610cc384846107e1565b90506000198114610d2b5781811015610d1e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610445565b610d2b8484848403610a9b565b50505050565b6001600160a01b038316610d955760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610445565b6001600160a01b038216610df75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610445565b6001600160a01b0383166000908152603a602052604090205481811015610e6f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610445565b6001600160a01b038085166000818152603a6020526040808220868603905592861680825290839020805486019055915160008051602061188e83398151915290610ebd9086815260200190565b60405180910390a3610d2b565b6001600160a01b038216610f205760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610445565b80603c6000828254610f329190611677565b90915550506001600160a01b0382166000818152603a602090815260408083208054860190555184815260008051602061188e833981519152910160405180910390a35b5050565b6001600160a01b038216610fda5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610445565b6001600160a01b0382166000908152603a60205260409020548181101561104e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610445565b6001600160a01b0383166000818152603a602090815260408083208686039055603c805487900390555185815291929160008051602061188e8339815191529101610bb3565b505050565b600754610100900460ff166110c05760405162461bcd60e51b8152600401610445906116db565b610f76828261125d565b815160208084019190912082519183019190912060038290556004819055466001557f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61111881848461129d565b600055600280546001600160a01b0319163017905560055550505050565b600030330361118c57600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b0316915061118f9050565b50335b90565b600060405180608001604052806043815260200161184b60439139805160209182012083518483015160408087015180519086012090516111f2950193845260208401929092526001600160a01b03166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600061037a61121c6112e6565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600754610100900460ff166112845760405162461bcd60e51b8152600401610445906116db565b603d611290838261178a565b50603e611094828261178a565b6040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6002546000906001600160a01b031630148015611304575060015446145b15611310575060005490565b610a9660055460035460045461129d565b60005b8381101561133c578181015183820152602001611324565b50506000910152565b6000815180845261135d816020860160208601611321565b601f01601f19169290920160200192915050565b6020815260006113846020830184611345565b9392505050565b80356001600160a01b03811681146113a257600080fd5b919050565b600080604083850312156113ba57600080fd5b6113c38361138b565b946020939093013593505050565b60008083601f8401126113e357600080fd5b50813567ffffffffffffffff8111156113fb57600080fd5b60208301915083602082850101111561141357600080fd5b9250929050565b803560ff811681146113a257600080fd5b60008060008060008060a0878903121561144457600080fd5b61144d8761138b565b9550602087013567ffffffffffffffff81111561146957600080fd5b61147589828a016113d1565b90965094505060408701359250606087013591506114956080880161141a565b90509295509295509295565b6000806000606084860312156114b657600080fd5b6114bf8461138b565b92506114cd6020850161138b565b9150604084013590509250925092565b6000602082840312156114ef57600080fd5b6113848261138b565b6000806040838503121561150b57600080fd5b6115148361138b565b91506115226020840161138b565b90509250929050565b6000806000806000806080878903121561154457600080fd5b61154d8761138b565b9550602087013567ffffffffffffffff8082111561156a57600080fd5b6115768a838b016113d1565b9097509550604089013591508082111561158f57600080fd5b5061159c89828a016113d1565b909450925061149590506060880161141a565b600181811c908216806115c357607f821691505b6020821081036115e357634e487b7160e01b600052602260045260246000fd5b50919050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251611621818460208701611321565b9190910192915050565b6001600160a01b0385811682528416602082015260606040820181905281018290526000828460808401376000608084840101526080601f19601f850116830101905095945050505050565b8082018082111561037a57634e487b7160e01b600052601160045260246000fd5b60208082526023908201527f4368696c6445524332303a204f6e6c79207072656469636174652063616e2063604082015262185b1b60ea1b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561109457600081815260208120601f850160051c810160208610156117635750805b601f850160051c820191505b818110156117825782815560010161176f565b505050505050565b815167ffffffffffffffff8111156117a4576117a4611726565b6117b8816117b284546115af565b8461173c565b602080601f8311600181146117ed57600084156117d55750858301515b600019600386901b1c1916600185901b178555611782565b600085815260208120601f198616915b8281101561181c578886015182559484019460019091019084016117fd565b508582101561183a5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122006e7874e62afcc37d931c31b2d4bea5f12ba721af845c8552d4733d66d6dcbb064736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101165760003560e01c806340c10f19116100a2578063a457c2d711610071578063a457c2d71461026b578063a9059cbb1461027e578063dd62ed3e14610291578063e6198705146102a4578063f6d2ee86146102b557600080fd5b806340c10f191461021457806370a082311461022757806395d89b41146102505780639dc29fac1461025857600080fd5b80631f2d0065116100e95780631f2d00651461018157806323b872dd146101a65780632d0335ab146101b9578063313ce567146101e2578063395093511461020157600080fd5b806306fdde031461011b578063095ea7b3146101395780630c53c51c1461015c57806318160ddd1461016f575b600080fd5b6101236102ca565b6040516101309190611371565b60405180910390f35b61014c6101473660046113a7565b61035c565b6040519015158152602001610130565b61012361016a36600461142b565b610380565b603c545b604051908152602001610130565b606d546001600160a01b03165b6040516001600160a01b039091168152602001610130565b61014c6101b43660046114a1565b610663565b6101736101c73660046114dd565b6001600160a01b031660009081526006602052604090205490565b606d54600160a01b900460ff1660405160ff9091168152602001610130565b61014c61020f3660046113a7565b610691565b61014c6102223660046113a7565b6106bd565b6101736102353660046114dd565b6001600160a01b03166000908152603a602052604090205490565b6101236106fd565b61014c6102663660046113a7565b61070c565b61014c6102793660046113a7565b610743565b61014c61028c3660046113a7565b6107c9565b61017361029f3660046114f8565b6107e1565b606c546001600160a01b031661018e565b6102c86102c336600461152b565b61080c565b005b6060603d80546102d9906115af565b80601f0160208091040260200160405190810160405280929190818152602001828054610305906115af565b80156103525780601f1061032757610100808354040283529160200191610352565b820191906000526020600020905b81548152906001019060200180831161033557829003601f168201915b5050505050905090565b600080610367610a8c565b9050610374818585610a9b565b60019150505b92915050565b606060006103c387878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610bc092505050565b90506001600160e01b031960003581169082160361044e5760405162461bcd60e51b815260206004820152603d60248201527f66756e6374696f6e5369676e61747572652063616e206e6f74206265206f662060448201527f657865637574654d6574615472616e73616374696f6e206d6574686f6400000060648201526084015b60405180910390fd5b604080516060810182526001600160a01b038a16600081815260066020908152848220548452808401929092528351601f8b0183900483028101830185528a815290938301918b908b9081908401838280828437600092019190915250505091525090506104bf8982888888610bdb565b6105155760405162461bcd60e51b815260206004820152602160248201527f5369676e657220616e64207369676e617475726520646f206e6f74206d6174636044820152600d60fb1b6064820152608401610445565b600660008a6001600160a01b03166001600160a01b031681526020019081526020016000206000815460010191905081905550600080306001600160a01b03168a8a8d60405160200161056a939291906115e9565b60408051601f19818403018152908290526105849161160f565b6000604051808303816000865af19150503d80600081146105c1576040519150601f19603f3d011682016040523d82523d6000602084013e6105c6565b606091505b5091509150816106185760405162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c000000006044820152606401610445565b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b8b338c8c60405161064d949392919061162b565b60405180910390a19a9950505050505050505050565b60008061066e610a8c565b905061067b858285610cb7565b610686858585610d31565b506001949350505050565b60008061069c610a8c565b90506103748185856106ae85896107e1565b6106b89190611677565b610a9b565b606c546000906001600160a01b031633146106ea5760405162461bcd60e51b815260040161044590611698565b6106f48383610eca565b50600192915050565b6060603e80546102d9906115af565b606c546000906001600160a01b031633146107395760405162461bcd60e51b815260040161044590611698565b6106f48383610f7a565b60008061074e610a8c565b9050600061075c82866107e1565b9050838110156107bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610445565b6106868286868403610a9b565b6000806107d4610a8c565b9050610374818585610d31565b6001600160a01b039182166000908152603b6020908152604080832093909416825291909152205490565b600754610100900460ff161580801561082c5750600754600160ff909116105b806108465750303b158015610846575060075460ff166001145b6108a95760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610445565b6007805460ff1916600117905580156108cc576007805461ff0019166101001790555b6001600160a01b038716158015906108e357508415155b80156108ee57508215155b61093a5760405162461bcd60e51b815260206004820152601e60248201527f4368696c6445524332303a204241445f494e495449414c495a4154494f4e00006044820152606401610445565b606d805460ff8416600160a01b026001600160a81b03199091166001600160a01b038a1617179055606c80546001600160a01b03191633179055604080516020601f88018190048102820181019092528681526109e591889088908190840183828082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061109992505050565b610a3d86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152603160f81b602082015291506110ca9050565b8015610a83576007805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6000610a96611136565b905090565b6001600160a01b038316610afd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610445565b6001600160a01b038216610b5e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610445565b6001600160a01b038381166000818152603b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60008151600003610bd357506000919050565b506020015190565b6000806001610bf1610bec88611192565b61120f565b6040805160008152602081018083529290925260ff861690820152606081018790526080810186905260a0016020604051602081039080840390855afa158015610c3f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c965760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610445565b866001600160a01b0316816001600160a01b03161491505095945050505050565b6000610cc384846107e1565b90506000198114610d2b5781811015610d1e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610445565b610d2b8484848403610a9b565b50505050565b6001600160a01b038316610d955760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610445565b6001600160a01b038216610df75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610445565b6001600160a01b0383166000908152603a602052604090205481811015610e6f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610445565b6001600160a01b038085166000818152603a6020526040808220868603905592861680825290839020805486019055915160008051602061188e83398151915290610ebd9086815260200190565b60405180910390a3610d2b565b6001600160a01b038216610f205760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610445565b80603c6000828254610f329190611677565b90915550506001600160a01b0382166000818152603a602090815260408083208054860190555184815260008051602061188e833981519152910160405180910390a35b5050565b6001600160a01b038216610fda5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610445565b6001600160a01b0382166000908152603a60205260409020548181101561104e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610445565b6001600160a01b0383166000818152603a602090815260408083208686039055603c805487900390555185815291929160008051602061188e8339815191529101610bb3565b505050565b600754610100900460ff166110c05760405162461bcd60e51b8152600401610445906116db565b610f76828261125d565b815160208084019190912082519183019190912060038290556004819055466001557f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61111881848461129d565b600055600280546001600160a01b0319163017905560055550505050565b600030330361118c57600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b0316915061118f9050565b50335b90565b600060405180608001604052806043815260200161184b60439139805160209182012083518483015160408087015180519086012090516111f2950193845260208401929092526001600160a01b03166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600061037a61121c6112e6565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600754610100900460ff166112845760405162461bcd60e51b8152600401610445906116db565b603d611290838261178a565b50603e611094828261178a565b6040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6002546000906001600160a01b031630148015611304575060015446145b15611310575060005490565b610a9660055460035460045461129d565b60005b8381101561133c578181015183820152602001611324565b50506000910152565b6000815180845261135d816020860160208601611321565b601f01601f19169290920160200192915050565b6020815260006113846020830184611345565b9392505050565b80356001600160a01b03811681146113a257600080fd5b919050565b600080604083850312156113ba57600080fd5b6113c38361138b565b946020939093013593505050565b60008083601f8401126113e357600080fd5b50813567ffffffffffffffff8111156113fb57600080fd5b60208301915083602082850101111561141357600080fd5b9250929050565b803560ff811681146113a257600080fd5b60008060008060008060a0878903121561144457600080fd5b61144d8761138b565b9550602087013567ffffffffffffffff81111561146957600080fd5b61147589828a016113d1565b90965094505060408701359250606087013591506114956080880161141a565b90509295509295509295565b6000806000606084860312156114b657600080fd5b6114bf8461138b565b92506114cd6020850161138b565b9150604084013590509250925092565b6000602082840312156114ef57600080fd5b6113848261138b565b6000806040838503121561150b57600080fd5b6115148361138b565b91506115226020840161138b565b90509250929050565b6000806000806000806080878903121561154457600080fd5b61154d8761138b565b9550602087013567ffffffffffffffff8082111561156a57600080fd5b6115768a838b016113d1565b9097509550604089013591508082111561158f57600080fd5b5061159c89828a016113d1565b909450925061149590506060880161141a565b600181811c908216806115c357607f821691505b6020821081036115e357634e487b7160e01b600052602260045260246000fd5b50919050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251611621818460208701611321565b9190910192915050565b6001600160a01b0385811682528416602082015260606040820181905281018290526000828460808401376000608084840101526080601f19601f850116830101905095945050505050565b8082018082111561037a57634e487b7160e01b600052601160045260246000fd5b60208082526023908201527f4368696c6445524332303a204f6e6c79207072656469636174652063616e2063604082015262185b1b60ea1b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b601f82111561109457600081815260208120601f850160051c810160208610156117635750805b601f850160051c820191505b818110156117825782815560010161176f565b505050505050565b815167ffffffffffffffff8111156117a4576117a4611726565b6117b8816117b284546115af565b8461173c565b602080601f8311600181146117ed57600084156117d55750858301515b600019600386901b1c1916600185901b178555611782565b600085815260208120601f198616915b8281101561181c578886015182559484019460019091019084016117fd565b508582101561183a5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122006e7874e62afcc37d931c31b2d4bea5f12ba721af845c8552d4733d66d6dcbb064736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" var ChildERC20PredicateArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"ChildERC20Predicate\",\n \"sourceName\": \"contracts/child/ChildERC20Predicate.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"only\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"Unauthorized\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"L2ERC20Deposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"L2ERC20Withdraw\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"L2TokenMapped\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEPOSIT_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAP_TOKEN_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TOKEN_CONTRACT\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"SYSTEM\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WITHDRAW_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"childTokenTemplate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newL2StateSender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newStateReceiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newRootERC20Predicate\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newChildTokenTemplate\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newNativeTokenRootAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"l2StateSender\",\n \"outputs\": [\n {\n \"internalType\": \"contract IStateSender\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"onStateReceive\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"rootERC20Predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"rootTokenToChildToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"stateReceiver\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IChildERC20\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IChildERC20\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"withdrawTo\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50611490806100206000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806397e5230d116100a2578063d41f177111610071578063d41f17711461023d578063e0563ab114610264578063eeb499451461026d578063f3fef3a314610280578063f64512551461029357600080fd5b806397e5230d146101e6578063b1768065146101f0578063b68ad1e414610217578063c3b35a7e1461022a57600080fd5b80633b878c22116100e95780633b878c221461017c57806351351d531461018557806371cf93b7146101935780637efab4f5146101a6578063947287cf146101cf57600080fd5b806305dc2e8f1461011b5780631459457a1461014b5780631bc114ba14610160578063284017f514610173575b600080fd5b60345461012e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61015e610159366004610f98565b6102ba565b005b60335461012e906001600160a01b031681565b61012e61202081565b61012e61101081565b61012e6002600160a01b0381565b60355461012e906001600160a01b031681565b61012e6101b4366004611009565b6037602052600090815260409020546001600160a01b031681565b6101d861520881565b604051908152602001610142565b6101d8620249f081565b6101d87f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b60365461012e906001600160a01b031681565b61015e61023836600461102d565b61055a565b6101d87f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b61012e61203081565b61015e61027b36600461106e565b61056a565b61015e61028e3660046110f7565b61073e565b6101d87f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b336002600160a01b03146103035760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b60448201526064015b60405180910390fd5b600054610100900460ff16158080156103235750600054600160ff909116105b8061033d5750303b15801561033d575060005460ff166001145b6103a05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102fa565b6000805460ff1916600117905580156103c3576000805461ff0019166101001790555b6001600160a01b038616158015906103e357506001600160a01b03851615155b80156103f757506001600160a01b03841615155b801561040b57506001600160a01b03831615155b6104675760405162461bcd60e51b815260206004820152602760248201527f4368696c6445524332305072656469636174653a204241445f494e495449414c60448201526624ad20aa24a7a760c91b60648201526084016102fa565b603380546001600160a01b03199081166001600160a01b03898116919091179092556034805482168884161790556035805482168784161790556036805490911685831617905582161561050c576001600160a01b03821660008181526037602052604080822080546001600160a01b03191661101090811790915590519092917f46bd56f98e1b14fd35691959270a6e1edf7cb8fcd489e0f9dda89e46c0d1ff0d91a35b8015610552576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b61056583838361074d565b505050565b6034546001600160a01b031633146105d55760405162461bcd60e51b815260206004820152602860248201527f4368696c6445524332305072656469636174653a204f4e4c595f53544154455f6044820152672922a1a2a4ab22a960c11b60648201526084016102fa565b6035546001600160a01b038481169116146106435760405162461bcd60e51b815260206004820152602860248201527f4368696c6445524332305072656469636174653a204f4e4c595f524f4f545f50604482015267524544494341544560c01b60648201526084016102fa565b7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821610672602060008486611123565b61067b9161114d565b0361069a576106956106908260208186611123565b610ac3565b610738565b7f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad6106c9602060008486611123565b6106d29161114d565b036106e1576106958282610d6e565b60405162461bcd60e51b815260206004820152602660248201527f4368696c6445524332305072656469636174653a20494e56414c49445f5349476044820152654e415455524560d01b60648201526084016102fa565b50505050565b61074982338361074d565b5050565b826001600160a01b03163b6000036107b15760405162461bcd60e51b815260206004820152602160248201527f4368696c6445524332305072656469636174653a204e4f545f434f4e545241436044820152601560fa1b60648201526084016102fa565b6000836001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610815919061116b565b6001600160a01b038181166000908152603760205260409020549192508581169116146108545760405162461bcd60e51b81526004016102fa90611188565b6001600160a01b03811661086a5761086a6111cb565b306001600160a01b0316846001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d6919061116b565b6001600160a01b0316146108ec576108ec6111cb565b604051632770a7eb60e21b81526001600160a01b03851690639dc29fac9061091a90339086906004016111e1565b6020604051808303816000875af1158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d91906111fa565b6109a95760405162461bcd60e51b815260206004820181905260248201527f4368696c6445524332305072656469636174653a204255524e5f4641494c454460448201526064016102fa565b603354603554604080517f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286960208201526001600160a01b0385811682840152336060830152878116608083015260a08083018890528351808403909101815260c08301938490526316f1983160e01b909352938416936316f1983193610a349391169160c401611262565b600060405180830381600087803b158015610a4e57600080fd5b505af1158015610a62573d6000803e3d6000fd5b50505050826001600160a01b0316846001600160a01b0316826001600160a01b03167fa0923f060a16fc784558d43de424ffde7b01643de5e5d335851b9df94c76bb273386604051610ab59291906111e1565b60405180910390a450505050565b6000808080610ad48587018761128e565b6001600160a01b0380851660009081526037602052604090205494985092965090945092501680610b175760405162461bcd60e51b81526004016102fa90611188565b806001600160a01b03163b600003610b3157610b316111cb565b6000816001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b95919061116b565b9050856001600160a01b0316816001600160a01b031614610bb857610bb86111cb565b6001600160a01b038116610bce57610bce6111cb565b306001600160a01b0316826001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3a919061116b565b6001600160a01b031614610c5057610c506111cb565b6040516340c10f1960e01b81526001600160a01b038316906340c10f1990610c7e90879087906004016111e1565b6020604051808303816000875af1158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc191906111fa565b610d0d5760405162461bcd60e51b815260206004820181905260248201527f4368696c6445524332305072656469636174653a204d494e545f4641494c454460448201526064016102fa565b836001600160a01b0316826001600160a01b0316876001600160a01b03167fdf34f3a3ed8bedc14a4b284ebaee5374d55b64bac6a84c270dabe8fd6b4cdafd8887604051610d5c9291906111e1565b60405180910390a45050505050505050565b6000808080610d7f85870187611382565b92975090955093509150506001600160a01b038416610da057610da06111cb565b6001600160a01b038481166000908152603760205260409020541615610dc857610dc86111cb565b6036546040516bffffffffffffffffffffffff19606087901b166020820152600091610e18916001600160a01b039091169060340160405160208183030381529060405280519060200120610ee3565b6001600160a01b038681166000908152603760205260409081902080546001600160a01b031916928416928317905551637b69774360e11b81529192509063f6d2ee8690610e7090889088908890889060040161140f565b600060405180830381600087803b158015610e8a57600080fd5b505af1158015610e9e573d6000803e3d6000fd5b50506040516001600160a01b038085169350881691507f46bd56f98e1b14fd35691959270a6e1edf7cb8fcd489e0f9dda89e46c0d1ff0d90600090a350505050505050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b038116610f7a5760405162461bcd60e51b8152602060048201526017602482015276115490cc4c4d8dce8818dc99585d194c8819985a5b1959604a1b60448201526064016102fa565b92915050565b6001600160a01b0381168114610f9557600080fd5b50565b600080600080600060a08688031215610fb057600080fd5b8535610fbb81610f80565b94506020860135610fcb81610f80565b93506040860135610fdb81610f80565b92506060860135610feb81610f80565b91506080860135610ffb81610f80565b809150509295509295909350565b60006020828403121561101b57600080fd5b813561102681610f80565b9392505050565b60008060006060848603121561104257600080fd5b833561104d81610f80565b9250602084013561105d81610f80565b929592945050506040919091013590565b6000806000806060858703121561108457600080fd5b84359350602085013561109681610f80565b9250604085013567ffffffffffffffff808211156110b357600080fd5b818701915087601f8301126110c757600080fd5b8135818111156110d657600080fd5b8860208285010111156110e857600080fd5b95989497505060200194505050565b6000806040838503121561110a57600080fd5b823561111581610f80565b946020939093013593505050565b6000808585111561113357600080fd5b8386111561114057600080fd5b5050820193919092039150565b80356020831015610f7a57600019602084900360031b1b1692915050565b60006020828403121561117d57600080fd5b815161102681610f80565b60208082526023908201527f4368696c6445524332305072656469636174653a20554e4d41505045445f544f60408201526225a2a760e91b606082015260800190565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03929092168252602082015260400190565b60006020828403121561120c57600080fd5b8151801515811461102657600080fd5b6000815180845260005b8181101561124257602081850181015186830182015201611226565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190526000906112869083018461121c565b949350505050565b600080600080608085870312156112a457600080fd5b84356112af81610f80565b935060208501356112bf81610f80565b925060408501356112cf81610f80565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261130657600080fd5b813567ffffffffffffffff80821115611321576113216112df565b604051601f8301601f19908116603f01168101908282118183101715611349576113496112df565b8160405283815286602085880101111561136257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561139a57600080fd5b8535945060208601356113ac81610f80565b9350604086013567ffffffffffffffff808211156113c957600080fd5b6113d589838a016112f5565b945060608801359150808211156113eb57600080fd5b506113f8888289016112f5565b925050608086013560ff81168114610ffb57600080fd5b6001600160a01b03851681526080602082018190526000906114339083018661121c565b8281036040840152611445818661121c565b91505060ff831660608301529594505050505056fea2646970667358221220826f58ea208b8a100d3343999582bb4813e24a5dd686101ad5da8213058bdfaf64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101165760003560e01c806397e5230d116100a2578063d41f177111610071578063d41f17711461023d578063e0563ab114610264578063eeb499451461026d578063f3fef3a314610280578063f64512551461029357600080fd5b806397e5230d146101e6578063b1768065146101f0578063b68ad1e414610217578063c3b35a7e1461022a57600080fd5b80633b878c22116100e95780633b878c221461017c57806351351d531461018557806371cf93b7146101935780637efab4f5146101a6578063947287cf146101cf57600080fd5b806305dc2e8f1461011b5780631459457a1461014b5780631bc114ba14610160578063284017f514610173575b600080fd5b60345461012e906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61015e610159366004610f98565b6102ba565b005b60335461012e906001600160a01b031681565b61012e61202081565b61012e61101081565b61012e6002600160a01b0381565b60355461012e906001600160a01b031681565b61012e6101b4366004611009565b6037602052600090815260409020546001600160a01b031681565b6101d861520881565b604051908152602001610142565b6101d8620249f081565b6101d87f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b60365461012e906001600160a01b031681565b61015e61023836600461102d565b61055a565b6101d87f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b61012e61203081565b61015e61027b36600461106e565b61056a565b61015e61028e3660046110f7565b61073e565b6101d87f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b336002600160a01b03146103035760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b60448201526064015b60405180910390fd5b600054610100900460ff16158080156103235750600054600160ff909116105b8061033d5750303b15801561033d575060005460ff166001145b6103a05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102fa565b6000805460ff1916600117905580156103c3576000805461ff0019166101001790555b6001600160a01b038616158015906103e357506001600160a01b03851615155b80156103f757506001600160a01b03841615155b801561040b57506001600160a01b03831615155b6104675760405162461bcd60e51b815260206004820152602760248201527f4368696c6445524332305072656469636174653a204241445f494e495449414c60448201526624ad20aa24a7a760c91b60648201526084016102fa565b603380546001600160a01b03199081166001600160a01b03898116919091179092556034805482168884161790556035805482168784161790556036805490911685831617905582161561050c576001600160a01b03821660008181526037602052604080822080546001600160a01b03191661101090811790915590519092917f46bd56f98e1b14fd35691959270a6e1edf7cb8fcd489e0f9dda89e46c0d1ff0d91a35b8015610552576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b61056583838361074d565b505050565b6034546001600160a01b031633146105d55760405162461bcd60e51b815260206004820152602860248201527f4368696c6445524332305072656469636174653a204f4e4c595f53544154455f6044820152672922a1a2a4ab22a960c11b60648201526084016102fa565b6035546001600160a01b038481169116146106435760405162461bcd60e51b815260206004820152602860248201527f4368696c6445524332305072656469636174653a204f4e4c595f524f4f545f50604482015267524544494341544560c01b60648201526084016102fa565b7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f821610672602060008486611123565b61067b9161114d565b0361069a576106956106908260208186611123565b610ac3565b610738565b7f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad6106c9602060008486611123565b6106d29161114d565b036106e1576106958282610d6e565b60405162461bcd60e51b815260206004820152602660248201527f4368696c6445524332305072656469636174653a20494e56414c49445f5349476044820152654e415455524560d01b60648201526084016102fa565b50505050565b61074982338361074d565b5050565b826001600160a01b03163b6000036107b15760405162461bcd60e51b815260206004820152602160248201527f4368696c6445524332305072656469636174653a204e4f545f434f4e545241436044820152601560fa1b60648201526084016102fa565b6000836001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610815919061116b565b6001600160a01b038181166000908152603760205260409020549192508581169116146108545760405162461bcd60e51b81526004016102fa90611188565b6001600160a01b03811661086a5761086a6111cb565b306001600160a01b0316846001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d6919061116b565b6001600160a01b0316146108ec576108ec6111cb565b604051632770a7eb60e21b81526001600160a01b03851690639dc29fac9061091a90339086906004016111e1565b6020604051808303816000875af1158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d91906111fa565b6109a95760405162461bcd60e51b815260206004820181905260248201527f4368696c6445524332305072656469636174653a204255524e5f4641494c454460448201526064016102fa565b603354603554604080517f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286960208201526001600160a01b0385811682840152336060830152878116608083015260a08083018890528351808403909101815260c08301938490526316f1983160e01b909352938416936316f1983193610a349391169160c401611262565b600060405180830381600087803b158015610a4e57600080fd5b505af1158015610a62573d6000803e3d6000fd5b50505050826001600160a01b0316846001600160a01b0316826001600160a01b03167fa0923f060a16fc784558d43de424ffde7b01643de5e5d335851b9df94c76bb273386604051610ab59291906111e1565b60405180910390a450505050565b6000808080610ad48587018761128e565b6001600160a01b0380851660009081526037602052604090205494985092965090945092501680610b175760405162461bcd60e51b81526004016102fa90611188565b806001600160a01b03163b600003610b3157610b316111cb565b6000816001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b95919061116b565b9050856001600160a01b0316816001600160a01b031614610bb857610bb86111cb565b6001600160a01b038116610bce57610bce6111cb565b306001600160a01b0316826001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3a919061116b565b6001600160a01b031614610c5057610c506111cb565b6040516340c10f1960e01b81526001600160a01b038316906340c10f1990610c7e90879087906004016111e1565b6020604051808303816000875af1158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc191906111fa565b610d0d5760405162461bcd60e51b815260206004820181905260248201527f4368696c6445524332305072656469636174653a204d494e545f4641494c454460448201526064016102fa565b836001600160a01b0316826001600160a01b0316876001600160a01b03167fdf34f3a3ed8bedc14a4b284ebaee5374d55b64bac6a84c270dabe8fd6b4cdafd8887604051610d5c9291906111e1565b60405180910390a45050505050505050565b6000808080610d7f85870187611382565b92975090955093509150506001600160a01b038416610da057610da06111cb565b6001600160a01b038481166000908152603760205260409020541615610dc857610dc86111cb565b6036546040516bffffffffffffffffffffffff19606087901b166020820152600091610e18916001600160a01b039091169060340160405160208183030381529060405280519060200120610ee3565b6001600160a01b038681166000908152603760205260409081902080546001600160a01b031916928416928317905551637b69774360e11b81529192509063f6d2ee8690610e7090889088908890889060040161140f565b600060405180830381600087803b158015610e8a57600080fd5b505af1158015610e9e573d6000803e3d6000fd5b50506040516001600160a01b038085169350881691507f46bd56f98e1b14fd35691959270a6e1edf7cb8fcd489e0f9dda89e46c0d1ff0d90600090a350505050505050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b038116610f7a5760405162461bcd60e51b8152602060048201526017602482015276115490cc4c4d8dce8818dc99585d194c8819985a5b1959604a1b60448201526064016102fa565b92915050565b6001600160a01b0381168114610f9557600080fd5b50565b600080600080600060a08688031215610fb057600080fd5b8535610fbb81610f80565b94506020860135610fcb81610f80565b93506040860135610fdb81610f80565b92506060860135610feb81610f80565b91506080860135610ffb81610f80565b809150509295509295909350565b60006020828403121561101b57600080fd5b813561102681610f80565b9392505050565b60008060006060848603121561104257600080fd5b833561104d81610f80565b9250602084013561105d81610f80565b929592945050506040919091013590565b6000806000806060858703121561108457600080fd5b84359350602085013561109681610f80565b9250604085013567ffffffffffffffff808211156110b357600080fd5b818701915087601f8301126110c757600080fd5b8135818111156110d657600080fd5b8860208285010111156110e857600080fd5b95989497505060200194505050565b6000806040838503121561110a57600080fd5b823561111581610f80565b946020939093013593505050565b6000808585111561113357600080fd5b8386111561114057600080fd5b5050820193919092039150565b80356020831015610f7a57600019602084900360031b1b1692915050565b60006020828403121561117d57600080fd5b815161102681610f80565b60208082526023908201527f4368696c6445524332305072656469636174653a20554e4d41505045445f544f60408201526225a2a760e91b606082015260800190565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03929092168252602082015260400190565b60006020828403121561120c57600080fd5b8151801515811461102657600080fd5b6000815180845260005b8181101561124257602081850181015186830182015201611226565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03831681526040602082018190526000906112869083018461121c565b949350505050565b600080600080608085870312156112a457600080fd5b84356112af81610f80565b935060208501356112bf81610f80565b925060408501356112cf81610f80565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261130657600080fd5b813567ffffffffffffffff80821115611321576113216112df565b604051601f8301601f19908116603f01168101908282118183101715611349576113496112df565b8160405283815286602085880101111561136257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561139a57600080fd5b8535945060208601356113ac81610f80565b9350604086013567ffffffffffffffff808211156113c957600080fd5b6113d589838a016112f5565b945060608801359150808211156113eb57600080fd5b506113f8888289016112f5565b925050608086013560ff81168114610ffb57600080fd5b6001600160a01b03851681526080602082018190526000906114339083018661121c565b8281036040840152611445818661121c565b91505060ff831660608301529594505050505056fea2646970667358221220826f58ea208b8a100d3343999582bb4813e24a5dd686101ad5da8213058bdfaf64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" -var ChildERC721Artifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"ChildERC721\",\n \"sourceName\": \"contracts/child/ChildERC721.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"approved\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"ApprovalForAll\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"relayerAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"functionSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"MetaTransactionExecuted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"burnBatch\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"functionSignature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sigR\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sigS\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"sigV\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"executeMetaTransaction\",\n \"outputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getApproved\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getNonce\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"nonce\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"rootToken_\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"symbol_\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isApprovedForAll\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"accounts\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"mintBatch\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ownerOf\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"rootToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"safeTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"safeTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setApprovalForAll\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"tokenURI\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b5061243b806100206000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a22cb4651161007c578063a22cb465146102bf578063b2dc5dc3146102d2578063b88d4fde146102e5578063c87b56dd146102f8578063e61987051461030b578063e985e9c51461031c57600080fd5b806370a082311461026b5780637c88e3d91461027e578063906571471461029157806395d89b41146102a45780639dc29fac146102ac57600080fd5b80631f2d00651161010a5780631f2d0065146101d757806323b872dd146101e85780632d0335ab146101fb57806340c10f191461023257806342842e0e146102455780636352211e1461025857600080fd5b806301ffc9a71461014757806306fdde031461016f578063081812fc14610184578063095ea7b3146101af5780630c53c51c146101c4575b600080fd5b61015a610155366004611a47565b61032f565b60405190151581526020015b60405180910390f35b610177610381565b6040516101669190611ab4565b610197610192366004611ac7565b610413565b6040516001600160a01b039091168152602001610166565b6101c26101bd366004611afc565b61043a565b005b6101776101d2366004611b6e565b610566565b609f546001600160a01b0316610197565b6101c26101f6366004611bed565b610844565b610224610209366004611c29565b6001600160a01b031660009081526006602052604090205490565b604051908152602001610166565b61015a610240366004611afc565b61087c565b6101c2610253366004611bed565b6108bc565b610197610266366004611ac7565b6108d7565b610224610279366004611c29565b61090c565b61015a61028c366004611c88565b610992565b6101c261029f366004611cf3565b610a79565b610177610ce7565b61015a6102ba366004611afc565b610cf6565b6101c26102cd366004611d73565b610d65565b61015a6102e0366004611daf565b610d7b565b6101c26102f3366004611e17565b610e28565b610177610306366004611ac7565b610e67565b609e546001600160a01b0316610197565b61015a61032a366004611ef2565b610edb565b60006001600160e01b031982166380ac58cd60e01b148061036057506001600160e01b03198216635b5e139f60e01b145b8061037b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060606c805461039090611f25565b80601f01602080910402602001604051908101604052809291908181526020018280546103bc90611f25565b80156104095780601f106103de57610100808354040283529160200191610409565b820191906000526020600020905b8154815290600101906020018083116103ec57829003601f168201915b5050505050905090565b600061041e82610f09565b506000908152607060205260409020546001600160a01b031690565b6000610445826108d7565b9050806001600160a01b0316836001600160a01b0316036104b75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b03166104c9610f31565b6001600160a01b031614806104e557506104e58161032a610f31565b6105575760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016104ae565b6105618383610f40565b505050565b606060006105a987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fae92505050565b90506001600160e01b031960003581169082160361062f5760405162461bcd60e51b815260206004820152603d60248201527f66756e6374696f6e5369676e61747572652063616e206e6f74206265206f662060448201527f657865637574654d6574615472616e73616374696f6e206d6574686f6400000060648201526084016104ae565b604080516060810182526001600160a01b038a16600081815260066020908152848220548452808401929092528351601f8b0183900483028101830185528a815290938301918b908b9081908401838280828437600092019190915250505091525090506106a08982888888610fc9565b6106f65760405162461bcd60e51b815260206004820152602160248201527f5369676e657220616e64207369676e617475726520646f206e6f74206d6174636044820152600d60fb1b60648201526084016104ae565b600660008a6001600160a01b03166001600160a01b031681526020019081526020016000206000815460010191905081905550600080306001600160a01b03168a8a8d60405160200161074b93929190611f5f565b60408051601f198184030181529082905261076591611f85565b6000604051808303816000865af19150503d80600081146107a2576040519150601f19603f3d011682016040523d82523d6000602084013e6107a7565b606091505b5091509150816107f95760405162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c0000000060448201526064016104ae565b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b8b338c8c60405161082e9493929190611fa1565b60405180910390a19a9950505050505050505050565b61085561084f610f31565b826110a5565b6108715760405162461bcd60e51b81526004016104ae90611fed565b610561838383611103565b609e546000906001600160a01b031633146108a95760405162461bcd60e51b81526004016104ae9061203a565b6108b38383611255565b50600192915050565b61056183838360405180602001604052806000815250610e28565b6000818152606e60205260408120546001600160a01b03168061037b5760405162461bcd60e51b81526004016104ae9061207e565b60006001600160a01b0382166109765760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016104ae565b506001600160a01b03166000908152606f602052604090205490565b609e546000906001600160a01b031633146109bf5760405162461bcd60e51b81526004016104ae9061203a565b83828114610a0f5760405162461bcd60e51b815260206004820152601f60248201527f4368696c644552433732313a204172726179206c656e206d69736d617463680060448201526064016104ae565b60005b81811015610a6a57610a62878783818110610a2f57610a2f6120b0565b9050602002016020810190610a449190611c29565b868684818110610a5657610a566120b0565b90506020020135611255565b600101610a12565b5060019150505b949350505050565b600754610100900460ff1615808015610a995750600754600160ff909116105b80610ab35750303b158015610ab3575060075460ff166001145b610b165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104ae565b6007805460ff191660011790558015610b39576007805461ff0019166101001790555b6001600160a01b03861615801590610b5057508315155b8015610b5b57508115155b610ba75760405162461bcd60e51b815260206004820152601f60248201527f4368696c644552433732313a2042616420696e697469616c697a6174696f6e0060448201526064016104ae565b609f80546001600160a01b0388166001600160a01b031991821617909155609e805490911633179055604080516020601f8701819004810282018101909252858152610c4191879087908190840183828082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061126f92505050565b610c9985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152603160f81b602082015291506112a09050565b8015610cdf576007805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6060606d805461039090611f25565b609e546000906001600160a01b03163314610d235760405162461bcd60e51b81526004016104ae9061203a565b610d2c826108d7565b6001600160a01b0316836001600160a01b031614610d5c5760405162461bcd60e51b81526004016104ae906120c6565b6108b38261130c565b610d77610d70610f31565b838361138f565b5050565b609e546000906001600160a01b03163314610da85760405162461bcd60e51b81526004016104ae9061203a565b8160005b81811015610e1c576000858583818110610dc857610dc86120b0565b905060200201359050610dda816108d7565b6001600160a01b0316876001600160a01b031614610e0a5760405162461bcd60e51b81526004016104ae906120c6565b610e138161130c565b50600101610dac565b50600195945050505050565b610e39610e33610f31565b836110a5565b610e555760405162461bcd60e51b81526004016104ae90611fed565b610e6184848484611459565b50505050565b6060610e7282610f09565b6000610e8960408051602081019091526000815290565b90506000815111610ea95760405180602001604052806000815250610ed4565b80610eb38461148c565b604051602001610ec49291906120fb565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260716020908152604080832093909416825291909152205460ff1690565b610f128161151e565b610f2e5760405162461bcd60e51b81526004016104ae9061207e565b50565b6000610f3b61153b565b905090565b600081815260706020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610f75826108d7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008151600003610fc157506000919050565b506020015190565b6000806001610fdf610fda88611597565b611614565b6040805160008152602081018083529290925260ff861690820152606081018790526080810186905260a0016020604051602081039080840390855afa15801561102d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166110845760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016104ae565b866001600160a01b0316816001600160a01b03161491505095945050505050565b6000806110b1836108d7565b9050806001600160a01b0316846001600160a01b031614806110d857506110d88185610edb565b80610a715750836001600160a01b03166110f184610413565b6001600160a01b031614949350505050565b826001600160a01b0316611116826108d7565b6001600160a01b03161461113c5760405162461bcd60e51b81526004016104ae9061212a565b6001600160a01b03821661119e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016104ae565b826001600160a01b03166111b1826108d7565b6001600160a01b0316146111d75760405162461bcd60e51b81526004016104ae9061212a565b600081815260706020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652606f8552838620805460001901905590871680865283862080546001019055868652606e90945282852080549092168417909155905184936000805160206123e683398151915291a4505050565b610d77828260405180602001604052806000815250611662565b600754610100900460ff166112965760405162461bcd60e51b81526004016104ae9061216f565b610d778282611695565b815160208084019190912082519183019190912060038290556004819055466001557f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6112ee8184846116d5565b600055600280546001600160a01b0319163017905560055550505050565b6000611317826108d7565b9050611322826108d7565b600083815260706020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552606f84528285208054600019019055878552606e909352818420805490911690555192935084926000805160206123e6833981519152908390a45050565b816001600160a01b0316836001600160a01b0316036113ec5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016104ae565b6001600160a01b03838116600081815260716020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611464848484611103565b6114708484848461171e565b610e615760405162461bcd60e51b81526004016104ae906121ba565b6060600061149983611823565b60010190506000816001600160401b038111156114b8576114b8611e01565b6040519080825280601f01601f1916602001820160405280156114e2576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846114ec57509392505050565b6000908152606e60205260409020546001600160a01b0316151590565b600030330361159157600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031691506115949050565b50335b90565b60006040518060800160405280604381526020016123a360439139805160209182012083518483015160408087015180519086012090516115f7950193845260208401929092526001600160a01b03166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600061037b6116216118fb565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b61166c8383611936565b611679600084848461171e565b6105615760405162461bcd60e51b81526004016104ae906121ba565b600754610100900460ff166116bc5760405162461bcd60e51b81526004016104ae9061216f565b606c6116c88382612252565b50606d6105618282612252565b6040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b60006001600160a01b0384163b1561181b57836001600160a01b031663150b7a02611747610f31565b8786866040518563ffffffff1660e01b81526004016117699493929190612311565b6020604051808303816000875af19250505080156117a4575060408051601f3d908101601f191682019092526117a19181019061234e565b60015b611801573d8080156117d2576040519150601f19603f3d011682016040523d82523d6000602084013e6117d7565b606091505b5080516000036117f95760405162461bcd60e51b81526004016104ae906121ba565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610a71565b506001610a71565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106118625772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061188e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106118ac57662386f26fc10000830492506010015b6305f5e10083106118c4576305f5e100830492506008015b61271083106118d857612710830492506004015b606483106118ea576064830492506002015b600a831061037b5760010192915050565b6002546000906001600160a01b031630148015611919575060015446145b15611925575060005490565b610f3b6005546003546004546116d5565b6001600160a01b03821661198c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016104ae565b6119958161151e565b156119b25760405162461bcd60e51b81526004016104ae9061236b565b6119bb8161151e565b156119d85760405162461bcd60e51b81526004016104ae9061236b565b6001600160a01b0382166000818152606f6020908152604080832080546001019055848352606e90915280822080546001600160a01b0319168417905551839291906000805160206123e6833981519152908290a45050565b6001600160e01b031981168114610f2e57600080fd5b600060208284031215611a5957600080fd5b8135610ed481611a31565b60005b83811015611a7f578181015183820152602001611a67565b50506000910152565b60008151808452611aa0816020860160208601611a64565b601f01601f19169290920160200192915050565b602081526000610ed46020830184611a88565b600060208284031215611ad957600080fd5b5035919050565b80356001600160a01b0381168114611af757600080fd5b919050565b60008060408385031215611b0f57600080fd5b611b1883611ae0565b946020939093013593505050565b60008083601f840112611b3857600080fd5b5081356001600160401b03811115611b4f57600080fd5b602083019150836020828501011115611b6757600080fd5b9250929050565b60008060008060008060a08789031215611b8757600080fd5b611b9087611ae0565b955060208701356001600160401b03811115611bab57600080fd5b611bb789828a01611b26565b9096509450506040870135925060608701359150608087013560ff81168114611bdf57600080fd5b809150509295509295509295565b600080600060608486031215611c0257600080fd5b611c0b84611ae0565b9250611c1960208501611ae0565b9150604084013590509250925092565b600060208284031215611c3b57600080fd5b610ed482611ae0565b60008083601f840112611c5657600080fd5b5081356001600160401b03811115611c6d57600080fd5b6020830191508360208260051b8501011115611b6757600080fd5b60008060008060408587031215611c9e57600080fd5b84356001600160401b0380821115611cb557600080fd5b611cc188838901611c44565b90965094506020870135915080821115611cda57600080fd5b50611ce787828801611c44565b95989497509550505050565b600080600080600060608688031215611d0b57600080fd5b611d1486611ae0565b945060208601356001600160401b0380821115611d3057600080fd5b611d3c89838a01611b26565b90965094506040880135915080821115611d5557600080fd5b50611d6288828901611b26565b969995985093965092949392505050565b60008060408385031215611d8657600080fd5b611d8f83611ae0565b915060208301358015158114611da457600080fd5b809150509250929050565b600080600060408486031215611dc457600080fd5b611dcd84611ae0565b925060208401356001600160401b03811115611de857600080fd5b611df486828701611c44565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611e2d57600080fd5b611e3685611ae0565b9350611e4460208601611ae0565b92506040850135915060608501356001600160401b0380821115611e6757600080fd5b818701915087601f830112611e7b57600080fd5b813581811115611e8d57611e8d611e01565b604051601f8201601f19908116603f01168101908382118183101715611eb557611eb5611e01565b816040528281528a6020848701011115611ece57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611f0557600080fd5b611f0e83611ae0565b9150611f1c60208401611ae0565b90509250929050565b600181811c90821680611f3957607f821691505b602082108103611f5957634e487b7160e01b600052602260045260246000fd5b50919050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251611f97818460208701611a64565b9190910192915050565b6001600160a01b0385811682528416602082015260606040820181905281018290526000828460808401376000608084840101526080601f19601f850116830101905095945050505050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526024908201527f4368696c644552433732313a204f6e6c79207072656469636174652063616e2060408201526318d85b1b60e21b606082015260800190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6020808252818101527f4368696c644552433732313a204f6e6c79206f776e65722063616e206275726e604082015260600190565b6000835161210d818460208801611a64565b835190830190612121818360208801611a64565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b601f82111561056157600081815260208120601f850160051c810160208610156122335750805b601f850160051c820191505b81811015610cdf5782815560010161223f565b81516001600160401b0381111561226b5761226b611e01565b61227f816122798454611f25565b8461220c565b602080601f8311600181146122b4576000841561229c5750858301515b600019600386901b1c1916600185901b178555610cdf565b600085815260208120601f198616915b828110156122e3578886015182559484019460019091019084016122c4565b50858210156123015787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061234490830184611a88565b9695505050505050565b60006020828403121561236057600080fd5b8151610ed481611a31565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060408201526060019056fe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122029b6cbd9d5bf0fad2c675fa799d293745f76f3afee1c153673a2caed98a4a03864736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a22cb4651161007c578063a22cb465146102bf578063b2dc5dc3146102d2578063b88d4fde146102e5578063c87b56dd146102f8578063e61987051461030b578063e985e9c51461031c57600080fd5b806370a082311461026b5780637c88e3d91461027e578063906571471461029157806395d89b41146102a45780639dc29fac146102ac57600080fd5b80631f2d00651161010a5780631f2d0065146101d757806323b872dd146101e85780632d0335ab146101fb57806340c10f191461023257806342842e0e146102455780636352211e1461025857600080fd5b806301ffc9a71461014757806306fdde031461016f578063081812fc14610184578063095ea7b3146101af5780630c53c51c146101c4575b600080fd5b61015a610155366004611a47565b61032f565b60405190151581526020015b60405180910390f35b610177610381565b6040516101669190611ab4565b610197610192366004611ac7565b610413565b6040516001600160a01b039091168152602001610166565b6101c26101bd366004611afc565b61043a565b005b6101776101d2366004611b6e565b610566565b609f546001600160a01b0316610197565b6101c26101f6366004611bed565b610844565b610224610209366004611c29565b6001600160a01b031660009081526006602052604090205490565b604051908152602001610166565b61015a610240366004611afc565b61087c565b6101c2610253366004611bed565b6108bc565b610197610266366004611ac7565b6108d7565b610224610279366004611c29565b61090c565b61015a61028c366004611c88565b610992565b6101c261029f366004611cf3565b610a79565b610177610ce7565b61015a6102ba366004611afc565b610cf6565b6101c26102cd366004611d73565b610d65565b61015a6102e0366004611daf565b610d7b565b6101c26102f3366004611e17565b610e28565b610177610306366004611ac7565b610e67565b609e546001600160a01b0316610197565b61015a61032a366004611ef2565b610edb565b60006001600160e01b031982166380ac58cd60e01b148061036057506001600160e01b03198216635b5e139f60e01b145b8061037b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060606c805461039090611f25565b80601f01602080910402602001604051908101604052809291908181526020018280546103bc90611f25565b80156104095780601f106103de57610100808354040283529160200191610409565b820191906000526020600020905b8154815290600101906020018083116103ec57829003601f168201915b5050505050905090565b600061041e82610f09565b506000908152607060205260409020546001600160a01b031690565b6000610445826108d7565b9050806001600160a01b0316836001600160a01b0316036104b75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b03166104c9610f31565b6001600160a01b031614806104e557506104e58161032a610f31565b6105575760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016104ae565b6105618383610f40565b505050565b606060006105a987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fae92505050565b90506001600160e01b031960003581169082160361062f5760405162461bcd60e51b815260206004820152603d60248201527f66756e6374696f6e5369676e61747572652063616e206e6f74206265206f662060448201527f657865637574654d6574615472616e73616374696f6e206d6574686f6400000060648201526084016104ae565b604080516060810182526001600160a01b038a16600081815260066020908152848220548452808401929092528351601f8b0183900483028101830185528a815290938301918b908b9081908401838280828437600092019190915250505091525090506106a08982888888610fc9565b6106f65760405162461bcd60e51b815260206004820152602160248201527f5369676e657220616e64207369676e617475726520646f206e6f74206d6174636044820152600d60fb1b60648201526084016104ae565b600660008a6001600160a01b03166001600160a01b031681526020019081526020016000206000815460010191905081905550600080306001600160a01b03168a8a8d60405160200161074b93929190611f5f565b60408051601f198184030181529082905261076591611f85565b6000604051808303816000865af19150503d80600081146107a2576040519150601f19603f3d011682016040523d82523d6000602084013e6107a7565b606091505b5091509150816107f95760405162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c0000000060448201526064016104ae565b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b8b338c8c60405161082e9493929190611fa1565b60405180910390a19a9950505050505050505050565b61085561084f610f31565b826110a5565b6108715760405162461bcd60e51b81526004016104ae90611fed565b610561838383611103565b609e546000906001600160a01b031633146108a95760405162461bcd60e51b81526004016104ae9061203a565b6108b38383611255565b50600192915050565b61056183838360405180602001604052806000815250610e28565b6000818152606e60205260408120546001600160a01b03168061037b5760405162461bcd60e51b81526004016104ae9061207e565b60006001600160a01b0382166109765760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016104ae565b506001600160a01b03166000908152606f602052604090205490565b609e546000906001600160a01b031633146109bf5760405162461bcd60e51b81526004016104ae9061203a565b83828114610a0f5760405162461bcd60e51b815260206004820152601f60248201527f4368696c644552433732313a204172726179206c656e206d69736d617463680060448201526064016104ae565b60005b81811015610a6a57610a62878783818110610a2f57610a2f6120b0565b9050602002016020810190610a449190611c29565b868684818110610a5657610a566120b0565b90506020020135611255565b600101610a12565b5060019150505b949350505050565b600754610100900460ff1615808015610a995750600754600160ff909116105b80610ab35750303b158015610ab3575060075460ff166001145b610b165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104ae565b6007805460ff191660011790558015610b39576007805461ff0019166101001790555b6001600160a01b03861615801590610b5057508315155b8015610b5b57508115155b610ba75760405162461bcd60e51b815260206004820152601f60248201527f4368696c644552433732313a2042616420696e697469616c697a6174696f6e0060448201526064016104ae565b609f80546001600160a01b0388166001600160a01b031991821617909155609e805490911633179055604080516020601f8701819004810282018101909252858152610c4191879087908190840183828082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061126f92505050565b610c9985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152603160f81b602082015291506112a09050565b8015610cdf576007805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6060606d805461039090611f25565b609e546000906001600160a01b03163314610d235760405162461bcd60e51b81526004016104ae9061203a565b610d2c826108d7565b6001600160a01b0316836001600160a01b031614610d5c5760405162461bcd60e51b81526004016104ae906120c6565b6108b38261130c565b610d77610d70610f31565b838361138f565b5050565b609e546000906001600160a01b03163314610da85760405162461bcd60e51b81526004016104ae9061203a565b8160005b81811015610e1c576000858583818110610dc857610dc86120b0565b905060200201359050610dda816108d7565b6001600160a01b0316876001600160a01b031614610e0a5760405162461bcd60e51b81526004016104ae906120c6565b610e138161130c565b50600101610dac565b50600195945050505050565b610e39610e33610f31565b836110a5565b610e555760405162461bcd60e51b81526004016104ae90611fed565b610e6184848484611459565b50505050565b6060610e7282610f09565b6000610e8960408051602081019091526000815290565b90506000815111610ea95760405180602001604052806000815250610ed4565b80610eb38461148c565b604051602001610ec49291906120fb565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260716020908152604080832093909416825291909152205460ff1690565b610f128161151e565b610f2e5760405162461bcd60e51b81526004016104ae9061207e565b50565b6000610f3b61153b565b905090565b600081815260706020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610f75826108d7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008151600003610fc157506000919050565b506020015190565b6000806001610fdf610fda88611597565b611614565b6040805160008152602081018083529290925260ff861690820152606081018790526080810186905260a0016020604051602081039080840390855afa15801561102d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166110845760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016104ae565b866001600160a01b0316816001600160a01b03161491505095945050505050565b6000806110b1836108d7565b9050806001600160a01b0316846001600160a01b031614806110d857506110d88185610edb565b80610a715750836001600160a01b03166110f184610413565b6001600160a01b031614949350505050565b826001600160a01b0316611116826108d7565b6001600160a01b03161461113c5760405162461bcd60e51b81526004016104ae9061212a565b6001600160a01b03821661119e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016104ae565b826001600160a01b03166111b1826108d7565b6001600160a01b0316146111d75760405162461bcd60e51b81526004016104ae9061212a565b600081815260706020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652606f8552838620805460001901905590871680865283862080546001019055868652606e90945282852080549092168417909155905184936000805160206123e683398151915291a4505050565b610d77828260405180602001604052806000815250611662565b600754610100900460ff166112965760405162461bcd60e51b81526004016104ae9061216f565b610d778282611695565b815160208084019190912082519183019190912060038290556004819055466001557f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6112ee8184846116d5565b600055600280546001600160a01b0319163017905560055550505050565b6000611317826108d7565b9050611322826108d7565b600083815260706020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552606f84528285208054600019019055878552606e909352818420805490911690555192935084926000805160206123e6833981519152908390a45050565b816001600160a01b0316836001600160a01b0316036113ec5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016104ae565b6001600160a01b03838116600081815260716020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611464848484611103565b6114708484848461171e565b610e615760405162461bcd60e51b81526004016104ae906121ba565b6060600061149983611823565b60010190506000816001600160401b038111156114b8576114b8611e01565b6040519080825280601f01601f1916602001820160405280156114e2576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846114ec57509392505050565b6000908152606e60205260409020546001600160a01b0316151590565b600030330361159157600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031691506115949050565b50335b90565b60006040518060800160405280604381526020016123a360439139805160209182012083518483015160408087015180519086012090516115f7950193845260208401929092526001600160a01b03166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600061037b6116216118fb565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b61166c8383611936565b611679600084848461171e565b6105615760405162461bcd60e51b81526004016104ae906121ba565b600754610100900460ff166116bc5760405162461bcd60e51b81526004016104ae9061216f565b606c6116c88382612252565b50606d6105618282612252565b6040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b60006001600160a01b0384163b1561181b57836001600160a01b031663150b7a02611747610f31565b8786866040518563ffffffff1660e01b81526004016117699493929190612311565b6020604051808303816000875af19250505080156117a4575060408051601f3d908101601f191682019092526117a19181019061234e565b60015b611801573d8080156117d2576040519150601f19603f3d011682016040523d82523d6000602084013e6117d7565b606091505b5080516000036117f95760405162461bcd60e51b81526004016104ae906121ba565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610a71565b506001610a71565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106118625772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061188e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106118ac57662386f26fc10000830492506010015b6305f5e10083106118c4576305f5e100830492506008015b61271083106118d857612710830492506004015b606483106118ea576064830492506002015b600a831061037b5760010192915050565b6002546000906001600160a01b031630148015611919575060015446145b15611925575060005490565b610f3b6005546003546004546116d5565b6001600160a01b03821661198c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016104ae565b6119958161151e565b156119b25760405162461bcd60e51b81526004016104ae9061236b565b6119bb8161151e565b156119d85760405162461bcd60e51b81526004016104ae9061236b565b6001600160a01b0382166000818152606f6020908152604080832080546001019055848352606e90915280822080546001600160a01b0319168417905551839291906000805160206123e6833981519152908290a45050565b6001600160e01b031981168114610f2e57600080fd5b600060208284031215611a5957600080fd5b8135610ed481611a31565b60005b83811015611a7f578181015183820152602001611a67565b50506000910152565b60008151808452611aa0816020860160208601611a64565b601f01601f19169290920160200192915050565b602081526000610ed46020830184611a88565b600060208284031215611ad957600080fd5b5035919050565b80356001600160a01b0381168114611af757600080fd5b919050565b60008060408385031215611b0f57600080fd5b611b1883611ae0565b946020939093013593505050565b60008083601f840112611b3857600080fd5b5081356001600160401b03811115611b4f57600080fd5b602083019150836020828501011115611b6757600080fd5b9250929050565b60008060008060008060a08789031215611b8757600080fd5b611b9087611ae0565b955060208701356001600160401b03811115611bab57600080fd5b611bb789828a01611b26565b9096509450506040870135925060608701359150608087013560ff81168114611bdf57600080fd5b809150509295509295509295565b600080600060608486031215611c0257600080fd5b611c0b84611ae0565b9250611c1960208501611ae0565b9150604084013590509250925092565b600060208284031215611c3b57600080fd5b610ed482611ae0565b60008083601f840112611c5657600080fd5b5081356001600160401b03811115611c6d57600080fd5b6020830191508360208260051b8501011115611b6757600080fd5b60008060008060408587031215611c9e57600080fd5b84356001600160401b0380821115611cb557600080fd5b611cc188838901611c44565b90965094506020870135915080821115611cda57600080fd5b50611ce787828801611c44565b95989497509550505050565b600080600080600060608688031215611d0b57600080fd5b611d1486611ae0565b945060208601356001600160401b0380821115611d3057600080fd5b611d3c89838a01611b26565b90965094506040880135915080821115611d5557600080fd5b50611d6288828901611b26565b969995985093965092949392505050565b60008060408385031215611d8657600080fd5b611d8f83611ae0565b915060208301358015158114611da457600080fd5b809150509250929050565b600080600060408486031215611dc457600080fd5b611dcd84611ae0565b925060208401356001600160401b03811115611de857600080fd5b611df486828701611c44565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611e2d57600080fd5b611e3685611ae0565b9350611e4460208601611ae0565b92506040850135915060608501356001600160401b0380821115611e6757600080fd5b818701915087601f830112611e7b57600080fd5b813581811115611e8d57611e8d611e01565b604051601f8201601f19908116603f01168101908382118183101715611eb557611eb5611e01565b816040528281528a6020848701011115611ece57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611f0557600080fd5b611f0e83611ae0565b9150611f1c60208401611ae0565b90509250929050565b600181811c90821680611f3957607f821691505b602082108103611f5957634e487b7160e01b600052602260045260246000fd5b50919050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251611f97818460208701611a64565b9190910192915050565b6001600160a01b0385811682528416602082015260606040820181905281018290526000828460808401376000608084840101526080601f19601f850116830101905095945050505050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526024908201527f4368696c644552433732313a204f6e6c79207072656469636174652063616e2060408201526318d85b1b60e21b606082015260800190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6020808252818101527f4368696c644552433732313a204f6e6c79206f776e65722063616e206275726e604082015260600190565b6000835161210d818460208801611a64565b835190830190612121818360208801611a64565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b601f82111561056157600081815260208120601f850160051c810160208610156122335750805b601f850160051c820191505b81811015610cdf5782815560010161223f565b81516001600160401b0381111561226b5761226b611e01565b61227f816122798454611f25565b8461220c565b602080601f8311600181146122b4576000841561229c5750858301515b600019600386901b1c1916600185901b178555610cdf565b600085815260208120601f198616915b828110156122e3578886015182559484019460019091019084016122c4565b50858210156123015787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061234490830184611a88565b9695505050505050565b60006020828403121561236057600080fd5b8151610ed481611a31565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060408201526060019056fe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122029b6cbd9d5bf0fad2c675fa799d293745f76f3afee1c153673a2caed98a4a03864736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" +var ChildERC721Artifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"ChildERC721\",\n \"sourceName\": \"contracts/child/ChildERC721.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"approved\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"ApprovalForAll\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"relayerAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"functionSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"MetaTransactionExecuted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"burnBatch\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"functionSignature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sigR\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sigS\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"sigV\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"executeMetaTransaction\",\n \"outputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getApproved\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getNonce\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"nonce\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"rootToken_\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"symbol_\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isApprovedForAll\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"accounts\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"mintBatch\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ownerOf\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"rootToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"safeTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"safeTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setApprovalForAll\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"tokenURI\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50612528806100206000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a22cb4651161007c578063a22cb465146102bf578063b2dc5dc3146102d2578063b88d4fde146102e5578063c87b56dd146102f8578063e61987051461030b578063e985e9c51461031c57600080fd5b806370a082311461026b5780637c88e3d91461027e578063906571471461029157806395d89b41146102a45780639dc29fac146102ac57600080fd5b80631f2d00651161010a5780631f2d0065146101d757806323b872dd146101e85780632d0335ab146101fb57806340c10f191461023257806342842e0e146102455780636352211e1461025857600080fd5b806301ffc9a71461014757806306fdde031461016f578063081812fc14610184578063095ea7b3146101af5780630c53c51c146101c4575b600080fd5b61015a610155366004611af8565b61032f565b60405190151581526020015b60405180910390f35b610177610381565b6040516101669190611b65565b610197610192366004611b78565b610413565b6040516001600160a01b039091168152602001610166565b6101c26101bd366004611bad565b61043a565b005b6101776101d2366004611c1f565b610566565b609f546001600160a01b0316610197565b6101c26101f6366004611c9e565b610844565b610224610209366004611cda565b6001600160a01b031660009081526006602052604090205490565b604051908152602001610166565b61015a610240366004611bad565b61087c565b6101c2610253366004611c9e565b6108bc565b610197610266366004611b78565b6108d7565b610224610279366004611cda565b61090c565b61015a61028c366004611d39565b610992565b6101c261029f366004611da4565b610a79565b610177610ce7565b61015a6102ba366004611bad565b610cf6565b6101c26102cd366004611e24565b610d65565b61015a6102e0366004611e60565b610d7b565b6101c26102f3366004611ec8565b610e28565b610177610306366004611b78565b610e67565b609e546001600160a01b0316610197565b61015a61032a366004611fa3565b610edb565b60006001600160e01b031982166380ac58cd60e01b148061036057506001600160e01b03198216635b5e139f60e01b145b8061037b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060606c805461039090611fd6565b80601f01602080910402602001604051908101604052809291908181526020018280546103bc90611fd6565b80156104095780601f106103de57610100808354040283529160200191610409565b820191906000526020600020905b8154815290600101906020018083116103ec57829003601f168201915b5050505050905090565b600061041e82610f09565b506000908152607060205260409020546001600160a01b031690565b6000610445826108d7565b9050806001600160a01b0316836001600160a01b0316036104b75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b03166104c9610f31565b6001600160a01b031614806104e557506104e58161032a610f31565b6105575760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016104ae565b6105618383610f40565b505050565b606060006105a987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fae92505050565b90506001600160e01b031960003581169082160361062f5760405162461bcd60e51b815260206004820152603d60248201527f66756e6374696f6e5369676e61747572652063616e206e6f74206265206f662060448201527f657865637574654d6574615472616e73616374696f6e206d6574686f6400000060648201526084016104ae565b604080516060810182526001600160a01b038a16600081815260066020908152848220548452808401929092528351601f8b0183900483028101830185528a815290938301918b908b9081908401838280828437600092019190915250505091525090506106a08982888888610fc9565b6106f65760405162461bcd60e51b815260206004820152602160248201527f5369676e657220616e64207369676e617475726520646f206e6f74206d6174636044820152600d60fb1b60648201526084016104ae565b600660008a6001600160a01b03166001600160a01b031681526020019081526020016000206000815460010191905081905550600080306001600160a01b03168a8a8d60405160200161074b93929190612010565b60408051601f198184030181529082905261076591612036565b6000604051808303816000865af19150503d80600081146107a2576040519150601f19603f3d011682016040523d82523d6000602084013e6107a7565b606091505b5091509150816107f95760405162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c0000000060448201526064016104ae565b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b8b338c8c60405161082e9493929190612052565b60405180910390a19a9950505050505050505050565b61085561084f610f31565b826110a5565b6108715760405162461bcd60e51b81526004016104ae9061209e565b610561838383611103565b609e546000906001600160a01b031633146108a95760405162461bcd60e51b81526004016104ae906120eb565b6108b38383611262565b50600192915050565b61056183838360405180602001604052806000815250610e28565b6000818152606e60205260408120546001600160a01b03168061037b5760405162461bcd60e51b81526004016104ae9061212f565b60006001600160a01b0382166109765760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016104ae565b506001600160a01b03166000908152606f602052604090205490565b609e546000906001600160a01b031633146109bf5760405162461bcd60e51b81526004016104ae906120eb565b83828114610a0f5760405162461bcd60e51b815260206004820152601f60248201527f4368696c644552433732313a204172726179206c656e206d69736d617463680060448201526064016104ae565b60005b81811015610a6a57610a62878783818110610a2f57610a2f612161565b9050602002016020810190610a449190611cda565b868684818110610a5657610a56612161565b90506020020135611262565b600101610a12565b5060019150505b949350505050565b600754610100900460ff1615808015610a995750600754600160ff909116105b80610ab35750303b158015610ab3575060075460ff166001145b610b165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104ae565b6007805460ff191660011790558015610b39576007805461ff0019166101001790555b6001600160a01b03861615801590610b5057508315155b8015610b5b57508115155b610ba75760405162461bcd60e51b815260206004820152601f60248201527f4368696c644552433732313a2042616420696e697469616c697a6174696f6e0060448201526064016104ae565b609f80546001600160a01b0388166001600160a01b031991821617909155609e805490911633179055604080516020601f8701819004810282018101909252858152610c4191879087908190840183828082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061127c92505050565b610c9985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152603160f81b602082015291506112ad9050565b8015610cdf576007805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6060606d805461039090611fd6565b609e546000906001600160a01b03163314610d235760405162461bcd60e51b81526004016104ae906120eb565b610d2c826108d7565b6001600160a01b0316836001600160a01b031614610d5c5760405162461bcd60e51b81526004016104ae90612177565b6108b382611319565b610d77610d70610f31565b83836113aa565b5050565b609e546000906001600160a01b03163314610da85760405162461bcd60e51b81526004016104ae906120eb565b8160005b81811015610e1c576000858583818110610dc857610dc8612161565b905060200201359050610dda816108d7565b6001600160a01b0316876001600160a01b031614610e0a5760405162461bcd60e51b81526004016104ae90612177565b610e1381611319565b50600101610dac565b50600195945050505050565b610e39610e33610f31565b836110a5565b610e555760405162461bcd60e51b81526004016104ae9061209e565b610e6184848484611474565b50505050565b6060610e7282610f09565b6000610e8960408051602081019091526000815290565b90506000815111610ea95760405180602001604052806000815250610ed4565b80610eb3846114a7565b604051602001610ec49291906121ac565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260716020908152604080832093909416825291909152205460ff1690565b610f1281611539565b610f2e5760405162461bcd60e51b81526004016104ae9061212f565b50565b6000610f3b611556565b905090565b600081815260706020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610f75826108d7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008151600003610fc157506000919050565b506020015190565b6000806001610fdf610fda886115b2565b61162f565b6040805160008152602081018083529290925260ff861690820152606081018790526080810186905260a0016020604051602081039080840390855afa15801561102d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166110845760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016104ae565b866001600160a01b0316816001600160a01b03161491505095945050505050565b6000806110b1836108d7565b9050806001600160a01b0316846001600160a01b031614806110d857506110d88185610edb565b80610a715750836001600160a01b03166110f184610413565b6001600160a01b031614949350505050565b826001600160a01b0316611116826108d7565b6001600160a01b03161461113c5760405162461bcd60e51b81526004016104ae906121db565b6001600160a01b03821661119e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016104ae565b6111ab838383600161167d565b826001600160a01b03166111be826108d7565b6001600160a01b0316146111e45760405162461bcd60e51b81526004016104ae906121db565b600081815260706020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652606f8552838620805460001901905590871680865283862080546001019055868652606e90945282852080549092168417909155905184936000805160206124d383398151915291a4505050565b610d77828260405180602001604052806000815250611705565b600754610100900460ff166112a35760405162461bcd60e51b81526004016104ae90612220565b610d778282611738565b815160208084019190912082519183019190912060038290556004819055466001557f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6112fb818484611778565b600055600280546001600160a01b0319163017905560055550505050565b6000611324826108d7565b905061133481600084600161167d565b61133d826108d7565b600083815260706020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552606f84528285208054600019019055878552606e909352818420805490911690555192935084926000805160206124d3833981519152908390a45050565b816001600160a01b0316836001600160a01b0316036114075760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016104ae565b6001600160a01b03838116600081815260716020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61147f848484611103565b61148b848484846117c1565b610e615760405162461bcd60e51b81526004016104ae9061226b565b606060006114b4836118c6565b60010190506000816001600160401b038111156114d3576114d3611eb2565b6040519080825280601f01601f1916602001820160405280156114fd576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461150757509392505050565b6000908152606e60205260409020546001600160a01b0316151590565b60003033036115ac57600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031691506115af9050565b50335b90565b60006040518060800160405280604381526020016124906043913980516020918201208351848301516040808701518051908601209051611612950193845260208401929092526001600160a01b03166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600061037b61163c61199e565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6001811115610e61576001600160a01b038416156116c3576001600160a01b0384166000908152606f6020526040812080548392906116bd9084906122d3565b90915550505b6001600160a01b03831615610e61576001600160a01b0383166000908152606f6020526040812080548392906116fa9084906122e6565b909155505050505050565b61170f83836119d9565b61171c60008484846117c1565b6105615760405162461bcd60e51b81526004016104ae9061226b565b600754610100900460ff1661175f5760405162461bcd60e51b81526004016104ae90612220565b606c61176b838261233f565b50606d610561828261233f565b6040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b60006001600160a01b0384163b156118be57836001600160a01b031663150b7a026117ea610f31565b8786866040518563ffffffff1660e01b815260040161180c94939291906123fe565b6020604051808303816000875af1925050508015611847575060408051601f3d908101601f191682019092526118449181019061243b565b60015b6118a4573d808015611875576040519150601f19603f3d011682016040523d82523d6000602084013e61187a565b606091505b50805160000361189c5760405162461bcd60e51b81526004016104ae9061226b565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610a71565b506001610a71565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106119055772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611931576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061194f57662386f26fc10000830492506010015b6305f5e1008310611967576305f5e100830492506008015b612710831061197b57612710830492506004015b6064831061198d576064830492506002015b600a831061037b5760010192915050565b6002546000906001600160a01b0316301480156119bc575060015446145b156119c8575060005490565b610f3b600554600354600454611778565b6001600160a01b038216611a2f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016104ae565b611a3881611539565b15611a555760405162461bcd60e51b81526004016104ae90612458565b611a6360008383600161167d565b611a6c81611539565b15611a895760405162461bcd60e51b81526004016104ae90612458565b6001600160a01b0382166000818152606f6020908152604080832080546001019055848352606e90915280822080546001600160a01b0319168417905551839291906000805160206124d3833981519152908290a45050565b6001600160e01b031981168114610f2e57600080fd5b600060208284031215611b0a57600080fd5b8135610ed481611ae2565b60005b83811015611b30578181015183820152602001611b18565b50506000910152565b60008151808452611b51816020860160208601611b15565b601f01601f19169290920160200192915050565b602081526000610ed46020830184611b39565b600060208284031215611b8a57600080fd5b5035919050565b80356001600160a01b0381168114611ba857600080fd5b919050565b60008060408385031215611bc057600080fd5b611bc983611b91565b946020939093013593505050565b60008083601f840112611be957600080fd5b5081356001600160401b03811115611c0057600080fd5b602083019150836020828501011115611c1857600080fd5b9250929050565b60008060008060008060a08789031215611c3857600080fd5b611c4187611b91565b955060208701356001600160401b03811115611c5c57600080fd5b611c6889828a01611bd7565b9096509450506040870135925060608701359150608087013560ff81168114611c9057600080fd5b809150509295509295509295565b600080600060608486031215611cb357600080fd5b611cbc84611b91565b9250611cca60208501611b91565b9150604084013590509250925092565b600060208284031215611cec57600080fd5b610ed482611b91565b60008083601f840112611d0757600080fd5b5081356001600160401b03811115611d1e57600080fd5b6020830191508360208260051b8501011115611c1857600080fd5b60008060008060408587031215611d4f57600080fd5b84356001600160401b0380821115611d6657600080fd5b611d7288838901611cf5565b90965094506020870135915080821115611d8b57600080fd5b50611d9887828801611cf5565b95989497509550505050565b600080600080600060608688031215611dbc57600080fd5b611dc586611b91565b945060208601356001600160401b0380821115611de157600080fd5b611ded89838a01611bd7565b90965094506040880135915080821115611e0657600080fd5b50611e1388828901611bd7565b969995985093965092949392505050565b60008060408385031215611e3757600080fd5b611e4083611b91565b915060208301358015158114611e5557600080fd5b809150509250929050565b600080600060408486031215611e7557600080fd5b611e7e84611b91565b925060208401356001600160401b03811115611e9957600080fd5b611ea586828701611cf5565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611ede57600080fd5b611ee785611b91565b9350611ef560208601611b91565b92506040850135915060608501356001600160401b0380821115611f1857600080fd5b818701915087601f830112611f2c57600080fd5b813581811115611f3e57611f3e611eb2565b604051601f8201601f19908116603f01168101908382118183101715611f6657611f66611eb2565b816040528281528a6020848701011115611f7f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611fb657600080fd5b611fbf83611b91565b9150611fcd60208401611b91565b90509250929050565b600181811c90821680611fea57607f821691505b60208210810361200a57634e487b7160e01b600052602260045260246000fd5b50919050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251612048818460208701611b15565b9190910192915050565b6001600160a01b0385811682528416602082015260606040820181905281018290526000828460808401376000608084840101526080601f19601f850116830101905095945050505050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526024908201527f4368696c644552433732313a204f6e6c79207072656469636174652063616e2060408201526318d85b1b60e21b606082015260800190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6020808252818101527f4368696c644552433732313a204f6e6c79206f776e65722063616e206275726e604082015260600190565b600083516121be818460208801611b15565b8351908301906121d2818360208801611b15565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561037b5761037b6122bd565b8082018082111561037b5761037b6122bd565b601f82111561056157600081815260208120601f850160051c810160208610156123205750805b601f850160051c820191505b81811015610cdf5782815560010161232c565b81516001600160401b0381111561235857612358611eb2565b61236c816123668454611fd6565b846122f9565b602080601f8311600181146123a157600084156123895750858301515b600019600386901b1c1916600185901b178555610cdf565b600085815260208120601f198616915b828110156123d0578886015182559484019460019091019084016123b1565b50858210156123ee5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061243190830184611b39565b9695505050505050565b60006020828403121561244d57600080fd5b8151610ed481611ae2565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060408201526060019056fe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204f534afca83b2d7cc8e92de651ce78696a2adcb6785ee0fe4c8135ad9273ef8664736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a22cb4651161007c578063a22cb465146102bf578063b2dc5dc3146102d2578063b88d4fde146102e5578063c87b56dd146102f8578063e61987051461030b578063e985e9c51461031c57600080fd5b806370a082311461026b5780637c88e3d91461027e578063906571471461029157806395d89b41146102a45780639dc29fac146102ac57600080fd5b80631f2d00651161010a5780631f2d0065146101d757806323b872dd146101e85780632d0335ab146101fb57806340c10f191461023257806342842e0e146102455780636352211e1461025857600080fd5b806301ffc9a71461014757806306fdde031461016f578063081812fc14610184578063095ea7b3146101af5780630c53c51c146101c4575b600080fd5b61015a610155366004611af8565b61032f565b60405190151581526020015b60405180910390f35b610177610381565b6040516101669190611b65565b610197610192366004611b78565b610413565b6040516001600160a01b039091168152602001610166565b6101c26101bd366004611bad565b61043a565b005b6101776101d2366004611c1f565b610566565b609f546001600160a01b0316610197565b6101c26101f6366004611c9e565b610844565b610224610209366004611cda565b6001600160a01b031660009081526006602052604090205490565b604051908152602001610166565b61015a610240366004611bad565b61087c565b6101c2610253366004611c9e565b6108bc565b610197610266366004611b78565b6108d7565b610224610279366004611cda565b61090c565b61015a61028c366004611d39565b610992565b6101c261029f366004611da4565b610a79565b610177610ce7565b61015a6102ba366004611bad565b610cf6565b6101c26102cd366004611e24565b610d65565b61015a6102e0366004611e60565b610d7b565b6101c26102f3366004611ec8565b610e28565b610177610306366004611b78565b610e67565b609e546001600160a01b0316610197565b61015a61032a366004611fa3565b610edb565b60006001600160e01b031982166380ac58cd60e01b148061036057506001600160e01b03198216635b5e139f60e01b145b8061037b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060606c805461039090611fd6565b80601f01602080910402602001604051908101604052809291908181526020018280546103bc90611fd6565b80156104095780601f106103de57610100808354040283529160200191610409565b820191906000526020600020905b8154815290600101906020018083116103ec57829003601f168201915b5050505050905090565b600061041e82610f09565b506000908152607060205260409020546001600160a01b031690565b6000610445826108d7565b9050806001600160a01b0316836001600160a01b0316036104b75760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b806001600160a01b03166104c9610f31565b6001600160a01b031614806104e557506104e58161032a610f31565b6105575760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016104ae565b6105618383610f40565b505050565b606060006105a987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fae92505050565b90506001600160e01b031960003581169082160361062f5760405162461bcd60e51b815260206004820152603d60248201527f66756e6374696f6e5369676e61747572652063616e206e6f74206265206f662060448201527f657865637574654d6574615472616e73616374696f6e206d6574686f6400000060648201526084016104ae565b604080516060810182526001600160a01b038a16600081815260066020908152848220548452808401929092528351601f8b0183900483028101830185528a815290938301918b908b9081908401838280828437600092019190915250505091525090506106a08982888888610fc9565b6106f65760405162461bcd60e51b815260206004820152602160248201527f5369676e657220616e64207369676e617475726520646f206e6f74206d6174636044820152600d60fb1b60648201526084016104ae565b600660008a6001600160a01b03166001600160a01b031681526020019081526020016000206000815460010191905081905550600080306001600160a01b03168a8a8d60405160200161074b93929190612010565b60408051601f198184030181529082905261076591612036565b6000604051808303816000865af19150503d80600081146107a2576040519150601f19603f3d011682016040523d82523d6000602084013e6107a7565b606091505b5091509150816107f95760405162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c0000000060448201526064016104ae565b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b8b338c8c60405161082e9493929190612052565b60405180910390a19a9950505050505050505050565b61085561084f610f31565b826110a5565b6108715760405162461bcd60e51b81526004016104ae9061209e565b610561838383611103565b609e546000906001600160a01b031633146108a95760405162461bcd60e51b81526004016104ae906120eb565b6108b38383611262565b50600192915050565b61056183838360405180602001604052806000815250610e28565b6000818152606e60205260408120546001600160a01b03168061037b5760405162461bcd60e51b81526004016104ae9061212f565b60006001600160a01b0382166109765760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016104ae565b506001600160a01b03166000908152606f602052604090205490565b609e546000906001600160a01b031633146109bf5760405162461bcd60e51b81526004016104ae906120eb565b83828114610a0f5760405162461bcd60e51b815260206004820152601f60248201527f4368696c644552433732313a204172726179206c656e206d69736d617463680060448201526064016104ae565b60005b81811015610a6a57610a62878783818110610a2f57610a2f612161565b9050602002016020810190610a449190611cda565b868684818110610a5657610a56612161565b90506020020135611262565b600101610a12565b5060019150505b949350505050565b600754610100900460ff1615808015610a995750600754600160ff909116105b80610ab35750303b158015610ab3575060075460ff166001145b610b165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016104ae565b6007805460ff191660011790558015610b39576007805461ff0019166101001790555b6001600160a01b03861615801590610b5057508315155b8015610b5b57508115155b610ba75760405162461bcd60e51b815260206004820152601f60248201527f4368696c644552433732313a2042616420696e697469616c697a6174696f6e0060448201526064016104ae565b609f80546001600160a01b0388166001600160a01b031991821617909155609e805490911633179055604080516020601f8701819004810282018101909252858152610c4191879087908190840183828082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061127c92505050565b610c9985858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152603160f81b602082015291506112ad9050565b8015610cdf576007805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6060606d805461039090611fd6565b609e546000906001600160a01b03163314610d235760405162461bcd60e51b81526004016104ae906120eb565b610d2c826108d7565b6001600160a01b0316836001600160a01b031614610d5c5760405162461bcd60e51b81526004016104ae90612177565b6108b382611319565b610d77610d70610f31565b83836113aa565b5050565b609e546000906001600160a01b03163314610da85760405162461bcd60e51b81526004016104ae906120eb565b8160005b81811015610e1c576000858583818110610dc857610dc8612161565b905060200201359050610dda816108d7565b6001600160a01b0316876001600160a01b031614610e0a5760405162461bcd60e51b81526004016104ae90612177565b610e1381611319565b50600101610dac565b50600195945050505050565b610e39610e33610f31565b836110a5565b610e555760405162461bcd60e51b81526004016104ae9061209e565b610e6184848484611474565b50505050565b6060610e7282610f09565b6000610e8960408051602081019091526000815290565b90506000815111610ea95760405180602001604052806000815250610ed4565b80610eb3846114a7565b604051602001610ec49291906121ac565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260716020908152604080832093909416825291909152205460ff1690565b610f1281611539565b610f2e5760405162461bcd60e51b81526004016104ae9061212f565b50565b6000610f3b611556565b905090565b600081815260706020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610f75826108d7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008151600003610fc157506000919050565b506020015190565b6000806001610fdf610fda886115b2565b61162f565b6040805160008152602081018083529290925260ff861690820152606081018790526080810186905260a0016020604051602081039080840390855afa15801561102d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166110845760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016104ae565b866001600160a01b0316816001600160a01b03161491505095945050505050565b6000806110b1836108d7565b9050806001600160a01b0316846001600160a01b031614806110d857506110d88185610edb565b80610a715750836001600160a01b03166110f184610413565b6001600160a01b031614949350505050565b826001600160a01b0316611116826108d7565b6001600160a01b03161461113c5760405162461bcd60e51b81526004016104ae906121db565b6001600160a01b03821661119e5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016104ae565b6111ab838383600161167d565b826001600160a01b03166111be826108d7565b6001600160a01b0316146111e45760405162461bcd60e51b81526004016104ae906121db565b600081815260706020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652606f8552838620805460001901905590871680865283862080546001019055868652606e90945282852080549092168417909155905184936000805160206124d383398151915291a4505050565b610d77828260405180602001604052806000815250611705565b600754610100900460ff166112a35760405162461bcd60e51b81526004016104ae90612220565b610d778282611738565b815160208084019190912082519183019190912060038290556004819055466001557f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6112fb818484611778565b600055600280546001600160a01b0319163017905560055550505050565b6000611324826108d7565b905061133481600084600161167d565b61133d826108d7565b600083815260706020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552606f84528285208054600019019055878552606e909352818420805490911690555192935084926000805160206124d3833981519152908390a45050565b816001600160a01b0316836001600160a01b0316036114075760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016104ae565b6001600160a01b03838116600081815260716020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61147f848484611103565b61148b848484846117c1565b610e615760405162461bcd60e51b81526004016104ae9061226b565b606060006114b4836118c6565b60010190506000816001600160401b038111156114d3576114d3611eb2565b6040519080825280601f01601f1916602001820160405280156114fd576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461150757509392505050565b6000908152606e60205260409020546001600160a01b0316151590565b60003033036115ac57600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031691506115af9050565b50335b90565b60006040518060800160405280604381526020016124906043913980516020918201208351848301516040808701518051908601209051611612950193845260208401929092526001600160a01b03166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600061037b61163c61199e565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6001811115610e61576001600160a01b038416156116c3576001600160a01b0384166000908152606f6020526040812080548392906116bd9084906122d3565b90915550505b6001600160a01b03831615610e61576001600160a01b0383166000908152606f6020526040812080548392906116fa9084906122e6565b909155505050505050565b61170f83836119d9565b61171c60008484846117c1565b6105615760405162461bcd60e51b81526004016104ae9061226b565b600754610100900460ff1661175f5760405162461bcd60e51b81526004016104ae90612220565b606c61176b838261233f565b50606d610561828261233f565b6040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b60006001600160a01b0384163b156118be57836001600160a01b031663150b7a026117ea610f31565b8786866040518563ffffffff1660e01b815260040161180c94939291906123fe565b6020604051808303816000875af1925050508015611847575060408051601f3d908101601f191682019092526118449181019061243b565b60015b6118a4573d808015611875576040519150601f19603f3d011682016040523d82523d6000602084013e61187a565b606091505b50805160000361189c5760405162461bcd60e51b81526004016104ae9061226b565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610a71565b506001610a71565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106119055772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611931576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061194f57662386f26fc10000830492506010015b6305f5e1008310611967576305f5e100830492506008015b612710831061197b57612710830492506004015b6064831061198d576064830492506002015b600a831061037b5760010192915050565b6002546000906001600160a01b0316301480156119bc575060015446145b156119c8575060005490565b610f3b600554600354600454611778565b6001600160a01b038216611a2f5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016104ae565b611a3881611539565b15611a555760405162461bcd60e51b81526004016104ae90612458565b611a6360008383600161167d565b611a6c81611539565b15611a895760405162461bcd60e51b81526004016104ae90612458565b6001600160a01b0382166000818152606f6020908152604080832080546001019055848352606e90915280822080546001600160a01b0319168417905551839291906000805160206124d3833981519152908290a45050565b6001600160e01b031981168114610f2e57600080fd5b600060208284031215611b0a57600080fd5b8135610ed481611ae2565b60005b83811015611b30578181015183820152602001611b18565b50506000910152565b60008151808452611b51816020860160208601611b15565b601f01601f19169290920160200192915050565b602081526000610ed46020830184611b39565b600060208284031215611b8a57600080fd5b5035919050565b80356001600160a01b0381168114611ba857600080fd5b919050565b60008060408385031215611bc057600080fd5b611bc983611b91565b946020939093013593505050565b60008083601f840112611be957600080fd5b5081356001600160401b03811115611c0057600080fd5b602083019150836020828501011115611c1857600080fd5b9250929050565b60008060008060008060a08789031215611c3857600080fd5b611c4187611b91565b955060208701356001600160401b03811115611c5c57600080fd5b611c6889828a01611bd7565b9096509450506040870135925060608701359150608087013560ff81168114611c9057600080fd5b809150509295509295509295565b600080600060608486031215611cb357600080fd5b611cbc84611b91565b9250611cca60208501611b91565b9150604084013590509250925092565b600060208284031215611cec57600080fd5b610ed482611b91565b60008083601f840112611d0757600080fd5b5081356001600160401b03811115611d1e57600080fd5b6020830191508360208260051b8501011115611c1857600080fd5b60008060008060408587031215611d4f57600080fd5b84356001600160401b0380821115611d6657600080fd5b611d7288838901611cf5565b90965094506020870135915080821115611d8b57600080fd5b50611d9887828801611cf5565b95989497509550505050565b600080600080600060608688031215611dbc57600080fd5b611dc586611b91565b945060208601356001600160401b0380821115611de157600080fd5b611ded89838a01611bd7565b90965094506040880135915080821115611e0657600080fd5b50611e1388828901611bd7565b969995985093965092949392505050565b60008060408385031215611e3757600080fd5b611e4083611b91565b915060208301358015158114611e5557600080fd5b809150509250929050565b600080600060408486031215611e7557600080fd5b611e7e84611b91565b925060208401356001600160401b03811115611e9957600080fd5b611ea586828701611cf5565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611ede57600080fd5b611ee785611b91565b9350611ef560208601611b91565b92506040850135915060608501356001600160401b0380821115611f1857600080fd5b818701915087601f830112611f2c57600080fd5b813581811115611f3e57611f3e611eb2565b604051601f8201601f19908116603f01168101908382118183101715611f6657611f66611eb2565b816040528281528a6020848701011115611f7f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611fb657600080fd5b611fbf83611b91565b9150611fcd60208401611b91565b90509250929050565b600181811c90821680611fea57607f821691505b60208210810361200a57634e487b7160e01b600052602260045260246000fd5b50919050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251612048818460208701611b15565b9190910192915050565b6001600160a01b0385811682528416602082015260606040820181905281018290526000828460808401376000608084840101526080601f19601f850116830101905095945050505050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60208082526024908201527f4368696c644552433732313a204f6e6c79207072656469636174652063616e2060408201526318d85b1b60e21b606082015260800190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6020808252818101527f4368696c644552433732313a204f6e6c79206f776e65722063616e206275726e604082015260600190565b600083516121be818460208801611b15565b8351908301906121d2818360208801611b15565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561037b5761037b6122bd565b8082018082111561037b5761037b6122bd565b601f82111561056157600081815260208120601f850160051c810160208610156123205750805b601f850160051c820191505b81811015610cdf5782815560010161232c565b81516001600160401b0381111561235857612358611eb2565b61236c816123668454611fd6565b846122f9565b602080601f8311600181146123a157600084156123895750858301515b600019600386901b1c1916600185901b178555610cdf565b600085815260208120601f198616915b828110156123d0578886015182559484019460019091019084016123b1565b50858210156123ee5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061243190830184611b39565b9695505050505050565b60006020828403121561244d57600080fd5b8151610ed481611ae2565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060408201526060019056fe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212204f534afca83b2d7cc8e92de651ce78696a2adcb6785ee0fe4c8135ad9273ef8664736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" var ChildERC721PredicateArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"ChildERC721Predicate\",\n \"sourceName\": \"contracts/child/ChildERC721Predicate.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"only\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"Unauthorized\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"L2ERC721Deposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address[]\",\n \"name\": \"receivers\",\n \"type\": \"address[]\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"L2ERC721DepositBatch\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"L2ERC721Withdraw\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address[]\",\n \"name\": \"receivers\",\n \"type\": \"address[]\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"L2ERC721WithdrawBatch\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"L2TokenMapped\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEPOSIT_BATCH_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEPOSIT_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAP_TOKEN_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TOKEN_CONTRACT\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"SYSTEM\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WITHDRAW_BATCH_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WITHDRAW_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"childTokenTemplate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newL2StateSender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newStateReceiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newRootERC721Predicate\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newChildTokenTemplate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"l2StateSender\",\n \"outputs\": [\n {\n \"internalType\": \"contract IStateSender\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"onStateReceive\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"rootERC721Predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"rootTokenToChildToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"stateReceiver\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IChildERC721\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IChildERC721\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address[]\",\n \"name\": \"receivers\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"withdrawBatch\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IChildERC721\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"withdrawTo\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50611efb806100206000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063b68ad1e4116100b8578063e0563ab11161007c578063e0563ab1146102c0578063eeb49945146102c9578063f3fef3a3146102dc578063f6451255146102ef578063f691325c14610316578063f8c8765e1461032957600080fd5b8063b68ad1e414610225578063c3b35a7e14610238578063c5ac2b1c1461024b578063d41f177114610272578063d7c9e3ec1461029957600080fd5b80636f33e695116100ff5780636f33e6951461019f5780637efab4f5146101b4578063947287cf146101dd57806397e5230d146101f4578063b1768065146101fe57600080fd5b806305dc2e8f1461013c5780631bc114ba1461016c578063284017f51461017f5780633b878c221461018857806351351d5314610191575b600080fd5b60345461014f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60335461014f906001600160a01b031681565b61014f61202081565b61014f61101081565b61014f6002600160a01b0381565b6101b26101ad3660046115a6565b61033c565b005b61014f6101c2366004611628565b6037602052600090815260409020546001600160a01b031681565b6101e661520881565b604051908152602001610163565b6101e6620249f081565b6101e67f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b60365461014f906001600160a01b031681565b6101b261024636600461164c565b610350565b6101e67faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d1881565b6101e67f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b6101e67f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed281565b61014f61203081565b6101b26102d736600461168d565b610360565b6101b26102ea366004611715565b610583565b6101e67f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b60355461014f906001600160a01b031681565b6101b2610337366004611741565b610592565b61034985858585856107d1565b5050505050565b61035b838383610ada565b505050565b6034546001600160a01b031633146103d15760405162461bcd60e51b815260206004820152602960248201527f4368696c644552433732315072656469636174653a204f4e4c595f53544154456044820152682fa922a1a2a4ab22a960b91b60648201526084015b60405180910390fd5b6035546001600160a01b038481169116146104405760405162461bcd60e51b815260206004820152602960248201527f4368696c644552433732315072656469636174653a204f4e4c595f524f4f545f60448201526850524544494341544560b81b60648201526084016103c8565b7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82161046f60206000848661179d565b610478916117c7565b036104975761049261048d826020818661179d565b610de3565b61057d565b7faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d186104c660206000848661179d565b6104cf916117c7565b036104de57610492828261104e565b7f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad61050d60206000848661179d565b610516916117c7565b036105255761049282826112a9565b60405162461bcd60e51b815260206004820152602760248201527f4368696c644552433732315072656469636174653a20494e56414c49445f5349604482015266474e415455524560c81b60648201526084016103c8565b50505050565b61058e823383610ada565b5050565b336002600160a01b03146105d65760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b60448201526064016103c8565b600054610100900460ff16158080156105f65750600054600160ff909116105b806106105750303b158015610610575060005460ff166001145b6106735760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103c8565b6000805460ff191660011790558015610696576000805461ff0019166101001790555b6001600160a01b038516158015906106b657506001600160a01b03841615155b80156106ca57506001600160a01b03831615155b80156106de57506001600160a01b03821615155b61073b5760405162461bcd60e51b815260206004820152602860248201527f4368696c644552433732315072656469636174653a204241445f494e495449416044820152672624ad20aa24a7a760c11b60648201526084016103c8565b603380546001600160a01b038088166001600160a01b031992831617909255603480548784169083161790556035805486841690831617905560368054928516929091169190911790558015610349576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b846107db81611417565b6107f75760405162461bcd60e51b81526004016103c8906117e5565b6000866001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085b9190611827565b6001600160a01b0381811660009081526037602052604090205491925088811691161461089a5760405162461bcd60e51b81526004016103c890611844565b6001600160a01b0381166108b0576108b0611888565b306001600160a01b0316876001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190611827565b6001600160a01b03161461093257610932611888565b60405163b2dc5dc360e01b81526001600160a01b0388169063b2dc5dc390610962903390889088906004016118d0565b6020604051808303816000875af1158015610981573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a591906118fe565b6109c15760405162461bcd60e51b81526004016103c890611920565b6033546035546040516001600160a01b03928316926316f19831921690610a18907f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed290869033908d908d908d908d906020016119aa565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610a44929190611a44565b600060405180830381600087803b158015610a5e57600080fd5b505af1158015610a72573d6000803e3d6000fd5b50505050336001600160a01b0316876001600160a01b0316826001600160a01b03167fa80bc76d6e1849a9088a9c00a2aeaa54eeb78f15565a18da3e8873438976f52289898989604051610ac99493929190611a70565b60405180910390a450505050505050565b82610ae481611417565b610b005760405162461bcd60e51b81526004016103c8906117e5565b6000846001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b649190611827565b6001600160a01b03818116600090815260376020526040902054919250868116911614610ba35760405162461bcd60e51b81526004016103c890611844565b6001600160a01b038116610bb957610bb9611888565b306001600160a01b0316856001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c259190611827565b6001600160a01b031614610c3b57610c3b611888565b604051632770a7eb60e21b81526001600160a01b03861690639dc29fac90610c699033908790600401611aa2565b6020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac91906118fe565b610cc85760405162461bcd60e51b81526004016103c890611920565b603354603554604080517f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286960208201526001600160a01b0385811682840152336060830152888116608083015260a08083018990528351808403909101815260c08301938490526316f1983160e01b909352938416936316f1983193610d539391169160c401611a44565b600060405180830381600087803b158015610d6d57600080fd5b505af1158015610d81573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b0316826001600160a01b03167f1e0ef6131232b1090efc3ec1cf7b53aa17f4b7cd8a4f9e033b49ee237379b0133387604051610dd4929190611aa2565b60405180910390a45050505050565b6000808080610df485870187611abb565b6001600160a01b0380851660009081526037602052604090205494985092965090945092501680610e375760405162461bcd60e51b81526004016103c890611844565b610e4081611417565b506000816001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea59190611827565b9050856001600160a01b0316816001600160a01b031614610ec857610ec8611888565b6001600160a01b038116610ede57610ede611888565b306001600160a01b0316826001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a9190611827565b6001600160a01b031614610f6057610f60611888565b6040516340c10f1960e01b81526001600160a01b038316906340c10f1990610f8e9087908790600401611aa2565b6020604051808303816000875af1158015610fad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd191906118fe565b610fed5760405162461bcd60e51b81526004016103c890611b0c565b836001600160a01b0316826001600160a01b0316876001600160a01b03167f37589fd8c906c19ea68eeb7e6b3e03efc06ff8aa4b1830588eba75f4375b1611888760405161103c929190611aa2565b60405180910390a45050505050505050565b600080808061105f85870187611c21565b6001600160a01b038085166000908152603760205260409020549499509297509095509350169050806110a45760405162461bcd60e51b81526004016103c890611844565b6110ad81611417565b506000816001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111129190611827565b9050856001600160a01b0316816001600160a01b03161461113557611135611888565b6001600160a01b03811661114b5761114b611888565b306001600160a01b0316826001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190611827565b6001600160a01b0316146111cd576111cd611888565b604051637c88e3d960e01b81526001600160a01b03831690637c88e3d9906111fb9087908790600401611d13565b6020604051808303816000875af115801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e91906118fe565b61125a5760405162461bcd60e51b81526004016103c890611b0c565b846001600160a01b0316826001600160a01b0316876001600160a01b03167fc1b1a5c1b97cc8e5ac82b47496f5ebdadf9c7d119b30a116e2bdafd56f6ed475878760405161103c929190611d13565b600080806112b984860186611e06565b91955093509150506001600160a01b0383166112d7576112d7611888565b6001600160a01b0383811660009081526037602052604090205416156112ff576112ff611888565b6036546040516bffffffffffffffffffffffff19606086901b16602082015260009161134f916001600160a01b0390911690603401604051602081830303815290604052805190602001206114ac565b6001600160a01b038581166000908152603760205260409081902080546001600160a01b031916928416928317905551639065714760e01b8152919250906390657147906113a590879087908790600401611e85565b600060405180830381600087803b1580156113bf57600080fd5b505af11580156113d3573d6000803e3d6000fd5b50506040516001600160a01b038085169350871691507f46bd56f98e1b14fd35691959270a6e1edf7cb8fcd489e0f9dda89e46c0d1ff0d90600090a3505050505050565b6000816001600160a01b03163b60000361143357506000919050565b6040516301ffc9a760e01b81526380ac58cd60e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa92505050801561149a575060408051601f3d908101601f19168201909252611497918101906118fe565b60015b6114a657506000919050565b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166114a65760405162461bcd60e51b8152602060048201526017602482015276115490cc4c4d8dce8818dc99585d194c8819985a5b1959604a1b60448201526064016103c8565b6001600160a01b038116811461155857600080fd5b50565b60008083601f84011261156d57600080fd5b5081356001600160401b0381111561158457600080fd5b6020830191508360208260051b850101111561159f57600080fd5b9250929050565b6000806000806000606086880312156115be57600080fd5b85356115c981611543565b945060208601356001600160401b03808211156115e557600080fd5b6115f189838a0161155b565b9096509450604088013591508082111561160a57600080fd5b506116178882890161155b565b969995985093965092949392505050565b60006020828403121561163a57600080fd5b813561164581611543565b9392505050565b60008060006060848603121561166157600080fd5b833561166c81611543565b9250602084013561167c81611543565b929592945050506040919091013590565b600080600080606085870312156116a357600080fd5b8435935060208501356116b581611543565b925060408501356001600160401b03808211156116d157600080fd5b818701915087601f8301126116e557600080fd5b8135818111156116f457600080fd5b88602082850101111561170657600080fd5b95989497505060200194505050565b6000806040838503121561172857600080fd5b823561173381611543565b946020939093013593505050565b6000806000806080858703121561175757600080fd5b843561176281611543565b9350602085013561177281611543565b9250604085013561178281611543565b9150606085013561179281611543565b939692955090935050565b600080858511156117ad57600080fd5b838611156117ba57600080fd5b5050820193919092039150565b803560208310156114a657600019602084900360031b1b1692915050565b60208082526022908201527f4368696c644552433732315072656469636174653a204e4f545f434f4e54524160408201526110d560f21b606082015260800190565b60006020828403121561183957600080fd5b815161164581611543565b60208082526024908201527f4368696c644552433732315072656469636174653a20554e4d41505045445f5460408201526327a5a2a760e11b606082015260800190565b634e487b7160e01b600052600160045260246000fd5b81835260006001600160fb1b038311156118b757600080fd5b8260051b80836020870137939093016020019392505050565b6001600160a01b03841681526040602082018190526000906118f5908301848661189e565b95945050505050565b60006020828403121561191057600080fd5b8151801515811461164557600080fd5b60208082526021908201527f4368696c644552433732315072656469636174653a204255524e5f4641494c456040820152601160fa1b606082015260800190565b8183526000602080850194508260005b8581101561199f57813561198481611543565b6001600160a01b031687529582019590820190600101611971565b509495945050505050565b8781526001600160a01b0387811660208301528616604082015260a0606082018190526000906119dd9083018688611961565b82810360808401526119f081858761189e565b9a9950505050505050505050565b6000815180845260005b81811015611a2457602081850181015186830182015201611a08565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b0383168152604060208201819052600090611a68908301846119fe565b949350505050565b604081526000611a84604083018688611961565b8281036020840152611a9781858761189e565b979650505050505050565b6001600160a01b03929092168252602082015260400190565b60008060008060808587031215611ad157600080fd5b8435611adc81611543565b93506020850135611aec81611543565b92506040850135611afc81611543565b9396929550929360600135925050565b60208082526021908201527f4368696c644552433732315072656469636174653a204d494e545f4641494c456040820152601160fa1b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611b8b57611b8b611b4d565b604052919050565b60006001600160401b03821115611bac57611bac611b4d565b5060051b60200190565b600082601f830112611bc757600080fd5b81356020611bdc611bd783611b93565b611b63565b82815260059290921b84018101918181019086841115611bfb57600080fd5b8286015b84811015611c165780358352918301918301611bff565b509695505050505050565b600080600080600060a08688031215611c3957600080fd5b85359450602080870135611c4c81611543565b94506040870135611c5c81611543565b935060608701356001600160401b0380821115611c7857600080fd5b818901915089601f830112611c8c57600080fd5b8135611c9a611bd782611b93565b81815260059190911b8301840190848101908c831115611cb957600080fd5b938501935b82851015611ce0578435611cd181611543565b82529385019390850190611cbe565b965050506080890135925080831115611cf857600080fd5b5050611d0688828901611bb6565b9150509295509295909350565b604080825283519082018190526000906020906060840190828701845b82811015611d555781516001600160a01b031684529284019290840190600101611d30565b5050508381038285015284518082528583019183019060005b81811015611d8a57835183529284019291840191600101611d6e565b5090979650505050505050565b600082601f830112611da857600080fd5b81356001600160401b03811115611dc157611dc1611b4d565b611dd4601f8201601f1916602001611b63565b818152846020838601011115611de957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611e1c57600080fd5b843593506020850135611e2e81611543565b925060408501356001600160401b0380821115611e4a57600080fd5b611e5688838901611d97565b93506060870135915080821115611e6c57600080fd5b50611e7987828801611d97565b91505092959194509250565b6001600160a01b0384168152606060208201819052600090611ea9908301856119fe565b8281036040840152611ebb81856119fe565b969550505050505056fea2646970667358221220268522f780e7ed46b57e237fb9e8f8739c54134f72de8d5e51d8c11076b4f3d964736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101375760003560e01c8063b68ad1e4116100b8578063e0563ab11161007c578063e0563ab1146102c0578063eeb49945146102c9578063f3fef3a3146102dc578063f6451255146102ef578063f691325c14610316578063f8c8765e1461032957600080fd5b8063b68ad1e414610225578063c3b35a7e14610238578063c5ac2b1c1461024b578063d41f177114610272578063d7c9e3ec1461029957600080fd5b80636f33e695116100ff5780636f33e6951461019f5780637efab4f5146101b4578063947287cf146101dd57806397e5230d146101f4578063b1768065146101fe57600080fd5b806305dc2e8f1461013c5780631bc114ba1461016c578063284017f51461017f5780633b878c221461018857806351351d5314610191575b600080fd5b60345461014f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60335461014f906001600160a01b031681565b61014f61202081565b61014f61101081565b61014f6002600160a01b0381565b6101b26101ad3660046115a6565b61033c565b005b61014f6101c2366004611628565b6037602052600090815260409020546001600160a01b031681565b6101e661520881565b604051908152602001610163565b6101e6620249f081565b6101e67f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b60365461014f906001600160a01b031681565b6101b261024636600461164c565b610350565b6101e67faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d1881565b6101e67f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b6101e67f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed281565b61014f61203081565b6101b26102d736600461168d565b610360565b6101b26102ea366004611715565b610583565b6101e67f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b60355461014f906001600160a01b031681565b6101b2610337366004611741565b610592565b61034985858585856107d1565b5050505050565b61035b838383610ada565b505050565b6034546001600160a01b031633146103d15760405162461bcd60e51b815260206004820152602960248201527f4368696c644552433732315072656469636174653a204f4e4c595f53544154456044820152682fa922a1a2a4ab22a960b91b60648201526084015b60405180910390fd5b6035546001600160a01b038481169116146104405760405162461bcd60e51b815260206004820152602960248201527f4368696c644552433732315072656469636174653a204f4e4c595f524f4f545f60448201526850524544494341544560b81b60648201526084016103c8565b7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82161046f60206000848661179d565b610478916117c7565b036104975761049261048d826020818661179d565b610de3565b61057d565b7faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d186104c660206000848661179d565b6104cf916117c7565b036104de57610492828261104e565b7f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad61050d60206000848661179d565b610516916117c7565b036105255761049282826112a9565b60405162461bcd60e51b815260206004820152602760248201527f4368696c644552433732315072656469636174653a20494e56414c49445f5349604482015266474e415455524560c81b60648201526084016103c8565b50505050565b61058e823383610ada565b5050565b336002600160a01b03146105d65760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b60448201526064016103c8565b600054610100900460ff16158080156105f65750600054600160ff909116105b806106105750303b158015610610575060005460ff166001145b6106735760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103c8565b6000805460ff191660011790558015610696576000805461ff0019166101001790555b6001600160a01b038516158015906106b657506001600160a01b03841615155b80156106ca57506001600160a01b03831615155b80156106de57506001600160a01b03821615155b61073b5760405162461bcd60e51b815260206004820152602860248201527f4368696c644552433732315072656469636174653a204241445f494e495449416044820152672624ad20aa24a7a760c11b60648201526084016103c8565b603380546001600160a01b038088166001600160a01b031992831617909255603480548784169083161790556035805486841690831617905560368054928516929091169190911790558015610349576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b846107db81611417565b6107f75760405162461bcd60e51b81526004016103c8906117e5565b6000866001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085b9190611827565b6001600160a01b0381811660009081526037602052604090205491925088811691161461089a5760405162461bcd60e51b81526004016103c890611844565b6001600160a01b0381166108b0576108b0611888565b306001600160a01b0316876001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091c9190611827565b6001600160a01b03161461093257610932611888565b60405163b2dc5dc360e01b81526001600160a01b0388169063b2dc5dc390610962903390889088906004016118d0565b6020604051808303816000875af1158015610981573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a591906118fe565b6109c15760405162461bcd60e51b81526004016103c890611920565b6033546035546040516001600160a01b03928316926316f19831921690610a18907f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed290869033908d908d908d908d906020016119aa565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610a44929190611a44565b600060405180830381600087803b158015610a5e57600080fd5b505af1158015610a72573d6000803e3d6000fd5b50505050336001600160a01b0316876001600160a01b0316826001600160a01b03167fa80bc76d6e1849a9088a9c00a2aeaa54eeb78f15565a18da3e8873438976f52289898989604051610ac99493929190611a70565b60405180910390a450505050505050565b82610ae481611417565b610b005760405162461bcd60e51b81526004016103c8906117e5565b6000846001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b649190611827565b6001600160a01b03818116600090815260376020526040902054919250868116911614610ba35760405162461bcd60e51b81526004016103c890611844565b6001600160a01b038116610bb957610bb9611888565b306001600160a01b0316856001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c259190611827565b6001600160a01b031614610c3b57610c3b611888565b604051632770a7eb60e21b81526001600160a01b03861690639dc29fac90610c699033908790600401611aa2565b6020604051808303816000875af1158015610c88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cac91906118fe565b610cc85760405162461bcd60e51b81526004016103c890611920565b603354603554604080517f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286960208201526001600160a01b0385811682840152336060830152888116608083015260a08083018990528351808403909101815260c08301938490526316f1983160e01b909352938416936316f1983193610d539391169160c401611a44565b600060405180830381600087803b158015610d6d57600080fd5b505af1158015610d81573d6000803e3d6000fd5b50505050836001600160a01b0316856001600160a01b0316826001600160a01b03167f1e0ef6131232b1090efc3ec1cf7b53aa17f4b7cd8a4f9e033b49ee237379b0133387604051610dd4929190611aa2565b60405180910390a45050505050565b6000808080610df485870187611abb565b6001600160a01b0380851660009081526037602052604090205494985092965090945092501680610e375760405162461bcd60e51b81526004016103c890611844565b610e4081611417565b506000816001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea59190611827565b9050856001600160a01b0316816001600160a01b031614610ec857610ec8611888565b6001600160a01b038116610ede57610ede611888565b306001600160a01b0316826001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4a9190611827565b6001600160a01b031614610f6057610f60611888565b6040516340c10f1960e01b81526001600160a01b038316906340c10f1990610f8e9087908790600401611aa2565b6020604051808303816000875af1158015610fad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd191906118fe565b610fed5760405162461bcd60e51b81526004016103c890611b0c565b836001600160a01b0316826001600160a01b0316876001600160a01b03167f37589fd8c906c19ea68eeb7e6b3e03efc06ff8aa4b1830588eba75f4375b1611888760405161103c929190611aa2565b60405180910390a45050505050505050565b600080808061105f85870187611c21565b6001600160a01b038085166000908152603760205260409020549499509297509095509350169050806110a45760405162461bcd60e51b81526004016103c890611844565b6110ad81611417565b506000816001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111129190611827565b9050856001600160a01b0316816001600160a01b03161461113557611135611888565b6001600160a01b03811661114b5761114b611888565b306001600160a01b0316826001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190611827565b6001600160a01b0316146111cd576111cd611888565b604051637c88e3d960e01b81526001600160a01b03831690637c88e3d9906111fb9087908790600401611d13565b6020604051808303816000875af115801561121a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123e91906118fe565b61125a5760405162461bcd60e51b81526004016103c890611b0c565b846001600160a01b0316826001600160a01b0316876001600160a01b03167fc1b1a5c1b97cc8e5ac82b47496f5ebdadf9c7d119b30a116e2bdafd56f6ed475878760405161103c929190611d13565b600080806112b984860186611e06565b91955093509150506001600160a01b0383166112d7576112d7611888565b6001600160a01b0383811660009081526037602052604090205416156112ff576112ff611888565b6036546040516bffffffffffffffffffffffff19606086901b16602082015260009161134f916001600160a01b0390911690603401604051602081830303815290604052805190602001206114ac565b6001600160a01b038581166000908152603760205260409081902080546001600160a01b031916928416928317905551639065714760e01b8152919250906390657147906113a590879087908790600401611e85565b600060405180830381600087803b1580156113bf57600080fd5b505af11580156113d3573d6000803e3d6000fd5b50506040516001600160a01b038085169350871691507f46bd56f98e1b14fd35691959270a6e1edf7cb8fcd489e0f9dda89e46c0d1ff0d90600090a3505050505050565b6000816001600160a01b03163b60000361143357506000919050565b6040516301ffc9a760e01b81526380ac58cd60e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa92505050801561149a575060408051601f3d908101601f19168201909252611497918101906118fe565b60015b6114a657506000919050565b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166114a65760405162461bcd60e51b8152602060048201526017602482015276115490cc4c4d8dce8818dc99585d194c8819985a5b1959604a1b60448201526064016103c8565b6001600160a01b038116811461155857600080fd5b50565b60008083601f84011261156d57600080fd5b5081356001600160401b0381111561158457600080fd5b6020830191508360208260051b850101111561159f57600080fd5b9250929050565b6000806000806000606086880312156115be57600080fd5b85356115c981611543565b945060208601356001600160401b03808211156115e557600080fd5b6115f189838a0161155b565b9096509450604088013591508082111561160a57600080fd5b506116178882890161155b565b969995985093965092949392505050565b60006020828403121561163a57600080fd5b813561164581611543565b9392505050565b60008060006060848603121561166157600080fd5b833561166c81611543565b9250602084013561167c81611543565b929592945050506040919091013590565b600080600080606085870312156116a357600080fd5b8435935060208501356116b581611543565b925060408501356001600160401b03808211156116d157600080fd5b818701915087601f8301126116e557600080fd5b8135818111156116f457600080fd5b88602082850101111561170657600080fd5b95989497505060200194505050565b6000806040838503121561172857600080fd5b823561173381611543565b946020939093013593505050565b6000806000806080858703121561175757600080fd5b843561176281611543565b9350602085013561177281611543565b9250604085013561178281611543565b9150606085013561179281611543565b939692955090935050565b600080858511156117ad57600080fd5b838611156117ba57600080fd5b5050820193919092039150565b803560208310156114a657600019602084900360031b1b1692915050565b60208082526022908201527f4368696c644552433732315072656469636174653a204e4f545f434f4e54524160408201526110d560f21b606082015260800190565b60006020828403121561183957600080fd5b815161164581611543565b60208082526024908201527f4368696c644552433732315072656469636174653a20554e4d41505045445f5460408201526327a5a2a760e11b606082015260800190565b634e487b7160e01b600052600160045260246000fd5b81835260006001600160fb1b038311156118b757600080fd5b8260051b80836020870137939093016020019392505050565b6001600160a01b03841681526040602082018190526000906118f5908301848661189e565b95945050505050565b60006020828403121561191057600080fd5b8151801515811461164557600080fd5b60208082526021908201527f4368696c644552433732315072656469636174653a204255524e5f4641494c456040820152601160fa1b606082015260800190565b8183526000602080850194508260005b8581101561199f57813561198481611543565b6001600160a01b031687529582019590820190600101611971565b509495945050505050565b8781526001600160a01b0387811660208301528616604082015260a0606082018190526000906119dd9083018688611961565b82810360808401526119f081858761189e565b9a9950505050505050505050565b6000815180845260005b81811015611a2457602081850181015186830182015201611a08565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b0383168152604060208201819052600090611a68908301846119fe565b949350505050565b604081526000611a84604083018688611961565b8281036020840152611a9781858761189e565b979650505050505050565b6001600160a01b03929092168252602082015260400190565b60008060008060808587031215611ad157600080fd5b8435611adc81611543565b93506020850135611aec81611543565b92506040850135611afc81611543565b9396929550929360600135925050565b60208082526021908201527f4368696c644552433732315072656469636174653a204d494e545f4641494c456040820152601160fa1b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611b8b57611b8b611b4d565b604052919050565b60006001600160401b03821115611bac57611bac611b4d565b5060051b60200190565b600082601f830112611bc757600080fd5b81356020611bdc611bd783611b93565b611b63565b82815260059290921b84018101918181019086841115611bfb57600080fd5b8286015b84811015611c165780358352918301918301611bff565b509695505050505050565b600080600080600060a08688031215611c3957600080fd5b85359450602080870135611c4c81611543565b94506040870135611c5c81611543565b935060608701356001600160401b0380821115611c7857600080fd5b818901915089601f830112611c8c57600080fd5b8135611c9a611bd782611b93565b81815260059190911b8301840190848101908c831115611cb957600080fd5b938501935b82851015611ce0578435611cd181611543565b82529385019390850190611cbe565b965050506080890135925080831115611cf857600080fd5b5050611d0688828901611bb6565b9150509295509295909350565b604080825283519082018190526000906020906060840190828701845b82811015611d555781516001600160a01b031684529284019290840190600101611d30565b5050508381038285015284518082528583019183019060005b81811015611d8a57835183529284019291840191600101611d6e565b5090979650505050505050565b600082601f830112611da857600080fd5b81356001600160401b03811115611dc157611dc1611b4d565b611dd4601f8201601f1916602001611b63565b818152846020838601011115611de957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611e1c57600080fd5b843593506020850135611e2e81611543565b925060408501356001600160401b0380821115611e4a57600080fd5b611e5688838901611d97565b93506060870135915080821115611e6c57600080fd5b50611e7987828801611d97565b91505092959194509250565b6001600160a01b0384168152606060208201819052600090611ea9908301856119fe565b8281036040840152611ebb81856119fe565b969550505050505056fea2646970667358221220268522f780e7ed46b57e237fb9e8f8739c54134f72de8d5e51d8c11076b4f3d964736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" var ChildERC1155Artifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"ChildERC1155\",\n \"sourceName\": \"contracts/child/ChildERC1155.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"ApprovalForAll\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"relayerAddress\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"functionSignature\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"MetaTransactionExecuted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"ids\",\n \"type\": \"uint256[]\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"values\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"TransferBatch\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"TransferSingle\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"value\",\n \"type\": \"string\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"URI\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"accounts\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"ids\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"balanceOfBatch\",\n \"outputs\": [\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"burnBatch\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"userAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"functionSignature\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sigR\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"sigS\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"sigV\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"executeMetaTransaction\",\n \"outputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getNonce\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"nonce\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"rootToken_\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name_\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"uri_\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isApprovedForAll\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"accounts\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"mintBatch\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"rootToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"ids\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"safeBatchTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"safeTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setApprovalForAll\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"uri\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b5061295f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100fa5760003560e01c80634e1273f4116100a2578063a22cb46511610071578063a22cb4651461024a578063e61987051461025d578063e985e9c51461026e578063f242432a146102aa578063f5298aca146102bd57600080fd5b80634e1273f4146101f157806357128683146102115780636b20c45414610224578063906571471461023757600080fd5b8062fdd58e146100ff57806301ffc9a7146101255780630c53c51c146101485780630e89341c14610168578063156e29f61461017b5780631f2d00651461018e5780632d0335ab146101b35780632eb2c2d6146101dc575b600080fd5b61011261010d366004611ae8565b6102d0565b6040519081526020015b60405180910390f35b610138610133366004611b28565b61036b565b604051901515815260200161011c565b61015b610156366004611b94565b6103bb565b60405161011c9190611c63565b61015b610176366004611c76565b610699565b610138610189366004611c8f565b61072d565b609f546001600160a01b03165b6040516001600160a01b03909116815260200161011c565b6101126101c1366004611cc2565b6001600160a01b031660009081526006602052604090205490565b6101ef6101ea366004611e26565b61077f565b005b6102046101ff366004611ecf565b6107dd565b60405161011c9190611fd4565b61013861021f36600461202b565b610906565b6101386102323660046120c4565b610a21565b6101ef610245366004612144565b610ac8565b6101ef6102583660046121b3565b610cea565b609e546001600160a01b031661019b565b61013861027c3660046121ef565b6001600160a01b039182166000908152606d6020908152604080832093909416825291909152205460ff1690565b6101ef6102b8366004612222565b610d00565b6101386102cb366004611c8f565b610d57565b60006001600160a01b0383166103405760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000818152606c602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061039c57506001600160e01b031982166303a24d0760e21b145b8061036557506301ffc9a760e01b6001600160e01b0319831614610365565b606060006103fe87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d8f92505050565b90506001600160e01b03196000358116908216036104845760405162461bcd60e51b815260206004820152603d60248201527f66756e6374696f6e5369676e61747572652063616e206e6f74206265206f662060448201527f657865637574654d6574615472616e73616374696f6e206d6574686f640000006064820152608401610337565b604080516060810182526001600160a01b038a16600081815260066020908152848220548452808401929092528351601f8b0183900483028101830185528a815290938301918b908b9081908401838280828437600092019190915250505091525090506104f58982888888610daa565b61054b5760405162461bcd60e51b815260206004820152602160248201527f5369676e657220616e64207369676e617475726520646f206e6f74206d6174636044820152600d60fb1b6064820152608401610337565b600660008a6001600160a01b03166001600160a01b031681526020019081526020016000206000815460010191905081905550600080306001600160a01b03168a8a8d6040516020016105a093929190612286565b60408051601f19818403018152908290526105ba916122ac565b6000604051808303816000865af19150503d80600081146105f7576040519150601f19603f3d011682016040523d82523d6000602084013e6105fc565b606091505b50915091508161064e5760405162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c000000006044820152606401610337565b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b8b338c8c60405161068394939291906122c8565b60405180910390a19a9950505050505050505050565b6060606e80546106a890612314565b80601f01602080910402602001604051908101604052809291908181526020018280546106d490612314565b80156107215780601f106106f657610100808354040283529160200191610721565b820191906000526020600020905b81548152906001019060200180831161070457829003601f168201915b50505050509050919050565b609e546000906001600160a01b0316331461075a5760405162461bcd60e51b81526004016103379061234e565b61077584848460405180602001604052806000815250610e86565b5060019392505050565b610787610f95565b6001600160a01b0316856001600160a01b031614806107ad57506107ad8561027c610f95565b6107c95760405162461bcd60e51b815260040161033790612393565b6107d68585858585610fa4565b5050505050565b606081518351146108425760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610337565b600083516001600160401b0381111561085d5761085d611cdd565b604051908082528060200260200182016040528015610886578160200160208202803683370190505b50905060005b84518110156108fe576108d18582815181106108aa576108aa6123e1565b60200260200101518583815181106108c4576108c46123e1565b60200260200101516102d0565b8282815181106108e3576108e36123e1565b60209081029190910101526108f78161240d565b905061088c565b509392505050565b609e546000906001600160a01b031633146109335760405162461bcd60e51b81526004016103379061234e565b85848114801561094257508083145b61098e5760405162461bcd60e51b815260206004820181905260248201527f4368696c64455243313135353a206172726179206c656e206d69736d617463686044820152606401610337565b60005b81811015610a1257610a0a8989838181106109ae576109ae6123e1565b90506020020160208101906109c39190611cc2565b8888848181106109d5576109d56123e1565b905060200201358787858181106109ee576109ee6123e1565b9050602002013560405180602001604052806000815250610e86565b600101610991565b50600198975050505050505050565b609e546000906001600160a01b03163314610a4e5760405162461bcd60e51b81526004016103379061234e565b610abc8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808a0282810182019093528982529093508992508891829185019084908082843760009201919091525061114692505050565b50600195945050505050565b600754610100900460ff1615808015610ae85750600754600160ff909116105b80610b025750303b158015610b02575060075460ff166001145b610b655760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610337565b6007805460ff191660011790558015610b88576007805461ff0019166101001790555b6001600160a01b038616610bde5760405162461bcd60e51b815260206004820181905260248201527f4368696c64455243313135353a204241445f494e495449414c495a4154494f4e6044820152606401610337565b609f80546001600160a01b0388166001600160a01b031991821617909155609e805490911633179055604080516020601f8501819004810282018101909252838152610c449185908590819084018382808284376000920191909152506112de92505050565b610c9c85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152603160f81b602082015291506113119050565b8015610ce2576007805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b610cfc610cf5610f95565b838361137d565b5050565b610d08610f95565b6001600160a01b0316856001600160a01b03161480610d2e5750610d2e8561027c610f95565b610d4a5760405162461bcd60e51b815260040161033790612393565b6107d6858585858561145d565b609e546000906001600160a01b03163314610d845760405162461bcd60e51b81526004016103379061234e565b610775848484611584565b60008151600003610da257506000919050565b506020015190565b6000806001610dc0610dbb88611684565b611701565b6040805160008152602081018083529290925260ff861690820152606081018790526080810186905260a0016020604051602081039080840390855afa158015610e0e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610e655760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610337565b866001600160a01b0316816001600160a01b03161491505095945050505050565b6001600160a01b038416610ee65760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610337565b6000610ef0610f95565b90506000610efd8561174f565b90506000610f0a8561174f565b90506000868152606c602090815260408083206001600160a01b038b16845290915281208054879290610f3e908490612426565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716916000805160206128c7833981519152910160405180910390a4610f8c8360008989898961179a565b50505050505050565b6000610f9f6118f5565b905090565b8151835114610fc55760405162461bcd60e51b815260040161033790612439565b6001600160a01b038416610feb5760405162461bcd60e51b815260040161033790612481565b6000610ff5610f95565b905060005b84518110156110e0576000858281518110611017576110176123e1565b602002602001015190506000858381518110611035576110356123e1565b6020908102919091018101516000848152606c835260408082206001600160a01b038e1683529093529190912054909150818110156110865760405162461bcd60e51b8152600401610337906124c6565b6000838152606c602090815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906110c5908490612426565b92505081905550505050806110d99061240d565b9050610ffa565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611130929190612510565b60405180910390a4610ce2818787878787611951565b6001600160a01b03831661116c5760405162461bcd60e51b81526004016103379061253e565b805182511461118d5760405162461bcd60e51b815260040161033790612439565b6000611197610f95565b604080516020810190915260009052905060005b83518110156112705760008482815181106111c8576111c86123e1565b6020026020010151905060008483815181106111e6576111e66123e1565b6020908102919091018101516000848152606c835260408082206001600160a01b038c1683529093529190912054909150818110156112375760405162461bcd60e51b815260040161033790612581565b6000928352606c602090815260408085206001600160a01b038b16865290915290922091039055806112688161240d565b9150506111ab565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516112c1929190612510565b60405180910390a460408051602081019091526000905250505050565b600754610100900460ff166113055760405162461bcd60e51b8152600401610337906125c5565b61130e81611a0c565b50565b815160208084019190912082519183019190912060038290556004819055466001557f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61135f818484611a3c565b600055600280546001600160a01b0319163017905560055550505050565b816001600160a01b0316836001600160a01b0316036113f05760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610337565b6001600160a01b038381166000818152606d6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166114835760405162461bcd60e51b815260040161033790612481565b600061148d610f95565b9050600061149a8561174f565b905060006114a78561174f565b90506000868152606c602090815260408083206001600160a01b038c168452909152902054858110156114ec5760405162461bcd60e51b8152600401610337906124c6565b6000878152606c602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061152b908490612426565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816916000805160206128c7833981519152910160405180910390a4611579848a8a8a8a8a61179a565b505050505050505050565b6001600160a01b0383166115aa5760405162461bcd60e51b81526004016103379061253e565b60006115b4610f95565b905060006115c18461174f565b905060006115ce8461174f565b6040805160208082018352600091829052888252606c81528282206001600160a01b038b168352905220549091508481101561161c5760405162461bcd60e51b815260040161033790612581565b6000868152606c602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816916000805160206128c7833981519152910160405180910390a4604080516020810190915260009052610f8c565b60006040518060800160405280604381526020016128e760439139805160209182012083518483015160408087015180519086012090516116e4950193845260208401929092526001600160a01b03166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600061036561170e611a85565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611789576117896123e1565b602090810291909101015292915050565b6001600160a01b0384163b15610ce25760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906117de9089908990889088908890600401612610565b6020604051808303816000875af1925050508015611819575060408051601f3d908101601f1916820190925261181691810190612655565b60015b6118c557611825612672565b806308c379a00361185e575061183961268d565b806118445750611860565b8060405162461bcd60e51b81526004016103379190611c63565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610337565b6001600160e01b0319811663f23a6e6160e01b14610f8c5760405162461bcd60e51b815260040161033790612716565b600030330361194b57600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b0316915061194e9050565b50335b90565b6001600160a01b0384163b15610ce25760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611995908990899088908890889060040161275e565b6020604051808303816000875af19250505080156119d0575060408051601f3d908101601f191682019092526119cd91810190612655565b60015b6119dc57611825612672565b6001600160e01b0319811663bc197c8160e01b14610f8c5760405162461bcd60e51b815260040161033790612716565b600754610100900460ff16611a335760405162461bcd60e51b8152600401610337906125c5565b61130e81611ac0565b6040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6002546000906001600160a01b031630148015611aa3575060015446145b15611aaf575060005490565b610f9f600554600354600454611a3c565b606e610cfc8282612807565b80356001600160a01b0381168114611ae357600080fd5b919050565b60008060408385031215611afb57600080fd5b611b0483611acc565b946020939093013593505050565b6001600160e01b03198116811461130e57600080fd5b600060208284031215611b3a57600080fd5b8135611b4581611b12565b9392505050565b60008083601f840112611b5e57600080fd5b5081356001600160401b03811115611b7557600080fd5b602083019150836020828501011115611b8d57600080fd5b9250929050565b60008060008060008060a08789031215611bad57600080fd5b611bb687611acc565b955060208701356001600160401b03811115611bd157600080fd5b611bdd89828a01611b4c565b9096509450506040870135925060608701359150608087013560ff81168114611c0557600080fd5b809150509295509295509295565b60005b83811015611c2e578181015183820152602001611c16565b50506000910152565b60008151808452611c4f816020860160208601611c13565b601f01601f19169290920160200192915050565b602081526000611b456020830184611c37565b600060208284031215611c8857600080fd5b5035919050565b600080600060608486031215611ca457600080fd5b611cad84611acc565b95602085013595506040909401359392505050565b600060208284031215611cd457600080fd5b611b4582611acc565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715611d1857611d18611cdd565b6040525050565b60006001600160401b03821115611d3857611d38611cdd565b5060051b60200190565b600082601f830112611d5357600080fd5b81356020611d6082611d1f565b604051611d6d8282611cf3565b83815260059390931b8501820192828101915086841115611d8d57600080fd5b8286015b84811015611da85780358352918301918301611d91565b509695505050505050565b600082601f830112611dc457600080fd5b81356001600160401b03811115611ddd57611ddd611cdd565b604051611df4601f8301601f191660200182611cf3565b818152846020838601011115611e0957600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611e3e57600080fd5b611e4786611acc565b9450611e5560208701611acc565b935060408601356001600160401b0380821115611e7157600080fd5b611e7d89838a01611d42565b94506060880135915080821115611e9357600080fd5b611e9f89838a01611d42565b93506080880135915080821115611eb557600080fd5b50611ec288828901611db3565b9150509295509295909350565b60008060408385031215611ee257600080fd5b82356001600160401b0380821115611ef957600080fd5b818501915085601f830112611f0d57600080fd5b81356020611f1a82611d1f565b604051611f278282611cf3565b83815260059390931b8501820192828101915089841115611f4757600080fd5b948201945b83861015611f6c57611f5d86611acc565b82529482019490820190611f4c565b96505086013592505080821115611f8257600080fd5b50611f8f85828601611d42565b9150509250929050565b600081518084526020808501945080840160005b83811015611fc957815187529582019590820190600101611fad565b509495945050505050565b602081526000611b456020830184611f99565b60008083601f840112611ff957600080fd5b5081356001600160401b0381111561201057600080fd5b6020830191508360208260051b8501011115611b8d57600080fd5b6000806000806000806060878903121561204457600080fd5b86356001600160401b038082111561205b57600080fd5b6120678a838b01611fe7565b9098509650602089013591508082111561208057600080fd5b61208c8a838b01611fe7565b909650945060408901359150808211156120a557600080fd5b506120b289828a01611fe7565b979a9699509497509295939492505050565b6000806000806000606086880312156120dc57600080fd5b6120e586611acc565b945060208601356001600160401b038082111561210157600080fd5b61210d89838a01611fe7565b9096509450604088013591508082111561212657600080fd5b5061213388828901611fe7565b969995985093965092949392505050565b60008060008060006060868803121561215c57600080fd5b61216586611acc565b945060208601356001600160401b038082111561218157600080fd5b61218d89838a01611b4c565b909650945060408801359150808211156121a657600080fd5b5061213388828901611b4c565b600080604083850312156121c657600080fd5b6121cf83611acc565b9150602083013580151581146121e457600080fd5b809150509250929050565b6000806040838503121561220257600080fd5b61220b83611acc565b915061221960208401611acc565b90509250929050565b600080600080600060a0868803121561223a57600080fd5b61224386611acc565b945061225160208701611acc565b9350604086013592506060860135915060808601356001600160401b0381111561227a57600080fd5b611ec288828901611db3565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600082516122be818460208701611c13565b9190910192915050565b6001600160a01b0385811682528416602082015260606040820181905281018290526000828460808401376000608084840101526080601f19601f850116830101905095945050505050565b600181811c9082168061232857607f821691505b60208210810361234857634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f4368696c64455243313135353a204f6e6c79207072656469636174652063616e6040820152640818d85b1b60da1b606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161241f5761241f6123f7565b5060010190565b80820180821115610365576103656123f7565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6040815260006125236040830185611f99565b82810360208401526125358185611f99565b95945050505050565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061264a90830184611c37565b979650505050505050565b60006020828403121561266757600080fd5b8151611b4581611b12565b600060033d111561194e5760046000803e5060005160e01c90565b600060443d101561269b5790565b6040516003193d81016004833e81513d6001600160401b0381602484011181841117156126ca57505050505090565b82850191508151818111156126e25750505050505090565b843d87010160208285010111156126fc5750505050505090565b61270b60208286010187611cf3565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a06040820181905260009061278a90830186611f99565b828103606084015261279c8186611f99565b905082810360808401526127b08185611c37565b98975050505050505050565b601f82111561280257600081815260208120601f850160051c810160208610156127e35750805b601f850160051c820191505b81811015610ce2578281556001016127ef565b505050565b81516001600160401b0381111561282057612820611cdd565b6128348161282e8454612314565b846127bc565b602080601f83116001811461286957600084156128515750858301515b600019600386901b1c1916600185901b178555610ce2565b600085815260208120601f198616915b8281101561289857888601518255948401946001909101908401612879565b50858210156128b65787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f624d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529a2646970667358221220693788ee4744d529ea99b60c87a32c48cdba1494cabf179463eb26c57695cf6864736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106100fa5760003560e01c80634e1273f4116100a2578063a22cb46511610071578063a22cb4651461024a578063e61987051461025d578063e985e9c51461026e578063f242432a146102aa578063f5298aca146102bd57600080fd5b80634e1273f4146101f157806357128683146102115780636b20c45414610224578063906571471461023757600080fd5b8062fdd58e146100ff57806301ffc9a7146101255780630c53c51c146101485780630e89341c14610168578063156e29f61461017b5780631f2d00651461018e5780632d0335ab146101b35780632eb2c2d6146101dc575b600080fd5b61011261010d366004611ae8565b6102d0565b6040519081526020015b60405180910390f35b610138610133366004611b28565b61036b565b604051901515815260200161011c565b61015b610156366004611b94565b6103bb565b60405161011c9190611c63565b61015b610176366004611c76565b610699565b610138610189366004611c8f565b61072d565b609f546001600160a01b03165b6040516001600160a01b03909116815260200161011c565b6101126101c1366004611cc2565b6001600160a01b031660009081526006602052604090205490565b6101ef6101ea366004611e26565b61077f565b005b6102046101ff366004611ecf565b6107dd565b60405161011c9190611fd4565b61013861021f36600461202b565b610906565b6101386102323660046120c4565b610a21565b6101ef610245366004612144565b610ac8565b6101ef6102583660046121b3565b610cea565b609e546001600160a01b031661019b565b61013861027c3660046121ef565b6001600160a01b039182166000908152606d6020908152604080832093909416825291909152205460ff1690565b6101ef6102b8366004612222565b610d00565b6101386102cb366004611c8f565b610d57565b60006001600160a01b0383166103405760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000818152606c602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061039c57506001600160e01b031982166303a24d0760e21b145b8061036557506301ffc9a760e01b6001600160e01b0319831614610365565b606060006103fe87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d8f92505050565b90506001600160e01b03196000358116908216036104845760405162461bcd60e51b815260206004820152603d60248201527f66756e6374696f6e5369676e61747572652063616e206e6f74206265206f662060448201527f657865637574654d6574615472616e73616374696f6e206d6574686f640000006064820152608401610337565b604080516060810182526001600160a01b038a16600081815260066020908152848220548452808401929092528351601f8b0183900483028101830185528a815290938301918b908b9081908401838280828437600092019190915250505091525090506104f58982888888610daa565b61054b5760405162461bcd60e51b815260206004820152602160248201527f5369676e657220616e64207369676e617475726520646f206e6f74206d6174636044820152600d60fb1b6064820152608401610337565b600660008a6001600160a01b03166001600160a01b031681526020019081526020016000206000815460010191905081905550600080306001600160a01b03168a8a8d6040516020016105a093929190612286565b60408051601f19818403018152908290526105ba916122ac565b6000604051808303816000865af19150503d80600081146105f7576040519150601f19603f3d011682016040523d82523d6000602084013e6105fc565b606091505b50915091508161064e5760405162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c000000006044820152606401610337565b7f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b8b338c8c60405161068394939291906122c8565b60405180910390a19a9950505050505050505050565b6060606e80546106a890612314565b80601f01602080910402602001604051908101604052809291908181526020018280546106d490612314565b80156107215780601f106106f657610100808354040283529160200191610721565b820191906000526020600020905b81548152906001019060200180831161070457829003601f168201915b50505050509050919050565b609e546000906001600160a01b0316331461075a5760405162461bcd60e51b81526004016103379061234e565b61077584848460405180602001604052806000815250610e86565b5060019392505050565b610787610f95565b6001600160a01b0316856001600160a01b031614806107ad57506107ad8561027c610f95565b6107c95760405162461bcd60e51b815260040161033790612393565b6107d68585858585610fa4565b5050505050565b606081518351146108425760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610337565b600083516001600160401b0381111561085d5761085d611cdd565b604051908082528060200260200182016040528015610886578160200160208202803683370190505b50905060005b84518110156108fe576108d18582815181106108aa576108aa6123e1565b60200260200101518583815181106108c4576108c46123e1565b60200260200101516102d0565b8282815181106108e3576108e36123e1565b60209081029190910101526108f78161240d565b905061088c565b509392505050565b609e546000906001600160a01b031633146109335760405162461bcd60e51b81526004016103379061234e565b85848114801561094257508083145b61098e5760405162461bcd60e51b815260206004820181905260248201527f4368696c64455243313135353a206172726179206c656e206d69736d617463686044820152606401610337565b60005b81811015610a1257610a0a8989838181106109ae576109ae6123e1565b90506020020160208101906109c39190611cc2565b8888848181106109d5576109d56123e1565b905060200201358787858181106109ee576109ee6123e1565b9050602002013560405180602001604052806000815250610e86565b600101610991565b50600198975050505050505050565b609e546000906001600160a01b03163314610a4e5760405162461bcd60e51b81526004016103379061234e565b610abc8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808a0282810182019093528982529093508992508891829185019084908082843760009201919091525061114692505050565b50600195945050505050565b600754610100900460ff1615808015610ae85750600754600160ff909116105b80610b025750303b158015610b02575060075460ff166001145b610b655760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610337565b6007805460ff191660011790558015610b88576007805461ff0019166101001790555b6001600160a01b038616610bde5760405162461bcd60e51b815260206004820181905260248201527f4368696c64455243313135353a204241445f494e495449414c495a4154494f4e6044820152606401610337565b609f80546001600160a01b0388166001600160a01b031991821617909155609e805490911633179055604080516020601f8501819004810282018101909252838152610c449185908590819084018382808284376000920191909152506112de92505050565b610c9c85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805180820190915260018152603160f81b602082015291506113119050565b8015610ce2576007805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b610cfc610cf5610f95565b838361137d565b5050565b610d08610f95565b6001600160a01b0316856001600160a01b03161480610d2e5750610d2e8561027c610f95565b610d4a5760405162461bcd60e51b815260040161033790612393565b6107d6858585858561145d565b609e546000906001600160a01b03163314610d845760405162461bcd60e51b81526004016103379061234e565b610775848484611584565b60008151600003610da257506000919050565b506020015190565b6000806001610dc0610dbb88611684565b611701565b6040805160008152602081018083529290925260ff861690820152606081018790526080810186905260a0016020604051602081039080840390855afa158015610e0e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610e655760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610337565b866001600160a01b0316816001600160a01b03161491505095945050505050565b6001600160a01b038416610ee65760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610337565b6000610ef0610f95565b90506000610efd8561174f565b90506000610f0a8561174f565b90506000868152606c602090815260408083206001600160a01b038b16845290915281208054879290610f3e908490612426565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716916000805160206128c7833981519152910160405180910390a4610f8c8360008989898961179a565b50505050505050565b6000610f9f6118f5565b905090565b8151835114610fc55760405162461bcd60e51b815260040161033790612439565b6001600160a01b038416610feb5760405162461bcd60e51b815260040161033790612481565b6000610ff5610f95565b905060005b84518110156110e0576000858281518110611017576110176123e1565b602002602001015190506000858381518110611035576110356123e1565b6020908102919091018101516000848152606c835260408082206001600160a01b038e1683529093529190912054909150818110156110865760405162461bcd60e51b8152600401610337906124c6565b6000838152606c602090815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906110c5908490612426565b92505081905550505050806110d99061240d565b9050610ffa565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611130929190612510565b60405180910390a4610ce2818787878787611951565b6001600160a01b03831661116c5760405162461bcd60e51b81526004016103379061253e565b805182511461118d5760405162461bcd60e51b815260040161033790612439565b6000611197610f95565b604080516020810190915260009052905060005b83518110156112705760008482815181106111c8576111c86123e1565b6020026020010151905060008483815181106111e6576111e66123e1565b6020908102919091018101516000848152606c835260408082206001600160a01b038c1683529093529190912054909150818110156112375760405162461bcd60e51b815260040161033790612581565b6000928352606c602090815260408085206001600160a01b038b16865290915290922091039055806112688161240d565b9150506111ab565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516112c1929190612510565b60405180910390a460408051602081019091526000905250505050565b600754610100900460ff166113055760405162461bcd60e51b8152600401610337906125c5565b61130e81611a0c565b50565b815160208084019190912082519183019190912060038290556004819055466001557f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61135f818484611a3c565b600055600280546001600160a01b0319163017905560055550505050565b816001600160a01b0316836001600160a01b0316036113f05760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610337565b6001600160a01b038381166000818152606d6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166114835760405162461bcd60e51b815260040161033790612481565b600061148d610f95565b9050600061149a8561174f565b905060006114a78561174f565b90506000868152606c602090815260408083206001600160a01b038c168452909152902054858110156114ec5760405162461bcd60e51b8152600401610337906124c6565b6000878152606c602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061152b908490612426565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816916000805160206128c7833981519152910160405180910390a4611579848a8a8a8a8a61179a565b505050505050505050565b6001600160a01b0383166115aa5760405162461bcd60e51b81526004016103379061253e565b60006115b4610f95565b905060006115c18461174f565b905060006115ce8461174f565b6040805160208082018352600091829052888252606c81528282206001600160a01b038b168352905220549091508481101561161c5760405162461bcd60e51b815260040161033790612581565b6000868152606c602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816916000805160206128c7833981519152910160405180910390a4604080516020810190915260009052610f8c565b60006040518060800160405280604381526020016128e760439139805160209182012083518483015160408087015180519086012090516116e4950193845260208401929092526001600160a01b03166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600061036561170e611a85565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611789576117896123e1565b602090810291909101015292915050565b6001600160a01b0384163b15610ce25760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906117de9089908990889088908890600401612610565b6020604051808303816000875af1925050508015611819575060408051601f3d908101601f1916820190925261181691810190612655565b60015b6118c557611825612672565b806308c379a00361185e575061183961268d565b806118445750611860565b8060405162461bcd60e51b81526004016103379190611c63565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610337565b6001600160e01b0319811663f23a6e6160e01b14610f8c5760405162461bcd60e51b815260040161033790612716565b600030330361194b57600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b0316915061194e9050565b50335b90565b6001600160a01b0384163b15610ce25760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611995908990899088908890889060040161275e565b6020604051808303816000875af19250505080156119d0575060408051601f3d908101601f191682019092526119cd91810190612655565b60015b6119dc57611825612672565b6001600160e01b0319811663bc197c8160e01b14610f8c5760405162461bcd60e51b815260040161033790612716565b600754610100900460ff16611a335760405162461bcd60e51b8152600401610337906125c5565b61130e81611ac0565b6040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6002546000906001600160a01b031630148015611aa3575060015446145b15611aaf575060005490565b610f9f600554600354600454611a3c565b606e610cfc8282612807565b80356001600160a01b0381168114611ae357600080fd5b919050565b60008060408385031215611afb57600080fd5b611b0483611acc565b946020939093013593505050565b6001600160e01b03198116811461130e57600080fd5b600060208284031215611b3a57600080fd5b8135611b4581611b12565b9392505050565b60008083601f840112611b5e57600080fd5b5081356001600160401b03811115611b7557600080fd5b602083019150836020828501011115611b8d57600080fd5b9250929050565b60008060008060008060a08789031215611bad57600080fd5b611bb687611acc565b955060208701356001600160401b03811115611bd157600080fd5b611bdd89828a01611b4c565b9096509450506040870135925060608701359150608087013560ff81168114611c0557600080fd5b809150509295509295509295565b60005b83811015611c2e578181015183820152602001611c16565b50506000910152565b60008151808452611c4f816020860160208601611c13565b601f01601f19169290920160200192915050565b602081526000611b456020830184611c37565b600060208284031215611c8857600080fd5b5035919050565b600080600060608486031215611ca457600080fd5b611cad84611acc565b95602085013595506040909401359392505050565b600060208284031215611cd457600080fd5b611b4582611acc565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715611d1857611d18611cdd565b6040525050565b60006001600160401b03821115611d3857611d38611cdd565b5060051b60200190565b600082601f830112611d5357600080fd5b81356020611d6082611d1f565b604051611d6d8282611cf3565b83815260059390931b8501820192828101915086841115611d8d57600080fd5b8286015b84811015611da85780358352918301918301611d91565b509695505050505050565b600082601f830112611dc457600080fd5b81356001600160401b03811115611ddd57611ddd611cdd565b604051611df4601f8301601f191660200182611cf3565b818152846020838601011115611e0957600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611e3e57600080fd5b611e4786611acc565b9450611e5560208701611acc565b935060408601356001600160401b0380821115611e7157600080fd5b611e7d89838a01611d42565b94506060880135915080821115611e9357600080fd5b611e9f89838a01611d42565b93506080880135915080821115611eb557600080fd5b50611ec288828901611db3565b9150509295509295909350565b60008060408385031215611ee257600080fd5b82356001600160401b0380821115611ef957600080fd5b818501915085601f830112611f0d57600080fd5b81356020611f1a82611d1f565b604051611f278282611cf3565b83815260059390931b8501820192828101915089841115611f4757600080fd5b948201945b83861015611f6c57611f5d86611acc565b82529482019490820190611f4c565b96505086013592505080821115611f8257600080fd5b50611f8f85828601611d42565b9150509250929050565b600081518084526020808501945080840160005b83811015611fc957815187529582019590820190600101611fad565b509495945050505050565b602081526000611b456020830184611f99565b60008083601f840112611ff957600080fd5b5081356001600160401b0381111561201057600080fd5b6020830191508360208260051b8501011115611b8d57600080fd5b6000806000806000806060878903121561204457600080fd5b86356001600160401b038082111561205b57600080fd5b6120678a838b01611fe7565b9098509650602089013591508082111561208057600080fd5b61208c8a838b01611fe7565b909650945060408901359150808211156120a557600080fd5b506120b289828a01611fe7565b979a9699509497509295939492505050565b6000806000806000606086880312156120dc57600080fd5b6120e586611acc565b945060208601356001600160401b038082111561210157600080fd5b61210d89838a01611fe7565b9096509450604088013591508082111561212657600080fd5b5061213388828901611fe7565b969995985093965092949392505050565b60008060008060006060868803121561215c57600080fd5b61216586611acc565b945060208601356001600160401b038082111561218157600080fd5b61218d89838a01611b4c565b909650945060408801359150808211156121a657600080fd5b5061213388828901611b4c565b600080604083850312156121c657600080fd5b6121cf83611acc565b9150602083013580151581146121e457600080fd5b809150509250929050565b6000806040838503121561220257600080fd5b61220b83611acc565b915061221960208401611acc565b90509250929050565b600080600080600060a0868803121561223a57600080fd5b61224386611acc565b945061225160208701611acc565b9350604086013592506060860135915060808601356001600160401b0381111561227a57600080fd5b611ec288828901611db3565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600082516122be818460208701611c13565b9190910192915050565b6001600160a01b0385811682528416602082015260606040820181905281018290526000828460808401376000608084840101526080601f19601f850116830101905095945050505050565b600181811c9082168061232857607f821691505b60208210810361234857634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f4368696c64455243313135353a204f6e6c79207072656469636174652063616e6040820152640818d85b1b60da1b606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161241f5761241f6123f7565b5060010190565b80820180821115610365576103656123f7565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6040815260006125236040830185611f99565b82810360208401526125358185611f99565b95945050505050565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061264a90830184611c37565b979650505050505050565b60006020828403121561266757600080fd5b8151611b4581611b12565b600060033d111561194e5760046000803e5060005160e01c90565b600060443d101561269b5790565b6040516003193d81016004833e81513d6001600160401b0381602484011181841117156126ca57505050505090565b82850191508151818111156126e25750505050505090565b843d87010160208285010111156126fc5750505050505090565b61270b60208286010187611cf3565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b0386811682528516602082015260a06040820181905260009061278a90830186611f99565b828103606084015261279c8186611f99565b905082810360808401526127b08185611c37565b98975050505050505050565b601f82111561280257600081815260208120601f850160051c810160208610156127e35750805b601f850160051c820191505b81811015610ce2578281556001016127ef565b505050565b81516001600160401b0381111561282057612820611cdd565b6128348161282e8454612314565b846127bc565b602080601f83116001811461286957600084156128515750858301515b600019600386901b1c1916600185901b178555610ce2565b600085815260208120601f198616915b8281101561289857888601518255948401946001909101908401612879565b50858210156128b65787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f624d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529a2646970667358221220693788ee4744d529ea99b60c87a32c48cdba1494cabf179463eb26c57695cf6864736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" var ChildERC1155PredicateArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"ChildERC1155Predicate\",\n \"sourceName\": \"contracts/child/ChildERC1155Predicate.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"only\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"Unauthorized\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"L2ERC1155Deposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address[]\",\n \"name\": \"receivers\",\n \"type\": \"address[]\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"L2ERC1155DepositBatch\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"L2ERC1155Withdraw\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address[]\",\n \"name\": \"receivers\",\n \"type\": \"address[]\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"L2ERC1155WithdrawBatch\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"L2TokenMapped\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEPOSIT_BATCH_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEPOSIT_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAP_TOKEN_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TOKEN_CONTRACT\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"NATIVE_TRANSFER_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"SYSTEM\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"VALIDATOR_PKCHECK_PRECOMPILE_GAS\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WITHDRAW_BATCH_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WITHDRAW_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"childTokenTemplate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newL2StateSender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newStateReceiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newRootERC1155Predicate\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newChildTokenTemplate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"l2StateSender\",\n \"outputs\": [\n {\n \"internalType\": \"contract IStateSender\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"onStateReceive\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"rootERC1155Predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"rootTokenToChildToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"stateReceiver\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IChildERC1155\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IChildERC1155\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address[]\",\n \"name\": \"receivers\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"withdrawBatch\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IChildERC1155\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"withdrawTo\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50611fc9806100206000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063b1768065116100b8578063d41f17711161007c578063d41f177114610298578063d7c9e3ec146102bf578063e0563ab1146102e6578063eeb49945146102ef578063f645125514610302578063f8c8765e1461032957600080fd5b8063b176806514610211578063b5c5f67214610238578063b68ad1e41461024b578063b8cd3ec01461025e578063c5ac2b1c1461027157600080fd5b806351351d53116100ff57806351351d53146101a45780637efab4f5146101b257806386937eb4146101db578063947287cf146101f057806397e5230d1461020757600080fd5b8063051eb2e21461013c57806305dc2e8f1461016c5780631bc114ba1461017f578063284017f5146101925780633b878c221461019b575b600080fd5b60355461014f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60345461014f906001600160a01b031681565b60335461014f906001600160a01b031681565b61014f61202081565b61014f61101081565b61014f6002600160a01b0381565b61014f6101c0366004611574565b6037602052600090815260409020546001600160a01b031681565b6101ee6101e93660046115e3565b61033c565b005b6101f961520881565b604051908152602001610163565b6101f9620249f081565b6101f97f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b6101ee61024636600461168f565b610354565b60365461014f906001600160a01b031681565b6101ee61026c3660046116c4565b610365565b6101f97faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d1881565b6101f97f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b6101f97f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed281565b61014f61203081565b6101ee6102fd36600461170a565b610377565b6101f97f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b6101ee610337366004611792565b610597565b61034b878787878787876107d8565b50505050505050565b61036083338484610aeb565b505050565b61037184848484610aeb565b50505050565b6034546001600160a01b031633146103e95760405162461bcd60e51b815260206004820152602a60248201527f4368696c64455243313135355072656469636174653a204f4e4c595f5354415460448201526922afa922a1a2a4ab22a960b11b60648201526084015b60405180910390fd5b6035546001600160a01b038481169116146104595760405162461bcd60e51b815260206004820152602a60248201527f4368696c64455243313135355072656469636174653a204f4e4c595f524f4f546044820152695f50524544494341544560b01b60648201526084016103e0565b7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f8216104886020600084866117ee565b61049191611818565b036104b0576104ab6104a682602081866117ee565b610e00565b610371565b7faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d186104df6020600084866117ee565b6104e891611818565b036104f7576104ab8282611060565b7f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad6105266020600084866117ee565b61052f91611818565b0361053e576104ab82826112c2565b60405162461bcd60e51b815260206004820152602860248201527f4368696c64455243313135355072656469636174653a20494e56414c49445f5360448201526749474e415455524560c01b60648201526084016103e0565b336002600160a01b03146105db5760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b60448201526064016103e0565b600054610100900460ff16158080156105fb5750600054600160ff909116105b806106155750303b158015610615575060005460ff166001145b6106785760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103e0565b6000805460ff19166001179055801561069b576000805461ff0019166101001790555b6001600160a01b038516158015906106bb57506001600160a01b03841615155b80156106cf57506001600160a01b03831615155b80156106e357506001600160a01b03821615155b6107415760405162461bcd60e51b815260206004820152602960248201527f4368696c64455243313135355072656469636174653a204241445f494e49544960448201526820a624ad20aa24a7a760b91b60648201526084016103e0565b603380546001600160a01b038088166001600160a01b0319928316179092556034805487841690831617905560358054868416908316179055603680549285169290911691909117905580156107d1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b866107e281611430565b6107fe5760405162461bcd60e51b81526004016103e090611836565b6000886001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108629190611879565b6001600160a01b038181166000908152603760205260409020549192508a81169116146108a15760405162461bcd60e51b81526004016103e090611896565b6001600160a01b0381166108b7576108b76118db565b306001600160a01b0316896001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109239190611879565b6001600160a01b031614610939576109396118db565b604051631ac8311560e21b81526001600160a01b038a1690636b20c4549061096d9033908a908a908a908a90600401611923565b6020604051808303816000875af115801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b09190611967565b6109cc5760405162461bcd60e51b81526004016103e090611989565b6033546035546040516001600160a01b03928316926316f19831921690610a23907f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed290869033908f908f908f908f90602001611a14565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610a4f929190611aae565b600060405180830381600087803b158015610a6957600080fd5b505af1158015610a7d573d6000803e3d6000fd5b50505050336001600160a01b0316896001600160a01b0316826001600160a01b03167f7a10660242ca367951ff3777cdb3c2a761e3ccad204bac118501e24693f3683d8b8b8b8b8b8b604051610ad896959493929190611ada565b60405180910390a4505050505050505050565b83610af581611430565b610b115760405162461bcd60e51b81526004016103e090611836565b6000856001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b759190611879565b6001600160a01b03818116600090815260376020526040902054919250878116911614610bb45760405162461bcd60e51b81526004016103e090611896565b6001600160a01b038116610bca57610bca6118db565b306001600160a01b0316866001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c369190611879565b6001600160a01b031614610c4c57610c4c6118db565b604051637a94c56560e11b81526001600160a01b0387169063f5298aca90610c7c90339088908890600401611b23565b6020604051808303816000875af1158015610c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbf9190611967565b610cdb5760405162461bcd60e51b81526004016103e090611989565b603354603554604080517f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286960208201526001600160a01b0385811682840152336060830152898116608083015260a0820189905260c08083018990528351808403909101815260e08301938490526316f1983160e01b909352938416936316f1983193610d6d9391169160e401611aae565b600060405180830381600087803b158015610d8757600080fd5b505af1158015610d9b573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316826001600160a01b03167f2ca9093e8b5356801039806c6a08003e5b7013fb8ae48f720fc90fc1c1a8bec2338888604051610df093929190611b23565b60405180910390a4505050505050565b600080808080610e1286880188611b44565b6001600160a01b03808616600090815260376020526040902054959a50939850919650945092501680610e575760405162461bcd60e51b81526004016103e090611896565b610e6081611430565b506000816001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec59190611879565b9050866001600160a01b0316816001600160a01b031614610ee857610ee86118db565b6001600160a01b038116610efe57610efe6118db565b306001600160a01b0316826001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6a9190611879565b6001600160a01b031614610f8057610f806118db565b604051630ab714fb60e11b81526001600160a01b0383169063156e29f690610fb090889088908890600401611b23565b6020604051808303816000875af1158015610fcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff39190611967565b61100f5760405162461bcd60e51b81526004016103e090611b9f565b846001600160a01b0316826001600160a01b0316886001600160a01b03167f2930d932c1cccd6add2e0e2d706ede9015db8a194405f2a3e1783703515e104f898888604051610ad893929190611b23565b60008080808061107286880188611cb5565b6001600160a01b03808616600090815260376020526040902054959b5093995091975095509350169050806110b95760405162461bcd60e51b81526004016103e090611896565b6110c281611430565b506000816001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015611103573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111279190611879565b9050866001600160a01b0316816001600160a01b03161461114a5761114a6118db565b6001600160a01b038116611160576111606118db565b306001600160a01b0316826001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cc9190611879565b6001600160a01b0316146111e2576111e26118db565b604051635712868360e01b81526001600160a01b0383169063571286839061121290889088908890600401611dfa565b6020604051808303816000875af1158015611231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112559190611967565b6112715760405162461bcd60e51b81526004016103e090611b9f565b856001600160a01b0316826001600160a01b0316886001600160a01b03167f17304b99f8dfa5a2b8dd5695d82f9947c2abfbc9cb64bab610b9a1a0feadb9a0888888604051610ad893929190611dfa565b600080806112d284860186611ede565b91955093509150506001600160a01b0383166112f0576112f06118db565b6001600160a01b038381166000908152603760205260409020541615611318576113186118db565b6036546040516bffffffffffffffffffffffff19606086901b166020820152600091611368916001600160a01b0390911690603401604051602081830303815290604052805190602001206114c5565b6001600160a01b038581166000908152603760205260409081902080546001600160a01b031916928416928317905551639065714760e01b8152919250906390657147906113be90879087908790600401611f5d565b600060405180830381600087803b1580156113d857600080fd5b505af11580156113ec573d6000803e3d6000fd5b50506040516001600160a01b038085169350871691507f46bd56f98e1b14fd35691959270a6e1edf7cb8fcd489e0f9dda89e46c0d1ff0d90600090a3505050505050565b6000816001600160a01b03163b60000361144c57506000919050565b6040516301ffc9a760e01b8152636cdb3d1360e11b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa9250505080156114b3575060408051601f3d908101601f191682019092526114b091810190611967565b60015b6114bf57506000919050565b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166114bf5760405162461bcd60e51b8152602060048201526017602482015276115490cc4c4d8dce8818dc99585d194c8819985a5b1959604a1b60448201526064016103e0565b6001600160a01b038116811461157157600080fd5b50565b60006020828403121561158657600080fd5b81356115918161155c565b9392505050565b60008083601f8401126115aa57600080fd5b5081356001600160401b038111156115c157600080fd5b6020830191508360208260051b85010111156115dc57600080fd5b9250929050565b60008060008060008060006080888a0312156115fe57600080fd5b87356116098161155c565b965060208801356001600160401b038082111561162557600080fd5b6116318b838c01611598565b909850965060408a013591508082111561164a57600080fd5b6116568b838c01611598565b909650945060608a013591508082111561166f57600080fd5b5061167c8a828b01611598565b989b979a50959850939692959293505050565b6000806000606084860312156116a457600080fd5b83356116af8161155c565b95602085013595506040909401359392505050565b600080600080608085870312156116da57600080fd5b84356116e58161155c565b935060208501356116f58161155c565b93969395505050506040820135916060013590565b6000806000806060858703121561172057600080fd5b8435935060208501356117328161155c565b925060408501356001600160401b038082111561174e57600080fd5b818701915087601f83011261176257600080fd5b81358181111561177157600080fd5b88602082850101111561178357600080fd5b95989497505060200194505050565b600080600080608085870312156117a857600080fd5b84356117b38161155c565b935060208501356117c38161155c565b925060408501356117d38161155c565b915060608501356117e38161155c565b939692955090935050565b600080858511156117fe57600080fd5b8386111561180b57600080fd5b5050820193919092039150565b803560208310156114bf57600019602084900360031b1b1692915050565b60208082526023908201527f4368696c64455243313135355072656469636174653a204e4f545f434f4e54526040820152621050d560ea1b606082015260800190565b60006020828403121561188b57600080fd5b81516115918161155c565b60208082526025908201527f4368696c64455243313135355072656469636174653a20554e4d41505045445f6040820152642a27a5a2a760d91b606082015260800190565b634e487b7160e01b600052600160045260246000fd5b81835260006001600160fb1b0383111561190a57600080fd5b8260051b80836020870137939093016020019392505050565b6001600160a01b038616815260606020820181905260009061194890830186886118f1565b828103604084015261195b8185876118f1565b98975050505050505050565b60006020828403121561197957600080fd5b8151801515811461159157600080fd5b60208082526022908201527f4368696c64455243313135355072656469636174653a204255524e5f4641494c604082015261115160f21b606082015260800190565b8183526000602080850194508260005b85811015611a095781356119ee8161155c565b6001600160a01b0316875295820195908201906001016119db565b509495945050505050565b8781526001600160a01b0387811660208301528616604082015260a060608201819052600090611a4790830186886119cb565b8281036080840152611a5a8185876118f1565b9a9950505050505050505050565b6000815180845260005b81811015611a8e57602081850181015186830182015201611a72565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b0383168152604060208201819052600090611ad290830184611a68565b949350505050565b606081526000611aee60608301888a6119cb565b8281036020840152611b018187896118f1565b90508281036040840152611b168185876118f1565b9998505050505050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b600080600080600060a08688031215611b5c57600080fd5b8535611b678161155c565b94506020860135611b778161155c565b93506040860135611b878161155c565b94979396509394606081013594506080013592915050565b60208082526022908201527f4368696c64455243313135355072656469636174653a204d494e545f4641494c604082015261115160f21b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611c1f57611c1f611be1565b604052919050565b60006001600160401b03821115611c4057611c40611be1565b5060051b60200190565b600082601f830112611c5b57600080fd5b81356020611c70611c6b83611c27565b611bf7565b82815260059290921b84018101918181019086841115611c8f57600080fd5b8286015b84811015611caa5780358352918301918301611c93565b509695505050505050565b60008060008060008060c08789031215611cce57600080fd5b86359550602080880135611ce18161155c565b95506040880135611cf18161155c565b945060608801356001600160401b0380821115611d0d57600080fd5b818a0191508a601f830112611d2157600080fd5b8135611d2f611c6b82611c27565b81815260059190911b8301840190848101908d831115611d4e57600080fd5b938501935b82851015611d75578435611d668161155c565b82529385019390850190611d53565b9750505060808a0135925080831115611d8d57600080fd5b611d998b848c01611c4a565b945060a08a0135925080831115611daf57600080fd5b5050611dbd89828a01611c4a565b9150509295509295509295565b600081518084526020808501945080840160005b83811015611a0957815187529582019590820190600101611dde565b606080825284519082018190526000906020906080840190828801845b82811015611e3c5781516001600160a01b031684529284019290840190600101611e17565b50505083810382850152611e508187611dca565b9150508281036040840152611e658185611dca565b9695505050505050565b600082601f830112611e8057600080fd5b81356001600160401b03811115611e9957611e99611be1565b611eac601f8201601f1916602001611bf7565b818152846020838601011115611ec157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611ef457600080fd5b843593506020850135611f068161155c565b925060408501356001600160401b0380821115611f2257600080fd5b611f2e88838901611e6f565b93506060870135915080821115611f4457600080fd5b50611f5187828801611e6f565b91505092959194509250565b6001600160a01b0384168152606060208201819052600090611f8190830185611a68565b8281036040840152611e658185611a6856fea26469706673582212201ed89c216eb47fcbbc51cfdbe2b73978014571416bcaced7c409df960042759664736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101375760003560e01c8063b1768065116100b8578063d41f17711161007c578063d41f177114610298578063d7c9e3ec146102bf578063e0563ab1146102e6578063eeb49945146102ef578063f645125514610302578063f8c8765e1461032957600080fd5b8063b176806514610211578063b5c5f67214610238578063b68ad1e41461024b578063b8cd3ec01461025e578063c5ac2b1c1461027157600080fd5b806351351d53116100ff57806351351d53146101a45780637efab4f5146101b257806386937eb4146101db578063947287cf146101f057806397e5230d1461020757600080fd5b8063051eb2e21461013c57806305dc2e8f1461016c5780631bc114ba1461017f578063284017f5146101925780633b878c221461019b575b600080fd5b60355461014f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b60345461014f906001600160a01b031681565b60335461014f906001600160a01b031681565b61014f61202081565b61014f61101081565b61014f6002600160a01b0381565b61014f6101c0366004611574565b6037602052600090815260409020546001600160a01b031681565b6101ee6101e93660046115e3565b61033c565b005b6101f961520881565b604051908152602001610163565b6101f9620249f081565b6101f97f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b6101ee61024636600461168f565b610354565b60365461014f906001600160a01b031681565b6101ee61026c3660046116c4565b610365565b6101f97faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d1881565b6101f97f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b6101f97f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed281565b61014f61203081565b6101ee6102fd36600461170a565b610377565b6101f97f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b6101ee610337366004611792565b610597565b61034b878787878787876107d8565b50505050505050565b61036083338484610aeb565b505050565b61037184848484610aeb565b50505050565b6034546001600160a01b031633146103e95760405162461bcd60e51b815260206004820152602a60248201527f4368696c64455243313135355072656469636174653a204f4e4c595f5354415460448201526922afa922a1a2a4ab22a960b11b60648201526084015b60405180910390fd5b6035546001600160a01b038481169116146104595760405162461bcd60e51b815260206004820152602a60248201527f4368696c64455243313135355072656469636174653a204f4e4c595f524f4f546044820152695f50524544494341544560b01b60648201526084016103e0565b7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f8216104886020600084866117ee565b61049191611818565b036104b0576104ab6104a682602081866117ee565b610e00565b610371565b7faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d186104df6020600084866117ee565b6104e891611818565b036104f7576104ab8282611060565b7f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad6105266020600084866117ee565b61052f91611818565b0361053e576104ab82826112c2565b60405162461bcd60e51b815260206004820152602860248201527f4368696c64455243313135355072656469636174653a20494e56414c49445f5360448201526749474e415455524560c01b60648201526084016103e0565b336002600160a01b03146105db5760405163973d02cb60e01b815260206004820152600a60248201526914d654d5115350d0531360b21b60448201526064016103e0565b600054610100900460ff16158080156105fb5750600054600160ff909116105b806106155750303b158015610615575060005460ff166001145b6106785760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103e0565b6000805460ff19166001179055801561069b576000805461ff0019166101001790555b6001600160a01b038516158015906106bb57506001600160a01b03841615155b80156106cf57506001600160a01b03831615155b80156106e357506001600160a01b03821615155b6107415760405162461bcd60e51b815260206004820152602960248201527f4368696c64455243313135355072656469636174653a204241445f494e49544960448201526820a624ad20aa24a7a760b91b60648201526084016103e0565b603380546001600160a01b038088166001600160a01b0319928316179092556034805487841690831617905560358054868416908316179055603680549285169290911691909117905580156107d1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b866107e281611430565b6107fe5760405162461bcd60e51b81526004016103e090611836565b6000886001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108629190611879565b6001600160a01b038181166000908152603760205260409020549192508a81169116146108a15760405162461bcd60e51b81526004016103e090611896565b6001600160a01b0381166108b7576108b76118db565b306001600160a01b0316896001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109239190611879565b6001600160a01b031614610939576109396118db565b604051631ac8311560e21b81526001600160a01b038a1690636b20c4549061096d9033908a908a908a908a90600401611923565b6020604051808303816000875af115801561098c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b09190611967565b6109cc5760405162461bcd60e51b81526004016103e090611989565b6033546035546040516001600160a01b03928316926316f19831921690610a23907f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed290869033908f908f908f908f90602001611a14565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610a4f929190611aae565b600060405180830381600087803b158015610a6957600080fd5b505af1158015610a7d573d6000803e3d6000fd5b50505050336001600160a01b0316896001600160a01b0316826001600160a01b03167f7a10660242ca367951ff3777cdb3c2a761e3ccad204bac118501e24693f3683d8b8b8b8b8b8b604051610ad896959493929190611ada565b60405180910390a4505050505050505050565b83610af581611430565b610b115760405162461bcd60e51b81526004016103e090611836565b6000856001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b759190611879565b6001600160a01b03818116600090815260376020526040902054919250878116911614610bb45760405162461bcd60e51b81526004016103e090611896565b6001600160a01b038116610bca57610bca6118db565b306001600160a01b0316866001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c369190611879565b6001600160a01b031614610c4c57610c4c6118db565b604051637a94c56560e11b81526001600160a01b0387169063f5298aca90610c7c90339088908890600401611b23565b6020604051808303816000875af1158015610c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbf9190611967565b610cdb5760405162461bcd60e51b81526004016103e090611989565b603354603554604080517f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286960208201526001600160a01b0385811682840152336060830152898116608083015260a0820189905260c08083018990528351808403909101815260e08301938490526316f1983160e01b909352938416936316f1983193610d6d9391169160e401611aae565b600060405180830381600087803b158015610d8757600080fd5b505af1158015610d9b573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b0316826001600160a01b03167f2ca9093e8b5356801039806c6a08003e5b7013fb8ae48f720fc90fc1c1a8bec2338888604051610df093929190611b23565b60405180910390a4505050505050565b600080808080610e1286880188611b44565b6001600160a01b03808616600090815260376020526040902054959a50939850919650945092501680610e575760405162461bcd60e51b81526004016103e090611896565b610e6081611430565b506000816001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec59190611879565b9050866001600160a01b0316816001600160a01b031614610ee857610ee86118db565b6001600160a01b038116610efe57610efe6118db565b306001600160a01b0316826001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6a9190611879565b6001600160a01b031614610f8057610f806118db565b604051630ab714fb60e11b81526001600160a01b0383169063156e29f690610fb090889088908890600401611b23565b6020604051808303816000875af1158015610fcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff39190611967565b61100f5760405162461bcd60e51b81526004016103e090611b9f565b846001600160a01b0316826001600160a01b0316886001600160a01b03167f2930d932c1cccd6add2e0e2d706ede9015db8a194405f2a3e1783703515e104f898888604051610ad893929190611b23565b60008080808061107286880188611cb5565b6001600160a01b03808616600090815260376020526040902054959b5093995091975095509350169050806110b95760405162461bcd60e51b81526004016103e090611896565b6110c281611430565b506000816001600160a01b0316631f2d00656040518163ffffffff1660e01b8152600401602060405180830381865afa158015611103573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111279190611879565b9050866001600160a01b0316816001600160a01b03161461114a5761114a6118db565b6001600160a01b038116611160576111606118db565b306001600160a01b0316826001600160a01b031663e61987056040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cc9190611879565b6001600160a01b0316146111e2576111e26118db565b604051635712868360e01b81526001600160a01b0383169063571286839061121290889088908890600401611dfa565b6020604051808303816000875af1158015611231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112559190611967565b6112715760405162461bcd60e51b81526004016103e090611b9f565b856001600160a01b0316826001600160a01b0316886001600160a01b03167f17304b99f8dfa5a2b8dd5695d82f9947c2abfbc9cb64bab610b9a1a0feadb9a0888888604051610ad893929190611dfa565b600080806112d284860186611ede565b91955093509150506001600160a01b0383166112f0576112f06118db565b6001600160a01b038381166000908152603760205260409020541615611318576113186118db565b6036546040516bffffffffffffffffffffffff19606086901b166020820152600091611368916001600160a01b0390911690603401604051602081830303815290604052805190602001206114c5565b6001600160a01b038581166000908152603760205260409081902080546001600160a01b031916928416928317905551639065714760e01b8152919250906390657147906113be90879087908790600401611f5d565b600060405180830381600087803b1580156113d857600080fd5b505af11580156113ec573d6000803e3d6000fd5b50506040516001600160a01b038085169350871691507f46bd56f98e1b14fd35691959270a6e1edf7cb8fcd489e0f9dda89e46c0d1ff0d90600090a3505050505050565b6000816001600160a01b03163b60000361144c57506000919050565b6040516301ffc9a760e01b8152636cdb3d1360e11b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa9250505080156114b3575060408051601f3d908101601f191682019092526114b091810190611967565b60015b6114bf57506000919050565b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b0381166114bf5760405162461bcd60e51b8152602060048201526017602482015276115490cc4c4d8dce8818dc99585d194c8819985a5b1959604a1b60448201526064016103e0565b6001600160a01b038116811461157157600080fd5b50565b60006020828403121561158657600080fd5b81356115918161155c565b9392505050565b60008083601f8401126115aa57600080fd5b5081356001600160401b038111156115c157600080fd5b6020830191508360208260051b85010111156115dc57600080fd5b9250929050565b60008060008060008060006080888a0312156115fe57600080fd5b87356116098161155c565b965060208801356001600160401b038082111561162557600080fd5b6116318b838c01611598565b909850965060408a013591508082111561164a57600080fd5b6116568b838c01611598565b909650945060608a013591508082111561166f57600080fd5b5061167c8a828b01611598565b989b979a50959850939692959293505050565b6000806000606084860312156116a457600080fd5b83356116af8161155c565b95602085013595506040909401359392505050565b600080600080608085870312156116da57600080fd5b84356116e58161155c565b935060208501356116f58161155c565b93969395505050506040820135916060013590565b6000806000806060858703121561172057600080fd5b8435935060208501356117328161155c565b925060408501356001600160401b038082111561174e57600080fd5b818701915087601f83011261176257600080fd5b81358181111561177157600080fd5b88602082850101111561178357600080fd5b95989497505060200194505050565b600080600080608085870312156117a857600080fd5b84356117b38161155c565b935060208501356117c38161155c565b925060408501356117d38161155c565b915060608501356117e38161155c565b939692955090935050565b600080858511156117fe57600080fd5b8386111561180b57600080fd5b5050820193919092039150565b803560208310156114bf57600019602084900360031b1b1692915050565b60208082526023908201527f4368696c64455243313135355072656469636174653a204e4f545f434f4e54526040820152621050d560ea1b606082015260800190565b60006020828403121561188b57600080fd5b81516115918161155c565b60208082526025908201527f4368696c64455243313135355072656469636174653a20554e4d41505045445f6040820152642a27a5a2a760d91b606082015260800190565b634e487b7160e01b600052600160045260246000fd5b81835260006001600160fb1b0383111561190a57600080fd5b8260051b80836020870137939093016020019392505050565b6001600160a01b038616815260606020820181905260009061194890830186886118f1565b828103604084015261195b8185876118f1565b98975050505050505050565b60006020828403121561197957600080fd5b8151801515811461159157600080fd5b60208082526022908201527f4368696c64455243313135355072656469636174653a204255524e5f4641494c604082015261115160f21b606082015260800190565b8183526000602080850194508260005b85811015611a095781356119ee8161155c565b6001600160a01b0316875295820195908201906001016119db565b509495945050505050565b8781526001600160a01b0387811660208301528616604082015260a060608201819052600090611a4790830186886119cb565b8281036080840152611a5a8185876118f1565b9a9950505050505050505050565b6000815180845260005b81811015611a8e57602081850181015186830182015201611a72565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160a01b0383168152604060208201819052600090611ad290830184611a68565b949350505050565b606081526000611aee60608301888a6119cb565b8281036020840152611b018187896118f1565b90508281036040840152611b168185876118f1565b9998505050505050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b600080600080600060a08688031215611b5c57600080fd5b8535611b678161155c565b94506020860135611b778161155c565b93506040860135611b878161155c565b94979396509394606081013594506080013592915050565b60208082526022908201527f4368696c64455243313135355072656469636174653a204d494e545f4641494c604082015261115160f21b606082015260800190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611c1f57611c1f611be1565b604052919050565b60006001600160401b03821115611c4057611c40611be1565b5060051b60200190565b600082601f830112611c5b57600080fd5b81356020611c70611c6b83611c27565b611bf7565b82815260059290921b84018101918181019086841115611c8f57600080fd5b8286015b84811015611caa5780358352918301918301611c93565b509695505050505050565b60008060008060008060c08789031215611cce57600080fd5b86359550602080880135611ce18161155c565b95506040880135611cf18161155c565b945060608801356001600160401b0380821115611d0d57600080fd5b818a0191508a601f830112611d2157600080fd5b8135611d2f611c6b82611c27565b81815260059190911b8301840190848101908d831115611d4e57600080fd5b938501935b82851015611d75578435611d668161155c565b82529385019390850190611d53565b9750505060808a0135925080831115611d8d57600080fd5b611d998b848c01611c4a565b945060a08a0135925080831115611daf57600080fd5b5050611dbd89828a01611c4a565b9150509295509295509295565b600081518084526020808501945080840160005b83811015611a0957815187529582019590820190600101611dde565b606080825284519082018190526000906020906080840190828801845b82811015611e3c5781516001600160a01b031684529284019290840190600101611e17565b50505083810382850152611e508187611dca565b9150508281036040840152611e658185611dca565b9695505050505050565b600082601f830112611e8057600080fd5b81356001600160401b03811115611e9957611e99611be1565b611eac601f8201601f1916602001611bf7565b818152846020838601011115611ec157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611ef457600080fd5b843593506020850135611f068161155c565b925060408501356001600160401b0380821115611f2257600080fd5b611f2e88838901611e6f565b93506060870135915080821115611f4457600080fd5b50611f5187828801611e6f565b91505092959194509250565b6001600160a01b0384168152606060208201819052600090611f8190830185611a68565b8281036040840152611e658185611a6856fea26469706673582212201ed89c216eb47fcbbc51cfdbe2b73978014571416bcaced7c409df960042759664736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" @@ -19,9 +19,9 @@ var MerkleArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contr var CheckpointManagerArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"CheckpointManager\",\n \"sourceName\": \"contracts/root/CheckpointManager.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DOMAIN\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"bls\",\n \"outputs\": [\n {\n \"internalType\": \"contract IBLS\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"bn256G2\",\n \"outputs\": [\n {\n \"internalType\": \"contract IBN256G2\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"chainId\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"checkpointBlockNumbers\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"checkpoints\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"eventRoot\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"currentCheckpointBlockNumber\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"currentEpoch\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"currentValidatorSet\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_address\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"votingPower\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"currentValidatorSetHash\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"currentValidatorSetLength\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getCheckpointBlock\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"leafIndex\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"name\": \"getEventMembershipByBlockNumber\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"leaf\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"leafIndex\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"name\": \"getEventMembershipByEpoch\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getEventRootByBlock\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IBLS\",\n \"name\": \"newBls\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"contract IBN256G2\",\n \"name\": \"newBn256G2\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId_\",\n \"type\": \"uint256\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_address\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[4]\",\n \"name\": \"blsKey\",\n \"type\": \"uint256[4]\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"votingPower\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct ICheckpointManager.Validator[]\",\n \"name\": \"newValidatorSet\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"blockHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockRound\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"currentValidatorSetHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"internalType\": \"struct ICheckpointManager.CheckpointMetadata\",\n \"name\": \"checkpointMetadata\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"epoch\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"eventRoot\",\n \"type\": \"bytes32\"\n }\n ],\n \"internalType\": \"struct ICheckpointManager.Checkpoint\",\n \"name\": \"checkpoint\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint256[2]\",\n \"name\": \"signature\",\n \"type\": \"uint256[2]\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_address\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[4]\",\n \"name\": \"blsKey\",\n \"type\": \"uint256[4]\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"votingPower\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct ICheckpointManager.Validator[]\",\n \"name\": \"newValidatorSet\",\n \"type\": \"tuple[]\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"bitmap\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"submit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalVotingPower\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b506116f2806100206000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806376671808116100a2578063babd4ee411610071578063babd4ee4146102c8578063d4c8e3e8146102db578063e416d677146102ee578063e9193d2b146102f7578063f896f1a51461030a57600080fd5b8063766718081461024157806395b0b0271461024a5780639a8a059214610275578063b8a242521461027e57600080fd5b806361a02208116100e957806361a022081461019b578063671b3793146101be5780636969a25c146101c7578063729e7c6e1461021957806373cb1a111461022c57600080fd5b80631d1d4f261461011b57806322fd1818146101375780633569ed931461016157806352a9674b14610174575b600080fd5b61012460035481565b6040519081526020015b60405180910390f35b61014a610145366004610fdb565b610313565b60408051921515835260208301919091520161012e565b61012461016f366004610fdb565b610364565b6101247fbee7fa562a38908559e4a988e62d6c08b84ef05f2ebd5d2bb2b855dc19d19fe281565b6101ae6101a9366004610ff4565b610398565b604051901515815260200161012e565b61012460055481565b6101fa6101d5366004610fdb565b600960205260009081526040902080546005909101546001600160a01b039091169082565b604080516001600160a01b03909316835260208301919091520161012e565b6101ae610227366004610ff4565b610410565b61023f61023a3660046110e8565b610469565b005b61012460025481565b60065461025d906001600160a01b031681565b6040516001600160a01b03909116815260200161012e565b61012460015481565b6102ad61028c366004610fdb565b60086020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161012e565b61023f6102d6366004611173565b6105bb565b60075461025d906001600160a01b031681565b61012460045481565b610124610305366004610fdb565b610820565b610124600b5481565b60008080610322600a85610841565b600a54909150810361033a5750600093849350915050565b6001600a828154811061034f5761034f61124c565b90600052602060002001549250925050915091565b6000600881610374600a85610841565b61037f906001611278565b8152602001908152602001600020600201549050919050565b6000806103a487610364565b9050806103f85760405162461bcd60e51b815260206004820152601e60248201527f4e4f5f4556454e545f524f4f545f464f525f424c4f434b5f4e554d424552000060448201526064015b60405180910390fd5b61040586868387876108f0565b979650505050505050565b600085815260086020526040812060020154806103f85760405162461bcd60e51b815260206004820152601760248201527609c9ebe8aac8a9ca8bea49e9ea8be8c9ea4be8aa09e869604b1b60448201526064016103ef565b600054610100900460ff16158080156104895750600054600160ff909116105b806104a35750303b1580156104a3575060005460ff166001145b6105065760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ef565b6000805460ff191660011790558015610529576000805461ff0019166101001790555b6001849055600680546001600160a01b038089166001600160a01b0319928316179092556007805492881692909116919091179055600382905561056d8383610a45565b80156105b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b8660400135600b54146106105760405162461bcd60e51b815260206004820152601a60248201527f494e56414c49445f56414c494441544f525f5345545f4841534800000000000060448201526064016103ef565b6000600154876020013589600001358a602001358a600001358b604001358d604001358b8b60405160200161064692919061128b565b604051602081830303815290604052805190602001206040516020016106739897969594939291906112ee565b60408051601f198184030181528282528051602091820120908301520160408051601f198184030181529082905260065463a850a90960e01b835290925061073f916001600160a01b039091169063a850a909906106f7907fbee7fa562a38908559e4a988e62d6c08b84ef05f2ebd5d2bb2b855dc19d19fe2908690600401611324565b6040805180830381865afa158015610713573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610737919061137a565b878585610b4b565b60025461074c8189610e55565b8735600081815260086020908152604091829020838155908b01356001820155908a01356002909101558110156107cf57600a8054600181018255600091825260208a01357fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890910155600280549091906107c690611408565b90915550610803565b600a805460208a013591906107e690600190611421565b815481106107f6576107f661124c565b6000918252602090912001555b60208801356004556108158686610a45565b505050505050505050565b600a818154811061083057600080fd5b600091825260209091200154905081565b81546000908103610854575060006108ea565b82546000905b808210156108a157600061086e8383610f32565b6000878152602090209091508590820154111561088d5780915061089b565b610898816001611278565b92505b5061085a565b6000821180156108cd5750836108ca866108bc600186611421565b600091825260209091200190565b54145b156108e6576108dd600183611421565b925050506108ea565b5090505b92915050565b6000816108fe816002611518565b86106109415760405162461bcd60e51b81526020600482015260126024820152710929cac82989288be988a828cbe929c888ab60731b60448201526064016103ef565b8661097d5760405162461bcd60e51b815260206004820152600c60248201526b24a72b20a624a22fa622a0a360a11b60448201526064016103ef565b8660005b82811015610a3757600086868381811061099d5761099d61124c565b9050602002013590506002896109b3919061153a565b6000036109eb576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610a18565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b610a2360028a61154e565b98505080610a3090611408565b9050610981565b509094149695505050505050565b60038190556040518190610a5f908490839060200161128b565b60408051601f198184030181529190528051602090910120600b556000805b82811015610b42576000858583818110610a9a57610a9a61124c565b905060c0020160a00135905060008111610aea5760405162461bcd60e51b8152602060048201526011602482015270564f54494e475f504f5745525f5a45524f60781b60448201526064016103ef565b610af48184611278565b9250858583818110610b0857610b0861124c565b905060c00201600960008481526020019081526020016000208181610b2d9190611579565b9050505080610b3b90611408565b9050610a7e565b50600555505050565b600354610b56610fbd565b6000805b83811015610cda57610b6d868683610f54565b15610cd25781600003610bc1576000818152600960205260409081902081516080810190925260010160048282826020028201915b815481526020019060010190808311610ba25750505050509250610cb3565b60008181526009602052604080822081516080810190925260010160048282826020028201915b815481526020019060010190808311610be857505060075488516020808b01516040808d01516060808f01518b51958c0151848d0151928d01519451630cbe96a560e41b81529c9d506001600160a01b039098169b63cbe96a509b50610c5f9a5096985093969195939493919290916004016112ee565b608060405180830381865afa158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca091906115d8565b6060880152604087015260208601528452505b600081815260096020526040902060050154610ccf9083611278565b91505b600101610b5a565b5080600003610d1d5760405162461bcd60e51b815260206004820152600f60248201526e4249544d41505f49535f454d50545960881b60448201526064016103ef565b60036005546002610d2e9190611562565b610d38919061154e565b8111610d825760405162461bcd60e51b815260206004820152601960248201527824a729aaa32324a1a4a2a72a2fab27aa24a723afa827aba2a960391b60448201526064016103ef565b60065460405163ebbdac9160e01b815260009182916001600160a01b039091169063ebbdac9190610dbb908b9088908e9060040161160e565b6040805180830381865afa158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfb9190611689565b91509150818015610e095750805b6108155760405162461bcd60e51b815260206004820152601d60248201527f5349474e41545552455f564552494649434154494f4e5f4641494c454400000060448201526064016103ef565b600082815260086020908152604091829020825160608101845281548082526001830154938201939093526002909101549281019290925282351480610ea757508051610ea3906001611278565b8235145b610ee35760405162461bcd60e51b815260206004820152600d60248201526c0929cac82989288be8aa09e869609b1b60448201526064016103ef565b8060200151826020013511610f2d5760405162461bcd60e51b815260206004820152601060248201526f115354151657d0d21150d2d413d2539560821b60448201526064016103ef565b505050565b6000610f41600284841861154e565b610f4d90848416611278565b9392505050565b600080610f6260088461154e565b90506000610f7160088561153a565b9050848210610f8557600092505050610f4d565b6000600160ff83161b878785818110610fa057610fa061124c565b9050013560f81c60f81b60f81c60ff161611925050509392505050565b60405180608001604052806004906020820280368337509192915050565b600060208284031215610fed57600080fd5b5035919050565b60008060008060006080868803121561100c57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8082111561103957600080fd5b818801915088601f83011261104d57600080fd5b81358181111561105c57600080fd5b8960208260051b850101111561107157600080fd5b9699959850939650602001949392505050565b6001600160a01b038116811461109957600080fd5b50565b60008083601f8401126110ae57600080fd5b50813567ffffffffffffffff8111156110c657600080fd5b60208301915083602060c0830285010111156110e157600080fd5b9250929050565b60008060008060006080868803121561110057600080fd5b853561110b81611084565b9450602086013561111b81611084565b935060408601359250606086013567ffffffffffffffff81111561113e57600080fd5b61114a8882890161109c565b969995985093965092949392505050565b60006060828403121561116d57600080fd5b50919050565b6000806000806000806000610140888a03121561118f57600080fd5b611199898961115b565b96506111a88960608a0161115b565b95506101008801898111156111bc57600080fd5b60c0890195503567ffffffffffffffff808211156111d957600080fd5b6111e58b838c0161109c565b90965094506101208a01359150808211156111ff57600080fd5b818a0191508a601f83011261121357600080fd5b81358181111561122257600080fd5b8b602082850101111561123457600080fd5b60208301945080935050505092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156108ea576108ea611262565b60208082528181018390526000908460408401835b868110156112e35782356112b381611084565b6001600160a01b0316825260808385018584013760a0838101359083015260c092830192909101906001016112a0565b509695505050505050565b978852602088019690965260408701949094526060860192909252608085015260a084015260c083015260e08201526101000190565b82815260006020604081840152835180604085015260005b818110156113585785810183015185820160600152820161133c565b506000606082860101526060601f19601f830116850101925050509392505050565b60006040828403121561138c57600080fd5b82601f83011261139b57600080fd5b6040516040810181811067ffffffffffffffff821117156113cc57634e487b7160e01b600052604160045260246000fd5b80604052508060408401858111156113e357600080fd5b845b818110156113fd5780518352602092830192016113e5565b509195945050505050565b60006001820161141a5761141a611262565b5060010190565b818103818111156108ea576108ea611262565b600181815b8085111561146f57816000190482111561145557611455611262565b8085161561146257918102915b93841c9390800290611439565b509250929050565b600082611486575060016108ea565b81611493575060006108ea565b81600181146114a957600281146114b3576114cf565b60019150506108ea565b60ff8411156114c4576114c4611262565b50506001821b6108ea565b5060208310610133831016604e8410600b84101617156114f2575081810a6108ea565b6114fc8383611434565b806000190482111561151057611510611262565b029392505050565b6000610f4d8383611477565b634e487b7160e01b600052601260045260246000fd5b60008261154957611549611524565b500690565b60008261155d5761155d611524565b500490565b80820281158282048414176108ea576108ea611262565b813561158481611084565b81546001600160a01b0319166001600160a01b0391909116178155602082810160005b60048110156115c7578135600182860181019190915591830191016115a7565b50505060a082013560058201555050565b600080600080608085870312156115ee57600080fd5b505082516020840151604085015160609095015191969095509092509050565b61010081016040858337604082018460005b600481101561163f578151835260209283019290910190600101611620565b50505060c082018360005b600281101561166957815183526020928301929091019060010161164a565b505050949350505050565b8051801515811461168457600080fd5b919050565b6000806040838503121561169c57600080fd5b6116a583611674565b91506116b360208401611674565b9050925092905056fea2646970667358221220a7bbc925b936828d67df832f2932e0f475f5fa7058472853cfff77d2f8eded9464736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101165760003560e01c806376671808116100a2578063babd4ee411610071578063babd4ee4146102c8578063d4c8e3e8146102db578063e416d677146102ee578063e9193d2b146102f7578063f896f1a51461030a57600080fd5b8063766718081461024157806395b0b0271461024a5780639a8a059214610275578063b8a242521461027e57600080fd5b806361a02208116100e957806361a022081461019b578063671b3793146101be5780636969a25c146101c7578063729e7c6e1461021957806373cb1a111461022c57600080fd5b80631d1d4f261461011b57806322fd1818146101375780633569ed931461016157806352a9674b14610174575b600080fd5b61012460035481565b6040519081526020015b60405180910390f35b61014a610145366004610fdb565b610313565b60408051921515835260208301919091520161012e565b61012461016f366004610fdb565b610364565b6101247fbee7fa562a38908559e4a988e62d6c08b84ef05f2ebd5d2bb2b855dc19d19fe281565b6101ae6101a9366004610ff4565b610398565b604051901515815260200161012e565b61012460055481565b6101fa6101d5366004610fdb565b600960205260009081526040902080546005909101546001600160a01b039091169082565b604080516001600160a01b03909316835260208301919091520161012e565b6101ae610227366004610ff4565b610410565b61023f61023a3660046110e8565b610469565b005b61012460025481565b60065461025d906001600160a01b031681565b6040516001600160a01b03909116815260200161012e565b61012460015481565b6102ad61028c366004610fdb565b60086020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161012e565b61023f6102d6366004611173565b6105bb565b60075461025d906001600160a01b031681565b61012460045481565b610124610305366004610fdb565b610820565b610124600b5481565b60008080610322600a85610841565b600a54909150810361033a5750600093849350915050565b6001600a828154811061034f5761034f61124c565b90600052602060002001549250925050915091565b6000600881610374600a85610841565b61037f906001611278565b8152602001908152602001600020600201549050919050565b6000806103a487610364565b9050806103f85760405162461bcd60e51b815260206004820152601e60248201527f4e4f5f4556454e545f524f4f545f464f525f424c4f434b5f4e554d424552000060448201526064015b60405180910390fd5b61040586868387876108f0565b979650505050505050565b600085815260086020526040812060020154806103f85760405162461bcd60e51b815260206004820152601760248201527609c9ebe8aac8a9ca8bea49e9ea8be8c9ea4be8aa09e869604b1b60448201526064016103ef565b600054610100900460ff16158080156104895750600054600160ff909116105b806104a35750303b1580156104a3575060005460ff166001145b6105065760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ef565b6000805460ff191660011790558015610529576000805461ff0019166101001790555b6001849055600680546001600160a01b038089166001600160a01b0319928316179092556007805492881692909116919091179055600382905561056d8383610a45565b80156105b3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b8660400135600b54146106105760405162461bcd60e51b815260206004820152601a60248201527f494e56414c49445f56414c494441544f525f5345545f4841534800000000000060448201526064016103ef565b6000600154876020013589600001358a602001358a600001358b604001358d604001358b8b60405160200161064692919061128b565b604051602081830303815290604052805190602001206040516020016106739897969594939291906112ee565b60408051601f198184030181528282528051602091820120908301520160408051601f198184030181529082905260065463a850a90960e01b835290925061073f916001600160a01b039091169063a850a909906106f7907fbee7fa562a38908559e4a988e62d6c08b84ef05f2ebd5d2bb2b855dc19d19fe2908690600401611324565b6040805180830381865afa158015610713573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610737919061137a565b878585610b4b565b60025461074c8189610e55565b8735600081815260086020908152604091829020838155908b01356001820155908a01356002909101558110156107cf57600a8054600181018255600091825260208a01357fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a890910155600280549091906107c690611408565b90915550610803565b600a805460208a013591906107e690600190611421565b815481106107f6576107f661124c565b6000918252602090912001555b60208801356004556108158686610a45565b505050505050505050565b600a818154811061083057600080fd5b600091825260209091200154905081565b81546000908103610854575060006108ea565b82546000905b808210156108a157600061086e8383610f32565b6000878152602090209091508590820154111561088d5780915061089b565b610898816001611278565b92505b5061085a565b6000821180156108cd5750836108ca866108bc600186611421565b600091825260209091200190565b54145b156108e6576108dd600183611421565b925050506108ea565b5090505b92915050565b6000816108fe816002611518565b86106109415760405162461bcd60e51b81526020600482015260126024820152710929cac82989288be988a828cbe929c888ab60731b60448201526064016103ef565b8661097d5760405162461bcd60e51b815260206004820152600c60248201526b24a72b20a624a22fa622a0a360a11b60448201526064016103ef565b8660005b82811015610a3757600086868381811061099d5761099d61124c565b9050602002013590506002896109b3919061153a565b6000036109eb576040805160208101859052908101829052606001604051602081830303815290604052805190602001209250610a18565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b610a2360028a61154e565b98505080610a3090611408565b9050610981565b509094149695505050505050565b60038190556040518190610a5f908490839060200161128b565b60408051601f198184030181529190528051602090910120600b556000805b82811015610b42576000858583818110610a9a57610a9a61124c565b905060c0020160a00135905060008111610aea5760405162461bcd60e51b8152602060048201526011602482015270564f54494e475f504f5745525f5a45524f60781b60448201526064016103ef565b610af48184611278565b9250858583818110610b0857610b0861124c565b905060c00201600960008481526020019081526020016000208181610b2d9190611579565b9050505080610b3b90611408565b9050610a7e565b50600555505050565b600354610b56610fbd565b6000805b83811015610cda57610b6d868683610f54565b15610cd25781600003610bc1576000818152600960205260409081902081516080810190925260010160048282826020028201915b815481526020019060010190808311610ba25750505050509250610cb3565b60008181526009602052604080822081516080810190925260010160048282826020028201915b815481526020019060010190808311610be857505060075488516020808b01516040808d01516060808f01518b51958c0151848d0151928d01519451630cbe96a560e41b81529c9d506001600160a01b039098169b63cbe96a509b50610c5f9a5096985093969195939493919290916004016112ee565b608060405180830381865afa158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca091906115d8565b6060880152604087015260208601528452505b600081815260096020526040902060050154610ccf9083611278565b91505b600101610b5a565b5080600003610d1d5760405162461bcd60e51b815260206004820152600f60248201526e4249544d41505f49535f454d50545960881b60448201526064016103ef565b60036005546002610d2e9190611562565b610d38919061154e565b8111610d825760405162461bcd60e51b815260206004820152601960248201527824a729aaa32324a1a4a2a72a2fab27aa24a723afa827aba2a960391b60448201526064016103ef565b60065460405163ebbdac9160e01b815260009182916001600160a01b039091169063ebbdac9190610dbb908b9088908e9060040161160e565b6040805180830381865afa158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfb9190611689565b91509150818015610e095750805b6108155760405162461bcd60e51b815260206004820152601d60248201527f5349474e41545552455f564552494649434154494f4e5f4641494c454400000060448201526064016103ef565b600082815260086020908152604091829020825160608101845281548082526001830154938201939093526002909101549281019290925282351480610ea757508051610ea3906001611278565b8235145b610ee35760405162461bcd60e51b815260206004820152600d60248201526c0929cac82989288be8aa09e869609b1b60448201526064016103ef565b8060200151826020013511610f2d5760405162461bcd60e51b815260206004820152601060248201526f115354151657d0d21150d2d413d2539560821b60448201526064016103ef565b505050565b6000610f41600284841861154e565b610f4d90848416611278565b9392505050565b600080610f6260088461154e565b90506000610f7160088561153a565b9050848210610f8557600092505050610f4d565b6000600160ff83161b878785818110610fa057610fa061124c565b9050013560f81c60f81b60f81c60ff161611925050509392505050565b60405180608001604052806004906020820280368337509192915050565b600060208284031215610fed57600080fd5b5035919050565b60008060008060006080868803121561100c57600080fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8082111561103957600080fd5b818801915088601f83011261104d57600080fd5b81358181111561105c57600080fd5b8960208260051b850101111561107157600080fd5b9699959850939650602001949392505050565b6001600160a01b038116811461109957600080fd5b50565b60008083601f8401126110ae57600080fd5b50813567ffffffffffffffff8111156110c657600080fd5b60208301915083602060c0830285010111156110e157600080fd5b9250929050565b60008060008060006080868803121561110057600080fd5b853561110b81611084565b9450602086013561111b81611084565b935060408601359250606086013567ffffffffffffffff81111561113e57600080fd5b61114a8882890161109c565b969995985093965092949392505050565b60006060828403121561116d57600080fd5b50919050565b6000806000806000806000610140888a03121561118f57600080fd5b611199898961115b565b96506111a88960608a0161115b565b95506101008801898111156111bc57600080fd5b60c0890195503567ffffffffffffffff808211156111d957600080fd5b6111e58b838c0161109c565b90965094506101208a01359150808211156111ff57600080fd5b818a0191508a601f83011261121357600080fd5b81358181111561122257600080fd5b8b602082850101111561123457600080fd5b60208301945080935050505092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156108ea576108ea611262565b60208082528181018390526000908460408401835b868110156112e35782356112b381611084565b6001600160a01b0316825260808385018584013760a0838101359083015260c092830192909101906001016112a0565b509695505050505050565b978852602088019690965260408701949094526060860192909252608085015260a084015260c083015260e08201526101000190565b82815260006020604081840152835180604085015260005b818110156113585785810183015185820160600152820161133c565b506000606082860101526060601f19601f830116850101925050509392505050565b60006040828403121561138c57600080fd5b82601f83011261139b57600080fd5b6040516040810181811067ffffffffffffffff821117156113cc57634e487b7160e01b600052604160045260246000fd5b80604052508060408401858111156113e357600080fd5b845b818110156113fd5780518352602092830192016113e5565b509195945050505050565b60006001820161141a5761141a611262565b5060010190565b818103818111156108ea576108ea611262565b600181815b8085111561146f57816000190482111561145557611455611262565b8085161561146257918102915b93841c9390800290611439565b509250929050565b600082611486575060016108ea565b81611493575060006108ea565b81600181146114a957600281146114b3576114cf565b60019150506108ea565b60ff8411156114c4576114c4611262565b50506001821b6108ea565b5060208310610133831016604e8410600b84101617156114f2575081810a6108ea565b6114fc8383611434565b806000190482111561151057611510611262565b029392505050565b6000610f4d8383611477565b634e487b7160e01b600052601260045260246000fd5b60008261154957611549611524565b500690565b60008261155d5761155d611524565b500490565b80820281158282048414176108ea576108ea611262565b813561158481611084565b81546001600160a01b0319166001600160a01b0391909116178155602082810160005b60048110156115c7578135600182860181019190915591830191016115a7565b50505060a082013560058201555050565b600080600080608085870312156115ee57600080fd5b505082516020840151604085015160609095015191969095509092509050565b61010081016040858337604082018460005b600481101561163f578151835260209283019290910190600101611620565b50505060c082018360005b600281101561166957815183526020928301929091019060010161164a565b505050949350505050565b8051801515811461168457600080fd5b919050565b6000806040838503121561169c57600080fd5b6116a583611674565b91506116b360208401611674565b9050925092905056fea2646970667358221220a7bbc925b936828d67df832f2932e0f475f5fa7058472853cfff77d2f8eded9464736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" var ExitHelperArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"ExitHelper\",\n \"sourceName\": \"contracts/root/ExitHelper.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bool\",\n \"name\": \"success\",\n \"type\": \"bool\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"returnData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"ExitProcessed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"leafIndex\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"unhashedLeaf\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"internalType\": \"struct IExitHelper.BatchExitInput[]\",\n \"name\": \"inputs\",\n \"type\": \"tuple[]\"\n }\n ],\n \"name\": \"batchExit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"checkpointManager\",\n \"outputs\": [\n {\n \"internalType\": \"contract ICheckpointManager\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"blockNumber\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"leafIndex\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"unhashedLeaf\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"name\": \"exit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ICheckpointManager\",\n \"name\": \"newCheckpointManager\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"processedExits\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50610b62806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806350607b351461005c578063aa209cc314610071578063bd88ea7914610084578063c0857ba0146100bc578063c4d66de8146100e7575b600080fd5b61006f61006a3660046106c9565b6100fa565b005b61006f61007f36600461070b565b610200565b6100a76100923660046107bc565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6002546100cf906001600160a01b031681565b6040516001600160a01b0390911681526020016100b3565b61006f6100f53660046107ed565b610240565b6002546001600160a01b031661012b5760405162461bcd60e51b815260040161012290610811565b60405180910390fd5b8060005b818110156101fa576101f284848381811061014c5761014c610848565b905060200281019061015e919061085e565b3585858481811061017157610171610848565b9050602002810190610183919061085e565b6020013586868581811061019957610199610848565b90506020028101906101ab919061085e565b6101b990604081019061087e565b8888878181106101cb576101cb610848565b90506020028101906101dd919061085e565b6101eb9060608101906108c5565b60016103d2565b60010161012f565b50505050565b6002546001600160a01b03166102285760405162461bcd60e51b815260040161012290610811565b61023886868686868660006103d2565b505050505050565b600054610100900460ff16158080156102605750600054600160ff909116105b8061027a5750303b15801561027a575060005460ff166001145b6102dd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610122565b6000805460ff191660011790558015610300576000805461ff0019166101001790555b6001600160a01b0382161580159061032157506001600160a01b0382163b15155b61036d5760405162461bcd60e51b815260206004820152601b60248201527f4578697448656c7065723a20494e56414c49445f4144445245535300000000006044820152606401610122565b600280546001600160a01b0319166001600160a01b03841617905580156103ce576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60008080806103e3888a018a610925565b935093509350935084156104165760008481526001602052604090205460ff16156104115750505050610674565b610480565b60008481526001602052604090205460ff16156104805760405162461bcd60e51b815260206004820152602260248201527f4578697448656c7065723a20455849545f414c52454144595f50524f43455353604482015261115160f21b6064820152608401610122565b6002546040516001600160a01b03909116906361a02208908d906104a7908d908d90610a05565b6040519081900381206001600160e01b031960e085901b1682526104d492918f908d908d90600401610a15565b602060405180830381865afa1580156104f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105159190610a62565b61055d5760405162461bcd60e51b815260206004820152601960248201527822bc34ba2432b63832b91d1024a72b20a624a22fa82927a7a360391b6044820152606401610122565b6000848152600160208190526040808320805460ff19169092179091555181906001600160a01b0385169061059a90889088908790602401610ad4565b60408051601f198184030181529181526020820180516001600160e01b031663f43cda8b60e01b179052516105cf9190610b07565b6000604051808303816000865af19150503d806000811461060c576040519150601f19603f3d011682016040523d82523d6000602084013e610611565b606091505b509150915081610632576000868152600160205260409020805460ff191690555b811515867f8bbfa0c9bee3785c03700d2a909592286efb83fc7e7002be5764424b9842f7ec836040516106659190610b19565b60405180910390a35050505050505b50505050505050565b60008083601f84011261068f57600080fd5b50813567ffffffffffffffff8111156106a757600080fd5b6020830191508360208260051b85010111156106c257600080fd5b9250929050565b600080602083850312156106dc57600080fd5b823567ffffffffffffffff8111156106f357600080fd5b6106ff8582860161067d565b90969095509350505050565b6000806000806000806080878903121561072457600080fd5b8635955060208701359450604087013567ffffffffffffffff8082111561074a57600080fd5b818901915089601f83011261075e57600080fd5b81358181111561076d57600080fd5b8a602082850101111561077f57600080fd5b60208301965080955050606089013591508082111561079d57600080fd5b506107aa89828a0161067d565b979a9699509497509295939492505050565b6000602082840312156107ce57600080fd5b5035919050565b6001600160a01b03811681146107ea57600080fd5b50565b6000602082840312156107ff57600080fd5b813561080a816107d5565b9392505050565b6020808252601b908201527f4578697448656c7065723a204e4f545f494e495449414c495a45440000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235607e1983360301811261087457600080fd5b9190910192915050565b6000808335601e1984360301811261089557600080fd5b83018035915067ffffffffffffffff8211156108b057600080fd5b6020019150368190038213156106c257600080fd5b6000808335601e198436030181126108dc57600080fd5b83018035915067ffffffffffffffff8211156108f757600080fd5b6020019150600581901b36038213156106c257600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561093b57600080fd5b84359350602085013561094d816107d5565b9250604085013561095d816107d5565b9150606085013567ffffffffffffffff8082111561097a57600080fd5b818701915087601f83011261098e57600080fd5b8135818111156109a0576109a061090f565b604051601f8201601f19908116603f011681019083821181831017156109c8576109c861090f565b816040528281528a60208487010111156109e157600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b8183823760009101908152919050565b85815284602082015283604082015260806060820152816080820152600060018060fb1b03831115610a4657600080fd5b8260051b808560a08501379190910160a0019695505050505050565b600060208284031215610a7457600080fd5b8151801515811461080a57600080fd5b60005b83811015610a9f578181015183820152602001610a87565b50506000910152565b60008151808452610ac0816020860160208601610a84565b601f01601f19169290920160200192915050565b8381526001600160a01b0383166020820152606060408201819052600090610afe90830184610aa8565b95945050505050565b60008251610874818460208701610a84565b60208152600061080a6020830184610aa856fea264697066735822122008943fed61b7c9037d83d6de6f81699e05bf9650fa3394883bac4a072bac958b64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106100575760003560e01c806350607b351461005c578063aa209cc314610071578063bd88ea7914610084578063c0857ba0146100bc578063c4d66de8146100e7575b600080fd5b61006f61006a3660046106c9565b6100fa565b005b61006f61007f36600461070b565b610200565b6100a76100923660046107bc565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6002546100cf906001600160a01b031681565b6040516001600160a01b0390911681526020016100b3565b61006f6100f53660046107ed565b610240565b6002546001600160a01b031661012b5760405162461bcd60e51b815260040161012290610811565b60405180910390fd5b8060005b818110156101fa576101f284848381811061014c5761014c610848565b905060200281019061015e919061085e565b3585858481811061017157610171610848565b9050602002810190610183919061085e565b6020013586868581811061019957610199610848565b90506020028101906101ab919061085e565b6101b990604081019061087e565b8888878181106101cb576101cb610848565b90506020028101906101dd919061085e565b6101eb9060608101906108c5565b60016103d2565b60010161012f565b50505050565b6002546001600160a01b03166102285760405162461bcd60e51b815260040161012290610811565b61023886868686868660006103d2565b505050505050565b600054610100900460ff16158080156102605750600054600160ff909116105b8061027a5750303b15801561027a575060005460ff166001145b6102dd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610122565b6000805460ff191660011790558015610300576000805461ff0019166101001790555b6001600160a01b0382161580159061032157506001600160a01b0382163b15155b61036d5760405162461bcd60e51b815260206004820152601b60248201527f4578697448656c7065723a20494e56414c49445f4144445245535300000000006044820152606401610122565b600280546001600160a01b0319166001600160a01b03841617905580156103ce576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60008080806103e3888a018a610925565b935093509350935084156104165760008481526001602052604090205460ff16156104115750505050610674565b610480565b60008481526001602052604090205460ff16156104805760405162461bcd60e51b815260206004820152602260248201527f4578697448656c7065723a20455849545f414c52454144595f50524f43455353604482015261115160f21b6064820152608401610122565b6002546040516001600160a01b03909116906361a02208908d906104a7908d908d90610a05565b6040519081900381206001600160e01b031960e085901b1682526104d492918f908d908d90600401610a15565b602060405180830381865afa1580156104f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105159190610a62565b61055d5760405162461bcd60e51b815260206004820152601960248201527822bc34ba2432b63832b91d1024a72b20a624a22fa82927a7a360391b6044820152606401610122565b6000848152600160208190526040808320805460ff19169092179091555181906001600160a01b0385169061059a90889088908790602401610ad4565b60408051601f198184030181529181526020820180516001600160e01b031663f43cda8b60e01b179052516105cf9190610b07565b6000604051808303816000865af19150503d806000811461060c576040519150601f19603f3d011682016040523d82523d6000602084013e610611565b606091505b509150915081610632576000868152600160205260409020805460ff191690555b811515867f8bbfa0c9bee3785c03700d2a909592286efb83fc7e7002be5764424b9842f7ec836040516106659190610b19565b60405180910390a35050505050505b50505050505050565b60008083601f84011261068f57600080fd5b50813567ffffffffffffffff8111156106a757600080fd5b6020830191508360208260051b85010111156106c257600080fd5b9250929050565b600080602083850312156106dc57600080fd5b823567ffffffffffffffff8111156106f357600080fd5b6106ff8582860161067d565b90969095509350505050565b6000806000806000806080878903121561072457600080fd5b8635955060208701359450604087013567ffffffffffffffff8082111561074a57600080fd5b818901915089601f83011261075e57600080fd5b81358181111561076d57600080fd5b8a602082850101111561077f57600080fd5b60208301965080955050606089013591508082111561079d57600080fd5b506107aa89828a0161067d565b979a9699509497509295939492505050565b6000602082840312156107ce57600080fd5b5035919050565b6001600160a01b03811681146107ea57600080fd5b50565b6000602082840312156107ff57600080fd5b813561080a816107d5565b9392505050565b6020808252601b908201527f4578697448656c7065723a204e4f545f494e495449414c495a45440000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008235607e1983360301811261087457600080fd5b9190910192915050565b6000808335601e1984360301811261089557600080fd5b83018035915067ffffffffffffffff8211156108b057600080fd5b6020019150368190038213156106c257600080fd5b6000808335601e198436030181126108dc57600080fd5b83018035915067ffffffffffffffff8211156108f757600080fd5b6020019150600581901b36038213156106c257600080fd5b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561093b57600080fd5b84359350602085013561094d816107d5565b9250604085013561095d816107d5565b9150606085013567ffffffffffffffff8082111561097a57600080fd5b818701915087601f83011261098e57600080fd5b8135818111156109a0576109a061090f565b604051601f8201601f19908116603f011681019083821181831017156109c8576109c861090f565b816040528281528a60208487010111156109e157600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b8183823760009101908152919050565b85815284602082015283604082015260806060820152816080820152600060018060fb1b03831115610a4657600080fd5b8260051b808560a08501379190910160a0019695505050505050565b600060208284031215610a7457600080fd5b8151801515811461080a57600080fd5b60005b83811015610a9f578181015183820152602001610a87565b50506000910152565b60008151808452610ac0816020860160208601610a84565b601f01601f19169290920160200192915050565b8381526001600160a01b0383166020820152606060408201819052600090610afe90830184610aa8565b95945050505050565b60008251610874818460208701610a84565b60208152600061080a6020830184610aa856fea264697066735822122008943fed61b7c9037d83d6de6f81699e05bf9650fa3394883bac4a072bac958b64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" var StateSenderArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"StateSender\",\n \"sourceName\": \"contracts/root/StateSender.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"StateSynced\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAX_LENGTH\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"counter\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"syncState\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50610297806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806316f198311461004657806361bc221a1461005b578063a6f9885c14610076575b600080fd5b61005961005436600461017a565b61007f565b005b61006460005481565b60405190815260200160405180910390f35b61006461080081565b6001600160a01b0383166100cd5760405162461bcd60e51b815260206004820152601060248201526f24a72b20a624a22fa922a1a2a4ab22a960811b60448201526064015b60405180910390fd5b6108008111156101145760405162461bcd60e51b815260206004820152601260248201527108ab0868a8a88a6be9a82b0be988a9c8ea8960731b60448201526064016100c4565b826001600160a01b0316336001600160a01b031660008081546101369061020b565b9190508190557fd1d7f6609674cc5871fdb4b0bcd4f0a214118411de9e38983866514f22659165858560405161016d929190610232565b60405180910390a4505050565b60008060006040848603121561018f57600080fd5b83356001600160a01b03811681146101a657600080fd5b9250602084013567ffffffffffffffff808211156101c357600080fd5b818601915086601f8301126101d757600080fd5b8135818111156101e657600080fd5b8760208285010111156101f857600080fd5b6020830194508093505050509250925092565b60006001820161022b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f1916010191905056fea264697066735822122001854f5b142666bc44e5f66226d8f0a84e2c503b8ab6002552f648cf58e3336c64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106100415760003560e01c806316f198311461004657806361bc221a1461005b578063a6f9885c14610076575b600080fd5b61005961005436600461017a565b61007f565b005b61006460005481565b60405190815260200160405180910390f35b61006461080081565b6001600160a01b0383166100cd5760405162461bcd60e51b815260206004820152601060248201526f24a72b20a624a22fa922a1a2a4ab22a960811b60448201526064015b60405180910390fd5b6108008111156101145760405162461bcd60e51b815260206004820152601260248201527108ab0868a8a88a6be9a82b0be988a9c8ea8960731b60448201526064016100c4565b826001600160a01b0316336001600160a01b031660008081546101369061020b565b9190508190557fd1d7f6609674cc5871fdb4b0bcd4f0a214118411de9e38983866514f22659165858560405161016d929190610232565b60405180910390a4505050565b60008060006040848603121561018f57600080fd5b83356001600160a01b03811681146101a657600080fd5b9250602084013567ffffffffffffffff808211156101c357600080fd5b818601915086601f8301126101d757600080fd5b8135818111156101e657600080fd5b8760208285010111156101f857600080fd5b6020830194508093505050509250925092565b60006001820161022b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f1916010191905056fea264697066735822122001854f5b142666bc44e5f66226d8f0a84e2c503b8ab6002552f648cf58e3336c64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" -var MockERC20Artifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"MockERC20\",\n \"sourceName\": \"contracts/mocks/MockERC20.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RoleAdminChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleGranted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleRevoked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MINTER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"PAUSER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burnFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"subtractedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"decreaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleAdmin\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getRoleMember\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleMemberCount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"grantRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hasRole\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"addedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"increaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"renounceRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x60806040523480156200001157600080fd5b50604080518082018252600480825263151154d560e21b60208084018290528451808601909552918452908301529081816005620000508382620002e2565b5060066200005f8282620002e2565b50506007805460ff191690555062000079600033620000d9565b620000a57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000d9565b620000d17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000d9565b5050620003ae565b620000e58282620000e9565b5050565b6200010082826200012c60201b620008871760201c565b6000828152600160209081526040909120620001279183906200090b620001cc821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e5576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001883390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001e3836001600160a01b038416620001ec565b90505b92915050565b60008181526001830160205260408120546200023557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001e6565b506000620001e6565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200026957607f821691505b6020821081036200028a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012757600081815260208120601f850160051c81016020861015620002b95750805b601f850160051c820191505b81811015620002da57828155600101620002c5565b505050505050565b81516001600160401b03811115620002fe57620002fe6200023e565b62000316816200030f845462000254565b8462000290565b602080601f8311600181146200034e5760008415620003355750858301515b600019600386901b1c1916600185901b178555620002da565b600085815260208120601f198616915b828110156200037f578886015182559484019460019091019084016200035e565b50858210156200039e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6117fa80620003be6000396000f3fe608060405234801561001057600080fd5b50600436106101845760003560e01c806370a08231116100d9578063a457c2d711610087578063a457c2d714610336578063a9059cbb14610349578063ca15c8731461035c578063d53913931461036f578063d547741f14610396578063dd62ed3e146103a9578063e63ab1e9146103bc57600080fd5b806370a08231146102a457806379cc6790146102cd5780638456cb59146102e05780639010d07c146102e857806391d148541461031357806395d89b4114610326578063a217fddf1461032e57600080fd5b8063313ce56711610136578063313ce5671461023657806336568abe1461024557806339509351146102585780633f4ba83a1461026b57806340c10f191461027357806342966c68146102865780635c975abb1461029957600080fd5b806301ffc9a71461018957806306fdde03146101b1578063095ea7b3146101c657806318160ddd146101d957806323b872dd146101eb578063248a9ca3146101fe5780632f2ff15d14610221575b600080fd5b61019c610197366004611460565b6103d1565b60405190151581526020015b60405180910390f35b6101b96103fc565b6040516101a891906114ae565b61019c6101d43660046114fd565b61048e565b6004545b6040519081526020016101a8565b61019c6101f9366004611527565b6104a6565b6101dd61020c366004611563565b60009081526020819052604090206001015490565b61023461022f36600461157c565b6104ca565b005b604051601281526020016101a8565b61023461025336600461157c565b6104f4565b61019c6102663660046114fd565b610577565b610234610599565b6102346102813660046114fd565b610617565b610234610294366004611563565b6106a4565b60075460ff1661019c565b6101dd6102b23660046115a8565b6001600160a01b031660009081526002602052604090205490565b6102346102db3660046114fd565b6106b1565b6102346106c6565b6102fb6102f63660046115c3565b610740565b6040516001600160a01b0390911681526020016101a8565b61019c61032136600461157c565b61075f565b6101b9610788565b6101dd600081565b61019c6103443660046114fd565b610797565b61019c6103573660046114fd565b610812565b6101dd61036a366004611563565b610820565b6101dd7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102346103a436600461157c565b610837565b6101dd6103b73660046115e5565b61085c565b6101dd60008051602061178583398151915281565b60006001600160e01b03198216635a05180f60e01b14806103f657506103f682610920565b92915050565b60606005805461040b9061160f565b80601f01602080910402602001604051908101604052809291908181526020018280546104379061160f565b80156104845780601f1061045957610100808354040283529160200191610484565b820191906000526020600020905b81548152906001019060200180831161046757829003601f168201915b5050505050905090565b60003361049c818585610955565b5060019392505050565b6000336104b4858285610a79565b6104bf858585610af3565b506001949350505050565b6000828152602081905260409020600101546104e581610c97565b6104ef8383610ca1565b505050565b6001600160a01b03811633146105695760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105738282610cc3565b5050565b60003361049c81858561058a838361085c565b610594919061165f565b610955565b6105b16000805160206117858339815191523361075f565b61060d5760405162461bcd60e51b8152602060048201526039602482015260008051602061176583398151915260448201527876652070617573657220726f6c6520746f20756e706175736560381b6064820152608401610560565b610615610ce5565b565b6106417f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361075f565b61069a5760405162461bcd60e51b815260206004820152603660248201526000805160206117658339815191526044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608401610560565b6105738282610d37565b6106ae3382610df2565b50565b6106bc823383610a79565b6105738282610df2565b6106de6000805160206117858339815191523361075f565b6107385760405162461bcd60e51b8152602060048201526037602482015260008051602061176583398151915260448201527676652070617573657220726f6c6520746f20706175736560481b6064820152608401610560565b610615610f20565b60008281526001602052604081206107589083610f5d565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461040b9061160f565b600033816107a5828661085c565b9050838110156108055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610560565b6104bf8286868403610955565b60003361049c818585610af3565b60008181526001602052604081206103f690610f69565b60008281526020819052604090206001015461085281610c97565b6104ef8383610cc3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610891828261075f565b610573576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556108c73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610758836001600160a01b038416610f73565b60006001600160e01b03198216637965db0b60e01b14806103f657506301ffc9a760e01b6001600160e01b03198316146103f6565b6001600160a01b0383166109b75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610560565b6001600160a01b038216610a185760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610560565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a85848461085c565b90506000198114610aed5781811015610ae05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610560565b610aed8484848403610955565b50505050565b6001600160a01b038316610b575760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610560565b6001600160a01b038216610bb95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610560565b610bc4838383610fc2565b6001600160a01b03831660009081526002602052604090205481811015610c3c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610560565b6001600160a01b0380851660008181526002602052604080822086860390559286168082529083902080548601905591516000805160206117a583398151915290610c8a9086815260200190565b60405180910390a3610aed565b6106ae8133610fcd565b610cab8282610887565b60008281526001602052604090206104ef908261090b565b610ccd8282611026565b60008281526001602052604090206104ef908261108b565b610ced6110a0565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610d8d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610560565b610d9960008383610fc2565b8060046000828254610dab919061165f565b90915550506001600160a01b0382166000818152600260209081526040808320805486019055518481526000805160206117a5833981519152910160405180910390a35050565b6001600160a01b038216610e525760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610560565b610e5e82600083610fc2565b6001600160a01b03821660009081526002602052604090205481811015610ed25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610560565b6001600160a01b03831660008181526002602090815260408083208686039055600480548790039055518581529192916000805160206117a5833981519152910160405180910390a3505050565b610f286110e9565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d1a3390565b6000610758838361112f565b60006103f6825490565b6000818152600183016020526040812054610fba575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556103f6565b5060006103f6565b6104ef838383611159565b610fd7828261075f565b61057357610fe4816111bf565b610fef8360206111d1565b604051602001611000929190611672565b60408051601f198184030181529082905262461bcd60e51b8252610560916004016114ae565b611030828261075f565b15610573576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610758836001600160a01b03841661136d565b60075460ff166106155760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610560565b60075460ff16156106155760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610560565b6000826000018281548110611146576111466116e1565b9060005260206000200154905092915050565b60075460ff16156104ef5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610560565b60606103f66001600160a01b03831660145b606060006111e08360026116f7565b6111eb90600261165f565b67ffffffffffffffff8111156112035761120361170e565b6040519080825280601f01601f19166020018201604052801561122d576020820181803683370190505b509050600360fc1b81600081518110611248576112486116e1565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611277576112776116e1565b60200101906001600160f81b031916908160001a905350600061129b8460026116f7565b6112a690600161165f565b90505b600181111561131e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112da576112da6116e1565b1a60f81b8282815181106112f0576112f06116e1565b60200101906001600160f81b031916908160001a90535060049490941c9361131781611724565b90506112a9565b5083156107585760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610560565b6000818152600183016020526040812054801561145657600061139160018361173b565b85549091506000906113a59060019061173b565b905081811461140a5760008660000182815481106113c5576113c56116e1565b90600052602060002001549050808760000184815481106113e8576113e86116e1565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061141b5761141b61174e565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506103f6565b60009150506103f6565b60006020828403121561147257600080fd5b81356001600160e01b03198116811461075857600080fd5b60005b838110156114a557818101518382015260200161148d565b50506000910152565b60208152600082518060208401526114cd81604085016020870161148a565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146114f857600080fd5b919050565b6000806040838503121561151057600080fd5b611519836114e1565b946020939093013593505050565b60008060006060848603121561153c57600080fd5b611545846114e1565b9250611553602085016114e1565b9150604084013590509250925092565b60006020828403121561157557600080fd5b5035919050565b6000806040838503121561158f57600080fd5b8235915061159f602084016114e1565b90509250929050565b6000602082840312156115ba57600080fd5b610758826114e1565b600080604083850312156115d657600080fd5b50508035926020909101359150565b600080604083850312156115f857600080fd5b611601836114e1565b915061159f602084016114e1565b600181811c9082168061162357607f821691505b60208210810361164357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156103f6576103f6611649565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516116a481601785016020880161148a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116d581602884016020880161148a565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176103f6576103f6611649565b634e487b7160e01b600052604160045260246000fd5b60008161173357611733611649565b506000190190565b818103818111156103f6576103f6611649565b634e487b7160e01b600052603160045260246000fdfe45524332305072657365744d696e7465725061757365723a206d75737420686165d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220869bafd8796afcbd2b83d9ab479f7920e24272bf48f6b43b28917d060a789e4d64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101845760003560e01c806370a08231116100d9578063a457c2d711610087578063a457c2d714610336578063a9059cbb14610349578063ca15c8731461035c578063d53913931461036f578063d547741f14610396578063dd62ed3e146103a9578063e63ab1e9146103bc57600080fd5b806370a08231146102a457806379cc6790146102cd5780638456cb59146102e05780639010d07c146102e857806391d148541461031357806395d89b4114610326578063a217fddf1461032e57600080fd5b8063313ce56711610136578063313ce5671461023657806336568abe1461024557806339509351146102585780633f4ba83a1461026b57806340c10f191461027357806342966c68146102865780635c975abb1461029957600080fd5b806301ffc9a71461018957806306fdde03146101b1578063095ea7b3146101c657806318160ddd146101d957806323b872dd146101eb578063248a9ca3146101fe5780632f2ff15d14610221575b600080fd5b61019c610197366004611460565b6103d1565b60405190151581526020015b60405180910390f35b6101b96103fc565b6040516101a891906114ae565b61019c6101d43660046114fd565b61048e565b6004545b6040519081526020016101a8565b61019c6101f9366004611527565b6104a6565b6101dd61020c366004611563565b60009081526020819052604090206001015490565b61023461022f36600461157c565b6104ca565b005b604051601281526020016101a8565b61023461025336600461157c565b6104f4565b61019c6102663660046114fd565b610577565b610234610599565b6102346102813660046114fd565b610617565b610234610294366004611563565b6106a4565b60075460ff1661019c565b6101dd6102b23660046115a8565b6001600160a01b031660009081526002602052604090205490565b6102346102db3660046114fd565b6106b1565b6102346106c6565b6102fb6102f63660046115c3565b610740565b6040516001600160a01b0390911681526020016101a8565b61019c61032136600461157c565b61075f565b6101b9610788565b6101dd600081565b61019c6103443660046114fd565b610797565b61019c6103573660046114fd565b610812565b6101dd61036a366004611563565b610820565b6101dd7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102346103a436600461157c565b610837565b6101dd6103b73660046115e5565b61085c565b6101dd60008051602061178583398151915281565b60006001600160e01b03198216635a05180f60e01b14806103f657506103f682610920565b92915050565b60606005805461040b9061160f565b80601f01602080910402602001604051908101604052809291908181526020018280546104379061160f565b80156104845780601f1061045957610100808354040283529160200191610484565b820191906000526020600020905b81548152906001019060200180831161046757829003601f168201915b5050505050905090565b60003361049c818585610955565b5060019392505050565b6000336104b4858285610a79565b6104bf858585610af3565b506001949350505050565b6000828152602081905260409020600101546104e581610c97565b6104ef8383610ca1565b505050565b6001600160a01b03811633146105695760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105738282610cc3565b5050565b60003361049c81858561058a838361085c565b610594919061165f565b610955565b6105b16000805160206117858339815191523361075f565b61060d5760405162461bcd60e51b8152602060048201526039602482015260008051602061176583398151915260448201527876652070617573657220726f6c6520746f20756e706175736560381b6064820152608401610560565b610615610ce5565b565b6106417f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361075f565b61069a5760405162461bcd60e51b815260206004820152603660248201526000805160206117658339815191526044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608401610560565b6105738282610d37565b6106ae3382610df2565b50565b6106bc823383610a79565b6105738282610df2565b6106de6000805160206117858339815191523361075f565b6107385760405162461bcd60e51b8152602060048201526037602482015260008051602061176583398151915260448201527676652070617573657220726f6c6520746f20706175736560481b6064820152608401610560565b610615610f20565b60008281526001602052604081206107589083610f5d565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461040b9061160f565b600033816107a5828661085c565b9050838110156108055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610560565b6104bf8286868403610955565b60003361049c818585610af3565b60008181526001602052604081206103f690610f69565b60008281526020819052604090206001015461085281610c97565b6104ef8383610cc3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610891828261075f565b610573576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556108c73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610758836001600160a01b038416610f73565b60006001600160e01b03198216637965db0b60e01b14806103f657506301ffc9a760e01b6001600160e01b03198316146103f6565b6001600160a01b0383166109b75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610560565b6001600160a01b038216610a185760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610560565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a85848461085c565b90506000198114610aed5781811015610ae05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610560565b610aed8484848403610955565b50505050565b6001600160a01b038316610b575760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610560565b6001600160a01b038216610bb95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610560565b610bc4838383610fc2565b6001600160a01b03831660009081526002602052604090205481811015610c3c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610560565b6001600160a01b0380851660008181526002602052604080822086860390559286168082529083902080548601905591516000805160206117a583398151915290610c8a9086815260200190565b60405180910390a3610aed565b6106ae8133610fcd565b610cab8282610887565b60008281526001602052604090206104ef908261090b565b610ccd8282611026565b60008281526001602052604090206104ef908261108b565b610ced6110a0565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610d8d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610560565b610d9960008383610fc2565b8060046000828254610dab919061165f565b90915550506001600160a01b0382166000818152600260209081526040808320805486019055518481526000805160206117a5833981519152910160405180910390a35050565b6001600160a01b038216610e525760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610560565b610e5e82600083610fc2565b6001600160a01b03821660009081526002602052604090205481811015610ed25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610560565b6001600160a01b03831660008181526002602090815260408083208686039055600480548790039055518581529192916000805160206117a5833981519152910160405180910390a3505050565b610f286110e9565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d1a3390565b6000610758838361112f565b60006103f6825490565b6000818152600183016020526040812054610fba575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556103f6565b5060006103f6565b6104ef838383611159565b610fd7828261075f565b61057357610fe4816111bf565b610fef8360206111d1565b604051602001611000929190611672565b60408051601f198184030181529082905262461bcd60e51b8252610560916004016114ae565b611030828261075f565b15610573576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610758836001600160a01b03841661136d565b60075460ff166106155760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610560565b60075460ff16156106155760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610560565b6000826000018281548110611146576111466116e1565b9060005260206000200154905092915050565b60075460ff16156104ef5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610560565b60606103f66001600160a01b03831660145b606060006111e08360026116f7565b6111eb90600261165f565b67ffffffffffffffff8111156112035761120361170e565b6040519080825280601f01601f19166020018201604052801561122d576020820181803683370190505b509050600360fc1b81600081518110611248576112486116e1565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611277576112776116e1565b60200101906001600160f81b031916908160001a905350600061129b8460026116f7565b6112a690600161165f565b90505b600181111561131e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112da576112da6116e1565b1a60f81b8282815181106112f0576112f06116e1565b60200101906001600160f81b031916908160001a90535060049490941c9361131781611724565b90506112a9565b5083156107585760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610560565b6000818152600183016020526040812054801561145657600061139160018361173b565b85549091506000906113a59060019061173b565b905081811461140a5760008660000182815481106113c5576113c56116e1565b90600052602060002001549050808760000184815481106113e8576113e86116e1565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061141b5761141b61174e565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506103f6565b60009150506103f6565b60006020828403121561147257600080fd5b81356001600160e01b03198116811461075857600080fd5b60005b838110156114a557818101518382015260200161148d565b50506000910152565b60208152600082518060208401526114cd81604085016020870161148a565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146114f857600080fd5b919050565b6000806040838503121561151057600080fd5b611519836114e1565b946020939093013593505050565b60008060006060848603121561153c57600080fd5b611545846114e1565b9250611553602085016114e1565b9150604084013590509250925092565b60006020828403121561157557600080fd5b5035919050565b6000806040838503121561158f57600080fd5b8235915061159f602084016114e1565b90509250929050565b6000602082840312156115ba57600080fd5b610758826114e1565b600080604083850312156115d657600080fd5b50508035926020909101359150565b600080604083850312156115f857600080fd5b611601836114e1565b915061159f602084016114e1565b600181811c9082168061162357607f821691505b60208210810361164357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156103f6576103f6611649565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516116a481601785016020880161148a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116d581602884016020880161148a565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176103f6576103f6611649565b634e487b7160e01b600052604160045260246000fd5b60008161173357611733611649565b506000190190565b818103818111156103f6576103f6611649565b634e487b7160e01b600052603160045260246000fdfe45524332305072657365744d696e7465725061757365723a206d75737420686165d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220869bafd8796afcbd2b83d9ab479f7920e24272bf48f6b43b28917d060a789e4d64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" +var MockERC20Artifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"MockERC20\",\n \"sourceName\": \"contracts/mocks/MockERC20.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RoleAdminChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleGranted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleRevoked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MINTER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"PAUSER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burnFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"subtractedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"decreaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleAdmin\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getRoleMember\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleMemberCount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"grantRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hasRole\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"addedValue\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"increaseAllowance\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"renounceRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x60806040523480156200001157600080fd5b50604080518082018252600480825263151154d560e21b60208084018290528451808601909552918452908301529081816005620000508382620002e2565b5060066200005f8282620002e2565b50506007805460ff191690555062000079600033620000d9565b620000a57f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000d9565b620000d17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000d9565b5050620003ae565b620000e58282620000e9565b5050565b6200010082826200012c60201b620008871760201c565b6000828152600160209081526040909120620001279183906200090b620001cc821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e5576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001883390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001e3836001600160a01b038416620001ec565b90505b92915050565b60008181526001830160205260408120546200023557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001e6565b506000620001e6565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200026957607f821691505b6020821081036200028a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012757600081815260208120601f850160051c81016020861015620002b95750805b601f850160051c820191505b81811015620002da57828155600101620002c5565b505050505050565b81516001600160401b03811115620002fe57620002fe6200023e565b62000316816200030f845462000254565b8462000290565b602080601f8311600181146200034e5760008415620003355750858301515b600019600386901b1c1916600185901b178555620002da565b600085815260208120601f198616915b828110156200037f578886015182559484019460019091019084016200035e565b50858210156200039e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6117fa80620003be6000396000f3fe608060405234801561001057600080fd5b50600436106101845760003560e01c806370a08231116100d9578063a457c2d711610087578063a457c2d714610336578063a9059cbb14610349578063ca15c8731461035c578063d53913931461036f578063d547741f14610396578063dd62ed3e146103a9578063e63ab1e9146103bc57600080fd5b806370a08231146102a457806379cc6790146102cd5780638456cb59146102e05780639010d07c146102e857806391d148541461031357806395d89b4114610326578063a217fddf1461032e57600080fd5b8063313ce56711610136578063313ce5671461023657806336568abe1461024557806339509351146102585780633f4ba83a1461026b57806340c10f191461027357806342966c68146102865780635c975abb1461029957600080fd5b806301ffc9a71461018957806306fdde03146101b1578063095ea7b3146101c657806318160ddd146101d957806323b872dd146101eb578063248a9ca3146101fe5780632f2ff15d14610221575b600080fd5b61019c610197366004611460565b6103d1565b60405190151581526020015b60405180910390f35b6101b96103fc565b6040516101a891906114ae565b61019c6101d43660046114fd565b61048e565b6004545b6040519081526020016101a8565b61019c6101f9366004611527565b6104a6565b6101dd61020c366004611563565b60009081526020819052604090206001015490565b61023461022f36600461157c565b6104ca565b005b604051601281526020016101a8565b61023461025336600461157c565b6104f4565b61019c6102663660046114fd565b610577565b610234610599565b6102346102813660046114fd565b610617565b610234610294366004611563565b6106a4565b60075460ff1661019c565b6101dd6102b23660046115a8565b6001600160a01b031660009081526002602052604090205490565b6102346102db3660046114fd565b6106b1565b6102346106c6565b6102fb6102f63660046115c3565b610740565b6040516001600160a01b0390911681526020016101a8565b61019c61032136600461157c565b61075f565b6101b9610788565b6101dd600081565b61019c6103443660046114fd565b610797565b61019c6103573660046114fd565b610812565b6101dd61036a366004611563565b610820565b6101dd7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102346103a436600461157c565b610837565b6101dd6103b73660046115e5565b61085c565b6101dd60008051602061178583398151915281565b60006001600160e01b03198216635a05180f60e01b14806103f657506103f682610920565b92915050565b60606005805461040b9061160f565b80601f01602080910402602001604051908101604052809291908181526020018280546104379061160f565b80156104845780601f1061045957610100808354040283529160200191610484565b820191906000526020600020905b81548152906001019060200180831161046757829003601f168201915b5050505050905090565b60003361049c818585610955565b5060019392505050565b6000336104b4858285610a79565b6104bf858585610af3565b506001949350505050565b6000828152602081905260409020600101546104e581610c97565b6104ef8383610ca1565b505050565b6001600160a01b03811633146105695760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105738282610cc3565b5050565b60003361049c81858561058a838361085c565b610594919061165f565b610955565b6105b16000805160206117858339815191523361075f565b61060d5760405162461bcd60e51b8152602060048201526039602482015260008051602061176583398151915260448201527876652070617573657220726f6c6520746f20756e706175736560381b6064820152608401610560565b610615610ce5565b565b6106417f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361075f565b61069a5760405162461bcd60e51b815260206004820152603660248201526000805160206117658339815191526044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608401610560565b6105738282610d37565b6106ae3382610df2565b50565b6106bc823383610a79565b6105738282610df2565b6106de6000805160206117858339815191523361075f565b6107385760405162461bcd60e51b8152602060048201526037602482015260008051602061176583398151915260448201527676652070617573657220726f6c6520746f20706175736560481b6064820152608401610560565b610615610f20565b60008281526001602052604081206107589083610f5d565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461040b9061160f565b600033816107a5828661085c565b9050838110156108055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610560565b6104bf8286868403610955565b60003361049c818585610af3565b60008181526001602052604081206103f690610f69565b60008281526020819052604090206001015461085281610c97565b6104ef8383610cc3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610891828261075f565b610573576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556108c73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610758836001600160a01b038416610f73565b60006001600160e01b03198216637965db0b60e01b14806103f657506301ffc9a760e01b6001600160e01b03198316146103f6565b6001600160a01b0383166109b75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610560565b6001600160a01b038216610a185760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610560565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a85848461085c565b90506000198114610aed5781811015610ae05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610560565b610aed8484848403610955565b50505050565b6001600160a01b038316610b575760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610560565b6001600160a01b038216610bb95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610560565b610bc4838383610fc2565b6001600160a01b03831660009081526002602052604090205481811015610c3c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610560565b6001600160a01b0380851660008181526002602052604080822086860390559286168082529083902080548601905591516000805160206117a583398151915290610c8a9086815260200190565b60405180910390a3610aed565b6106ae8133610fcd565b610cab8282610887565b60008281526001602052604090206104ef908261090b565b610ccd8282611026565b60008281526001602052604090206104ef908261108b565b610ced6110a0565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610d8d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610560565b610d9960008383610fc2565b8060046000828254610dab919061165f565b90915550506001600160a01b0382166000818152600260209081526040808320805486019055518481526000805160206117a5833981519152910160405180910390a35050565b6001600160a01b038216610e525760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610560565b610e5e82600083610fc2565b6001600160a01b03821660009081526002602052604090205481811015610ed25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610560565b6001600160a01b03831660008181526002602090815260408083208686039055600480548790039055518581529192916000805160206117a5833981519152910160405180910390a3505050565b610f286110e9565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d1a3390565b6000610758838361112f565b60006103f6825490565b6000818152600183016020526040812054610fba575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556103f6565b5060006103f6565b6104ef838383611159565b610fd7828261075f565b61057357610fe4816111bf565b610fef8360206111d1565b604051602001611000929190611672565b60408051601f198184030181529082905262461bcd60e51b8252610560916004016114ae565b611030828261075f565b15610573576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610758836001600160a01b03841661136d565b60075460ff166106155760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610560565b60075460ff16156106155760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610560565b6000826000018281548110611146576111466116e1565b9060005260206000200154905092915050565b60075460ff16156104ef5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610560565b60606103f66001600160a01b03831660145b606060006111e08360026116f7565b6111eb90600261165f565b67ffffffffffffffff8111156112035761120361170e565b6040519080825280601f01601f19166020018201604052801561122d576020820181803683370190505b509050600360fc1b81600081518110611248576112486116e1565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611277576112776116e1565b60200101906001600160f81b031916908160001a905350600061129b8460026116f7565b6112a690600161165f565b90505b600181111561131e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112da576112da6116e1565b1a60f81b8282815181106112f0576112f06116e1565b60200101906001600160f81b031916908160001a90535060049490941c9361131781611724565b90506112a9565b5083156107585760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610560565b6000818152600183016020526040812054801561145657600061139160018361173b565b85549091506000906113a59060019061173b565b905081811461140a5760008660000182815481106113c5576113c56116e1565b90600052602060002001549050808760000184815481106113e8576113e86116e1565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061141b5761141b61174e565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506103f6565b60009150506103f6565b60006020828403121561147257600080fd5b81356001600160e01b03198116811461075857600080fd5b60005b838110156114a557818101518382015260200161148d565b50506000910152565b60208152600082518060208401526114cd81604085016020870161148a565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146114f857600080fd5b919050565b6000806040838503121561151057600080fd5b611519836114e1565b946020939093013593505050565b60008060006060848603121561153c57600080fd5b611545846114e1565b9250611553602085016114e1565b9150604084013590509250925092565b60006020828403121561157557600080fd5b5035919050565b6000806040838503121561158f57600080fd5b8235915061159f602084016114e1565b90509250929050565b6000602082840312156115ba57600080fd5b610758826114e1565b600080604083850312156115d657600080fd5b50508035926020909101359150565b600080604083850312156115f857600080fd5b611601836114e1565b915061159f602084016114e1565b600181811c9082168061162357607f821691505b60208210810361164357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156103f6576103f6611649565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516116a481601785016020880161148a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116d581602884016020880161148a565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176103f6576103f6611649565b634e487b7160e01b600052604160045260246000fd5b60008161173357611733611649565b506000190190565b818103818111156103f6576103f6611649565b634e487b7160e01b600052603160045260246000fdfe45524332305072657365744d696e7465725061757365723a206d75737420686165d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212202ccd8a44e21da5958b56adaa05c71d839faf652d1e631f6f3b0876a88afebe3a64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101845760003560e01c806370a08231116100d9578063a457c2d711610087578063a457c2d714610336578063a9059cbb14610349578063ca15c8731461035c578063d53913931461036f578063d547741f14610396578063dd62ed3e146103a9578063e63ab1e9146103bc57600080fd5b806370a08231146102a457806379cc6790146102cd5780638456cb59146102e05780639010d07c146102e857806391d148541461031357806395d89b4114610326578063a217fddf1461032e57600080fd5b8063313ce56711610136578063313ce5671461023657806336568abe1461024557806339509351146102585780633f4ba83a1461026b57806340c10f191461027357806342966c68146102865780635c975abb1461029957600080fd5b806301ffc9a71461018957806306fdde03146101b1578063095ea7b3146101c657806318160ddd146101d957806323b872dd146101eb578063248a9ca3146101fe5780632f2ff15d14610221575b600080fd5b61019c610197366004611460565b6103d1565b60405190151581526020015b60405180910390f35b6101b96103fc565b6040516101a891906114ae565b61019c6101d43660046114fd565b61048e565b6004545b6040519081526020016101a8565b61019c6101f9366004611527565b6104a6565b6101dd61020c366004611563565b60009081526020819052604090206001015490565b61023461022f36600461157c565b6104ca565b005b604051601281526020016101a8565b61023461025336600461157c565b6104f4565b61019c6102663660046114fd565b610577565b610234610599565b6102346102813660046114fd565b610617565b610234610294366004611563565b6106a4565b60075460ff1661019c565b6101dd6102b23660046115a8565b6001600160a01b031660009081526002602052604090205490565b6102346102db3660046114fd565b6106b1565b6102346106c6565b6102fb6102f63660046115c3565b610740565b6040516001600160a01b0390911681526020016101a8565b61019c61032136600461157c565b61075f565b6101b9610788565b6101dd600081565b61019c6103443660046114fd565b610797565b61019c6103573660046114fd565b610812565b6101dd61036a366004611563565b610820565b6101dd7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102346103a436600461157c565b610837565b6101dd6103b73660046115e5565b61085c565b6101dd60008051602061178583398151915281565b60006001600160e01b03198216635a05180f60e01b14806103f657506103f682610920565b92915050565b60606005805461040b9061160f565b80601f01602080910402602001604051908101604052809291908181526020018280546104379061160f565b80156104845780601f1061045957610100808354040283529160200191610484565b820191906000526020600020905b81548152906001019060200180831161046757829003601f168201915b5050505050905090565b60003361049c818585610955565b5060019392505050565b6000336104b4858285610a79565b6104bf858585610af3565b506001949350505050565b6000828152602081905260409020600101546104e581610c97565b6104ef8383610ca1565b505050565b6001600160a01b03811633146105695760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105738282610cc3565b5050565b60003361049c81858561058a838361085c565b610594919061165f565b610955565b6105b16000805160206117858339815191523361075f565b61060d5760405162461bcd60e51b8152602060048201526039602482015260008051602061176583398151915260448201527876652070617573657220726f6c6520746f20756e706175736560381b6064820152608401610560565b610615610ce5565b565b6106417f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361075f565b61069a5760405162461bcd60e51b815260206004820152603660248201526000805160206117658339815191526044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608401610560565b6105738282610d37565b6106ae3382610df2565b50565b6106bc823383610a79565b6105738282610df2565b6106de6000805160206117858339815191523361075f565b6107385760405162461bcd60e51b8152602060048201526037602482015260008051602061176583398151915260448201527676652070617573657220726f6c6520746f20706175736560481b6064820152608401610560565b610615610f20565b60008281526001602052604081206107589083610f5d565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461040b9061160f565b600033816107a5828661085c565b9050838110156108055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610560565b6104bf8286868403610955565b60003361049c818585610af3565b60008181526001602052604081206103f690610f69565b60008281526020819052604090206001015461085281610c97565b6104ef8383610cc3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610891828261075f565b610573576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556108c73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610758836001600160a01b038416610f73565b60006001600160e01b03198216637965db0b60e01b14806103f657506301ffc9a760e01b6001600160e01b03198316146103f6565b6001600160a01b0383166109b75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610560565b6001600160a01b038216610a185760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610560565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610a85848461085c565b90506000198114610aed5781811015610ae05760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610560565b610aed8484848403610955565b50505050565b6001600160a01b038316610b575760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610560565b6001600160a01b038216610bb95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610560565b610bc4838383610fc2565b6001600160a01b03831660009081526002602052604090205481811015610c3c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610560565b6001600160a01b0380851660008181526002602052604080822086860390559286168082529083902080548601905591516000805160206117a583398151915290610c8a9086815260200190565b60405180910390a3610aed565b6106ae8133610fcd565b610cab8282610887565b60008281526001602052604090206104ef908261090b565b610ccd8282611026565b60008281526001602052604090206104ef908261108b565b610ced6110a0565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610d8d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610560565b610d9960008383610fc2565b8060046000828254610dab919061165f565b90915550506001600160a01b0382166000818152600260209081526040808320805486019055518481526000805160206117a5833981519152910160405180910390a35050565b6001600160a01b038216610e525760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610560565b610e5e82600083610fc2565b6001600160a01b03821660009081526002602052604090205481811015610ed25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610560565b6001600160a01b03831660008181526002602090815260408083208686039055600480548790039055518581529192916000805160206117a5833981519152910160405180910390a3505050565b610f286110e9565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610d1a3390565b6000610758838361112f565b60006103f6825490565b6000818152600183016020526040812054610fba575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556103f6565b5060006103f6565b6104ef838383611159565b610fd7828261075f565b61057357610fe4816111bf565b610fef8360206111d1565b604051602001611000929190611672565b60408051601f198184030181529082905262461bcd60e51b8252610560916004016114ae565b611030828261075f565b15610573576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610758836001600160a01b03841661136d565b60075460ff166106155760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610560565b60075460ff16156106155760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610560565b6000826000018281548110611146576111466116e1565b9060005260206000200154905092915050565b60075460ff16156104ef5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610560565b60606103f66001600160a01b03831660145b606060006111e08360026116f7565b6111eb90600261165f565b67ffffffffffffffff8111156112035761120361170e565b6040519080825280601f01601f19166020018201604052801561122d576020820181803683370190505b509050600360fc1b81600081518110611248576112486116e1565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611277576112776116e1565b60200101906001600160f81b031916908160001a905350600061129b8460026116f7565b6112a690600161165f565b90505b600181111561131e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106112da576112da6116e1565b1a60f81b8282815181106112f0576112f06116e1565b60200101906001600160f81b031916908160001a90535060049490941c9361131781611724565b90506112a9565b5083156107585760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610560565b6000818152600183016020526040812054801561145657600061139160018361173b565b85549091506000906113a59060019061173b565b905081811461140a5760008660000182815481106113c5576113c56116e1565b90600052602060002001549050808760000184815481106113e8576113e86116e1565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061141b5761141b61174e565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506103f6565b60009150506103f6565b60006020828403121561147257600080fd5b81356001600160e01b03198116811461075857600080fd5b60005b838110156114a557818101518382015260200161148d565b50506000910152565b60208152600082518060208401526114cd81604085016020870161148a565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146114f857600080fd5b919050565b6000806040838503121561151057600080fd5b611519836114e1565b946020939093013593505050565b60008060006060848603121561153c57600080fd5b611545846114e1565b9250611553602085016114e1565b9150604084013590509250925092565b60006020828403121561157557600080fd5b5035919050565b6000806040838503121561158f57600080fd5b8235915061159f602084016114e1565b90509250929050565b6000602082840312156115ba57600080fd5b610758826114e1565b600080604083850312156115d657600080fd5b50508035926020909101359150565b600080604083850312156115f857600080fd5b611601836114e1565b915061159f602084016114e1565b600181811c9082168061162357607f821691505b60208210810361164357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156103f6576103f6611649565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516116a481601785016020880161148a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116d581602884016020880161148a565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176103f6576103f6611649565b634e487b7160e01b600052604160045260246000fd5b60008161173357611733611649565b506000190190565b818103818111156103f6576103f6611649565b634e487b7160e01b600052603160045260246000fdfe45524332305072657365744d696e7465725061757365723a206d75737420686165d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212202ccd8a44e21da5958b56adaa05c71d839faf652d1e631f6f3b0876a88afebe3a64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" var RootERC20PredicateArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"RootERC20Predicate\",\n \"sourceName\": \"contracts/root/RootERC20Predicate.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"depositor\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20Deposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"withdrawer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20Withdraw\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"TokenMapped\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEPOSIT_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAP_TOKEN_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WITHDRAW_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"childERC20Predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"childTokenTemplate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC20Metadata\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC20Metadata\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"depositTo\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"exitHelper\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newStateSender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newExitHelper\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newChildERC20Predicate\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newChildTokenTemplate\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"nativeTokenRootAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC20Metadata\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"mapToken\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"onL2StateReceive\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"rootTokenToChildToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"stateSender\",\n \"outputs\": [\n {\n \"internalType\": \"contract IStateSender\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b506113c8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100bf5760003560e01c8063cb10f94c1161007c578063cb10f94c1461018d578063d41f1771146101a6578063d57184e4146101cd578063f213159c146101e0578063f43cda8b146101f3578063f4a120f714610206578063f64512551461021957600080fd5b80631459457a146100c457806347e7ef24146100d95780637efab4f5146100ec57806395c7041c14610132578063b176806514610145578063b68ad1e41461017a575b600080fd5b6100d76100d2366004610f4c565b610240565b005b6100d76100e7366004610fbd565b6104ae565b6101156100fa366004610fe9565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600154610115906001600160a01b031681565b61016c7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b604051908152602001610129565b600354610115906001600160a01b031681565b600054610115906201000090046001600160a01b031681565b61016c7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b600254610115906001600160a01b031681565b6100d76101ee36600461100d565b6104bd565b6100d761020136600461104e565b6104cd565b6100d7610214366004610fe9565b610654565b61016c7f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b600054610100900460ff16158080156102605750600054600160ff909116105b8061027a5750303b15801561027a575060005460ff166001145b6102e25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610305576000805461ff0019166101001790555b6001600160a01b0386161580159061032557506001600160a01b03851615155b801561033957506001600160a01b03841615155b801561034d57506001600160a01b03831615155b6103a85760405162461bcd60e51b815260206004820152602660248201527f526f6f7445524332305072656469636174653a204241445f494e495449414c496044820152652d20aa24a7a760d11b60648201526084016102d9565b6000805462010000600160b01b031916620100006001600160a01b038981169190910291909117909155600180546001600160a01b03199081168884161790915560028054821687841617905560038054909116858316179055821615610460576001600160a01b03821660008181526004602052604080822080546001600160a01b03191661101090811790915590519092917f85920d35e6c72f6b2affffa04298b0cecfeba86e4a9f407df661f1cb8ab5e61791a35b80156104a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6104b9823383610a0b565b5050565b6104c8838383610a0b565b505050565b6001546001600160a01b031633146105335760405162461bcd60e51b8152602060048201526024808201527f526f6f7445524332305072656469636174653a204f4e4c595f455849545f4845604482015263262822a960e11b60648201526084016102d9565b6002546001600160a01b038481169116146105a15760405162461bcd60e51b815260206004820152602860248201527f526f6f7445524332305072656469636174653a204f4e4c595f4348494c445f50604482015267524544494341544560c01b60648201526084016102d9565b7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e9828696105d06020600084866110d7565b6105d991611101565b036105f8576105f36105ee82602081866110d7565b610b90565b61064e565b60405162461bcd60e51b815260206004820152602560248201527f526f6f7445524332305072656469636174653a20494e56414c49445f5349474e604482015264415455524560d81b60648201526084016102d9565b50505050565b6001600160a01b0381166106b45760405162461bcd60e51b815260206004820152602160248201527f526f6f7445524332305072656469636174653a20494e56414c49445f544f4b456044820152602760f91b60648201526084016102d9565b6001600160a01b0381811660009081526004602052604090205416156107275760405162461bcd60e51b815260206004820152602260248201527f526f6f7445524332305072656469636174653a20414c52454144595f4d415050604482015261115160f21b60648201526084016102d9565b60035460408051606084901b6bffffffffffffffffffffffff19166020808301919091528251601481840301815260348301808552815191909201206002546001600160a01b03908116606c8501526f5af43d82803e903d91602b57fd5bf3ff60588501529094166048830152733d602d80600a3d3981f3363d3d373d3d3d363d739052608c81019290925260379082012060ac82015260556077909101206000906001600160a01b03838116600081815260046020819052604080832080546001600160a01b031916878716179055825460025482516306fdde0360e01b81529251979850620100009091048616966316f198319691909116947f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad948a9491936306fdde03938184019390918290030181865afa15801561086d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610895919081019061115a565b876001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156108d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108fb919081019061115a565b886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d91906111fc565b60405160200161097195949392919061124b565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161099d92919061129d565b600060405180830381600087803b1580156109b757600080fd5b505af11580156109cb573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507f85920d35e6c72f6b2affffa04298b0cecfeba86e4a9f407df661f1cb8ab5e61790600090a35050565b6001600160a01b0383811660009081526004602052604090205416610a3357610a3383610654565b6001600160a01b038084166000908152600460205260409020541680610a5b57610a5b6112c1565b610a706001600160a01b038516333085610c48565b600054600254604080517f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82160208201526001600160a01b0388811682840152336060830152878116608083015260a08083018890528351808403909101815260c08301938490526316f1983160e01b909352620100009094048416936316f1983193610b019391169160c40161129d565b600060405180830381600087803b158015610b1b57600080fd5b505af1158015610b2f573d6000803e3d6000fd5b50505050826001600160a01b0316816001600160a01b0316856001600160a01b03167f8be9001bb612c7123a1861dc0d9d94e683261f6cbbd7c7438b708975bc4908a33386604051610b829291906112d7565b60405180910390a450505050565b6000808080610ba1858701876112f0565b6001600160a01b0380851660009081526004602052604090205494985092965090945092501680610bd457610bd46112c1565b610be86001600160a01b0386168484610cb3565b826001600160a01b0316816001600160a01b0316866001600160a01b03167f9c4f744b2e971d7058a9d8f43977e0e17bf7d57a48659f0e18541b7ee3d022e48786604051610c379291906112d7565b60405180910390a450505050505050565b6040516001600160a01b038085166024830152831660448201526064810182905261064e9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610cd2565b6104c88363a9059cbb60e01b8484604051602401610c7c9291906112d7565b6000610d27826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610da49092919063ffffffff16565b8051909150156104c85780806020019051810190610d459190611341565b6104c85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102d9565b6060610db38484600085610dbb565b949350505050565b606082471015610e1c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102d9565b600080866001600160a01b03168587604051610e389190611363565b60006040518083038185875af1925050503d8060008114610e75576040519150601f19603f3d011682016040523d82523d6000602084013e610e7a565b606091505b5091509150610e8b87838387610e96565b979650505050505050565b60608315610f05578251600003610efe576001600160a01b0385163b610efe5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102d9565b5081610db3565b610db38383815115610f1a5781518083602001fd5b8060405162461bcd60e51b81526004016102d9919061137f565b6001600160a01b0381168114610f4957600080fd5b50565b600080600080600060a08688031215610f6457600080fd5b8535610f6f81610f34565b94506020860135610f7f81610f34565b93506040860135610f8f81610f34565b92506060860135610f9f81610f34565b91506080860135610faf81610f34565b809150509295509295909350565b60008060408385031215610fd057600080fd5b8235610fdb81610f34565b946020939093013593505050565b600060208284031215610ffb57600080fd5b813561100681610f34565b9392505050565b60008060006060848603121561102257600080fd5b833561102d81610f34565b9250602084013561103d81610f34565b929592945050506040919091013590565b6000806000806060858703121561106457600080fd5b84359350602085013561107681610f34565b9250604085013567ffffffffffffffff8082111561109357600080fd5b818701915087601f8301126110a757600080fd5b8135818111156110b657600080fd5b8860208285010111156110c857600080fd5b95989497505060200194505050565b600080858511156110e757600080fd5b838611156110f457600080fd5b5050820193919092039150565b8035602083101561111a57600019602084900360031b1b165b92915050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015611151578181015183820152602001611139565b50506000910152565b60006020828403121561116c57600080fd5b815167ffffffffffffffff8082111561118457600080fd5b818401915084601f83011261119857600080fd5b8151818111156111aa576111aa611120565b604051601f8201601f19908116603f011681019083821181831017156111d2576111d2611120565b816040528281528760208487010111156111eb57600080fd5b610e8b836020830160208801611136565b60006020828403121561120e57600080fd5b815160ff8116811461100657600080fd5b60008151808452611237816020860160208601611136565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260a0604082018190526000906112759083018661121f565b8281036060840152611287818661121f565b91505060ff831660808301529695505050505050565b6001600160a01b0383168152604060208201819052600090610db39083018461121f565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03929092168252602082015260400190565b6000806000806080858703121561130657600080fd5b843561131181610f34565b9350602085013561132181610f34565b9250604085013561133181610f34565b9396929550929360600135925050565b60006020828403121561135357600080fd5b8151801515811461100657600080fd5b60008251611375818460208701611136565b9190910192915050565b602081526000611006602083018461121f56fea264697066735822122071186a5f68a0e568193775380eab31143f89ff0d61291b20e262c95a735f1d7b64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106100bf5760003560e01c8063cb10f94c1161007c578063cb10f94c1461018d578063d41f1771146101a6578063d57184e4146101cd578063f213159c146101e0578063f43cda8b146101f3578063f4a120f714610206578063f64512551461021957600080fd5b80631459457a146100c457806347e7ef24146100d95780637efab4f5146100ec57806395c7041c14610132578063b176806514610145578063b68ad1e41461017a575b600080fd5b6100d76100d2366004610f4c565b610240565b005b6100d76100e7366004610fbd565b6104ae565b6101156100fa366004610fe9565b6004602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600154610115906001600160a01b031681565b61016c7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b604051908152602001610129565b600354610115906001600160a01b031681565b600054610115906201000090046001600160a01b031681565b61016c7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b600254610115906001600160a01b031681565b6100d76101ee36600461100d565b6104bd565b6100d761020136600461104e565b6104cd565b6100d7610214366004610fe9565b610654565b61016c7f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b600054610100900460ff16158080156102605750600054600160ff909116105b8061027a5750303b15801561027a575060005460ff166001145b6102e25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610305576000805461ff0019166101001790555b6001600160a01b0386161580159061032557506001600160a01b03851615155b801561033957506001600160a01b03841615155b801561034d57506001600160a01b03831615155b6103a85760405162461bcd60e51b815260206004820152602660248201527f526f6f7445524332305072656469636174653a204241445f494e495449414c496044820152652d20aa24a7a760d11b60648201526084016102d9565b6000805462010000600160b01b031916620100006001600160a01b038981169190910291909117909155600180546001600160a01b03199081168884161790915560028054821687841617905560038054909116858316179055821615610460576001600160a01b03821660008181526004602052604080822080546001600160a01b03191661101090811790915590519092917f85920d35e6c72f6b2affffa04298b0cecfeba86e4a9f407df661f1cb8ab5e61791a35b80156104a6576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6104b9823383610a0b565b5050565b6104c8838383610a0b565b505050565b6001546001600160a01b031633146105335760405162461bcd60e51b8152602060048201526024808201527f526f6f7445524332305072656469636174653a204f4e4c595f455849545f4845604482015263262822a960e11b60648201526084016102d9565b6002546001600160a01b038481169116146105a15760405162461bcd60e51b815260206004820152602860248201527f526f6f7445524332305072656469636174653a204f4e4c595f4348494c445f50604482015267524544494341544560c01b60648201526084016102d9565b7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e9828696105d06020600084866110d7565b6105d991611101565b036105f8576105f36105ee82602081866110d7565b610b90565b61064e565b60405162461bcd60e51b815260206004820152602560248201527f526f6f7445524332305072656469636174653a20494e56414c49445f5349474e604482015264415455524560d81b60648201526084016102d9565b50505050565b6001600160a01b0381166106b45760405162461bcd60e51b815260206004820152602160248201527f526f6f7445524332305072656469636174653a20494e56414c49445f544f4b456044820152602760f91b60648201526084016102d9565b6001600160a01b0381811660009081526004602052604090205416156107275760405162461bcd60e51b815260206004820152602260248201527f526f6f7445524332305072656469636174653a20414c52454144595f4d415050604482015261115160f21b60648201526084016102d9565b60035460408051606084901b6bffffffffffffffffffffffff19166020808301919091528251601481840301815260348301808552815191909201206002546001600160a01b03908116606c8501526f5af43d82803e903d91602b57fd5bf3ff60588501529094166048830152733d602d80600a3d3981f3363d3d373d3d3d363d739052608c81019290925260379082012060ac82015260556077909101206000906001600160a01b03838116600081815260046020819052604080832080546001600160a01b031916878716179055825460025482516306fdde0360e01b81529251979850620100009091048616966316f198319691909116947f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad948a9491936306fdde03938184019390918290030181865afa15801561086d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610895919081019061115a565b876001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156108d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108fb919081019061115a565b886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d91906111fc565b60405160200161097195949392919061124b565b6040516020818303038152906040526040518363ffffffff1660e01b815260040161099d92919061129d565b600060405180830381600087803b1580156109b757600080fd5b505af11580156109cb573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507f85920d35e6c72f6b2affffa04298b0cecfeba86e4a9f407df661f1cb8ab5e61790600090a35050565b6001600160a01b0383811660009081526004602052604090205416610a3357610a3383610654565b6001600160a01b038084166000908152600460205260409020541680610a5b57610a5b6112c1565b610a706001600160a01b038516333085610c48565b600054600254604080517f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82160208201526001600160a01b0388811682840152336060830152878116608083015260a08083018890528351808403909101815260c08301938490526316f1983160e01b909352620100009094048416936316f1983193610b019391169160c40161129d565b600060405180830381600087803b158015610b1b57600080fd5b505af1158015610b2f573d6000803e3d6000fd5b50505050826001600160a01b0316816001600160a01b0316856001600160a01b03167f8be9001bb612c7123a1861dc0d9d94e683261f6cbbd7c7438b708975bc4908a33386604051610b829291906112d7565b60405180910390a450505050565b6000808080610ba1858701876112f0565b6001600160a01b0380851660009081526004602052604090205494985092965090945092501680610bd457610bd46112c1565b610be86001600160a01b0386168484610cb3565b826001600160a01b0316816001600160a01b0316866001600160a01b03167f9c4f744b2e971d7058a9d8f43977e0e17bf7d57a48659f0e18541b7ee3d022e48786604051610c379291906112d7565b60405180910390a450505050505050565b6040516001600160a01b038085166024830152831660448201526064810182905261064e9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610cd2565b6104c88363a9059cbb60e01b8484604051602401610c7c9291906112d7565b6000610d27826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610da49092919063ffffffff16565b8051909150156104c85780806020019051810190610d459190611341565b6104c85760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102d9565b6060610db38484600085610dbb565b949350505050565b606082471015610e1c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102d9565b600080866001600160a01b03168587604051610e389190611363565b60006040518083038185875af1925050503d8060008114610e75576040519150601f19603f3d011682016040523d82523d6000602084013e610e7a565b606091505b5091509150610e8b87838387610e96565b979650505050505050565b60608315610f05578251600003610efe576001600160a01b0385163b610efe5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102d9565b5081610db3565b610db38383815115610f1a5781518083602001fd5b8060405162461bcd60e51b81526004016102d9919061137f565b6001600160a01b0381168114610f4957600080fd5b50565b600080600080600060a08688031215610f6457600080fd5b8535610f6f81610f34565b94506020860135610f7f81610f34565b93506040860135610f8f81610f34565b92506060860135610f9f81610f34565b91506080860135610faf81610f34565b809150509295509295909350565b60008060408385031215610fd057600080fd5b8235610fdb81610f34565b946020939093013593505050565b600060208284031215610ffb57600080fd5b813561100681610f34565b9392505050565b60008060006060848603121561102257600080fd5b833561102d81610f34565b9250602084013561103d81610f34565b929592945050506040919091013590565b6000806000806060858703121561106457600080fd5b84359350602085013561107681610f34565b9250604085013567ffffffffffffffff8082111561109357600080fd5b818701915087601f8301126110a757600080fd5b8135818111156110b657600080fd5b8860208285010111156110c857600080fd5b95989497505060200194505050565b600080858511156110e757600080fd5b838611156110f457600080fd5b5050820193919092039150565b8035602083101561111a57600019602084900360031b1b165b92915050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015611151578181015183820152602001611139565b50506000910152565b60006020828403121561116c57600080fd5b815167ffffffffffffffff8082111561118457600080fd5b818401915084601f83011261119857600080fd5b8151818111156111aa576111aa611120565b604051601f8201601f19908116603f011681019083821181831017156111d2576111d2611120565b816040528281528760208487010111156111eb57600080fd5b610e8b836020830160208801611136565b60006020828403121561120e57600080fd5b815160ff8116811461100657600080fd5b60008151808452611237816020860160208601611136565b601f01601f19169290920160200192915050565b8581526001600160a01b038516602082015260a0604082018190526000906112759083018661121f565b8281036060840152611287818661121f565b91505060ff831660808301529695505050505050565b6001600160a01b0383168152604060208201819052600090610db39083018461121f565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03929092168252602082015260400190565b6000806000806080858703121561130657600080fd5b843561131181610f34565b9350602085013561132181610f34565b9250604085013561133181610f34565b9396929550929360600135925050565b60006020828403121561135357600080fd5b8151801515811461100657600080fd5b60008251611375818460208701611136565b9190910192915050565b602081526000611006602083018461121f56fea264697066735822122071186a5f68a0e568193775380eab31143f89ff0d61291b20e262c95a735f1d7b64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" -var MockERC721Artifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"MockERC721\",\n \"sourceName\": \"contracts/mocks/MockERC721.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"approved\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"ApprovalForAll\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RoleAdminChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleGranted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleRevoked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MINTER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"PAUSER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getApproved\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleAdmin\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getRoleMember\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleMemberCount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"grantRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hasRole\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isApprovedForAll\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ownerOf\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"renounceRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"safeTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"safeTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setApprovalForAll\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"tokenByIndex\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"tokenOfOwnerByIndex\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"tokenURI\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x60806040523480156200001157600080fd5b5060405180604001604052806004815260200163151154d560e21b81525060405180604001604052806004815260200163151154d560e21b815250604051806040016040528060058152602001646c6f72656d60d81b815250828281600290816200007d91906200031f565b5060036200008c82826200031f565b5050600c805460ff1916905550600e620000a782826200031f565b50620000b560003362000116565b620000e17f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63362000116565b6200010d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3362000116565b505050620003eb565b62000122828262000126565b5050565b6200013d82826200016960201b62000c1a1760201c565b60008281526001602090815260409091206200016491839062000c9e62000209821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000122576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001c53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000220836001600160a01b03841662000229565b90505b92915050565b6000818152600183016020526040812054620002725750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000223565b50600062000223565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a657607f821691505b602082108103620002c757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200016457600081815260208120601f850160051c81016020861015620002f65750805b601f850160051c820191505b81811015620003175782815560010162000302565b505050505050565b81516001600160401b038111156200033b576200033b6200027b565b62000353816200034c845462000291565b84620002cd565b602080601f8311600181146200038b5760008415620003725750858301515b600019600386901b1c1916600185901b17855562000317565b600085815260208120601f198616915b82811015620003bc578886015182559484019460019091019084016200039b565b5085821015620003db5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61244180620003fb6000396000f3fe608060405234801561001057600080fd5b50600436106101a55760003560e01c80636352211e116100ef578063a22cb46511610092578063a22cb4651461036b578063b88d4fde1461037e578063c87b56dd14610391578063ca15c873146103a4578063d5391393146103b7578063d547741f146103de578063e63ab1e9146103f1578063e985e9c51461040657600080fd5b80636352211e146102f45780636a6278421461030757806370a082311461031a5780638456cb591461032d5780639010d07c1461033557806391d148541461034857806395d89b411461035b578063a217fddf1461036357600080fd5b80632f2ff15d116101575780632f2ff15d1461026f5780632f745c591461028257806336568abe146102955780633f4ba83a146102a857806342842e0e146102b057806342966c68146102c35780634f6ccce7146102d65780635c975abb146102e957600080fd5b806301ffc9a7146101aa57806306fdde03146101d2578063081812fc146101e7578063095ea7b31461021257806318160ddd1461022757806323b872dd14610239578063248a9ca31461024c575b600080fd5b6101bd6101b8366004611dba565b610419565b60405190151581526020015b60405180910390f35b6101da61042a565b6040516101c99190611e27565b6101fa6101f5366004611e3a565b6104bc565b6040516001600160a01b0390911681526020016101c9565b610225610220366004611e6f565b6104e3565b005b600a545b6040519081526020016101c9565b610225610247366004611e99565b6105fd565b61022b61025a366004611e3a565b60009081526020819052604090206001015490565b61022561027d366004611ed5565b61062f565b61022b610290366004611e6f565b610654565b6102256102a3366004611ed5565b6106ea565b610225610768565b6102256102be366004611e99565b6107ec565b6102256102d1366004611e3a565b610807565b61022b6102e4366004611e3a565b610838565b600c5460ff166101bd565b6101fa610302366004611e3a565b6108cb565b610225610315366004611f01565b610900565b61022b610328366004611f01565b6109aa565b610225610a30565b6101fa610343366004611f1c565b610ab0565b6101bd610356366004611ed5565b610acf565b6101da610af8565b61022b600081565b610225610379366004611f3e565b610b07565b61022561038c366004611f90565b610b12565b6101da61039f366004611e3a565b610b4a565b61022b6103b2366004611e3a565b610bb0565b61022b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102256103ec366004611ed5565b610bc7565b61022b6000805160206123ac83398151915281565b6101bd61041436600461206c565b610bec565b600061042482610cb3565b92915050565b60606002805461043990612096565b80601f016020809104026020016040519081016040528092919081815260200182805461046590612096565b80156104b25780601f10610487576101008083540402835291602001916104b2565b820191906000526020600020905b81548152906001019060200180831161049557829003601f168201915b5050505050905090565b60006104c782610cd8565b506000908152600660205260409020546001600160a01b031690565b60006104ee826108cb565b9050806001600160a01b0316836001600160a01b0316036105605760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061057c575061057c8133610bec565b6105ee5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610557565b6105f88383610cfd565b505050565b610608335b82610d6b565b6106245760405162461bcd60e51b8152600401610557906120d0565b6105f8838383610dca565b60008281526020819052604090206001015461064a81610f29565b6105f88383610f33565b600061065f836109aa565b82106106c15760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610557565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b038116331461075a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610557565b6107648282610f55565b5050565b6107806000805160206123ac83398151915233610acf565b6107e2576040805162461bcd60e51b81526020600482015260248101919091526000805160206123ec83398151915260448201527f6d75737420686176652070617573657220726f6c6520746f20756e70617573656064820152608401610557565b6107ea610f77565b565b6105f883838360405180602001604052806000815250610b12565b61081033610602565b61082c5760405162461bcd60e51b8152600401610557906120d0565b61083581610fc9565b50565b6000610843600a5490565b82106108a65760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610557565b600a82815481106108b9576108b961211d565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b0316806104245760405162461bcd60e51b815260040161055790612133565b61092a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610acf565b61098a5760405162461bcd60e51b815260206004820152603d60248201526000805160206123ec83398151915260448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e740000006064820152608401610557565b61099c81610997600d5490565b61105a565b610835600d80546001019055565b60006001600160a01b038216610a145760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610557565b506001600160a01b031660009081526005602052604090205490565b610a486000805160206123ac83398151915233610acf565b610aa85760405162461bcd60e51b815260206004820152603e60248201526000805160206123ec83398151915260448201527f6d75737420686176652070617573657220726f6c6520746f20706175736500006064820152608401610557565b6107ea611163565b6000828152600160205260408120610ac890836111a0565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606003805461043990612096565b6107643383836111ac565b610b1c3383610d6b565b610b385760405162461bcd60e51b8152600401610557906120d0565b610b4484848484611276565b50505050565b6060610b5582610cd8565b6000610b5f6112a9565b90506000815111610b7f5760405180602001604052806000815250610ac8565b80610b89846112b8565b604051602001610b9a929190612165565b6040516020818303038152906040529392505050565b60008181526001602052604081206104249061134b565b600082815260208190526040902060010154610be281610f29565b6105f88383610f55565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b610c248282610acf565b610764576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610c5a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610ac8836001600160a01b038416611355565b60006001600160e01b0319821663780e9d6360e01b14806104245750610424826113a4565b610ce1816113e4565b6108355760405162461bcd60e51b815260040161055790612133565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610d32826108cb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610d77836108cb565b9050806001600160a01b0316846001600160a01b03161480610d9e5750610d9e8185610bec565b80610dc25750836001600160a01b0316610db7846104bc565b6001600160a01b0316145b949350505050565b826001600160a01b0316610ddd826108cb565b6001600160a01b031614610e035760405162461bcd60e51b815260040161055790612194565b6001600160a01b038216610e655760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610557565b610e728383836001611401565b826001600160a01b0316610e85826108cb565b6001600160a01b031614610eab5760405162461bcd60e51b815260040161055790612194565b600081815260066020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260058552838620805460001901905590871680865283862080546001019055868652600490945282852080549092168417909155905184936000805160206123cc83398151915291a4505050565b610835813361140d565b610f3d8282610c1a565b60008281526001602052604090206105f89082610c9e565b610f5f8282611466565b60008281526001602052604090206105f890826114cb565b610f7f6114e0565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000610fd4826108cb565b9050610fe4816000846001611401565b610fed826108cb565b600083815260066020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526005845282852080546000190190558785526004909352818420805490911690555192935084926000805160206123cc833981519152908390a45050565b6001600160a01b0382166110b05760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610557565b6110b9816113e4565b156110d65760405162461bcd60e51b8152600401610557906121d9565b6110e4600083836001611401565b6110ed816113e4565b1561110a5760405162461bcd60e51b8152600401610557906121d9565b6001600160a01b038216600081815260056020908152604080832080546001019055848352600490915280822080546001600160a01b0319168417905551839291906000805160206123cc833981519152908290a45050565b61116b611529565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610fac3390565b6000610ac8838361156f565b816001600160a01b0316836001600160a01b0316036112095760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610557565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611281848484610dca565b61128d84848484611599565b610b445760405162461bcd60e51b815260040161055790612210565b6060600e805461043990612096565b606060006112c58361169a565b600101905060008167ffffffffffffffff8111156112e5576112e5611f7a565b6040519080825280601f01601f19166020018201604052801561130f576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461131957509392505050565b6000610424825490565b600081815260018301602052604081205461139c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610424565b506000610424565b60006001600160e01b031982166380ac58cd60e01b14806113d557506001600160e01b03198216635b5e139f60e01b145b80610424575061042482611772565b6000908152600460205260409020546001600160a01b0316151590565b610b4484848484611797565b6114178282610acf565b610764576114248161180a565b61142f83602061181c565b604051602001611440929190612262565b60408051601f198184030181529082905262461bcd60e51b825261055791600401611e27565b6114708282610acf565b15610764576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610ac8836001600160a01b0384166119b8565b600c5460ff166107ea5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610557565b600c5460ff16156107ea5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610557565b60008260000182815481106115865761158661211d565b9060005260206000200154905092915050565b60006001600160a01b0384163b1561168f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906115dd9033908990889088906004016122d1565b6020604051808303816000875af1925050508015611618575060408051601f3d908101601f191682019092526116159181019061230e565b60015b611675573d808015611646576040519150601f19603f3d011682016040523d82523d6000602084013e61164b565b606091505b50805160000361166d5760405162461bcd60e51b815260040161055790612210565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610dc2565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106116d95772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611705576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061172357662386f26fc10000830492506010015b6305f5e100831061173b576305f5e100830492506008015b612710831061174f57612710830492506004015b60648310611761576064830492506002015b600a83106104245760010192915050565b60006001600160e01b03198216635a05180f60e01b1480610424575061042482611aab565b6117a384848484611ae0565b600c5460ff1615610b445760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b6064820152608401610557565b60606104246001600160a01b03831660145b6060600061182b836002612341565b611836906002612358565b67ffffffffffffffff81111561184e5761184e611f7a565b6040519080825280601f01601f191660200182016040528015611878576020820181803683370190505b509050600360fc1b816000815181106118935761189361211d565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106118c2576118c261211d565b60200101906001600160f81b031916908160001a90535060006118e6846002612341565b6118f1906001612358565b90505b6001811115611969576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106119255761192561211d565b1a60f81b82828151811061193b5761193b61211d565b60200101906001600160f81b031916908160001a90535060049490941c936119628161236b565b90506118f4565b508315610ac85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610557565b60008181526001830160205260408120548015611aa15760006119dc600183612382565b85549091506000906119f090600190612382565b9050818114611a55576000866000018281548110611a1057611a1061211d565b9060005260206000200154905080876000018481548110611a3357611a3361211d565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611a6657611a66612395565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610424565b6000915050610424565b60006001600160e01b03198216637965db0b60e01b148061042457506301ffc9a760e01b6001600160e01b0319831614610424565b6001811115611b4f5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610557565b816001600160a01b038516611bab57611ba681600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611bce565b836001600160a01b0316856001600160a01b031614611bce57611bce8582611c14565b6001600160a01b038416611bea57611be581611cb1565b611c0d565b846001600160a01b0316846001600160a01b031614611c0d57611c0d8482611d60565b5050505050565b60006001611c21846109aa565b611c2b9190612382565b600083815260096020526040902054909150808214611c7e576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611cc390600190612382565b6000838152600b6020526040812054600a8054939450909284908110611ceb57611ceb61211d565b9060005260206000200154905080600a8381548110611d0c57611d0c61211d565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611d4457611d44612395565b6001900381819060005260206000200160009055905550505050565b6000611d6b836109aa565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b03198116811461083557600080fd5b600060208284031215611dcc57600080fd5b8135610ac881611da4565b60005b83811015611df2578181015183820152602001611dda565b50506000910152565b60008151808452611e13816020860160208601611dd7565b601f01601f19169290920160200192915050565b602081526000610ac86020830184611dfb565b600060208284031215611e4c57600080fd5b5035919050565b80356001600160a01b0381168114611e6a57600080fd5b919050565b60008060408385031215611e8257600080fd5b611e8b83611e53565b946020939093013593505050565b600080600060608486031215611eae57600080fd5b611eb784611e53565b9250611ec560208501611e53565b9150604084013590509250925092565b60008060408385031215611ee857600080fd5b82359150611ef860208401611e53565b90509250929050565b600060208284031215611f1357600080fd5b610ac882611e53565b60008060408385031215611f2f57600080fd5b50508035926020909101359150565b60008060408385031215611f5157600080fd5b611f5a83611e53565b915060208301358015158114611f6f57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611fa657600080fd5b611faf85611e53565b9350611fbd60208601611e53565b925060408501359150606085013567ffffffffffffffff80821115611fe157600080fd5b818701915087601f830112611ff557600080fd5b81358181111561200757612007611f7a565b604051601f8201601f19908116603f0116810190838211818310171561202f5761202f611f7a565b816040528281528a602084870101111561204857600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561207f57600080fd5b61208883611e53565b9150611ef860208401611e53565b600181811c908216806120aa57607f821691505b6020821081036120ca57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b60008351612177818460208801611dd7565b83519083019061218b818360208801611dd7565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612294816017850160208801611dd7565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516122c5816028840160208801611dd7565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061230490830184611dfb565b9695505050505050565b60006020828403121561232057600080fd5b8151610ac881611da4565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104245761042461232b565b808201808211156104245761042461232b565b60008161237a5761237a61232b565b506000190190565b818103818111156104245761042461232b565b634e487b7160e01b600052603160045260246000fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4552433732315072657365744d696e7465725061757365724175746f49643a20a2646970667358221220095d00c445aa3b33f5ffcd4261e5b480db531eaca1ef8fb1492f38bfefb12dd464736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101a55760003560e01c80636352211e116100ef578063a22cb46511610092578063a22cb4651461036b578063b88d4fde1461037e578063c87b56dd14610391578063ca15c873146103a4578063d5391393146103b7578063d547741f146103de578063e63ab1e9146103f1578063e985e9c51461040657600080fd5b80636352211e146102f45780636a6278421461030757806370a082311461031a5780638456cb591461032d5780639010d07c1461033557806391d148541461034857806395d89b411461035b578063a217fddf1461036357600080fd5b80632f2ff15d116101575780632f2ff15d1461026f5780632f745c591461028257806336568abe146102955780633f4ba83a146102a857806342842e0e146102b057806342966c68146102c35780634f6ccce7146102d65780635c975abb146102e957600080fd5b806301ffc9a7146101aa57806306fdde03146101d2578063081812fc146101e7578063095ea7b31461021257806318160ddd1461022757806323b872dd14610239578063248a9ca31461024c575b600080fd5b6101bd6101b8366004611dba565b610419565b60405190151581526020015b60405180910390f35b6101da61042a565b6040516101c99190611e27565b6101fa6101f5366004611e3a565b6104bc565b6040516001600160a01b0390911681526020016101c9565b610225610220366004611e6f565b6104e3565b005b600a545b6040519081526020016101c9565b610225610247366004611e99565b6105fd565b61022b61025a366004611e3a565b60009081526020819052604090206001015490565b61022561027d366004611ed5565b61062f565b61022b610290366004611e6f565b610654565b6102256102a3366004611ed5565b6106ea565b610225610768565b6102256102be366004611e99565b6107ec565b6102256102d1366004611e3a565b610807565b61022b6102e4366004611e3a565b610838565b600c5460ff166101bd565b6101fa610302366004611e3a565b6108cb565b610225610315366004611f01565b610900565b61022b610328366004611f01565b6109aa565b610225610a30565b6101fa610343366004611f1c565b610ab0565b6101bd610356366004611ed5565b610acf565b6101da610af8565b61022b600081565b610225610379366004611f3e565b610b07565b61022561038c366004611f90565b610b12565b6101da61039f366004611e3a565b610b4a565b61022b6103b2366004611e3a565b610bb0565b61022b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102256103ec366004611ed5565b610bc7565b61022b6000805160206123ac83398151915281565b6101bd61041436600461206c565b610bec565b600061042482610cb3565b92915050565b60606002805461043990612096565b80601f016020809104026020016040519081016040528092919081815260200182805461046590612096565b80156104b25780601f10610487576101008083540402835291602001916104b2565b820191906000526020600020905b81548152906001019060200180831161049557829003601f168201915b5050505050905090565b60006104c782610cd8565b506000908152600660205260409020546001600160a01b031690565b60006104ee826108cb565b9050806001600160a01b0316836001600160a01b0316036105605760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061057c575061057c8133610bec565b6105ee5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610557565b6105f88383610cfd565b505050565b610608335b82610d6b565b6106245760405162461bcd60e51b8152600401610557906120d0565b6105f8838383610dca565b60008281526020819052604090206001015461064a81610f29565b6105f88383610f33565b600061065f836109aa565b82106106c15760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610557565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b038116331461075a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610557565b6107648282610f55565b5050565b6107806000805160206123ac83398151915233610acf565b6107e2576040805162461bcd60e51b81526020600482015260248101919091526000805160206123ec83398151915260448201527f6d75737420686176652070617573657220726f6c6520746f20756e70617573656064820152608401610557565b6107ea610f77565b565b6105f883838360405180602001604052806000815250610b12565b61081033610602565b61082c5760405162461bcd60e51b8152600401610557906120d0565b61083581610fc9565b50565b6000610843600a5490565b82106108a65760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610557565b600a82815481106108b9576108b961211d565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b0316806104245760405162461bcd60e51b815260040161055790612133565b61092a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610acf565b61098a5760405162461bcd60e51b815260206004820152603d60248201526000805160206123ec83398151915260448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e740000006064820152608401610557565b61099c81610997600d5490565b61105a565b610835600d80546001019055565b60006001600160a01b038216610a145760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610557565b506001600160a01b031660009081526005602052604090205490565b610a486000805160206123ac83398151915233610acf565b610aa85760405162461bcd60e51b815260206004820152603e60248201526000805160206123ec83398151915260448201527f6d75737420686176652070617573657220726f6c6520746f20706175736500006064820152608401610557565b6107ea611163565b6000828152600160205260408120610ac890836111a0565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606003805461043990612096565b6107643383836111ac565b610b1c3383610d6b565b610b385760405162461bcd60e51b8152600401610557906120d0565b610b4484848484611276565b50505050565b6060610b5582610cd8565b6000610b5f6112a9565b90506000815111610b7f5760405180602001604052806000815250610ac8565b80610b89846112b8565b604051602001610b9a929190612165565b6040516020818303038152906040529392505050565b60008181526001602052604081206104249061134b565b600082815260208190526040902060010154610be281610f29565b6105f88383610f55565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b610c248282610acf565b610764576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610c5a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610ac8836001600160a01b038416611355565b60006001600160e01b0319821663780e9d6360e01b14806104245750610424826113a4565b610ce1816113e4565b6108355760405162461bcd60e51b815260040161055790612133565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610d32826108cb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610d77836108cb565b9050806001600160a01b0316846001600160a01b03161480610d9e5750610d9e8185610bec565b80610dc25750836001600160a01b0316610db7846104bc565b6001600160a01b0316145b949350505050565b826001600160a01b0316610ddd826108cb565b6001600160a01b031614610e035760405162461bcd60e51b815260040161055790612194565b6001600160a01b038216610e655760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610557565b610e728383836001611401565b826001600160a01b0316610e85826108cb565b6001600160a01b031614610eab5760405162461bcd60e51b815260040161055790612194565b600081815260066020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260058552838620805460001901905590871680865283862080546001019055868652600490945282852080549092168417909155905184936000805160206123cc83398151915291a4505050565b610835813361140d565b610f3d8282610c1a565b60008281526001602052604090206105f89082610c9e565b610f5f8282611466565b60008281526001602052604090206105f890826114cb565b610f7f6114e0565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000610fd4826108cb565b9050610fe4816000846001611401565b610fed826108cb565b600083815260066020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526005845282852080546000190190558785526004909352818420805490911690555192935084926000805160206123cc833981519152908390a45050565b6001600160a01b0382166110b05760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610557565b6110b9816113e4565b156110d65760405162461bcd60e51b8152600401610557906121d9565b6110e4600083836001611401565b6110ed816113e4565b1561110a5760405162461bcd60e51b8152600401610557906121d9565b6001600160a01b038216600081815260056020908152604080832080546001019055848352600490915280822080546001600160a01b0319168417905551839291906000805160206123cc833981519152908290a45050565b61116b611529565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610fac3390565b6000610ac8838361156f565b816001600160a01b0316836001600160a01b0316036112095760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610557565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611281848484610dca565b61128d84848484611599565b610b445760405162461bcd60e51b815260040161055790612210565b6060600e805461043990612096565b606060006112c58361169a565b600101905060008167ffffffffffffffff8111156112e5576112e5611f7a565b6040519080825280601f01601f19166020018201604052801561130f576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461131957509392505050565b6000610424825490565b600081815260018301602052604081205461139c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610424565b506000610424565b60006001600160e01b031982166380ac58cd60e01b14806113d557506001600160e01b03198216635b5e139f60e01b145b80610424575061042482611772565b6000908152600460205260409020546001600160a01b0316151590565b610b4484848484611797565b6114178282610acf565b610764576114248161180a565b61142f83602061181c565b604051602001611440929190612262565b60408051601f198184030181529082905262461bcd60e51b825261055791600401611e27565b6114708282610acf565b15610764576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610ac8836001600160a01b0384166119b8565b600c5460ff166107ea5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610557565b600c5460ff16156107ea5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610557565b60008260000182815481106115865761158661211d565b9060005260206000200154905092915050565b60006001600160a01b0384163b1561168f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906115dd9033908990889088906004016122d1565b6020604051808303816000875af1925050508015611618575060408051601f3d908101601f191682019092526116159181019061230e565b60015b611675573d808015611646576040519150601f19603f3d011682016040523d82523d6000602084013e61164b565b606091505b50805160000361166d5760405162461bcd60e51b815260040161055790612210565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610dc2565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106116d95772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611705576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061172357662386f26fc10000830492506010015b6305f5e100831061173b576305f5e100830492506008015b612710831061174f57612710830492506004015b60648310611761576064830492506002015b600a83106104245760010192915050565b60006001600160e01b03198216635a05180f60e01b1480610424575061042482611aab565b6117a384848484611ae0565b600c5460ff1615610b445760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b6064820152608401610557565b60606104246001600160a01b03831660145b6060600061182b836002612341565b611836906002612358565b67ffffffffffffffff81111561184e5761184e611f7a565b6040519080825280601f01601f191660200182016040528015611878576020820181803683370190505b509050600360fc1b816000815181106118935761189361211d565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106118c2576118c261211d565b60200101906001600160f81b031916908160001a90535060006118e6846002612341565b6118f1906001612358565b90505b6001811115611969576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106119255761192561211d565b1a60f81b82828151811061193b5761193b61211d565b60200101906001600160f81b031916908160001a90535060049490941c936119628161236b565b90506118f4565b508315610ac85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610557565b60008181526001830160205260408120548015611aa15760006119dc600183612382565b85549091506000906119f090600190612382565b9050818114611a55576000866000018281548110611a1057611a1061211d565b9060005260206000200154905080876000018481548110611a3357611a3361211d565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611a6657611a66612395565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610424565b6000915050610424565b60006001600160e01b03198216637965db0b60e01b148061042457506301ffc9a760e01b6001600160e01b0319831614610424565b6001811115611b4f5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610557565b816001600160a01b038516611bab57611ba681600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611bce565b836001600160a01b0316856001600160a01b031614611bce57611bce8582611c14565b6001600160a01b038416611bea57611be581611cb1565b611c0d565b846001600160a01b0316846001600160a01b031614611c0d57611c0d8482611d60565b5050505050565b60006001611c21846109aa565b611c2b9190612382565b600083815260096020526040902054909150808214611c7e576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611cc390600190612382565b6000838152600b6020526040812054600a8054939450909284908110611ceb57611ceb61211d565b9060005260206000200154905080600a8381548110611d0c57611d0c61211d565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611d4457611d44612395565b6001900381819060005260206000200160009055905550505050565b6000611d6b836109aa565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b03198116811461083557600080fd5b600060208284031215611dcc57600080fd5b8135610ac881611da4565b60005b83811015611df2578181015183820152602001611dda565b50506000910152565b60008151808452611e13816020860160208601611dd7565b601f01601f19169290920160200192915050565b602081526000610ac86020830184611dfb565b600060208284031215611e4c57600080fd5b5035919050565b80356001600160a01b0381168114611e6a57600080fd5b919050565b60008060408385031215611e8257600080fd5b611e8b83611e53565b946020939093013593505050565b600080600060608486031215611eae57600080fd5b611eb784611e53565b9250611ec560208501611e53565b9150604084013590509250925092565b60008060408385031215611ee857600080fd5b82359150611ef860208401611e53565b90509250929050565b600060208284031215611f1357600080fd5b610ac882611e53565b60008060408385031215611f2f57600080fd5b50508035926020909101359150565b60008060408385031215611f5157600080fd5b611f5a83611e53565b915060208301358015158114611f6f57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611fa657600080fd5b611faf85611e53565b9350611fbd60208601611e53565b925060408501359150606085013567ffffffffffffffff80821115611fe157600080fd5b818701915087601f830112611ff557600080fd5b81358181111561200757612007611f7a565b604051601f8201601f19908116603f0116810190838211818310171561202f5761202f611f7a565b816040528281528a602084870101111561204857600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561207f57600080fd5b61208883611e53565b9150611ef860208401611e53565b600181811c908216806120aa57607f821691505b6020821081036120ca57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b60008351612177818460208801611dd7565b83519083019061218b818360208801611dd7565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612294816017850160208801611dd7565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516122c5816028840160208801611dd7565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061230490830184611dfb565b9695505050505050565b60006020828403121561232057600080fd5b8151610ac881611da4565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176104245761042461232b565b808201808211156104245761042461232b565b60008161237a5761237a61232b565b506000190190565b818103818111156104245761042461232b565b634e487b7160e01b600052603160045260246000fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4552433732315072657365744d696e7465725061757365724175746f49643a20a2646970667358221220095d00c445aa3b33f5ffcd4261e5b480db531eaca1ef8fb1492f38bfefb12dd464736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" +var MockERC721Artifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"MockERC721\",\n \"sourceName\": \"contracts/mocks/MockERC721.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"approved\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"ApprovalForAll\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RoleAdminChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleGranted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleRevoked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MINTER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"PAUSER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getApproved\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleAdmin\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getRoleMember\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleMemberCount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"grantRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hasRole\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isApprovedForAll\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ownerOf\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"renounceRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"safeTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"safeTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setApprovalForAll\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"tokenByIndex\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"tokenOfOwnerByIndex\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"tokenURI\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x60806040523480156200001157600080fd5b5060405180604001604052806004815260200163151154d560e21b81525060405180604001604052806004815260200163151154d560e21b815250604051806040016040528060058152602001646c6f72656d60d81b815250828281600290816200007d91906200031f565b5060036200008c82826200031f565b5050600c805460ff1916905550600e620000a782826200031f565b50620000b560003362000116565b620000e17f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63362000116565b6200010d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3362000116565b505050620003eb565b62000122828262000126565b5050565b6200013d82826200016960201b62000c1a1760201c565b60008281526001602090815260409091206200016491839062000c9e62000209821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000122576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001c53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000220836001600160a01b03841662000229565b90505b92915050565b6000818152600183016020526040812054620002725750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000223565b50600062000223565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a657607f821691505b602082108103620002c757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200016457600081815260208120601f850160051c81016020861015620002f65750805b601f850160051c820191505b81811015620003175782815560010162000302565b505050505050565b81516001600160401b038111156200033b576200033b6200027b565b62000353816200034c845462000291565b84620002cd565b602080601f8311600181146200038b5760008415620003725750858301515b600019600386901b1c1916600185901b17855562000317565b600085815260208120601f198616915b82811015620003bc578886015182559484019460019091019084016200039b565b5085821015620003db5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6124d580620003fb6000396000f3fe608060405234801561001057600080fd5b50600436106101a55760003560e01c80636352211e116100ef578063a22cb46511610092578063a22cb4651461036b578063b88d4fde1461037e578063c87b56dd14610391578063ca15c873146103a4578063d5391393146103b7578063d547741f146103de578063e63ab1e9146103f1578063e985e9c51461040657600080fd5b80636352211e146102f45780636a6278421461030757806370a082311461031a5780638456cb591461032d5780639010d07c1461033557806391d148541461034857806395d89b411461035b578063a217fddf1461036357600080fd5b80632f2ff15d116101575780632f2ff15d1461026f5780632f745c591461028257806336568abe146102955780633f4ba83a146102a857806342842e0e146102b057806342966c68146102c35780634f6ccce7146102d65780635c975abb146102e957600080fd5b806301ffc9a7146101aa57806306fdde03146101d2578063081812fc146101e7578063095ea7b31461021257806318160ddd1461022757806323b872dd14610239578063248a9ca31461024c575b600080fd5b6101bd6101b8366004611e4e565b610419565b60405190151581526020015b60405180910390f35b6101da61042a565b6040516101c99190611ebb565b6101fa6101f5366004611ece565b6104bc565b6040516001600160a01b0390911681526020016101c9565b610225610220366004611f03565b6104e3565b005b600a545b6040519081526020016101c9565b610225610247366004611f2d565b6105fd565b61022b61025a366004611ece565b60009081526020819052604090206001015490565b61022561027d366004611f69565b61062f565b61022b610290366004611f03565b610654565b6102256102a3366004611f69565b6106ea565b610225610768565b6102256102be366004611f2d565b6107ec565b6102256102d1366004611ece565b610807565b61022b6102e4366004611ece565b610838565b600c5460ff166101bd565b6101fa610302366004611ece565b6108cb565b610225610315366004611f95565b610900565b61022b610328366004611f95565b6109aa565b610225610a30565b6101fa610343366004611fb0565b610ab0565b6101bd610356366004611f69565b610acf565b6101da610af8565b61022b600081565b610225610379366004611fd2565b610b07565b61022561038c366004612024565b610b12565b6101da61039f366004611ece565b610b4a565b61022b6103b2366004611ece565b610bb0565b61022b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102256103ec366004611f69565b610bc7565b61022b60008051602061244083398151915281565b6101bd610414366004612100565b610bec565b600061042482610cb3565b92915050565b6060600280546104399061212a565b80601f01602080910402602001604051908101604052809291908181526020018280546104659061212a565b80156104b25780601f10610487576101008083540402835291602001916104b2565b820191906000526020600020905b81548152906001019060200180831161049557829003601f168201915b5050505050905090565b60006104c782610cd8565b506000908152600660205260409020546001600160a01b031690565b60006104ee826108cb565b9050806001600160a01b0316836001600160a01b0316036105605760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061057c575061057c8133610bec565b6105ee5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610557565b6105f88383610cfd565b505050565b610608335b82610d6b565b6106245760405162461bcd60e51b815260040161055790612164565b6105f8838383610dca565b60008281526020819052604090206001015461064a81610f29565b6105f88383610f33565b600061065f836109aa565b82106106c15760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610557565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b038116331461075a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610557565b6107648282610f55565b5050565b61078060008051602061244083398151915233610acf565b6107e2576040805162461bcd60e51b815260206004820152602481019190915260008051602061248083398151915260448201527f6d75737420686176652070617573657220726f6c6520746f20756e70617573656064820152608401610557565b6107ea610f77565b565b6105f883838360405180602001604052806000815250610b12565b61081033610602565b61082c5760405162461bcd60e51b815260040161055790612164565b61083581610fc9565b50565b6000610843600a5490565b82106108a65760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610557565b600a82815481106108b9576108b96121b1565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b0316806104245760405162461bcd60e51b8152600401610557906121c7565b61092a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610acf565b61098a5760405162461bcd60e51b815260206004820152603d602482015260008051602061248083398151915260448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e740000006064820152608401610557565b61099c81610997600d5490565b61105a565b610835600d80546001019055565b60006001600160a01b038216610a145760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610557565b506001600160a01b031660009081526005602052604090205490565b610a4860008051602061244083398151915233610acf565b610aa85760405162461bcd60e51b815260206004820152603e602482015260008051602061248083398151915260448201527f6d75737420686176652070617573657220726f6c6520746f20706175736500006064820152608401610557565b6107ea611163565b6000828152600160205260408120610ac890836111a0565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104399061212a565b6107643383836111ac565b610b1c3383610d6b565b610b385760405162461bcd60e51b815260040161055790612164565b610b4484848484611276565b50505050565b6060610b5582610cd8565b6000610b5f6112a9565b90506000815111610b7f5760405180602001604052806000815250610ac8565b80610b89846112b8565b604051602001610b9a9291906121f9565b6040516020818303038152906040529392505050565b60008181526001602052604081206104249061134b565b600082815260208190526040902060010154610be281610f29565b6105f88383610f55565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b610c248282610acf565b610764576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610c5a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610ac8836001600160a01b038416611355565b60006001600160e01b0319821663780e9d6360e01b14806104245750610424826113a4565b610ce1816113e4565b6108355760405162461bcd60e51b8152600401610557906121c7565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610d32826108cb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610d77836108cb565b9050806001600160a01b0316846001600160a01b03161480610d9e5750610d9e8185610bec565b80610dc25750836001600160a01b0316610db7846104bc565b6001600160a01b0316145b949350505050565b826001600160a01b0316610ddd826108cb565b6001600160a01b031614610e035760405162461bcd60e51b815260040161055790612228565b6001600160a01b038216610e655760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610557565b610e728383836001611401565b826001600160a01b0316610e85826108cb565b6001600160a01b031614610eab5760405162461bcd60e51b815260040161055790612228565b600081815260066020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652600585528386208054600019019055908716808652838620805460010190558686526004909452828520805490921684179091559051849360008051602061246083398151915291a4505050565b610835813361140d565b610f3d8282610c1a565b60008281526001602052604090206105f89082610c9e565b610f5f8282611466565b60008281526001602052604090206105f890826114cb565b610f7f6114e0565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000610fd4826108cb565b9050610fe4816000846001611401565b610fed826108cb565b600083815260066020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552600584528285208054600019019055878552600490935281842080549091169055519293508492600080516020612460833981519152908390a45050565b6001600160a01b0382166110b05760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610557565b6110b9816113e4565b156110d65760405162461bcd60e51b81526004016105579061226d565b6110e4600083836001611401565b6110ed816113e4565b1561110a5760405162461bcd60e51b81526004016105579061226d565b6001600160a01b038216600081815260056020908152604080832080546001019055848352600490915280822080546001600160a01b031916841790555183929190600080516020612460833981519152908290a45050565b61116b611529565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610fac3390565b6000610ac8838361156f565b816001600160a01b0316836001600160a01b0316036112095760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610557565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611281848484610dca565b61128d84848484611599565b610b445760405162461bcd60e51b8152600401610557906122a4565b6060600e80546104399061212a565b606060006112c58361169a565b600101905060008167ffffffffffffffff8111156112e5576112e561200e565b6040519080825280601f01601f19166020018201604052801561130f576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461131957509392505050565b6000610424825490565b600081815260018301602052604081205461139c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610424565b506000610424565b60006001600160e01b031982166380ac58cd60e01b14806113d557506001600160e01b03198216635b5e139f60e01b145b80610424575061042482611772565b6000908152600460205260409020546001600160a01b0316151590565b610b4484848484611797565b6114178282610acf565b610764576114248161180a565b61142f83602061181c565b6040516020016114409291906122f6565b60408051601f198184030181529082905262461bcd60e51b825261055791600401611ebb565b6114708282610acf565b15610764576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610ac8836001600160a01b0384166119b8565b600c5460ff166107ea5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610557565b600c5460ff16156107ea5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610557565b6000826000018281548110611586576115866121b1565b9060005260206000200154905092915050565b60006001600160a01b0384163b1561168f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906115dd903390899088908890600401612365565b6020604051808303816000875af1925050508015611618575060408051601f3d908101601f19168201909252611615918101906123a2565b60015b611675573d808015611646576040519150601f19603f3d011682016040523d82523d6000602084013e61164b565b606091505b50805160000361166d5760405162461bcd60e51b8152600401610557906122a4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610dc2565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106116d95772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611705576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061172357662386f26fc10000830492506010015b6305f5e100831061173b576305f5e100830492506008015b612710831061174f57612710830492506004015b60648310611761576064830492506002015b600a83106104245760010192915050565b60006001600160e01b03198216635a05180f60e01b1480610424575061042482611aab565b6117a384848484611ae0565b600c5460ff1615610b445760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b6064820152608401610557565b60606104246001600160a01b03831660145b6060600061182b8360026123d5565b6118369060026123ec565b67ffffffffffffffff81111561184e5761184e61200e565b6040519080825280601f01601f191660200182016040528015611878576020820181803683370190505b509050600360fc1b81600081518110611893576118936121b1565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106118c2576118c26121b1565b60200101906001600160f81b031916908160001a90535060006118e68460026123d5565b6118f19060016123ec565b90505b6001811115611969576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611925576119256121b1565b1a60f81b82828151811061193b5761193b6121b1565b60200101906001600160f81b031916908160001a90535060049490941c93611962816123ff565b90506118f4565b508315610ac85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610557565b60008181526001830160205260408120548015611aa15760006119dc600183612416565b85549091506000906119f090600190612416565b9050818114611a55576000866000018281548110611a1057611a106121b1565b9060005260206000200154905080876000018481548110611a3357611a336121b1565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611a6657611a66612429565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610424565b6000915050610424565b60006001600160e01b03198216637965db0b60e01b148061042457506301ffc9a760e01b6001600160e01b0319831614610424565b611aec84848484611c20565b6001811115611b5b5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610557565b816001600160a01b038516611bb757611bb281600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611bda565b836001600160a01b0316856001600160a01b031614611bda57611bda8582611ca8565b6001600160a01b038416611bf657611bf181611d45565b611c19565b846001600160a01b0316846001600160a01b031614611c1957611c198482611df4565b5050505050565b6001811115610b44576001600160a01b03841615611c66576001600160a01b03841660009081526005602052604081208054839290611c60908490612416565b90915550505b6001600160a01b03831615610b44576001600160a01b03831660009081526005602052604081208054839290611c9d9084906123ec565b909155505050505050565b60006001611cb5846109aa565b611cbf9190612416565b600083815260096020526040902054909150808214611d12576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611d5790600190612416565b6000838152600b6020526040812054600a8054939450909284908110611d7f57611d7f6121b1565b9060005260206000200154905080600a8381548110611da057611da06121b1565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611dd857611dd8612429565b6001900381819060005260206000200160009055905550505050565b6000611dff836109aa565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b03198116811461083557600080fd5b600060208284031215611e6057600080fd5b8135610ac881611e38565b60005b83811015611e86578181015183820152602001611e6e565b50506000910152565b60008151808452611ea7816020860160208601611e6b565b601f01601f19169290920160200192915050565b602081526000610ac86020830184611e8f565b600060208284031215611ee057600080fd5b5035919050565b80356001600160a01b0381168114611efe57600080fd5b919050565b60008060408385031215611f1657600080fd5b611f1f83611ee7565b946020939093013593505050565b600080600060608486031215611f4257600080fd5b611f4b84611ee7565b9250611f5960208501611ee7565b9150604084013590509250925092565b60008060408385031215611f7c57600080fd5b82359150611f8c60208401611ee7565b90509250929050565b600060208284031215611fa757600080fd5b610ac882611ee7565b60008060408385031215611fc357600080fd5b50508035926020909101359150565b60008060408385031215611fe557600080fd5b611fee83611ee7565b91506020830135801515811461200357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561203a57600080fd5b61204385611ee7565b935061205160208601611ee7565b925060408501359150606085013567ffffffffffffffff8082111561207557600080fd5b818701915087601f83011261208957600080fd5b81358181111561209b5761209b61200e565b604051601f8201601f19908116603f011681019083821181831017156120c3576120c361200e565b816040528281528a60208487010111156120dc57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561211357600080fd5b61211c83611ee7565b9150611f8c60208401611ee7565b600181811c9082168061213e57607f821691505b60208210810361215e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b6000835161220b818460208801611e6b565b83519083019061221f818360208801611e6b565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612328816017850160208801611e6b565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612359816028840160208801611e6b565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061239890830184611e8f565b9695505050505050565b6000602082840312156123b457600080fd5b8151610ac881611e38565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610424576104246123bf565b80820180821115610424576104246123bf565b60008161240e5761240e6123bf565b506000190190565b81810381811115610424576104246123bf565b634e487b7160e01b600052603160045260246000fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4552433732315072657365744d696e7465725061757365724175746f49643a20a2646970667358221220d6637246b0d0428430832d47fe0d81ed6a2692f8c464a30217f56e9868ce6d0564736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101a55760003560e01c80636352211e116100ef578063a22cb46511610092578063a22cb4651461036b578063b88d4fde1461037e578063c87b56dd14610391578063ca15c873146103a4578063d5391393146103b7578063d547741f146103de578063e63ab1e9146103f1578063e985e9c51461040657600080fd5b80636352211e146102f45780636a6278421461030757806370a082311461031a5780638456cb591461032d5780639010d07c1461033557806391d148541461034857806395d89b411461035b578063a217fddf1461036357600080fd5b80632f2ff15d116101575780632f2ff15d1461026f5780632f745c591461028257806336568abe146102955780633f4ba83a146102a857806342842e0e146102b057806342966c68146102c35780634f6ccce7146102d65780635c975abb146102e957600080fd5b806301ffc9a7146101aa57806306fdde03146101d2578063081812fc146101e7578063095ea7b31461021257806318160ddd1461022757806323b872dd14610239578063248a9ca31461024c575b600080fd5b6101bd6101b8366004611e4e565b610419565b60405190151581526020015b60405180910390f35b6101da61042a565b6040516101c99190611ebb565b6101fa6101f5366004611ece565b6104bc565b6040516001600160a01b0390911681526020016101c9565b610225610220366004611f03565b6104e3565b005b600a545b6040519081526020016101c9565b610225610247366004611f2d565b6105fd565b61022b61025a366004611ece565b60009081526020819052604090206001015490565b61022561027d366004611f69565b61062f565b61022b610290366004611f03565b610654565b6102256102a3366004611f69565b6106ea565b610225610768565b6102256102be366004611f2d565b6107ec565b6102256102d1366004611ece565b610807565b61022b6102e4366004611ece565b610838565b600c5460ff166101bd565b6101fa610302366004611ece565b6108cb565b610225610315366004611f95565b610900565b61022b610328366004611f95565b6109aa565b610225610a30565b6101fa610343366004611fb0565b610ab0565b6101bd610356366004611f69565b610acf565b6101da610af8565b61022b600081565b610225610379366004611fd2565b610b07565b61022561038c366004612024565b610b12565b6101da61039f366004611ece565b610b4a565b61022b6103b2366004611ece565b610bb0565b61022b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102256103ec366004611f69565b610bc7565b61022b60008051602061244083398151915281565b6101bd610414366004612100565b610bec565b600061042482610cb3565b92915050565b6060600280546104399061212a565b80601f01602080910402602001604051908101604052809291908181526020018280546104659061212a565b80156104b25780601f10610487576101008083540402835291602001916104b2565b820191906000526020600020905b81548152906001019060200180831161049557829003601f168201915b5050505050905090565b60006104c782610cd8565b506000908152600660205260409020546001600160a01b031690565b60006104ee826108cb565b9050806001600160a01b0316836001600160a01b0316036105605760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b038216148061057c575061057c8133610bec565b6105ee5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610557565b6105f88383610cfd565b505050565b610608335b82610d6b565b6106245760405162461bcd60e51b815260040161055790612164565b6105f8838383610dca565b60008281526020819052604090206001015461064a81610f29565b6105f88383610f33565b600061065f836109aa565b82106106c15760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610557565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b038116331461075a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610557565b6107648282610f55565b5050565b61078060008051602061244083398151915233610acf565b6107e2576040805162461bcd60e51b815260206004820152602481019190915260008051602061248083398151915260448201527f6d75737420686176652070617573657220726f6c6520746f20756e70617573656064820152608401610557565b6107ea610f77565b565b6105f883838360405180602001604052806000815250610b12565b61081033610602565b61082c5760405162461bcd60e51b815260040161055790612164565b61083581610fc9565b50565b6000610843600a5490565b82106108a65760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610557565b600a82815481106108b9576108b96121b1565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b0316806104245760405162461bcd60e51b8152600401610557906121c7565b61092a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610acf565b61098a5760405162461bcd60e51b815260206004820152603d602482015260008051602061248083398151915260448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e740000006064820152608401610557565b61099c81610997600d5490565b61105a565b610835600d80546001019055565b60006001600160a01b038216610a145760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610557565b506001600160a01b031660009081526005602052604090205490565b610a4860008051602061244083398151915233610acf565b610aa85760405162461bcd60e51b815260206004820152603e602482015260008051602061248083398151915260448201527f6d75737420686176652070617573657220726f6c6520746f20706175736500006064820152608401610557565b6107ea611163565b6000828152600160205260408120610ac890836111a0565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104399061212a565b6107643383836111ac565b610b1c3383610d6b565b610b385760405162461bcd60e51b815260040161055790612164565b610b4484848484611276565b50505050565b6060610b5582610cd8565b6000610b5f6112a9565b90506000815111610b7f5760405180602001604052806000815250610ac8565b80610b89846112b8565b604051602001610b9a9291906121f9565b6040516020818303038152906040529392505050565b60008181526001602052604081206104249061134b565b600082815260208190526040902060010154610be281610f29565b6105f88383610f55565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b610c248282610acf565b610764576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610c5a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610ac8836001600160a01b038416611355565b60006001600160e01b0319821663780e9d6360e01b14806104245750610424826113a4565b610ce1816113e4565b6108355760405162461bcd60e51b8152600401610557906121c7565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610d32826108cb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610d77836108cb565b9050806001600160a01b0316846001600160a01b03161480610d9e5750610d9e8185610bec565b80610dc25750836001600160a01b0316610db7846104bc565b6001600160a01b0316145b949350505050565b826001600160a01b0316610ddd826108cb565b6001600160a01b031614610e035760405162461bcd60e51b815260040161055790612228565b6001600160a01b038216610e655760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610557565b610e728383836001611401565b826001600160a01b0316610e85826108cb565b6001600160a01b031614610eab5760405162461bcd60e51b815260040161055790612228565b600081815260066020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652600585528386208054600019019055908716808652838620805460010190558686526004909452828520805490921684179091559051849360008051602061246083398151915291a4505050565b610835813361140d565b610f3d8282610c1a565b60008281526001602052604090206105f89082610c9e565b610f5f8282611466565b60008281526001602052604090206105f890826114cb565b610f7f6114e0565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000610fd4826108cb565b9050610fe4816000846001611401565b610fed826108cb565b600083815260066020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552600584528285208054600019019055878552600490935281842080549091169055519293508492600080516020612460833981519152908390a45050565b6001600160a01b0382166110b05760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610557565b6110b9816113e4565b156110d65760405162461bcd60e51b81526004016105579061226d565b6110e4600083836001611401565b6110ed816113e4565b1561110a5760405162461bcd60e51b81526004016105579061226d565b6001600160a01b038216600081815260056020908152604080832080546001019055848352600490915280822080546001600160a01b031916841790555183929190600080516020612460833981519152908290a45050565b61116b611529565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610fac3390565b6000610ac8838361156f565b816001600160a01b0316836001600160a01b0316036112095760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606401610557565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611281848484610dca565b61128d84848484611599565b610b445760405162461bcd60e51b8152600401610557906122a4565b6060600e80546104399061212a565b606060006112c58361169a565b600101905060008167ffffffffffffffff8111156112e5576112e561200e565b6040519080825280601f01601f19166020018201604052801561130f576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461131957509392505050565b6000610424825490565b600081815260018301602052604081205461139c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610424565b506000610424565b60006001600160e01b031982166380ac58cd60e01b14806113d557506001600160e01b03198216635b5e139f60e01b145b80610424575061042482611772565b6000908152600460205260409020546001600160a01b0316151590565b610b4484848484611797565b6114178282610acf565b610764576114248161180a565b61142f83602061181c565b6040516020016114409291906122f6565b60408051601f198184030181529082905262461bcd60e51b825261055791600401611ebb565b6114708282610acf565b15610764576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610ac8836001600160a01b0384166119b8565b600c5460ff166107ea5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610557565b600c5460ff16156107ea5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610557565b6000826000018281548110611586576115866121b1565b9060005260206000200154905092915050565b60006001600160a01b0384163b1561168f57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906115dd903390899088908890600401612365565b6020604051808303816000875af1925050508015611618575060408051601f3d908101601f19168201909252611615918101906123a2565b60015b611675573d808015611646576040519150601f19603f3d011682016040523d82523d6000602084013e61164b565b606091505b50805160000361166d5760405162461bcd60e51b8152600401610557906122a4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610dc2565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106116d95772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611705576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061172357662386f26fc10000830492506010015b6305f5e100831061173b576305f5e100830492506008015b612710831061174f57612710830492506004015b60648310611761576064830492506002015b600a83106104245760010192915050565b60006001600160e01b03198216635a05180f60e01b1480610424575061042482611aab565b6117a384848484611ae0565b600c5460ff1615610b445760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b6064820152608401610557565b60606104246001600160a01b03831660145b6060600061182b8360026123d5565b6118369060026123ec565b67ffffffffffffffff81111561184e5761184e61200e565b6040519080825280601f01601f191660200182016040528015611878576020820181803683370190505b509050600360fc1b81600081518110611893576118936121b1565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106118c2576118c26121b1565b60200101906001600160f81b031916908160001a90535060006118e68460026123d5565b6118f19060016123ec565b90505b6001811115611969576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611925576119256121b1565b1a60f81b82828151811061193b5761193b6121b1565b60200101906001600160f81b031916908160001a90535060049490941c93611962816123ff565b90506118f4565b508315610ac85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610557565b60008181526001830160205260408120548015611aa15760006119dc600183612416565b85549091506000906119f090600190612416565b9050818114611a55576000866000018281548110611a1057611a106121b1565b9060005260206000200154905080876000018481548110611a3357611a336121b1565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611a6657611a66612429565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610424565b6000915050610424565b60006001600160e01b03198216637965db0b60e01b148061042457506301ffc9a760e01b6001600160e01b0319831614610424565b611aec84848484611c20565b6001811115611b5b5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610557565b816001600160a01b038516611bb757611bb281600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611bda565b836001600160a01b0316856001600160a01b031614611bda57611bda8582611ca8565b6001600160a01b038416611bf657611bf181611d45565b611c19565b846001600160a01b0316846001600160a01b031614611c1957611c198482611df4565b5050505050565b6001811115610b44576001600160a01b03841615611c66576001600160a01b03841660009081526005602052604081208054839290611c60908490612416565b90915550505b6001600160a01b03831615610b44576001600160a01b03831660009081526005602052604081208054839290611c9d9084906123ec565b909155505050505050565b60006001611cb5846109aa565b611cbf9190612416565b600083815260096020526040902054909150808214611d12576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611d5790600190612416565b6000838152600b6020526040812054600a8054939450909284908110611d7f57611d7f6121b1565b9060005260206000200154905080600a8381548110611da057611da06121b1565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611dd857611dd8612429565b6001900381819060005260206000200160009055905550505050565b6000611dff836109aa565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b03198116811461083557600080fd5b600060208284031215611e6057600080fd5b8135610ac881611e38565b60005b83811015611e86578181015183820152602001611e6e565b50506000910152565b60008151808452611ea7816020860160208601611e6b565b601f01601f19169290920160200192915050565b602081526000610ac86020830184611e8f565b600060208284031215611ee057600080fd5b5035919050565b80356001600160a01b0381168114611efe57600080fd5b919050565b60008060408385031215611f1657600080fd5b611f1f83611ee7565b946020939093013593505050565b600080600060608486031215611f4257600080fd5b611f4b84611ee7565b9250611f5960208501611ee7565b9150604084013590509250925092565b60008060408385031215611f7c57600080fd5b82359150611f8c60208401611ee7565b90509250929050565b600060208284031215611fa757600080fd5b610ac882611ee7565b60008060408385031215611fc357600080fd5b50508035926020909101359150565b60008060408385031215611fe557600080fd5b611fee83611ee7565b91506020830135801515811461200357600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561203a57600080fd5b61204385611ee7565b935061205160208601611ee7565b925060408501359150606085013567ffffffffffffffff8082111561207557600080fd5b818701915087601f83011261208957600080fd5b81358181111561209b5761209b61200e565b604051601f8201601f19908116603f011681019083821181831017156120c3576120c361200e565b816040528281528a60208487010111156120dc57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561211357600080fd5b61211c83611ee7565b9150611f8c60208401611ee7565b600181811c9082168061213e57607f821691505b60208210810361215e57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b6000835161220b818460208801611e6b565b83519083019061221f818360208801611e6b565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612328816017850160208801611e6b565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612359816028840160208801611e6b565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061239890830184611e8f565b9695505050505050565b6000602082840312156123b457600080fd5b8151610ac881611e38565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610424576104246123bf565b80820180821115610424576104246123bf565b60008161240e5761240e6123bf565b506000190190565b81810381811115610424576104246123bf565b634e487b7160e01b600052603160045260246000fdfe65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862addf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4552433732315072657365744d696e7465725061757365724175746f49643a20a2646970667358221220d6637246b0d0428430832d47fe0d81ed6a2692f8c464a30217f56e9868ce6d0564736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" var RootERC721PredicateArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"RootERC721Predicate\",\n \"sourceName\": \"contracts/root/RootERC721Predicate.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"depositor\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC721Deposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"depositor\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address[]\",\n \"name\": \"receivers\",\n \"type\": \"address[]\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"ERC721DepositBatch\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"withdrawer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC721Withdraw\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"withdrawer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address[]\",\n \"name\": \"receivers\",\n \"type\": \"address[]\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"ERC721WithdrawBatch\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"TokenMapped\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEPOSIT_BATCH_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEPOSIT_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAP_TOKEN_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WITHDRAW_BATCH_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WITHDRAW_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"childERC721Predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"childTokenTemplate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC721Metadata\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC721Metadata\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address[]\",\n \"name\": \"receivers\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"depositBatch\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC721Metadata\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"depositTo\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"exitHelper\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newStateSender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newExitHelper\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newChildERC721Predicate\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newChildTokenTemplate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC721Metadata\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"mapToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"onERC721Received\",\n \"outputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"\",\n \"type\": \"bytes4\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"onL2StateReceive\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"rootTokenToChildToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"stateSender\",\n \"outputs\": [\n {\n \"internalType\": \"contract IStateSender\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50611965806100206000396000f3fe608060405234801561001057600080fd5b50600436106100fb5760003560e01c8063cb10f94c116100a2578063f43cda8b11610071578063f43cda8b146102a1578063f4a120f7146102b4578063f6451255146102c7578063f8c8765e146102ee578063ff6f870c1461030157600080fd5b8063cb10f94c14610227578063d41f177114610240578063d7c9e3ec14610267578063f213159c1461028e57600080fd5b8063150b7a021461010057806347e7ef241461013c5780634fdca69d146101515780637efab4f51461017c57806395c7041c146101a5578063b1768065146101b8578063b68ad1e4146101ed578063c5ac2b1c14610200575b600080fd5b61011e61010e366004611127565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020015b60405180910390f35b61014f61014a3660046111d5565b610314565b005b600254610164906001600160a01b031681565b6040516001600160a01b039091168152602001610133565b61016461018a366004611201565b6004602052600090815260409020546001600160a01b031681565b600154610164906001600160a01b031681565b6101df7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b604051908152602001610133565b600354610164906001600160a01b031681565b6101df7faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d1881565b600054610164906201000090046001600160a01b031681565b6101df7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b6101df7f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed281565b61014f61029c366004611225565b610323565b61014f6102af366004611266565b610333565b6101646102c2366004611201565b61050a565b6101df7f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b61014f6102fc3660046112ee565b610864565b61014f61030f366004611395565b610a72565b61031f823383610ada565b5050565b61032e838383610ada565b505050565b6001546001600160a01b031633146103a05760405162461bcd60e51b815260206004820152602560248201527f526f6f744552433732315072656469636174653a204f4e4c595f455849545f4860448201526422a62822a960d91b60648201526084015b60405180910390fd5b6002546001600160a01b0384811691161461040f5760405162461bcd60e51b815260206004820152602960248201527f526f6f744552433732315072656469636174653a204f4e4c595f4348494c445f60448201526850524544494341544560b81b6064820152608401610397565b7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286961043e602060008486611417565b61044791611441565b036104665761046161045c8260208186611417565b610c60565b610504565b7f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed2610495602060008486611417565b61049e91611441565b036104ad576104618282610d5e565b60405162461bcd60e51b815260206004820152602660248201527f526f6f744552433732315072656469636174653a20494e56414c49445f5349476044820152654e415455524560d01b6064820152608401610397565b50505050565b60006001600160a01b03821661056d5760405162461bcd60e51b815260206004820152602260248201527f526f6f744552433732315072656469636174653a20494e56414c49445f544f4b60448201526122a760f11b6064820152608401610397565b6001600160a01b0382811660009081526004602052604090205416156105e15760405162461bcd60e51b815260206004820152602360248201527f526f6f744552433732315072656469636174653a20414c52454144595f4d415060448201526214115160ea1b6064820152608401610397565b60035460408051606085901b6bffffffffffffffffffffffff19166020808301919091528251601481840301815260348301808552815191909201206002546001600160a01b03908116606c8501526f5af43d82803e903d91602b57fd5bf3ff60588501529094166048830152733d602d80600a3d3981f3363d3d373d3d3d363d739052608c81019290925260379082012060ac82015260556077909101206000906001600160a01b03848116600081815260046020819052604080832080546001600160a01b031916878716179055825460025482516306fdde0360e01b81529251979850620100009091048616966316f198319691909116947f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad948b9491936306fdde03938184019390918290030181865afa158015610727573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261074f9190810190611484565b886001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801561078d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107b59190810190611484565b6040516020016107c89493929190611526565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016107f492919061156d565b600060405180830381600087803b15801561080e57600080fd5b505af1158015610822573d6000803e3d6000fd5b50506040516001600160a01b038085169350861691507f85920d35e6c72f6b2affffa04298b0cecfeba86e4a9f407df661f1cb8ab5e61790600090a392915050565b600054610100900460ff16158080156108845750600054600160ff909116105b8061089e5750303b15801561089e575060005460ff166001145b6109015760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610397565b6000805460ff191660011790558015610924576000805461ff0019166101001790555b6001600160a01b0385161580159061094457506001600160a01b03841615155b801561095857506001600160a01b03831615155b801561096c57506001600160a01b03821615155b6109c85760405162461bcd60e51b815260206004820152602760248201527f526f6f744552433732315072656469636174653a204241445f494e495449414c60448201526624ad20aa24a7a760c91b6064820152608401610397565b6000805462010000600160b01b031916620100006001600160a01b038881169190910291909117909155600180546001600160a01b031990811687841617909155600280548216868416179055600380549091169184169190911790558015610a6b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b828114610acd5760405162461bcd60e51b815260206004820152602360248201527f526f6f744552433732315072656469636174653a20494e56414c49445f4c454e60448201526208ea8960eb1b6064820152608401610397565b610a6b8585858585610e9f565b6000610ae58461105b565b604051632142170760e11b81529091506001600160a01b038516906342842e0e90610b1890339030908790600401611599565b600060405180830381600087803b158015610b3257600080fd5b505af1158015610b46573d6000803e3d6000fd5b5050600054600254604080517f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82160208201526001600160a01b038a811682840152336060830152898116608083015260a08083018a90528351808403909101815260c08301938490526316f1983160e01b90935262010000909404841695506316f198319450610bdc939092169160c40161156d565b600060405180830381600087803b158015610bf657600080fd5b505af1158015610c0a573d6000803e3d6000fd5b505060408051338152602081018690526001600160a01b03808816945085811693508816917f40e242710be14b7d61d3b93e9d56b40df89cc4dbad8bb88da38c8e0c23809ba7910160405180910390a450505050565b6000808080610c71858701876115bd565b6001600160a01b0380851660009081526004602052604090205494985092965090945092501680610ca457610ca461160e565b604051632142170760e11b81526001600160a01b038616906342842e0e90610cd490309087908790600401611599565b600060405180830381600087803b158015610cee57600080fd5b505af1158015610d02573d6000803e3d6000fd5b5050604080516001600160a01b03888116825260208201879052808816945085811693508916917f8194f168e6e9e449d05a46936e071a710c0f22634eaadeb5b85a86540123931991015b60405180910390a450505050505050565b6000808080610d6f858701876116ad565b6001600160a01b03808516600090815260046020526040902054949950929750909550935016905080610da457610da461160e565b60005b8251811015610e4f57856001600160a01b03166342842e0e30868481518110610dd257610dd261179f565b6020026020010151868581518110610dec57610dec61179f565b60200260200101516040518463ffffffff1660e01b8152600401610e1293929190611599565b600060405180830381600087803b158015610e2c57600080fd5b505af1158015610e40573d6000803e3d6000fd5b50505050806001019050610da7565b50836001600160a01b0316816001600160a01b0316866001600160a01b03167f1b7b9713fdef5dfadf92f6d6e998eb1fc4763cee62a194a095d76349f7dce20c8686604051610d4d9291906117b5565b6000610eaa8661105b565b905060005b82811015610f3c57866001600160a01b03166342842e0e3330878786818110610eda57610eda61179f565b905060200201356040518463ffffffff1660e01b8152600401610eff93929190611599565b600060405180830381600087803b158015610f1957600080fd5b505af1158015610f2d573d6000803e3d6000fd5b50505050806001019050610eaf565b506000546002546040516001600160a01b03620100009093048316926316f19831921690610f9a907faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d18908b9033908c908c908c908c906020016118b4565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610fc692919061156d565b600060405180830381600087803b158015610fe057600080fd5b505af1158015610ff4573d6000803e3d6000fd5b50505050336001600160a01b0316816001600160a01b0316876001600160a01b03167f02c575a943105cda454293b7ac636c87c94ff1bfcfac968aa5423e6b9b312ee98888888860405161104b9493929190611908565b60405180910390a4505050505050565b6001600160a01b038082166000908152600460205260409020541680611087576110848261050a565b90505b6001600160a01b03811661109d5761109d61160e565b919050565b6001600160a01b03811681146110b757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156110f8576110f86110ba565b604052919050565b60006001600160401b03821115611119576111196110ba565b50601f01601f191660200190565b6000806000806080858703121561113d57600080fd5b8435611148816110a2565b93506020850135611158816110a2565b92506040850135915060608501356001600160401b0381111561117a57600080fd5b8501601f8101871361118b57600080fd5b803561119e61119982611100565b6110d0565b8181528860208385010111156111b357600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b600080604083850312156111e857600080fd5b82356111f3816110a2565b946020939093013593505050565b60006020828403121561121357600080fd5b813561121e816110a2565b9392505050565b60008060006060848603121561123a57600080fd5b8335611245816110a2565b92506020840135611255816110a2565b929592945050506040919091013590565b6000806000806060858703121561127c57600080fd5b84359350602085013561128e816110a2565b925060408501356001600160401b03808211156112aa57600080fd5b818701915087601f8301126112be57600080fd5b8135818111156112cd57600080fd5b8860208285010111156112df57600080fd5b95989497505060200194505050565b6000806000806080858703121561130457600080fd5b843561130f816110a2565b9350602085013561131f816110a2565b9250604085013561132f816110a2565b9150606085013561133f816110a2565b939692955090935050565b60008083601f84011261135c57600080fd5b5081356001600160401b0381111561137357600080fd5b6020830191508360208260051b850101111561138e57600080fd5b9250929050565b6000806000806000606086880312156113ad57600080fd5b85356113b8816110a2565b945060208601356001600160401b03808211156113d457600080fd5b6113e089838a0161134a565b909650945060408801359150808211156113f957600080fd5b506114068882890161134a565b969995985093965092949392505050565b6000808585111561142757600080fd5b8386111561143457600080fd5b5050820193919092039150565b8035602083101561145a57600019602084900360031b1b165b92915050565b60005b8381101561147b578181015183820152602001611463565b50506000910152565b60006020828403121561149657600080fd5b81516001600160401b038111156114ac57600080fd5b8201601f810184136114bd57600080fd5b80516114cb61119982611100565b8181528560208385010111156114e057600080fd5b6114f1826020830160208601611460565b95945050505050565b60008151808452611512816020860160208601611460565b601f01601f19169290920160200192915050565b8481526001600160a01b0384166020820152608060408201819052600090611550908301856114fa565b828103606084015261156281856114fa565b979650505050505050565b6001600160a01b0383168152604060208201819052600090611591908301846114fa565b949350505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600080600080608085870312156115d357600080fd5b84356115de816110a2565b935060208501356115ee816110a2565b925060408501356115fe816110a2565b9396929550929360600135925050565b634e487b7160e01b600052600160045260246000fd5b60006001600160401b0382111561163d5761163d6110ba565b5060051b60200190565b600082601f83011261165857600080fd5b8135602061166861119983611624565b82815260059290921b8401810191818101908684111561168757600080fd5b8286015b848110156116a2578035835291830191830161168b565b509695505050505050565b600080600080600060a086880312156116c557600080fd5b853594506020808701356116d8816110a2565b945060408701356116e8816110a2565b935060608701356001600160401b038082111561170457600080fd5b818901915089601f83011261171857600080fd5b813561172661119982611624565b81815260059190911b8301840190848101908c83111561174557600080fd5b938501935b8285101561176c57843561175d816110a2565b8252938501939085019061174a565b96505050608089013592508083111561178457600080fd5b505061179288828901611647565b9150509295509295909350565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b828110156117f75781516001600160a01b0316845292840192908401906001016117d2565b5050508381038285015284518082528583019183019060005b8181101561182c57835183529284019291840191600101611810565b5090979650505050505050565b8183526000602080850194508260005b8581101561187757813561185c816110a2565b6001600160a01b031687529582019590820190600101611849565b509495945050505050565b81835260006001600160fb1b0383111561189b57600080fd5b8260051b80836020870137939093016020019392505050565b8781526001600160a01b0387811660208301528616604082015260a0606082018190526000906118e79083018688611839565b82810360808401526118fa818587611882565b9a9950505050505050505050565b60408152600061191c604083018688611839565b828103602084015261156281858761188256fea2646970667358221220e871571367acbefc18b78d7ab5c1d255c2c71ed55187f997f8c6e1261b3b089564736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106100fb5760003560e01c8063cb10f94c116100a2578063f43cda8b11610071578063f43cda8b146102a1578063f4a120f7146102b4578063f6451255146102c7578063f8c8765e146102ee578063ff6f870c1461030157600080fd5b8063cb10f94c14610227578063d41f177114610240578063d7c9e3ec14610267578063f213159c1461028e57600080fd5b8063150b7a021461010057806347e7ef241461013c5780634fdca69d146101515780637efab4f51461017c57806395c7041c146101a5578063b1768065146101b8578063b68ad1e4146101ed578063c5ac2b1c14610200575b600080fd5b61011e61010e366004611127565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020015b60405180910390f35b61014f61014a3660046111d5565b610314565b005b600254610164906001600160a01b031681565b6040516001600160a01b039091168152602001610133565b61016461018a366004611201565b6004602052600090815260409020546001600160a01b031681565b600154610164906001600160a01b031681565b6101df7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b604051908152602001610133565b600354610164906001600160a01b031681565b6101df7faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d1881565b600054610164906201000090046001600160a01b031681565b6101df7f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b6101df7f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed281565b61014f61029c366004611225565b610323565b61014f6102af366004611266565b610333565b6101646102c2366004611201565b61050a565b6101df7f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b61014f6102fc3660046112ee565b610864565b61014f61030f366004611395565b610a72565b61031f823383610ada565b5050565b61032e838383610ada565b505050565b6001546001600160a01b031633146103a05760405162461bcd60e51b815260206004820152602560248201527f526f6f744552433732315072656469636174653a204f4e4c595f455849545f4860448201526422a62822a960d91b60648201526084015b60405180910390fd5b6002546001600160a01b0384811691161461040f5760405162461bcd60e51b815260206004820152602960248201527f526f6f744552433732315072656469636174653a204f4e4c595f4348494c445f60448201526850524544494341544560b81b6064820152608401610397565b7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286961043e602060008486611417565b61044791611441565b036104665761046161045c8260208186611417565b610c60565b610504565b7f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed2610495602060008486611417565b61049e91611441565b036104ad576104618282610d5e565b60405162461bcd60e51b815260206004820152602660248201527f526f6f744552433732315072656469636174653a20494e56414c49445f5349476044820152654e415455524560d01b6064820152608401610397565b50505050565b60006001600160a01b03821661056d5760405162461bcd60e51b815260206004820152602260248201527f526f6f744552433732315072656469636174653a20494e56414c49445f544f4b60448201526122a760f11b6064820152608401610397565b6001600160a01b0382811660009081526004602052604090205416156105e15760405162461bcd60e51b815260206004820152602360248201527f526f6f744552433732315072656469636174653a20414c52454144595f4d415060448201526214115160ea1b6064820152608401610397565b60035460408051606085901b6bffffffffffffffffffffffff19166020808301919091528251601481840301815260348301808552815191909201206002546001600160a01b03908116606c8501526f5af43d82803e903d91602b57fd5bf3ff60588501529094166048830152733d602d80600a3d3981f3363d3d373d3d3d363d739052608c81019290925260379082012060ac82015260556077909101206000906001600160a01b03848116600081815260046020819052604080832080546001600160a01b031916878716179055825460025482516306fdde0360e01b81529251979850620100009091048616966316f198319691909116947f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad948b9491936306fdde03938184019390918290030181865afa158015610727573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261074f9190810190611484565b886001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801561078d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107b59190810190611484565b6040516020016107c89493929190611526565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016107f492919061156d565b600060405180830381600087803b15801561080e57600080fd5b505af1158015610822573d6000803e3d6000fd5b50506040516001600160a01b038085169350861691507f85920d35e6c72f6b2affffa04298b0cecfeba86e4a9f407df661f1cb8ab5e61790600090a392915050565b600054610100900460ff16158080156108845750600054600160ff909116105b8061089e5750303b15801561089e575060005460ff166001145b6109015760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610397565b6000805460ff191660011790558015610924576000805461ff0019166101001790555b6001600160a01b0385161580159061094457506001600160a01b03841615155b801561095857506001600160a01b03831615155b801561096c57506001600160a01b03821615155b6109c85760405162461bcd60e51b815260206004820152602760248201527f526f6f744552433732315072656469636174653a204241445f494e495449414c60448201526624ad20aa24a7a760c91b6064820152608401610397565b6000805462010000600160b01b031916620100006001600160a01b038881169190910291909117909155600180546001600160a01b031990811687841617909155600280548216868416179055600380549091169184169190911790558015610a6b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b828114610acd5760405162461bcd60e51b815260206004820152602360248201527f526f6f744552433732315072656469636174653a20494e56414c49445f4c454e60448201526208ea8960eb1b6064820152608401610397565b610a6b8585858585610e9f565b6000610ae58461105b565b604051632142170760e11b81529091506001600160a01b038516906342842e0e90610b1890339030908790600401611599565b600060405180830381600087803b158015610b3257600080fd5b505af1158015610b46573d6000803e3d6000fd5b5050600054600254604080517f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82160208201526001600160a01b038a811682840152336060830152898116608083015260a08083018a90528351808403909101815260c08301938490526316f1983160e01b90935262010000909404841695506316f198319450610bdc939092169160c40161156d565b600060405180830381600087803b158015610bf657600080fd5b505af1158015610c0a573d6000803e3d6000fd5b505060408051338152602081018690526001600160a01b03808816945085811693508816917f40e242710be14b7d61d3b93e9d56b40df89cc4dbad8bb88da38c8e0c23809ba7910160405180910390a450505050565b6000808080610c71858701876115bd565b6001600160a01b0380851660009081526004602052604090205494985092965090945092501680610ca457610ca461160e565b604051632142170760e11b81526001600160a01b038616906342842e0e90610cd490309087908790600401611599565b600060405180830381600087803b158015610cee57600080fd5b505af1158015610d02573d6000803e3d6000fd5b5050604080516001600160a01b03888116825260208201879052808816945085811693508916917f8194f168e6e9e449d05a46936e071a710c0f22634eaadeb5b85a86540123931991015b60405180910390a450505050505050565b6000808080610d6f858701876116ad565b6001600160a01b03808516600090815260046020526040902054949950929750909550935016905080610da457610da461160e565b60005b8251811015610e4f57856001600160a01b03166342842e0e30868481518110610dd257610dd261179f565b6020026020010151868581518110610dec57610dec61179f565b60200260200101516040518463ffffffff1660e01b8152600401610e1293929190611599565b600060405180830381600087803b158015610e2c57600080fd5b505af1158015610e40573d6000803e3d6000fd5b50505050806001019050610da7565b50836001600160a01b0316816001600160a01b0316866001600160a01b03167f1b7b9713fdef5dfadf92f6d6e998eb1fc4763cee62a194a095d76349f7dce20c8686604051610d4d9291906117b5565b6000610eaa8661105b565b905060005b82811015610f3c57866001600160a01b03166342842e0e3330878786818110610eda57610eda61179f565b905060200201356040518463ffffffff1660e01b8152600401610eff93929190611599565b600060405180830381600087803b158015610f1957600080fd5b505af1158015610f2d573d6000803e3d6000fd5b50505050806001019050610eaf565b506000546002546040516001600160a01b03620100009093048316926316f19831921690610f9a907faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d18908b9033908c908c908c908c906020016118b4565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610fc692919061156d565b600060405180830381600087803b158015610fe057600080fd5b505af1158015610ff4573d6000803e3d6000fd5b50505050336001600160a01b0316816001600160a01b0316876001600160a01b03167f02c575a943105cda454293b7ac636c87c94ff1bfcfac968aa5423e6b9b312ee98888888860405161104b9493929190611908565b60405180910390a4505050505050565b6001600160a01b038082166000908152600460205260409020541680611087576110848261050a565b90505b6001600160a01b03811661109d5761109d61160e565b919050565b6001600160a01b03811681146110b757600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156110f8576110f86110ba565b604052919050565b60006001600160401b03821115611119576111196110ba565b50601f01601f191660200190565b6000806000806080858703121561113d57600080fd5b8435611148816110a2565b93506020850135611158816110a2565b92506040850135915060608501356001600160401b0381111561117a57600080fd5b8501601f8101871361118b57600080fd5b803561119e61119982611100565b6110d0565b8181528860208385010111156111b357600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b600080604083850312156111e857600080fd5b82356111f3816110a2565b946020939093013593505050565b60006020828403121561121357600080fd5b813561121e816110a2565b9392505050565b60008060006060848603121561123a57600080fd5b8335611245816110a2565b92506020840135611255816110a2565b929592945050506040919091013590565b6000806000806060858703121561127c57600080fd5b84359350602085013561128e816110a2565b925060408501356001600160401b03808211156112aa57600080fd5b818701915087601f8301126112be57600080fd5b8135818111156112cd57600080fd5b8860208285010111156112df57600080fd5b95989497505060200194505050565b6000806000806080858703121561130457600080fd5b843561130f816110a2565b9350602085013561131f816110a2565b9250604085013561132f816110a2565b9150606085013561133f816110a2565b939692955090935050565b60008083601f84011261135c57600080fd5b5081356001600160401b0381111561137357600080fd5b6020830191508360208260051b850101111561138e57600080fd5b9250929050565b6000806000806000606086880312156113ad57600080fd5b85356113b8816110a2565b945060208601356001600160401b03808211156113d457600080fd5b6113e089838a0161134a565b909650945060408801359150808211156113f957600080fd5b506114068882890161134a565b969995985093965092949392505050565b6000808585111561142757600080fd5b8386111561143457600080fd5b5050820193919092039150565b8035602083101561145a57600019602084900360031b1b165b92915050565b60005b8381101561147b578181015183820152602001611463565b50506000910152565b60006020828403121561149657600080fd5b81516001600160401b038111156114ac57600080fd5b8201601f810184136114bd57600080fd5b80516114cb61119982611100565b8181528560208385010111156114e057600080fd5b6114f1826020830160208601611460565b95945050505050565b60008151808452611512816020860160208601611460565b601f01601f19169290920160200192915050565b8481526001600160a01b0384166020820152608060408201819052600090611550908301856114fa565b828103606084015261156281856114fa565b979650505050505050565b6001600160a01b0383168152604060208201819052600090611591908301846114fa565b949350505050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600080600080608085870312156115d357600080fd5b84356115de816110a2565b935060208501356115ee816110a2565b925060408501356115fe816110a2565b9396929550929360600135925050565b634e487b7160e01b600052600160045260246000fd5b60006001600160401b0382111561163d5761163d6110ba565b5060051b60200190565b600082601f83011261165857600080fd5b8135602061166861119983611624565b82815260059290921b8401810191818101908684111561168757600080fd5b8286015b848110156116a2578035835291830191830161168b565b509695505050505050565b600080600080600060a086880312156116c557600080fd5b853594506020808701356116d8816110a2565b945060408701356116e8816110a2565b935060608701356001600160401b038082111561170457600080fd5b818901915089601f83011261171857600080fd5b813561172661119982611624565b81815260059190911b8301840190848101908c83111561174557600080fd5b938501935b8285101561176c57843561175d816110a2565b8252938501939085019061174a565b96505050608089013592508083111561178457600080fd5b505061179288828901611647565b9150509295509295909350565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b828110156117f75781516001600160a01b0316845292840192908401906001016117d2565b5050508381038285015284518082528583019183019060005b8181101561182c57835183529284019291840191600101611810565b5090979650505050505050565b8183526000602080850194508260005b8581101561187757813561185c816110a2565b6001600160a01b031687529582019590820190600101611849565b509495945050505050565b81835260006001600160fb1b0383111561189b57600080fd5b8260051b80836020870137939093016020019392505050565b8781526001600160a01b0387811660208301528616604082015260a0606082018190526000906118e79083018688611839565b82810360808401526118fa818587611882565b9a9950505050505050505050565b60408152600061191c604083018688611839565b828103602084015261156281858761188256fea2646970667358221220e871571367acbefc18b78d7ab5c1d255c2c71ed55187f997f8c6e1261b3b089564736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" -var MockERC1155Artifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"MockERC1155\",\n \"sourceName\": \"contracts/mocks/MockERC1155.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"ApprovalForAll\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RoleAdminChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleGranted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleRevoked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"ids\",\n \"type\": \"uint256[]\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"values\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"TransferBatch\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"TransferSingle\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"value\",\n \"type\": \"string\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"URI\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MINTER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"PAUSER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"accounts\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"ids\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"balanceOfBatch\",\n \"outputs\": [\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"ids\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"values\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"burnBatch\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleAdmin\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getRoleMember\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleMemberCount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"grantRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hasRole\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isApprovedForAll\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"ids\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"mintBatch\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"renounceRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"ids\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"safeBatchTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"safeTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setApprovalForAll\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"uri\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x60806040523480156200001157600080fd5b506040805180820190915260058152646c6f72656d60d81b6020820152806200003a81620000b1565b506005805460ff1916905562000052600033620000c3565b6200007e7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000c3565b620000aa7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000c3565b506200038e565b6004620000bf8282620002c2565b5050565b620000bf8282620000e082826200010c60201b620009e21760201c565b60008281526001602090815260409091206200010791839062000a66620001ac821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000bf576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001683390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001c3836001600160a01b038416620001cc565b90505b92915050565b60008181526001830160205260408120546200021557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001c6565b506000620001c6565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200024957607f821691505b6020821081036200026a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200010757600081815260208120601f850160051c81016020861015620002995750805b601f850160051c820191505b81811015620002ba57828155600101620002a5565b505050505050565b81516001600160401b03811115620002de57620002de6200021e565b620002f681620002ef845462000234565b8462000270565b602080601f8311600181146200032e5760008415620003155750858301515b600019600386901b1c1916600185901b178555620002ba565b600085815260208120601f198616915b828110156200035f578886015182559484019460019091019084016200033e565b50858210156200037e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6128a0806200039e6000396000f3fe608060405234801561001057600080fd5b50600436106101625760003560e01c8063731133e9116100ce578063ca15c87311610087578063ca15c873146102fb578063d53913931461030e578063d547741f14610323578063e63ab1e914610336578063e985e9c51461034b578063f242432a14610387578063f5298aca1461039a57600080fd5b8063731133e9146102875780638456cb591461029a5780639010d07c146102a257806391d14854146102cd578063a217fddf146102e0578063a22cb465146102e857600080fd5b80632f2ff15d116101205780632f2ff15d1461021b57806336568abe1461022e5780633f4ba83a146102415780634e1273f4146102495780635c975abb146102695780636b20c4541461027457600080fd5b8062fdd58e1461016757806301ffc9a71461018d5780630e89341c146101b05780631f7fdffa146101d0578063248a9ca3146101e55780632eb2c2d614610208575b600080fd5b61017a610175366004611bd7565b6103ad565b6040519081526020015b60405180910390f35b6101a061019b366004611c17565b610448565b6040519015158152602001610184565b6101c36101be366004611c34565b610453565b6040516101849190611c9d565b6101e36101de366004611df9565b6104e7565b005b61017a6101f3366004611c34565b60009081526020819052604090206001015490565b6101e3610216366004611e91565b61052d565b6101e3610229366004611f3a565b610579565b6101e361023c366004611f3a565b6105a3565b6101e3610621565b61025c610257366004611f66565b6106a3565b604051610184919061206b565b60055460ff166101a0565b6101e361028236600461207e565b6107cc565b6101e36102953660046120f1565b61080f565b6101e361084f565b6102b56102b0366004612145565b6108cb565b6040516001600160a01b039091168152602001610184565b6101a06102db366004611f3a565b6108ea565b61017a600081565b6101e36102f6366004612167565b610913565b61017a610309366004611c34565b61091e565b61017a60008051602061284b83398151915281565b6101e3610331366004611f3a565b610935565b61017a60008051602061282b83398151915281565b6101a06103593660046121a3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101e36103953660046121cd565b61095a565b6101e36103a8366004612231565b61099f565b60006001600160a01b03831661041d5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061044282610a7b565b60606004805461046290612264565b80601f016020809104026020016040519081016040528092919081815260200182805461048e90612264565b80156104db5780601f106104b0576101008083540402835291602001916104db565b820191906000526020600020905b8154815290600101906020018083116104be57829003601f168201915b50505050509050919050565b6104ff60008051602061284b833981519152336108ea565b61051b5760405162461bcd60e51b81526004016104149061229e565b61052784848484610abb565b50505050565b6001600160a01b03851633148061054957506105498533610359565b6105655760405162461bcd60e51b8152600401610414906122e4565b6105728585858585610c04565b5050505050565b60008281526020819052604090206001015461059481610d9f565b61059e8383610dac565b505050565b6001600160a01b03811633146106135760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610414565b61061d8282610dce565b5050565b61063960008051602061282b833981519152336108ea565b6106995760405162461bcd60e51b815260206004820152603b60248201526000805160206127eb83398151915260448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610414565b6106a1610df0565b565b606081518351146107085760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610414565b600083516001600160401b0381111561072357610723611cb0565b60405190808252806020026020018201604052801561074c578160200160208202803683370190505b50905060005b84518110156107c45761079785828151811061077057610770612332565b602002602001015185838151811061078a5761078a612332565b60200260200101516103ad565b8282815181106107a9576107a9612332565b60209081029190910101526107bd8161235e565b9050610752565b509392505050565b6001600160a01b0383163314806107e857506107e88333610359565b6108045760405162461bcd60e51b8152600401610414906122e4565b61059e838383610e42565b61082760008051602061284b833981519152336108ea565b6108435760405162461bcd60e51b81526004016104149061229e565b61052784848484610fcf565b61086760008051602061282b833981519152336108ea565b6108c35760405162461bcd60e51b815260206004820152603960248201526000805160206127eb833981519152604482015278686176652070617573657220726f6c6520746f20706175736560381b6064820152608401610414565b6106a16110a8565b60008281526001602052604081206108e390836110e5565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61061d3383836110f1565b6000818152600160205260408120610442906111d1565b60008281526020819052604090206001015461095081610d9f565b61059e8383610dce565b6001600160a01b03851633148061097657506109768533610359565b6109925760405162461bcd60e51b8152600401610414906122e4565b61057285858585856111db565b6001600160a01b0383163314806109bb57506109bb8333610359565b6109d75760405162461bcd60e51b8152600401610414906122e4565b61059e838383611305565b6109ec82826108ea565b61061d576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610a223390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006108e3836001600160a01b03841661140f565b60006001600160e01b03198216636cdb3d1360e11b1480610aac57506001600160e01b031982166303a24d0760e21b145b8061044257506104428261145e565b6001600160a01b038416610ae15760405162461bcd60e51b815260040161041490612377565b8151835114610b025760405162461bcd60e51b8152600401610414906123b8565b33610b1281600087878787611483565b60005b8451811015610bae57838181518110610b3057610b30612332565b602002602001015160026000878481518110610b4e57610b4e612332565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610b969190612400565b90915550819050610ba68161235e565b915050610b15565b50846001600160a01b031660006001600160a01b0316826001600160a01b03166000805160206127cb8339815191528787604051610bed929190612413565b60405180910390a461057281600087878787611491565b8151835114610c255760405162461bcd60e51b8152600401610414906123b8565b6001600160a01b038416610c4b5760405162461bcd60e51b815260040161041490612441565b33610c5a818787878787611483565b60005b8451811015610d43576000858281518110610c7a57610c7a612332565b602002602001015190506000858381518110610c9857610c98612332565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610ce95760405162461bcd60e51b815260040161041490612486565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610d28908490612400565b9250508190555050505080610d3c9061235e565b9050610c5d565b50846001600160a01b0316866001600160a01b0316826001600160a01b03166000805160206127cb8339815191528787604051610d81929190612413565b60405180910390a4610d97818787878787611491565b505050505050565b610da981336115ec565b50565b610db682826109e2565b600082815260016020526040902061059e9082610a66565b610dd88282611645565b600082815260016020526040902061059e90826116aa565b610df86116bf565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316610e685760405162461bcd60e51b8152600401610414906124d0565b8051825114610e895760405162461bcd60e51b8152600401610414906123b8565b6000339050610eac81856000868660405180602001604052806000815250611483565b60005b8351811015610f74576000848281518110610ecc57610ecc612332565b602002602001015190506000848381518110610eea57610eea612332565b60209081029190910181015160008481526002835260408082206001600160a01b038c168352909352919091205490915081811015610f3b5760405162461bcd60e51b815260040161041490612513565b60009283526002602090815260408085206001600160a01b038b1686529091529092209103905580610f6c8161235e565b915050610eaf565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03166000805160206127cb8339815191528686604051610fb3929190612413565b60405180910390a4604080516020810190915260009052610527565b6001600160a01b038416610ff55760405162461bcd60e51b815260040161041490612377565b33600061100185611708565b9050600061100e85611708565b905061101f83600089858589611483565b60008681526002602090815260408083206001600160a01b038b16845290915281208054879290611051908490612400565b909155505060408051878152602081018790526001600160a01b03808a16926000929187169160008051602061280b833981519152910160405180910390a461109f83600089898989611753565b50505050505050565b6110b061180e565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e253390565b60006108e38383611854565b816001600160a01b0316836001600160a01b0316036111645760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610414565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610442825490565b6001600160a01b0384166112015760405162461bcd60e51b815260040161041490612441565b33600061120d85611708565b9050600061121a85611708565b905061122a838989858589611483565b60008681526002602090815260408083206001600160a01b038c1684529091529020548581101561126d5760405162461bcd60e51b815260040161041490612486565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a168252812080548892906112ac908490612400565b909155505060408051888152602081018890526001600160a01b03808b16928c8216929188169160008051602061280b833981519152910160405180910390a46112fa848a8a8a8a8a611753565b505050505050505050565b6001600160a01b03831661132b5760405162461bcd60e51b8152600401610414906124d0565b33600061133784611708565b9050600061134484611708565b905061136483876000858560405180602001604052806000815250611483565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156113a75760405162461bcd60e51b815260040161041490612513565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a905290929088169160008051602061280b833981519152910160405180910390a460408051602081019091526000905261109f565b600081815260018301602052604081205461145657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610442565b506000610442565b60006001600160e01b03198216635a05180f60e01b148061044257506104428261187e565b610d978686868686866118b3565b6001600160a01b0384163b15610d975760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906114d59089908990889088908890600401612557565b6020604051808303816000875af1925050508015611510575060408051601f3d908101601f1916820190925261150d918101906125b5565b60015b6115bc5761151c6125d2565b806308c379a00361155557506115306125ee565b8061153b5750611557565b8060405162461bcd60e51b81526004016104149190611c9d565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610414565b6001600160e01b0319811663bc197c8160e01b1461109f5760405162461bcd60e51b815260040161041490612677565b6115f682826108ea565b61061d576116038161191b565b61160e83602061192d565b60405160200161161f9291906126bf565b60408051601f198184030181529082905262461bcd60e51b825261041491600401611c9d565b61164f82826108ea565b1561061d576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006108e3836001600160a01b038416611ac8565b60055460ff166106a15760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610414565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061174257611742612332565b602090810291909101015292915050565b6001600160a01b0384163b15610d975760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611797908990899088908890889060040161272e565b6020604051808303816000875af19250505080156117d2575060408051601f3d908101601f191682019092526117cf918101906125b5565b60015b6117de5761151c6125d2565b6001600160e01b0319811663f23a6e6160e01b1461109f5760405162461bcd60e51b815260040161041490612677565b60055460ff16156106a15760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610414565b600082600001828154811061186b5761186b612332565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061044257506301ffc9a760e01b6001600160e01b0319831614610442565b60055460ff1615610d975760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610414565b60606104426001600160a01b03831660145b6060600061193c836002612773565b611947906002612400565b6001600160401b0381111561195e5761195e611cb0565b6040519080825280601f01601f191660200182016040528015611988576020820181803683370190505b509050600360fc1b816000815181106119a3576119a3612332565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106119d2576119d2612332565b60200101906001600160f81b031916908160001a90535060006119f6846002612773565b611a01906001612400565b90505b6001811115611a79576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611a3557611a35612332565b1a60f81b828281518110611a4b57611a4b612332565b60200101906001600160f81b031916908160001a90535060049490941c93611a728161278a565b9050611a04565b5083156108e35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610414565b60008181526001830160205260408120548015611bb1576000611aec6001836127a1565b8554909150600090611b00906001906127a1565b9050818114611b65576000866000018281548110611b2057611b20612332565b9060005260206000200154905080876000018481548110611b4357611b43612332565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611b7657611b766127b4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610442565b6000915050610442565b80356001600160a01b0381168114611bd257600080fd5b919050565b60008060408385031215611bea57600080fd5b611bf383611bbb565b946020939093013593505050565b6001600160e01b031981168114610da957600080fd5b600060208284031215611c2957600080fd5b81356108e381611c01565b600060208284031215611c4657600080fd5b5035919050565b60005b83811015611c68578181015183820152602001611c50565b50506000910152565b60008151808452611c89816020860160208601611c4d565b601f01601f19169290920160200192915050565b6020815260006108e36020830184611c71565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715611ceb57611ceb611cb0565b6040525050565b60006001600160401b03821115611d0b57611d0b611cb0565b5060051b60200190565b600082601f830112611d2657600080fd5b81356020611d3382611cf2565b604051611d408282611cc6565b83815260059390931b8501820192828101915086841115611d6057600080fd5b8286015b84811015611d7b5780358352918301918301611d64565b509695505050505050565b600082601f830112611d9757600080fd5b81356001600160401b03811115611db057611db0611cb0565b604051611dc7601f8301601f191660200182611cc6565b818152846020838601011115611ddc57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611e0f57600080fd5b611e1885611bbb565b935060208501356001600160401b0380821115611e3457600080fd5b611e4088838901611d15565b94506040870135915080821115611e5657600080fd5b611e6288838901611d15565b93506060870135915080821115611e7857600080fd5b50611e8587828801611d86565b91505092959194509250565b600080600080600060a08688031215611ea957600080fd5b611eb286611bbb565b9450611ec060208701611bbb565b935060408601356001600160401b0380821115611edc57600080fd5b611ee889838a01611d15565b94506060880135915080821115611efe57600080fd5b611f0a89838a01611d15565b93506080880135915080821115611f2057600080fd5b50611f2d88828901611d86565b9150509295509295909350565b60008060408385031215611f4d57600080fd5b82359150611f5d60208401611bbb565b90509250929050565b60008060408385031215611f7957600080fd5b82356001600160401b0380821115611f9057600080fd5b818501915085601f830112611fa457600080fd5b81356020611fb182611cf2565b604051611fbe8282611cc6565b83815260059390931b8501820192828101915089841115611fde57600080fd5b948201945b8386101561200357611ff486611bbb565b82529482019490820190611fe3565b9650508601359250508082111561201957600080fd5b5061202685828601611d15565b9150509250929050565b600081518084526020808501945080840160005b8381101561206057815187529582019590820190600101612044565b509495945050505050565b6020815260006108e36020830184612030565b60008060006060848603121561209357600080fd5b61209c84611bbb565b925060208401356001600160401b03808211156120b857600080fd5b6120c487838801611d15565b935060408601359150808211156120da57600080fd5b506120e786828701611d15565b9150509250925092565b6000806000806080858703121561210757600080fd5b61211085611bbb565b9350602085013592506040850135915060608501356001600160401b0381111561213957600080fd5b611e8587828801611d86565b6000806040838503121561215857600080fd5b50508035926020909101359150565b6000806040838503121561217a57600080fd5b61218383611bbb565b91506020830135801515811461219857600080fd5b809150509250929050565b600080604083850312156121b657600080fd5b6121bf83611bbb565b9150611f5d60208401611bbb565b600080600080600060a086880312156121e557600080fd5b6121ee86611bbb565b94506121fc60208701611bbb565b9350604086013592506060860135915060808601356001600160401b0381111561222557600080fd5b611f2d88828901611d86565b60008060006060848603121561224657600080fd5b61224f84611bbb565b95602085013595506040909401359392505050565b600181811c9082168061227857607f821691505b60208210810361229857634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526038908201526000805160206127eb8339815191526040820152771a185d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60421b606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161237057612370612348565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b8082018082111561044257610442612348565b6040815260006124266040830185612030565b82810360208401526124388185612030565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a06040820181905260009061258390830186612030565b82810360608401526125958186612030565b905082810360808401526125a98185611c71565b98975050505050505050565b6000602082840312156125c757600080fd5b81516108e381611c01565b600060033d11156125eb5760046000803e5060005160e01c5b90565b600060443d10156125fc5790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561262b57505050505090565b82850191508151818111156126435750505050505090565b843d870101602082850101111561265d5750505050505090565b61266c60208286010187611cc6565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516126f1816017850160208801611c4d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612722816028840160208801611c4d565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061276890830184611c71565b979650505050505050565b808202811582820484141761044257610442612348565b60008161279957612799612348565b506000190190565b8181038181111561044257610442612348565b634e487b7160e01b600052603160045260246000fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb455243313135355072657365744d696e7465725061757365723a206d75737420c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6265d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220ee351b7f630e145f181ce66e6536b2e55ce330906bb3326bf750662534a4b66864736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101625760003560e01c8063731133e9116100ce578063ca15c87311610087578063ca15c873146102fb578063d53913931461030e578063d547741f14610323578063e63ab1e914610336578063e985e9c51461034b578063f242432a14610387578063f5298aca1461039a57600080fd5b8063731133e9146102875780638456cb591461029a5780639010d07c146102a257806391d14854146102cd578063a217fddf146102e0578063a22cb465146102e857600080fd5b80632f2ff15d116101205780632f2ff15d1461021b57806336568abe1461022e5780633f4ba83a146102415780634e1273f4146102495780635c975abb146102695780636b20c4541461027457600080fd5b8062fdd58e1461016757806301ffc9a71461018d5780630e89341c146101b05780631f7fdffa146101d0578063248a9ca3146101e55780632eb2c2d614610208575b600080fd5b61017a610175366004611bd7565b6103ad565b6040519081526020015b60405180910390f35b6101a061019b366004611c17565b610448565b6040519015158152602001610184565b6101c36101be366004611c34565b610453565b6040516101849190611c9d565b6101e36101de366004611df9565b6104e7565b005b61017a6101f3366004611c34565b60009081526020819052604090206001015490565b6101e3610216366004611e91565b61052d565b6101e3610229366004611f3a565b610579565b6101e361023c366004611f3a565b6105a3565b6101e3610621565b61025c610257366004611f66565b6106a3565b604051610184919061206b565b60055460ff166101a0565b6101e361028236600461207e565b6107cc565b6101e36102953660046120f1565b61080f565b6101e361084f565b6102b56102b0366004612145565b6108cb565b6040516001600160a01b039091168152602001610184565b6101a06102db366004611f3a565b6108ea565b61017a600081565b6101e36102f6366004612167565b610913565b61017a610309366004611c34565b61091e565b61017a60008051602061284b83398151915281565b6101e3610331366004611f3a565b610935565b61017a60008051602061282b83398151915281565b6101a06103593660046121a3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101e36103953660046121cd565b61095a565b6101e36103a8366004612231565b61099f565b60006001600160a01b03831661041d5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061044282610a7b565b60606004805461046290612264565b80601f016020809104026020016040519081016040528092919081815260200182805461048e90612264565b80156104db5780601f106104b0576101008083540402835291602001916104db565b820191906000526020600020905b8154815290600101906020018083116104be57829003601f168201915b50505050509050919050565b6104ff60008051602061284b833981519152336108ea565b61051b5760405162461bcd60e51b81526004016104149061229e565b61052784848484610abb565b50505050565b6001600160a01b03851633148061054957506105498533610359565b6105655760405162461bcd60e51b8152600401610414906122e4565b6105728585858585610c04565b5050505050565b60008281526020819052604090206001015461059481610d9f565b61059e8383610dac565b505050565b6001600160a01b03811633146106135760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610414565b61061d8282610dce565b5050565b61063960008051602061282b833981519152336108ea565b6106995760405162461bcd60e51b815260206004820152603b60248201526000805160206127eb83398151915260448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610414565b6106a1610df0565b565b606081518351146107085760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610414565b600083516001600160401b0381111561072357610723611cb0565b60405190808252806020026020018201604052801561074c578160200160208202803683370190505b50905060005b84518110156107c45761079785828151811061077057610770612332565b602002602001015185838151811061078a5761078a612332565b60200260200101516103ad565b8282815181106107a9576107a9612332565b60209081029190910101526107bd8161235e565b9050610752565b509392505050565b6001600160a01b0383163314806107e857506107e88333610359565b6108045760405162461bcd60e51b8152600401610414906122e4565b61059e838383610e42565b61082760008051602061284b833981519152336108ea565b6108435760405162461bcd60e51b81526004016104149061229e565b61052784848484610fcf565b61086760008051602061282b833981519152336108ea565b6108c35760405162461bcd60e51b815260206004820152603960248201526000805160206127eb833981519152604482015278686176652070617573657220726f6c6520746f20706175736560381b6064820152608401610414565b6106a16110a8565b60008281526001602052604081206108e390836110e5565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61061d3383836110f1565b6000818152600160205260408120610442906111d1565b60008281526020819052604090206001015461095081610d9f565b61059e8383610dce565b6001600160a01b03851633148061097657506109768533610359565b6109925760405162461bcd60e51b8152600401610414906122e4565b61057285858585856111db565b6001600160a01b0383163314806109bb57506109bb8333610359565b6109d75760405162461bcd60e51b8152600401610414906122e4565b61059e838383611305565b6109ec82826108ea565b61061d576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610a223390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006108e3836001600160a01b03841661140f565b60006001600160e01b03198216636cdb3d1360e11b1480610aac57506001600160e01b031982166303a24d0760e21b145b8061044257506104428261145e565b6001600160a01b038416610ae15760405162461bcd60e51b815260040161041490612377565b8151835114610b025760405162461bcd60e51b8152600401610414906123b8565b33610b1281600087878787611483565b60005b8451811015610bae57838181518110610b3057610b30612332565b602002602001015160026000878481518110610b4e57610b4e612332565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610b969190612400565b90915550819050610ba68161235e565b915050610b15565b50846001600160a01b031660006001600160a01b0316826001600160a01b03166000805160206127cb8339815191528787604051610bed929190612413565b60405180910390a461057281600087878787611491565b8151835114610c255760405162461bcd60e51b8152600401610414906123b8565b6001600160a01b038416610c4b5760405162461bcd60e51b815260040161041490612441565b33610c5a818787878787611483565b60005b8451811015610d43576000858281518110610c7a57610c7a612332565b602002602001015190506000858381518110610c9857610c98612332565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610ce95760405162461bcd60e51b815260040161041490612486565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610d28908490612400565b9250508190555050505080610d3c9061235e565b9050610c5d565b50846001600160a01b0316866001600160a01b0316826001600160a01b03166000805160206127cb8339815191528787604051610d81929190612413565b60405180910390a4610d97818787878787611491565b505050505050565b610da981336115ec565b50565b610db682826109e2565b600082815260016020526040902061059e9082610a66565b610dd88282611645565b600082815260016020526040902061059e90826116aa565b610df86116bf565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316610e685760405162461bcd60e51b8152600401610414906124d0565b8051825114610e895760405162461bcd60e51b8152600401610414906123b8565b6000339050610eac81856000868660405180602001604052806000815250611483565b60005b8351811015610f74576000848281518110610ecc57610ecc612332565b602002602001015190506000848381518110610eea57610eea612332565b60209081029190910181015160008481526002835260408082206001600160a01b038c168352909352919091205490915081811015610f3b5760405162461bcd60e51b815260040161041490612513565b60009283526002602090815260408085206001600160a01b038b1686529091529092209103905580610f6c8161235e565b915050610eaf565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03166000805160206127cb8339815191528686604051610fb3929190612413565b60405180910390a4604080516020810190915260009052610527565b6001600160a01b038416610ff55760405162461bcd60e51b815260040161041490612377565b33600061100185611708565b9050600061100e85611708565b905061101f83600089858589611483565b60008681526002602090815260408083206001600160a01b038b16845290915281208054879290611051908490612400565b909155505060408051878152602081018790526001600160a01b03808a16926000929187169160008051602061280b833981519152910160405180910390a461109f83600089898989611753565b50505050505050565b6110b061180e565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e253390565b60006108e38383611854565b816001600160a01b0316836001600160a01b0316036111645760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610414565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610442825490565b6001600160a01b0384166112015760405162461bcd60e51b815260040161041490612441565b33600061120d85611708565b9050600061121a85611708565b905061122a838989858589611483565b60008681526002602090815260408083206001600160a01b038c1684529091529020548581101561126d5760405162461bcd60e51b815260040161041490612486565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a168252812080548892906112ac908490612400565b909155505060408051888152602081018890526001600160a01b03808b16928c8216929188169160008051602061280b833981519152910160405180910390a46112fa848a8a8a8a8a611753565b505050505050505050565b6001600160a01b03831661132b5760405162461bcd60e51b8152600401610414906124d0565b33600061133784611708565b9050600061134484611708565b905061136483876000858560405180602001604052806000815250611483565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156113a75760405162461bcd60e51b815260040161041490612513565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a905290929088169160008051602061280b833981519152910160405180910390a460408051602081019091526000905261109f565b600081815260018301602052604081205461145657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610442565b506000610442565b60006001600160e01b03198216635a05180f60e01b148061044257506104428261187e565b610d978686868686866118b3565b6001600160a01b0384163b15610d975760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906114d59089908990889088908890600401612557565b6020604051808303816000875af1925050508015611510575060408051601f3d908101601f1916820190925261150d918101906125b5565b60015b6115bc5761151c6125d2565b806308c379a00361155557506115306125ee565b8061153b5750611557565b8060405162461bcd60e51b81526004016104149190611c9d565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610414565b6001600160e01b0319811663bc197c8160e01b1461109f5760405162461bcd60e51b815260040161041490612677565b6115f682826108ea565b61061d576116038161191b565b61160e83602061192d565b60405160200161161f9291906126bf565b60408051601f198184030181529082905262461bcd60e51b825261041491600401611c9d565b61164f82826108ea565b1561061d576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006108e3836001600160a01b038416611ac8565b60055460ff166106a15760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610414565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061174257611742612332565b602090810291909101015292915050565b6001600160a01b0384163b15610d975760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611797908990899088908890889060040161272e565b6020604051808303816000875af19250505080156117d2575060408051601f3d908101601f191682019092526117cf918101906125b5565b60015b6117de5761151c6125d2565b6001600160e01b0319811663f23a6e6160e01b1461109f5760405162461bcd60e51b815260040161041490612677565b60055460ff16156106a15760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610414565b600082600001828154811061186b5761186b612332565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061044257506301ffc9a760e01b6001600160e01b0319831614610442565b60055460ff1615610d975760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610414565b60606104426001600160a01b03831660145b6060600061193c836002612773565b611947906002612400565b6001600160401b0381111561195e5761195e611cb0565b6040519080825280601f01601f191660200182016040528015611988576020820181803683370190505b509050600360fc1b816000815181106119a3576119a3612332565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106119d2576119d2612332565b60200101906001600160f81b031916908160001a90535060006119f6846002612773565b611a01906001612400565b90505b6001811115611a79576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611a3557611a35612332565b1a60f81b828281518110611a4b57611a4b612332565b60200101906001600160f81b031916908160001a90535060049490941c93611a728161278a565b9050611a04565b5083156108e35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610414565b60008181526001830160205260408120548015611bb1576000611aec6001836127a1565b8554909150600090611b00906001906127a1565b9050818114611b65576000866000018281548110611b2057611b20612332565b9060005260206000200154905080876000018481548110611b4357611b43612332565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611b7657611b766127b4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610442565b6000915050610442565b80356001600160a01b0381168114611bd257600080fd5b919050565b60008060408385031215611bea57600080fd5b611bf383611bbb565b946020939093013593505050565b6001600160e01b031981168114610da957600080fd5b600060208284031215611c2957600080fd5b81356108e381611c01565b600060208284031215611c4657600080fd5b5035919050565b60005b83811015611c68578181015183820152602001611c50565b50506000910152565b60008151808452611c89816020860160208601611c4d565b601f01601f19169290920160200192915050565b6020815260006108e36020830184611c71565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715611ceb57611ceb611cb0565b6040525050565b60006001600160401b03821115611d0b57611d0b611cb0565b5060051b60200190565b600082601f830112611d2657600080fd5b81356020611d3382611cf2565b604051611d408282611cc6565b83815260059390931b8501820192828101915086841115611d6057600080fd5b8286015b84811015611d7b5780358352918301918301611d64565b509695505050505050565b600082601f830112611d9757600080fd5b81356001600160401b03811115611db057611db0611cb0565b604051611dc7601f8301601f191660200182611cc6565b818152846020838601011115611ddc57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611e0f57600080fd5b611e1885611bbb565b935060208501356001600160401b0380821115611e3457600080fd5b611e4088838901611d15565b94506040870135915080821115611e5657600080fd5b611e6288838901611d15565b93506060870135915080821115611e7857600080fd5b50611e8587828801611d86565b91505092959194509250565b600080600080600060a08688031215611ea957600080fd5b611eb286611bbb565b9450611ec060208701611bbb565b935060408601356001600160401b0380821115611edc57600080fd5b611ee889838a01611d15565b94506060880135915080821115611efe57600080fd5b611f0a89838a01611d15565b93506080880135915080821115611f2057600080fd5b50611f2d88828901611d86565b9150509295509295909350565b60008060408385031215611f4d57600080fd5b82359150611f5d60208401611bbb565b90509250929050565b60008060408385031215611f7957600080fd5b82356001600160401b0380821115611f9057600080fd5b818501915085601f830112611fa457600080fd5b81356020611fb182611cf2565b604051611fbe8282611cc6565b83815260059390931b8501820192828101915089841115611fde57600080fd5b948201945b8386101561200357611ff486611bbb565b82529482019490820190611fe3565b9650508601359250508082111561201957600080fd5b5061202685828601611d15565b9150509250929050565b600081518084526020808501945080840160005b8381101561206057815187529582019590820190600101612044565b509495945050505050565b6020815260006108e36020830184612030565b60008060006060848603121561209357600080fd5b61209c84611bbb565b925060208401356001600160401b03808211156120b857600080fd5b6120c487838801611d15565b935060408601359150808211156120da57600080fd5b506120e786828701611d15565b9150509250925092565b6000806000806080858703121561210757600080fd5b61211085611bbb565b9350602085013592506040850135915060608501356001600160401b0381111561213957600080fd5b611e8587828801611d86565b6000806040838503121561215857600080fd5b50508035926020909101359150565b6000806040838503121561217a57600080fd5b61218383611bbb565b91506020830135801515811461219857600080fd5b809150509250929050565b600080604083850312156121b657600080fd5b6121bf83611bbb565b9150611f5d60208401611bbb565b600080600080600060a086880312156121e557600080fd5b6121ee86611bbb565b94506121fc60208701611bbb565b9350604086013592506060860135915060808601356001600160401b0381111561222557600080fd5b611f2d88828901611d86565b60008060006060848603121561224657600080fd5b61224f84611bbb565b95602085013595506040909401359392505050565b600181811c9082168061227857607f821691505b60208210810361229857634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526038908201526000805160206127eb8339815191526040820152771a185d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60421b606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161237057612370612348565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b8082018082111561044257610442612348565b6040815260006124266040830185612030565b82810360208401526124388185612030565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a06040820181905260009061258390830186612030565b82810360608401526125958186612030565b905082810360808401526125a98185611c71565b98975050505050505050565b6000602082840312156125c757600080fd5b81516108e381611c01565b600060033d11156125eb5760046000803e5060005160e01c5b90565b600060443d10156125fc5790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561262b57505050505090565b82850191508151818111156126435750505050505090565b843d870101602082850101111561265d5750505050505090565b61266c60208286010187611cc6565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516126f1816017850160208801611c4d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612722816028840160208801611c4d565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061276890830184611c71565b979650505050505050565b808202811582820484141761044257610442612348565b60008161279957612799612348565b506000190190565b8181038181111561044257610442612348565b634e487b7160e01b600052603160045260246000fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb455243313135355072657365744d696e7465725061757365723a206d75737420c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6265d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220ee351b7f630e145f181ce66e6536b2e55ce330906bb3326bf750662534a4b66864736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" +var MockERC1155Artifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"MockERC1155\",\n \"sourceName\": \"contracts/mocks/MockERC1155.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"ApprovalForAll\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"previousAdminRole\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"newAdminRole\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"RoleAdminChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleGranted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"RoleRevoked\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"ids\",\n \"type\": \"uint256[]\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"values\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"TransferBatch\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"TransferSingle\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"value\",\n \"type\": \"string\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"URI\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEFAULT_ADMIN_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MINTER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"PAUSER_ROLE\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"accounts\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"ids\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"balanceOfBatch\",\n \"outputs\": [\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burn\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"ids\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"values\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"burnBatch\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleAdmin\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getRoleMember\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getRoleMemberCount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"grantRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"hasRole\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isApprovedForAll\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"ids\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"mintBatch\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"renounceRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"role\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeRole\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"ids\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"safeBatchTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"id\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"safeTransferFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"operator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"approved\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setApprovalForAll\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"uri\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x60806040523480156200001157600080fd5b506040805180820190915260058152646c6f72656d60d81b6020820152806200003a81620000b1565b506005805460ff1916905562000052600033620000c3565b6200007e7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000c3565b620000aa7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000c3565b506200038e565b6004620000bf8282620002c2565b5050565b620000bf8282620000e082826200010c60201b620009e21760201c565b60008281526001602090815260409091206200010791839062000a66620001ac821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000bf576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001683390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001c3836001600160a01b038416620001cc565b90505b92915050565b60008181526001830160205260408120546200021557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001c6565b506000620001c6565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200024957607f821691505b6020821081036200026a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200010757600081815260208120601f850160051c81016020861015620002995750805b601f850160051c820191505b81811015620002ba57828155600101620002a5565b505050505050565b81516001600160401b03811115620002de57620002de6200021e565b620002f681620002ef845462000234565b8462000270565b602080601f8311600181146200032e5760008415620003155750858301515b600019600386901b1c1916600185901b178555620002ba565b600085815260208120601f198616915b828110156200035f578886015182559484019460019091019084016200033e565b50858210156200037e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6128a0806200039e6000396000f3fe608060405234801561001057600080fd5b50600436106101625760003560e01c8063731133e9116100ce578063ca15c87311610087578063ca15c873146102fb578063d53913931461030e578063d547741f14610323578063e63ab1e914610336578063e985e9c51461034b578063f242432a14610387578063f5298aca1461039a57600080fd5b8063731133e9146102875780638456cb591461029a5780639010d07c146102a257806391d14854146102cd578063a217fddf146102e0578063a22cb465146102e857600080fd5b80632f2ff15d116101205780632f2ff15d1461021b57806336568abe1461022e5780633f4ba83a146102415780634e1273f4146102495780635c975abb146102695780636b20c4541461027457600080fd5b8062fdd58e1461016757806301ffc9a71461018d5780630e89341c146101b05780631f7fdffa146101d0578063248a9ca3146101e55780632eb2c2d614610208575b600080fd5b61017a610175366004611bd7565b6103ad565b6040519081526020015b60405180910390f35b6101a061019b366004611c17565b610448565b6040519015158152602001610184565b6101c36101be366004611c34565b610453565b6040516101849190611c9d565b6101e36101de366004611df9565b6104e7565b005b61017a6101f3366004611c34565b60009081526020819052604090206001015490565b6101e3610216366004611e91565b61052d565b6101e3610229366004611f3a565b610579565b6101e361023c366004611f3a565b6105a3565b6101e3610621565b61025c610257366004611f66565b6106a3565b604051610184919061206b565b60055460ff166101a0565b6101e361028236600461207e565b6107cc565b6101e36102953660046120f1565b61080f565b6101e361084f565b6102b56102b0366004612145565b6108cb565b6040516001600160a01b039091168152602001610184565b6101a06102db366004611f3a565b6108ea565b61017a600081565b6101e36102f6366004612167565b610913565b61017a610309366004611c34565b61091e565b61017a60008051602061284b83398151915281565b6101e3610331366004611f3a565b610935565b61017a60008051602061282b83398151915281565b6101a06103593660046121a3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101e36103953660046121cd565b61095a565b6101e36103a8366004612231565b61099f565b60006001600160a01b03831661041d5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061044282610a7b565b60606004805461046290612264565b80601f016020809104026020016040519081016040528092919081815260200182805461048e90612264565b80156104db5780601f106104b0576101008083540402835291602001916104db565b820191906000526020600020905b8154815290600101906020018083116104be57829003601f168201915b50505050509050919050565b6104ff60008051602061284b833981519152336108ea565b61051b5760405162461bcd60e51b81526004016104149061229e565b61052784848484610abb565b50505050565b6001600160a01b03851633148061054957506105498533610359565b6105655760405162461bcd60e51b8152600401610414906122e4565b6105728585858585610c04565b5050505050565b60008281526020819052604090206001015461059481610d9f565b61059e8383610dac565b505050565b6001600160a01b03811633146106135760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610414565b61061d8282610dce565b5050565b61063960008051602061282b833981519152336108ea565b6106995760405162461bcd60e51b815260206004820152603b60248201526000805160206127eb83398151915260448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610414565b6106a1610df0565b565b606081518351146107085760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610414565b600083516001600160401b0381111561072357610723611cb0565b60405190808252806020026020018201604052801561074c578160200160208202803683370190505b50905060005b84518110156107c45761079785828151811061077057610770612332565b602002602001015185838151811061078a5761078a612332565b60200260200101516103ad565b8282815181106107a9576107a9612332565b60209081029190910101526107bd8161235e565b9050610752565b509392505050565b6001600160a01b0383163314806107e857506107e88333610359565b6108045760405162461bcd60e51b8152600401610414906122e4565b61059e838383610e42565b61082760008051602061284b833981519152336108ea565b6108435760405162461bcd60e51b81526004016104149061229e565b61052784848484610fcf565b61086760008051602061282b833981519152336108ea565b6108c35760405162461bcd60e51b815260206004820152603960248201526000805160206127eb833981519152604482015278686176652070617573657220726f6c6520746f20706175736560381b6064820152608401610414565b6106a16110a8565b60008281526001602052604081206108e390836110e5565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61061d3383836110f1565b6000818152600160205260408120610442906111d1565b60008281526020819052604090206001015461095081610d9f565b61059e8383610dce565b6001600160a01b03851633148061097657506109768533610359565b6109925760405162461bcd60e51b8152600401610414906122e4565b61057285858585856111db565b6001600160a01b0383163314806109bb57506109bb8333610359565b6109d75760405162461bcd60e51b8152600401610414906122e4565b61059e838383611305565b6109ec82826108ea565b61061d576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610a223390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006108e3836001600160a01b03841661140f565b60006001600160e01b03198216636cdb3d1360e11b1480610aac57506001600160e01b031982166303a24d0760e21b145b8061044257506104428261145e565b6001600160a01b038416610ae15760405162461bcd60e51b815260040161041490612377565b8151835114610b025760405162461bcd60e51b8152600401610414906123b8565b33610b1281600087878787611483565b60005b8451811015610bae57838181518110610b3057610b30612332565b602002602001015160026000878481518110610b4e57610b4e612332565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610b969190612400565b90915550819050610ba68161235e565b915050610b15565b50846001600160a01b031660006001600160a01b0316826001600160a01b03166000805160206127cb8339815191528787604051610bed929190612413565b60405180910390a461057281600087878787611491565b8151835114610c255760405162461bcd60e51b8152600401610414906123b8565b6001600160a01b038416610c4b5760405162461bcd60e51b815260040161041490612441565b33610c5a818787878787611483565b60005b8451811015610d43576000858281518110610c7a57610c7a612332565b602002602001015190506000858381518110610c9857610c98612332565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610ce95760405162461bcd60e51b815260040161041490612486565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610d28908490612400565b9250508190555050505080610d3c9061235e565b9050610c5d565b50846001600160a01b0316866001600160a01b0316826001600160a01b03166000805160206127cb8339815191528787604051610d81929190612413565b60405180910390a4610d97818787878787611491565b505050505050565b610da981336115ec565b50565b610db682826109e2565b600082815260016020526040902061059e9082610a66565b610dd88282611645565b600082815260016020526040902061059e90826116aa565b610df86116bf565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316610e685760405162461bcd60e51b8152600401610414906124d0565b8051825114610e895760405162461bcd60e51b8152600401610414906123b8565b6000339050610eac81856000868660405180602001604052806000815250611483565b60005b8351811015610f74576000848281518110610ecc57610ecc612332565b602002602001015190506000848381518110610eea57610eea612332565b60209081029190910181015160008481526002835260408082206001600160a01b038c168352909352919091205490915081811015610f3b5760405162461bcd60e51b815260040161041490612513565b60009283526002602090815260408085206001600160a01b038b1686529091529092209103905580610f6c8161235e565b915050610eaf565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03166000805160206127cb8339815191528686604051610fb3929190612413565b60405180910390a4604080516020810190915260009052610527565b6001600160a01b038416610ff55760405162461bcd60e51b815260040161041490612377565b33600061100185611708565b9050600061100e85611708565b905061101f83600089858589611483565b60008681526002602090815260408083206001600160a01b038b16845290915281208054879290611051908490612400565b909155505060408051878152602081018790526001600160a01b03808a16926000929187169160008051602061280b833981519152910160405180910390a461109f83600089898989611753565b50505050505050565b6110b061180e565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e253390565b60006108e38383611854565b816001600160a01b0316836001600160a01b0316036111645760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610414565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610442825490565b6001600160a01b0384166112015760405162461bcd60e51b815260040161041490612441565b33600061120d85611708565b9050600061121a85611708565b905061122a838989858589611483565b60008681526002602090815260408083206001600160a01b038c1684529091529020548581101561126d5760405162461bcd60e51b815260040161041490612486565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a168252812080548892906112ac908490612400565b909155505060408051888152602081018890526001600160a01b03808b16928c8216929188169160008051602061280b833981519152910160405180910390a46112fa848a8a8a8a8a611753565b505050505050505050565b6001600160a01b03831661132b5760405162461bcd60e51b8152600401610414906124d0565b33600061133784611708565b9050600061134484611708565b905061136483876000858560405180602001604052806000815250611483565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156113a75760405162461bcd60e51b815260040161041490612513565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a905290929088169160008051602061280b833981519152910160405180910390a460408051602081019091526000905261109f565b600081815260018301602052604081205461145657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610442565b506000610442565b60006001600160e01b03198216635a05180f60e01b148061044257506104428261187e565b610d978686868686866118b3565b6001600160a01b0384163b15610d975760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906114d59089908990889088908890600401612557565b6020604051808303816000875af1925050508015611510575060408051601f3d908101601f1916820190925261150d918101906125b5565b60015b6115bc5761151c6125d2565b806308c379a00361155557506115306125ee565b8061153b5750611557565b8060405162461bcd60e51b81526004016104149190611c9d565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610414565b6001600160e01b0319811663bc197c8160e01b1461109f5760405162461bcd60e51b815260040161041490612677565b6115f682826108ea565b61061d576116038161191b565b61160e83602061192d565b60405160200161161f9291906126bf565b60408051601f198184030181529082905262461bcd60e51b825261041491600401611c9d565b61164f82826108ea565b1561061d576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006108e3836001600160a01b038416611ac8565b60055460ff166106a15760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610414565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061174257611742612332565b602090810291909101015292915050565b6001600160a01b0384163b15610d975760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611797908990899088908890889060040161272e565b6020604051808303816000875af19250505080156117d2575060408051601f3d908101601f191682019092526117cf918101906125b5565b60015b6117de5761151c6125d2565b6001600160e01b0319811663f23a6e6160e01b1461109f5760405162461bcd60e51b815260040161041490612677565b60055460ff16156106a15760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610414565b600082600001828154811061186b5761186b612332565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061044257506301ffc9a760e01b6001600160e01b0319831614610442565b60055460ff1615610d975760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610414565b60606104426001600160a01b03831660145b6060600061193c836002612773565b611947906002612400565b6001600160401b0381111561195e5761195e611cb0565b6040519080825280601f01601f191660200182016040528015611988576020820181803683370190505b509050600360fc1b816000815181106119a3576119a3612332565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106119d2576119d2612332565b60200101906001600160f81b031916908160001a90535060006119f6846002612773565b611a01906001612400565b90505b6001811115611a79576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611a3557611a35612332565b1a60f81b828281518110611a4b57611a4b612332565b60200101906001600160f81b031916908160001a90535060049490941c93611a728161278a565b9050611a04565b5083156108e35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610414565b60008181526001830160205260408120548015611bb1576000611aec6001836127a1565b8554909150600090611b00906001906127a1565b9050818114611b65576000866000018281548110611b2057611b20612332565b9060005260206000200154905080876000018481548110611b4357611b43612332565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611b7657611b766127b4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610442565b6000915050610442565b80356001600160a01b0381168114611bd257600080fd5b919050565b60008060408385031215611bea57600080fd5b611bf383611bbb565b946020939093013593505050565b6001600160e01b031981168114610da957600080fd5b600060208284031215611c2957600080fd5b81356108e381611c01565b600060208284031215611c4657600080fd5b5035919050565b60005b83811015611c68578181015183820152602001611c50565b50506000910152565b60008151808452611c89816020860160208601611c4d565b601f01601f19169290920160200192915050565b6020815260006108e36020830184611c71565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715611ceb57611ceb611cb0565b6040525050565b60006001600160401b03821115611d0b57611d0b611cb0565b5060051b60200190565b600082601f830112611d2657600080fd5b81356020611d3382611cf2565b604051611d408282611cc6565b83815260059390931b8501820192828101915086841115611d6057600080fd5b8286015b84811015611d7b5780358352918301918301611d64565b509695505050505050565b600082601f830112611d9757600080fd5b81356001600160401b03811115611db057611db0611cb0565b604051611dc7601f8301601f191660200182611cc6565b818152846020838601011115611ddc57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611e0f57600080fd5b611e1885611bbb565b935060208501356001600160401b0380821115611e3457600080fd5b611e4088838901611d15565b94506040870135915080821115611e5657600080fd5b611e6288838901611d15565b93506060870135915080821115611e7857600080fd5b50611e8587828801611d86565b91505092959194509250565b600080600080600060a08688031215611ea957600080fd5b611eb286611bbb565b9450611ec060208701611bbb565b935060408601356001600160401b0380821115611edc57600080fd5b611ee889838a01611d15565b94506060880135915080821115611efe57600080fd5b611f0a89838a01611d15565b93506080880135915080821115611f2057600080fd5b50611f2d88828901611d86565b9150509295509295909350565b60008060408385031215611f4d57600080fd5b82359150611f5d60208401611bbb565b90509250929050565b60008060408385031215611f7957600080fd5b82356001600160401b0380821115611f9057600080fd5b818501915085601f830112611fa457600080fd5b81356020611fb182611cf2565b604051611fbe8282611cc6565b83815260059390931b8501820192828101915089841115611fde57600080fd5b948201945b8386101561200357611ff486611bbb565b82529482019490820190611fe3565b9650508601359250508082111561201957600080fd5b5061202685828601611d15565b9150509250929050565b600081518084526020808501945080840160005b8381101561206057815187529582019590820190600101612044565b509495945050505050565b6020815260006108e36020830184612030565b60008060006060848603121561209357600080fd5b61209c84611bbb565b925060208401356001600160401b03808211156120b857600080fd5b6120c487838801611d15565b935060408601359150808211156120da57600080fd5b506120e786828701611d15565b9150509250925092565b6000806000806080858703121561210757600080fd5b61211085611bbb565b9350602085013592506040850135915060608501356001600160401b0381111561213957600080fd5b611e8587828801611d86565b6000806040838503121561215857600080fd5b50508035926020909101359150565b6000806040838503121561217a57600080fd5b61218383611bbb565b91506020830135801515811461219857600080fd5b809150509250929050565b600080604083850312156121b657600080fd5b6121bf83611bbb565b9150611f5d60208401611bbb565b600080600080600060a086880312156121e557600080fd5b6121ee86611bbb565b94506121fc60208701611bbb565b9350604086013592506060860135915060808601356001600160401b0381111561222557600080fd5b611f2d88828901611d86565b60008060006060848603121561224657600080fd5b61224f84611bbb565b95602085013595506040909401359392505050565b600181811c9082168061227857607f821691505b60208210810361229857634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526038908201526000805160206127eb8339815191526040820152771a185d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60421b606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161237057612370612348565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b8082018082111561044257610442612348565b6040815260006124266040830185612030565b82810360208401526124388185612030565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a06040820181905260009061258390830186612030565b82810360608401526125958186612030565b905082810360808401526125a98185611c71565b98975050505050505050565b6000602082840312156125c757600080fd5b81516108e381611c01565b600060033d11156125eb5760046000803e5060005160e01c5b90565b600060443d10156125fc5790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561262b57505050505090565b82850191508151818111156126435750505050505090565b843d870101602082850101111561265d5750505050505090565b61266c60208286010187611cc6565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516126f1816017850160208801611c4d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612722816028840160208801611c4d565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061276890830184611c71565b979650505050505050565b808202811582820484141761044257610442612348565b60008161279957612799612348565b506000190190565b8181038181111561044257610442612348565b634e487b7160e01b600052603160045260246000fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb455243313135355072657365744d696e7465725061757365723a206d75737420c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6265d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a26469706673582212203c137428768eb054f98b648112499e469f6c2b971d7b3878c042135289d31c6d64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101625760003560e01c8063731133e9116100ce578063ca15c87311610087578063ca15c873146102fb578063d53913931461030e578063d547741f14610323578063e63ab1e914610336578063e985e9c51461034b578063f242432a14610387578063f5298aca1461039a57600080fd5b8063731133e9146102875780638456cb591461029a5780639010d07c146102a257806391d14854146102cd578063a217fddf146102e0578063a22cb465146102e857600080fd5b80632f2ff15d116101205780632f2ff15d1461021b57806336568abe1461022e5780633f4ba83a146102415780634e1273f4146102495780635c975abb146102695780636b20c4541461027457600080fd5b8062fdd58e1461016757806301ffc9a71461018d5780630e89341c146101b05780631f7fdffa146101d0578063248a9ca3146101e55780632eb2c2d614610208575b600080fd5b61017a610175366004611bd7565b6103ad565b6040519081526020015b60405180910390f35b6101a061019b366004611c17565b610448565b6040519015158152602001610184565b6101c36101be366004611c34565b610453565b6040516101849190611c9d565b6101e36101de366004611df9565b6104e7565b005b61017a6101f3366004611c34565b60009081526020819052604090206001015490565b6101e3610216366004611e91565b61052d565b6101e3610229366004611f3a565b610579565b6101e361023c366004611f3a565b6105a3565b6101e3610621565b61025c610257366004611f66565b6106a3565b604051610184919061206b565b60055460ff166101a0565b6101e361028236600461207e565b6107cc565b6101e36102953660046120f1565b61080f565b6101e361084f565b6102b56102b0366004612145565b6108cb565b6040516001600160a01b039091168152602001610184565b6101a06102db366004611f3a565b6108ea565b61017a600081565b6101e36102f6366004612167565b610913565b61017a610309366004611c34565b61091e565b61017a60008051602061284b83398151915281565b6101e3610331366004611f3a565b610935565b61017a60008051602061282b83398151915281565b6101a06103593660046121a3565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101e36103953660046121cd565b61095a565b6101e36103a8366004612231565b61099f565b60006001600160a01b03831661041d5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061044282610a7b565b60606004805461046290612264565b80601f016020809104026020016040519081016040528092919081815260200182805461048e90612264565b80156104db5780601f106104b0576101008083540402835291602001916104db565b820191906000526020600020905b8154815290600101906020018083116104be57829003601f168201915b50505050509050919050565b6104ff60008051602061284b833981519152336108ea565b61051b5760405162461bcd60e51b81526004016104149061229e565b61052784848484610abb565b50505050565b6001600160a01b03851633148061054957506105498533610359565b6105655760405162461bcd60e51b8152600401610414906122e4565b6105728585858585610c04565b5050505050565b60008281526020819052604090206001015461059481610d9f565b61059e8383610dac565b505050565b6001600160a01b03811633146106135760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610414565b61061d8282610dce565b5050565b61063960008051602061282b833981519152336108ea565b6106995760405162461bcd60e51b815260206004820152603b60248201526000805160206127eb83398151915260448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610414565b6106a1610df0565b565b606081518351146107085760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610414565b600083516001600160401b0381111561072357610723611cb0565b60405190808252806020026020018201604052801561074c578160200160208202803683370190505b50905060005b84518110156107c45761079785828151811061077057610770612332565b602002602001015185838151811061078a5761078a612332565b60200260200101516103ad565b8282815181106107a9576107a9612332565b60209081029190910101526107bd8161235e565b9050610752565b509392505050565b6001600160a01b0383163314806107e857506107e88333610359565b6108045760405162461bcd60e51b8152600401610414906122e4565b61059e838383610e42565b61082760008051602061284b833981519152336108ea565b6108435760405162461bcd60e51b81526004016104149061229e565b61052784848484610fcf565b61086760008051602061282b833981519152336108ea565b6108c35760405162461bcd60e51b815260206004820152603960248201526000805160206127eb833981519152604482015278686176652070617573657220726f6c6520746f20706175736560381b6064820152608401610414565b6106a16110a8565b60008281526001602052604081206108e390836110e5565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b61061d3383836110f1565b6000818152600160205260408120610442906111d1565b60008281526020819052604090206001015461095081610d9f565b61059e8383610dce565b6001600160a01b03851633148061097657506109768533610359565b6109925760405162461bcd60e51b8152600401610414906122e4565b61057285858585856111db565b6001600160a01b0383163314806109bb57506109bb8333610359565b6109d75760405162461bcd60e51b8152600401610414906122e4565b61059e838383611305565b6109ec82826108ea565b61061d576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610a223390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006108e3836001600160a01b03841661140f565b60006001600160e01b03198216636cdb3d1360e11b1480610aac57506001600160e01b031982166303a24d0760e21b145b8061044257506104428261145e565b6001600160a01b038416610ae15760405162461bcd60e51b815260040161041490612377565b8151835114610b025760405162461bcd60e51b8152600401610414906123b8565b33610b1281600087878787611483565b60005b8451811015610bae57838181518110610b3057610b30612332565b602002602001015160026000878481518110610b4e57610b4e612332565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610b969190612400565b90915550819050610ba68161235e565b915050610b15565b50846001600160a01b031660006001600160a01b0316826001600160a01b03166000805160206127cb8339815191528787604051610bed929190612413565b60405180910390a461057281600087878787611491565b8151835114610c255760405162461bcd60e51b8152600401610414906123b8565b6001600160a01b038416610c4b5760405162461bcd60e51b815260040161041490612441565b33610c5a818787878787611483565b60005b8451811015610d43576000858281518110610c7a57610c7a612332565b602002602001015190506000858381518110610c9857610c98612332565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610ce95760405162461bcd60e51b815260040161041490612486565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610d28908490612400565b9250508190555050505080610d3c9061235e565b9050610c5d565b50846001600160a01b0316866001600160a01b0316826001600160a01b03166000805160206127cb8339815191528787604051610d81929190612413565b60405180910390a4610d97818787878787611491565b505050505050565b610da981336115ec565b50565b610db682826109e2565b600082815260016020526040902061059e9082610a66565b610dd88282611645565b600082815260016020526040902061059e90826116aa565b610df86116bf565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316610e685760405162461bcd60e51b8152600401610414906124d0565b8051825114610e895760405162461bcd60e51b8152600401610414906123b8565b6000339050610eac81856000868660405180602001604052806000815250611483565b60005b8351811015610f74576000848281518110610ecc57610ecc612332565b602002602001015190506000848381518110610eea57610eea612332565b60209081029190910181015160008481526002835260408082206001600160a01b038c168352909352919091205490915081811015610f3b5760405162461bcd60e51b815260040161041490612513565b60009283526002602090815260408085206001600160a01b038b1686529091529092209103905580610f6c8161235e565b915050610eaf565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03166000805160206127cb8339815191528686604051610fb3929190612413565b60405180910390a4604080516020810190915260009052610527565b6001600160a01b038416610ff55760405162461bcd60e51b815260040161041490612377565b33600061100185611708565b9050600061100e85611708565b905061101f83600089858589611483565b60008681526002602090815260408083206001600160a01b038b16845290915281208054879290611051908490612400565b909155505060408051878152602081018790526001600160a01b03808a16926000929187169160008051602061280b833981519152910160405180910390a461109f83600089898989611753565b50505050505050565b6110b061180e565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610e253390565b60006108e38383611854565b816001600160a01b0316836001600160a01b0316036111645760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610414565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610442825490565b6001600160a01b0384166112015760405162461bcd60e51b815260040161041490612441565b33600061120d85611708565b9050600061121a85611708565b905061122a838989858589611483565b60008681526002602090815260408083206001600160a01b038c1684529091529020548581101561126d5760405162461bcd60e51b815260040161041490612486565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a168252812080548892906112ac908490612400565b909155505060408051888152602081018890526001600160a01b03808b16928c8216929188169160008051602061280b833981519152910160405180910390a46112fa848a8a8a8a8a611753565b505050505050505050565b6001600160a01b03831661132b5760405162461bcd60e51b8152600401610414906124d0565b33600061133784611708565b9050600061134484611708565b905061136483876000858560405180602001604052806000815250611483565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156113a75760405162461bcd60e51b815260040161041490612513565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a905290929088169160008051602061280b833981519152910160405180910390a460408051602081019091526000905261109f565b600081815260018301602052604081205461145657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610442565b506000610442565b60006001600160e01b03198216635a05180f60e01b148061044257506104428261187e565b610d978686868686866118b3565b6001600160a01b0384163b15610d975760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906114d59089908990889088908890600401612557565b6020604051808303816000875af1925050508015611510575060408051601f3d908101601f1916820190925261150d918101906125b5565b60015b6115bc5761151c6125d2565b806308c379a00361155557506115306125ee565b8061153b5750611557565b8060405162461bcd60e51b81526004016104149190611c9d565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610414565b6001600160e01b0319811663bc197c8160e01b1461109f5760405162461bcd60e51b815260040161041490612677565b6115f682826108ea565b61061d576116038161191b565b61160e83602061192d565b60405160200161161f9291906126bf565b60408051601f198184030181529082905262461bcd60e51b825261041491600401611c9d565b61164f82826108ea565b1561061d576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006108e3836001600160a01b038416611ac8565b60055460ff166106a15760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610414565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061174257611742612332565b602090810291909101015292915050565b6001600160a01b0384163b15610d975760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611797908990899088908890889060040161272e565b6020604051808303816000875af19250505080156117d2575060408051601f3d908101601f191682019092526117cf918101906125b5565b60015b6117de5761151c6125d2565b6001600160e01b0319811663f23a6e6160e01b1461109f5760405162461bcd60e51b815260040161041490612677565b60055460ff16156106a15760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610414565b600082600001828154811061186b5761186b612332565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061044257506301ffc9a760e01b6001600160e01b0319831614610442565b60055460ff1615610d975760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610414565b60606104426001600160a01b03831660145b6060600061193c836002612773565b611947906002612400565b6001600160401b0381111561195e5761195e611cb0565b6040519080825280601f01601f191660200182016040528015611988576020820181803683370190505b509050600360fc1b816000815181106119a3576119a3612332565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106119d2576119d2612332565b60200101906001600160f81b031916908160001a90535060006119f6846002612773565b611a01906001612400565b90505b6001811115611a79576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611a3557611a35612332565b1a60f81b828281518110611a4b57611a4b612332565b60200101906001600160f81b031916908160001a90535060049490941c93611a728161278a565b9050611a04565b5083156108e35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610414565b60008181526001830160205260408120548015611bb1576000611aec6001836127a1565b8554909150600090611b00906001906127a1565b9050818114611b65576000866000018281548110611b2057611b20612332565b9060005260206000200154905080876000018481548110611b4357611b43612332565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611b7657611b766127b4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610442565b6000915050610442565b80356001600160a01b0381168114611bd257600080fd5b919050565b60008060408385031215611bea57600080fd5b611bf383611bbb565b946020939093013593505050565b6001600160e01b031981168114610da957600080fd5b600060208284031215611c2957600080fd5b81356108e381611c01565b600060208284031215611c4657600080fd5b5035919050565b60005b83811015611c68578181015183820152602001611c50565b50506000910152565b60008151808452611c89816020860160208601611c4d565b601f01601f19169290920160200192915050565b6020815260006108e36020830184611c71565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715611ceb57611ceb611cb0565b6040525050565b60006001600160401b03821115611d0b57611d0b611cb0565b5060051b60200190565b600082601f830112611d2657600080fd5b81356020611d3382611cf2565b604051611d408282611cc6565b83815260059390931b8501820192828101915086841115611d6057600080fd5b8286015b84811015611d7b5780358352918301918301611d64565b509695505050505050565b600082601f830112611d9757600080fd5b81356001600160401b03811115611db057611db0611cb0565b604051611dc7601f8301601f191660200182611cc6565b818152846020838601011115611ddc57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611e0f57600080fd5b611e1885611bbb565b935060208501356001600160401b0380821115611e3457600080fd5b611e4088838901611d15565b94506040870135915080821115611e5657600080fd5b611e6288838901611d15565b93506060870135915080821115611e7857600080fd5b50611e8587828801611d86565b91505092959194509250565b600080600080600060a08688031215611ea957600080fd5b611eb286611bbb565b9450611ec060208701611bbb565b935060408601356001600160401b0380821115611edc57600080fd5b611ee889838a01611d15565b94506060880135915080821115611efe57600080fd5b611f0a89838a01611d15565b93506080880135915080821115611f2057600080fd5b50611f2d88828901611d86565b9150509295509295909350565b60008060408385031215611f4d57600080fd5b82359150611f5d60208401611bbb565b90509250929050565b60008060408385031215611f7957600080fd5b82356001600160401b0380821115611f9057600080fd5b818501915085601f830112611fa457600080fd5b81356020611fb182611cf2565b604051611fbe8282611cc6565b83815260059390931b8501820192828101915089841115611fde57600080fd5b948201945b8386101561200357611ff486611bbb565b82529482019490820190611fe3565b9650508601359250508082111561201957600080fd5b5061202685828601611d15565b9150509250929050565b600081518084526020808501945080840160005b8381101561206057815187529582019590820190600101612044565b509495945050505050565b6020815260006108e36020830184612030565b60008060006060848603121561209357600080fd5b61209c84611bbb565b925060208401356001600160401b03808211156120b857600080fd5b6120c487838801611d15565b935060408601359150808211156120da57600080fd5b506120e786828701611d15565b9150509250925092565b6000806000806080858703121561210757600080fd5b61211085611bbb565b9350602085013592506040850135915060608501356001600160401b0381111561213957600080fd5b611e8587828801611d86565b6000806040838503121561215857600080fd5b50508035926020909101359150565b6000806040838503121561217a57600080fd5b61218383611bbb565b91506020830135801515811461219857600080fd5b809150509250929050565b600080604083850312156121b657600080fd5b6121bf83611bbb565b9150611f5d60208401611bbb565b600080600080600060a086880312156121e557600080fd5b6121ee86611bbb565b94506121fc60208701611bbb565b9350604086013592506060860135915060808601356001600160401b0381111561222557600080fd5b611f2d88828901611d86565b60008060006060848603121561224657600080fd5b61224f84611bbb565b95602085013595506040909401359392505050565b600181811c9082168061227857607f821691505b60208210810361229857634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526038908201526000805160206127eb8339815191526040820152771a185d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60421b606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161237057612370612348565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b8082018082111561044257610442612348565b6040815260006124266040830185612030565b82810360208401526124388185612030565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a06040820181905260009061258390830186612030565b82810360608401526125958186612030565b905082810360808401526125a98185611c71565b98975050505050505050565b6000602082840312156125c757600080fd5b81516108e381611c01565b600060033d11156125eb5760046000803e5060005160e01c5b90565b600060443d10156125fc5790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561262b57505050505090565b82850191508151818111156126435750505050505090565b843d870101602082850101111561265d5750505050505090565b61266c60208286010187611cc6565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516126f1816017850160208801611c4d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612722816028840160208801611c4d565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061276890830184611c71565b979650505050505050565b808202811582820484141761044257610442612348565b60008161279957612799612348565b506000190190565b8181038181111561044257610442612348565b634e487b7160e01b600052603160045260246000fdfe4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb455243313135355072657365744d696e7465725061757365723a206d75737420c3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6265d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a26469706673582212203c137428768eb054f98b648112499e469f6c2b971d7b3878c042135289d31c6d64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" var RootERC1155PredicateArtifact string = "{\n \"_format\": \"hh-sol-artifact-1\",\n \"contractName\": \"RootERC1155Predicate\",\n \"sourceName\": \"contracts/root/RootERC1155Predicate.sol\",\n \"abi\": [\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"depositor\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC1155Deposit\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"depositor\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address[]\",\n \"name\": \"receivers\",\n \"type\": \"address[]\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"ERC1155DepositBatch\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"withdrawer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC1155Withdraw\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"withdrawer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address[]\",\n \"name\": \"receivers\",\n \"type\": \"address[]\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"ERC1155WithdrawBatch\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint8\",\n \"name\": \"version\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"TokenMapped\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEPOSIT_BATCH_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"DEPOSIT_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"MAP_TOKEN_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WITHDRAW_BATCH_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"WITHDRAW_SIG\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"childERC1155Predicate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"childTokenTemplate\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC1155MetadataURI\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC1155MetadataURI\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address[]\",\n \"name\": \"receivers\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"tokenIds\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n }\n ],\n \"name\": \"depositBatch\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC1155MetadataURI\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"depositTo\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"exitHelper\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newStateSender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newExitHelper\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newChildERC1155Predicate\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"newChildTokenTemplate\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IERC1155MetadataURI\",\n \"name\": \"rootToken\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"mapToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"childToken\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"\",\n \"type\": \"uint256[]\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"onERC1155BatchReceived\",\n \"outputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"\",\n \"type\": \"bytes4\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"onERC1155Received\",\n \"outputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"\",\n \"type\": \"bytes4\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"onL2StateReceive\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"rootTokenToChildToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"stateSender\",\n \"outputs\": [\n {\n \"internalType\": \"contract IStateSender\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes4\",\n \"name\": \"interfaceId\",\n \"type\": \"bytes4\"\n }\n ],\n \"name\": \"supportsInterface\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561001057600080fd5b50611a86806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063bc197c81116100ad578063f23a6e6111610071578063f23a6e61146102fe578063f43cda8b1461031d578063f4a120f714610330578063f645125514610343578063f8c8765e1461036a57600080fd5b8063bc197c8114610238578063c5ac2b1c14610270578063cb10f94c14610297578063d41f1771146102b0578063d7c9e3ec146102d757600080fd5b80637efab4f5116100f45780637efab4f5146101a157806395c7041c146101ca578063a78e111c146101dd578063b1768065146101f0578063b68ad1e41461022557600080fd5b806301ffc9a7146101265780630efe6a8b1461014e5780634c4c45de14610163578063654715e614610176575b600080fd5b6101396101343660046110ee565b61037d565b60405190151581526020015b60405180910390f35b61016161015c366004611137565b6103b4565b005b6101616101713660046111b7565b6103c5565b600254610189906001600160a01b031681565b6040516001600160a01b039091168152602001610145565b6101896101af366004611263565b6004602052600090815260409020546001600160a01b031681565b600154610189906001600160a01b031681565b6101616101eb366004611280565b610448565b6102177f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b604051908152602001610145565b600354610189906001600160a01b031681565b610257610246366004611409565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610145565b6102177faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d1881565b600054610189906201000090046001600160a01b031681565b6102177f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b6102177f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed281565b61025761030c3660046114b6565b63f23a6e6160e01b95945050505050565b61016161032b36600461151e565b61045a565b61018961033e366004611263565b610629565b6102177f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b6101616103783660046115a6565b6108c0565b60006001600160e01b03198216630271189760e51b14806103ae57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6103c083338484610acf565b505050565b84831480156103d357508481145b6104305760405162461bcd60e51b8152602060048201526024808201527f526f6f74455243313135355072656469636174653a20494e56414c49445f4c4560448201526309c8ea8960e31b60648201526084015b60405180910390fd5b61043f87878787878787610c67565b50505050505050565b61045484848484610acf565b50505050565b6001546001600160a01b031633146104c35760405162461bcd60e51b815260206004820152602660248201527f526f6f74455243313135355072656469636174653a204f4e4c595f455849545f6044820152652422a62822a960d11b6064820152608401610427565b6002546001600160a01b038481169116146105335760405162461bcd60e51b815260206004820152602a60248201527f526f6f74455243313135355072656469636174653a204f4e4c595f4348494c446044820152695f50524544494341544560b01b6064820152608401610427565b7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e982869610562602060008486611602565b61056b9161162c565b0361058a576105856105808260208186611602565b610e47565b610454565b7f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed26105b9602060008486611602565b6105c29161162c565b036105d1576105858282610f46565b60405162461bcd60e51b815260206004820152602760248201527f526f6f74455243313135355072656469636174653a20494e56414c49445f5349604482015266474e415455524560c81b6064820152608401610427565b60006001600160a01b03821661068d5760405162461bcd60e51b815260206004820152602360248201527f526f6f74455243313135355072656469636174653a20494e56414c49445f544f60448201526225a2a760e91b6064820152608401610427565b6001600160a01b0382811660009081526004602052604090205416156107015760405162461bcd60e51b8152602060048201526024808201527f526f6f74455243313135355072656469636174653a20414c52454144595f4d416044820152631414115160e21b6064820152608401610427565b6003546040516bffffffffffffffffffffffff19606085901b1660208201526107af916001600160a01b03169060340160408051808303601f190181529082905280516020909101206002546001600160a01b031660388301526f5af43d82803e903d91602b57fd5bf3ff60248301526014820192909252733d602d80600a3d3981f3363d3d373d3d3d363d73815260588101919091526037600c8201206078820152605560439091012090565b6001600160a01b03838116600081815260046020908152604080832080546001600160a01b031916878716179055915460025483517f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad938101939093528284019490945282518083038401815260608301938490526316f1983160e01b909352949550620100009094048316936316f19831936108519316919060640161164a565b600060405180830381600087803b15801561086b57600080fd5b505af115801561087f573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507f85920d35e6c72f6b2affffa04298b0cecfeba86e4a9f407df661f1cb8ab5e61790600090a3919050565b600054610100900460ff16158080156108e05750600054600160ff909116105b806108fa5750303b1580156108fa575060005460ff166001145b61095d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610427565b6000805460ff191660011790558015610980576000805461ff0019166101001790555b6001600160a01b038516158015906109a057506001600160a01b03841615155b80156109b457506001600160a01b03831615155b80156109c857506001600160a01b03821615155b610a255760405162461bcd60e51b815260206004820152602860248201527f526f6f74455243313135355072656469636174653a204241445f494e495449416044820152672624ad20aa24a7a760c11b6064820152608401610427565b6000805462010000600160b01b031916620100006001600160a01b038881169190910291909117909155600180546001600160a01b031990811687841617909155600280548216868416179055600380549091169184169190911790558015610ac8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000610ada856110a7565b604051637921219560e11b81529091506001600160a01b0386169063f242432a90610b0f9033903090889088906004016116a8565b600060405180830381600087803b158015610b2957600080fd5b505af1158015610b3d573d6000803e3d6000fd5b5050600054600254604080517f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82160208201526001600160a01b038b8116828401523360608301528a8116608083015260a082018a905260c08083018a90528351808403909101815260e08301938490526316f1983160e01b90935262010000909404841695506316f198319450610bda939092169160e40161164a565b600060405180830381600087803b158015610bf457600080fd5b505af1158015610c08573d6000803e3d6000fd5b505060408051338152602081018790529081018590526001600160a01b03808816935084811692508816907fbcbdf0c69f975f2a4085544938b054f02e77e87cbd055146d388c0be7120e04f9060600160405180910390a45050505050565b6000610c72886110a7565b905060005b84811015610d1e57886001600160a01b031663f242432a3330898986818110610ca257610ca26116e0565b90506020020135888887818110610cbb57610cbb6116e0565b905060200201356040518563ffffffff1660e01b8152600401610ce194939291906116a8565b600060405180830381600087803b158015610cfb57600080fd5b505af1158015610d0f573d6000803e3d6000fd5b50505050806001019050610c77565b506000546002546040516001600160a01b03620100009093048316926316f19831921690610d80907faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d18908d9033908e908e908e908e908e908e90602001611771565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610dac92919061164a565b600060405180830381600087803b158015610dc657600080fd5b505af1158015610dda573d6000803e3d6000fd5b50505050336001600160a01b0316816001600160a01b0316896001600160a01b03167f7e8ab6f25cb177d65db49b7a2197bb2a7df5757434857d411e2523b332a913e68a8a8a8a8a8a604051610e35969594939291906117dc565b60405180910390a45050505050505050565b600080808080610e5986880188611825565b6001600160a01b03808616600090815260046020526040902054959a50939850919650945092501680610e8e57610e8e611880565b604051637921219560e11b81526001600160a01b0387169063f242432a90610ec09030908890889088906004016116a8565b600060405180830381600087803b158015610eda57600080fd5b505af1158015610eee573d6000803e3d6000fd5b5050604080516001600160a01b0389811682526020820188905291810186905281881693508482169250908916907fc42752949ca07109e6f25adcde4a9407be23e084b1d32ca2bce8aa55bf3dd62590606001610e35565b600080808080610f5886880188611896565b6001600160a01b03808616600090815260046020526040902054959b509399509197509550935016905080610f8f57610f8f611880565b60005b835181101561105557866001600160a01b031663f242432a30878481518110610fbd57610fbd6116e0565b6020026020010151878581518110610fd757610fd76116e0565b6020026020010151878681518110610ff157610ff16116e0565b60200260200101516040518563ffffffff1660e01b815260040161101894939291906116a8565b600060405180830381600087803b15801561103257600080fd5b505af1158015611046573d6000803e3d6000fd5b50505050806001019050610f92565b50846001600160a01b0316816001600160a01b0316876001600160a01b03167fce612e98b81c726375e7c2395409e74ee0a29b22f7641ea5a8ce8508616448c0878787604051610e35939291906119db565b6001600160a01b0380821660009081526004602052604090205416806110d3576110d082610629565b90505b6001600160a01b0381166110e9576110e9611880565b919050565b60006020828403121561110057600080fd5b81356001600160e01b03198116811461111857600080fd5b9392505050565b6001600160a01b038116811461113457600080fd5b50565b60008060006060848603121561114c57600080fd5b83356111578161111f565b95602085013595506040909401359392505050565b60008083601f84011261117e57600080fd5b5081356001600160401b0381111561119557600080fd5b6020830191508360208260051b85010111156111b057600080fd5b9250929050565b60008060008060008060006080888a0312156111d257600080fd5b87356111dd8161111f565b965060208801356001600160401b03808211156111f957600080fd5b6112058b838c0161116c565b909850965060408a013591508082111561121e57600080fd5b61122a8b838c0161116c565b909650945060608a013591508082111561124357600080fd5b506112508a828b0161116c565b989b979a50959850939692959293505050565b60006020828403121561127557600080fd5b81356111188161111f565b6000806000806080858703121561129657600080fd5b84356112a18161111f565b935060208501356112b18161111f565b93969395505050506040820135916060013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611304576113046112c6565b604052919050565b60006001600160401b03821115611325576113256112c6565b5060051b60200190565b600082601f83011261134057600080fd5b813560206113556113508361130c565b6112dc565b82815260059290921b8401810191818101908684111561137457600080fd5b8286015b8481101561138f5780358352918301918301611378565b509695505050505050565b600082601f8301126113ab57600080fd5b81356001600160401b038111156113c4576113c46112c6565b6113d7601f8201601f19166020016112dc565b8181528460208386010111156113ec57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561142157600080fd5b853561142c8161111f565b9450602086013561143c8161111f565b935060408601356001600160401b038082111561145857600080fd5b61146489838a0161132f565b9450606088013591508082111561147a57600080fd5b61148689838a0161132f565b9350608088013591508082111561149c57600080fd5b506114a98882890161139a565b9150509295509295909350565b600080600080600060a086880312156114ce57600080fd5b85356114d98161111f565b945060208601356114e98161111f565b9350604086013592506060860135915060808601356001600160401b0381111561151257600080fd5b6114a98882890161139a565b6000806000806060858703121561153457600080fd5b8435935060208501356115468161111f565b925060408501356001600160401b038082111561156257600080fd5b818701915087601f83011261157657600080fd5b81358181111561158557600080fd5b88602082850101111561159757600080fd5b95989497505060200194505050565b600080600080608085870312156115bc57600080fd5b84356115c78161111f565b935060208501356115d78161111f565b925060408501356115e78161111f565b915060608501356115f78161111f565b939692955090935050565b6000808585111561161257600080fd5b8386111561161f57600080fd5b5050820193919092039150565b803560208310156103ae57600019602084900360031b1b1692915050565b60018060a01b038316815260006020604081840152835180604085015260005b818110156116865785810183015185820160600152820161166a565b506000606082860101526060601f19601f830116850101925050509392505050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b634e487b7160e01b600052603260045260246000fd5b8183526000602080850194508260005b858110156117345781356117198161111f565b6001600160a01b031687529582019590820190600101611706565b509495945050505050565b81835260006001600160fb1b0383111561175857600080fd5b8260051b80836020870137939093016020019392505050565b8981526001600160a01b0389811660208301528816604082015260c0606082018190526000906117a4908301888a6116f6565b82810360808401526117b781878961173f565b905082810360a08401526117cc81858761173f565b9c9b505050505050505050505050565b6060815260006117f060608301888a6116f6565b828103602084015261180381878961173f565b9050828103604084015261181881858761173f565b9998505050505050505050565b600080600080600060a0868803121561183d57600080fd5b85356118488161111f565b945060208601356118588161111f565b935060408601356118688161111f565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052600160045260246000fd5b60008060008060008060c087890312156118af57600080fd5b863595506020808801356118c28161111f565b955060408801356118d28161111f565b945060608801356001600160401b03808211156118ee57600080fd5b818a0191508a601f83011261190257600080fd5b81356119106113508261130c565b81815260059190911b8301840190848101908d83111561192f57600080fd5b938501935b828510156119565784356119478161111f565b82529385019390850190611934565b9750505060808a013592508083111561196e57600080fd5b61197a8b848c0161132f565b945060a08a013592508083111561199057600080fd5b505061199e89828a0161132f565b9150509295509295509295565b600081518084526020808501945080840160005b83811015611734578151875295820195908201906001016119bf565b606080825284519082018190526000906020906080840190828801845b82811015611a1d5781516001600160a01b0316845292840192908401906001016119f8565b50505083810382850152611a3181876119ab565b9150508281036040840152611a4681856119ab565b969550505050505056fea26469706673582212208fb2d0aca698f4006f1129d1d6cb7c34db407c5f131d3716c8011bd60a68f8cd64736f6c63430008110033\",\n \"deployedBytecode\": \"0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063bc197c81116100ad578063f23a6e6111610071578063f23a6e61146102fe578063f43cda8b1461031d578063f4a120f714610330578063f645125514610343578063f8c8765e1461036a57600080fd5b8063bc197c8114610238578063c5ac2b1c14610270578063cb10f94c14610297578063d41f1771146102b0578063d7c9e3ec146102d757600080fd5b80637efab4f5116100f45780637efab4f5146101a157806395c7041c146101ca578063a78e111c146101dd578063b1768065146101f0578063b68ad1e41461022557600080fd5b806301ffc9a7146101265780630efe6a8b1461014e5780634c4c45de14610163578063654715e614610176575b600080fd5b6101396101343660046110ee565b61037d565b60405190151581526020015b60405180910390f35b61016161015c366004611137565b6103b4565b005b6101616101713660046111b7565b6103c5565b600254610189906001600160a01b031681565b6040516001600160a01b039091168152602001610145565b6101896101af366004611263565b6004602052600090815260409020546001600160a01b031681565b600154610189906001600160a01b031681565b6101616101eb366004611280565b610448565b6102177f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e98286981565b604051908152602001610145565b600354610189906001600160a01b031681565b610257610246366004611409565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610145565b6102177faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d1881565b600054610189906201000090046001600160a01b031681565b6102177f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82181565b6102177f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed281565b61025761030c3660046114b6565b63f23a6e6160e01b95945050505050565b61016161032b36600461151e565b61045a565b61018961033e366004611263565b610629565b6102177f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad81565b6101616103783660046115a6565b6108c0565b60006001600160e01b03198216630271189760e51b14806103ae57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6103c083338484610acf565b505050565b84831480156103d357508481145b6104305760405162461bcd60e51b8152602060048201526024808201527f526f6f74455243313135355072656469636174653a20494e56414c49445f4c4560448201526309c8ea8960e31b60648201526084015b60405180910390fd5b61043f87878787878787610c67565b50505050505050565b61045484848484610acf565b50505050565b6001546001600160a01b031633146104c35760405162461bcd60e51b815260206004820152602660248201527f526f6f74455243313135355072656469636174653a204f4e4c595f455849545f6044820152652422a62822a960d11b6064820152608401610427565b6002546001600160a01b038481169116146105335760405162461bcd60e51b815260206004820152602a60248201527f526f6f74455243313135355072656469636174653a204f4e4c595f4348494c446044820152695f50524544494341544560b01b6064820152608401610427565b7f7a8dc26796a1e50e6e190b70259f58f6a4edd5b22280ceecc82b687b8e982869610562602060008486611602565b61056b9161162c565b0361058a576105856105808260208186611602565b610e47565b610454565b7f5fb452c5a8f2b7c7ef2984e2f1063c7ee9b80b110cdc98ccb98f6654e10b5ed26105b9602060008486611602565b6105c29161162c565b036105d1576105858282610f46565b60405162461bcd60e51b815260206004820152602760248201527f526f6f74455243313135355072656469636174653a20494e56414c49445f5349604482015266474e415455524560c81b6064820152608401610427565b60006001600160a01b03821661068d5760405162461bcd60e51b815260206004820152602360248201527f526f6f74455243313135355072656469636174653a20494e56414c49445f544f60448201526225a2a760e91b6064820152608401610427565b6001600160a01b0382811660009081526004602052604090205416156107015760405162461bcd60e51b8152602060048201526024808201527f526f6f74455243313135355072656469636174653a20414c52454144595f4d416044820152631414115160e21b6064820152608401610427565b6003546040516bffffffffffffffffffffffff19606085901b1660208201526107af916001600160a01b03169060340160408051808303601f190181529082905280516020909101206002546001600160a01b031660388301526f5af43d82803e903d91602b57fd5bf3ff60248301526014820192909252733d602d80600a3d3981f3363d3d373d3d3d363d73815260588101919091526037600c8201206078820152605560439091012090565b6001600160a01b03838116600081815260046020908152604080832080546001600160a01b031916878716179055915460025483517f2cef46a936bdc5b7e6e8c71aa04560c41cf7d88bb26901a7e7f4936ff02accad938101939093528284019490945282518083038401815260608301938490526316f1983160e01b909352949550620100009094048316936316f19831936108519316919060640161164a565b600060405180830381600087803b15801561086b57600080fd5b505af115801561087f573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507f85920d35e6c72f6b2affffa04298b0cecfeba86e4a9f407df661f1cb8ab5e61790600090a3919050565b600054610100900460ff16158080156108e05750600054600160ff909116105b806108fa5750303b1580156108fa575060005460ff166001145b61095d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610427565b6000805460ff191660011790558015610980576000805461ff0019166101001790555b6001600160a01b038516158015906109a057506001600160a01b03841615155b80156109b457506001600160a01b03831615155b80156109c857506001600160a01b03821615155b610a255760405162461bcd60e51b815260206004820152602860248201527f526f6f74455243313135355072656469636174653a204241445f494e495449416044820152672624ad20aa24a7a760c11b6064820152608401610427565b6000805462010000600160b01b031916620100006001600160a01b038881169190910291909117909155600180546001600160a01b031990811687841617909155600280548216868416179055600380549091169184169190911790558015610ac8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000610ada856110a7565b604051637921219560e11b81529091506001600160a01b0386169063f242432a90610b0f9033903090889088906004016116a8565b600060405180830381600087803b158015610b2957600080fd5b505af1158015610b3d573d6000803e3d6000fd5b5050600054600254604080517f87a7811f4bfedea3d341ad165680ae306b01aaeacc205d227629cf157dd9f82160208201526001600160a01b038b8116828401523360608301528a8116608083015260a082018a905260c08083018a90528351808403909101815260e08301938490526316f1983160e01b90935262010000909404841695506316f198319450610bda939092169160e40161164a565b600060405180830381600087803b158015610bf457600080fd5b505af1158015610c08573d6000803e3d6000fd5b505060408051338152602081018790529081018590526001600160a01b03808816935084811692508816907fbcbdf0c69f975f2a4085544938b054f02e77e87cbd055146d388c0be7120e04f9060600160405180910390a45050505050565b6000610c72886110a7565b905060005b84811015610d1e57886001600160a01b031663f242432a3330898986818110610ca257610ca26116e0565b90506020020135888887818110610cbb57610cbb6116e0565b905060200201356040518563ffffffff1660e01b8152600401610ce194939291906116a8565b600060405180830381600087803b158015610cfb57600080fd5b505af1158015610d0f573d6000803e3d6000fd5b50505050806001019050610c77565b506000546002546040516001600160a01b03620100009093048316926316f19831921690610d80907faf50c8eab81226bc79eee3a10e3fe25db1a2be7241130e392b0675df839b6d18908d9033908e908e908e908e908e908e90602001611771565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610dac92919061164a565b600060405180830381600087803b158015610dc657600080fd5b505af1158015610dda573d6000803e3d6000fd5b50505050336001600160a01b0316816001600160a01b0316896001600160a01b03167f7e8ab6f25cb177d65db49b7a2197bb2a7df5757434857d411e2523b332a913e68a8a8a8a8a8a604051610e35969594939291906117dc565b60405180910390a45050505050505050565b600080808080610e5986880188611825565b6001600160a01b03808616600090815260046020526040902054959a50939850919650945092501680610e8e57610e8e611880565b604051637921219560e11b81526001600160a01b0387169063f242432a90610ec09030908890889088906004016116a8565b600060405180830381600087803b158015610eda57600080fd5b505af1158015610eee573d6000803e3d6000fd5b5050604080516001600160a01b0389811682526020820188905291810186905281881693508482169250908916907fc42752949ca07109e6f25adcde4a9407be23e084b1d32ca2bce8aa55bf3dd62590606001610e35565b600080808080610f5886880188611896565b6001600160a01b03808616600090815260046020526040902054959b509399509197509550935016905080610f8f57610f8f611880565b60005b835181101561105557866001600160a01b031663f242432a30878481518110610fbd57610fbd6116e0565b6020026020010151878581518110610fd757610fd76116e0565b6020026020010151878681518110610ff157610ff16116e0565b60200260200101516040518563ffffffff1660e01b815260040161101894939291906116a8565b600060405180830381600087803b15801561103257600080fd5b505af1158015611046573d6000803e3d6000fd5b50505050806001019050610f92565b50846001600160a01b0316816001600160a01b0316876001600160a01b03167fce612e98b81c726375e7c2395409e74ee0a29b22f7641ea5a8ce8508616448c0878787604051610e35939291906119db565b6001600160a01b0380821660009081526004602052604090205416806110d3576110d082610629565b90505b6001600160a01b0381166110e9576110e9611880565b919050565b60006020828403121561110057600080fd5b81356001600160e01b03198116811461111857600080fd5b9392505050565b6001600160a01b038116811461113457600080fd5b50565b60008060006060848603121561114c57600080fd5b83356111578161111f565b95602085013595506040909401359392505050565b60008083601f84011261117e57600080fd5b5081356001600160401b0381111561119557600080fd5b6020830191508360208260051b85010111156111b057600080fd5b9250929050565b60008060008060008060006080888a0312156111d257600080fd5b87356111dd8161111f565b965060208801356001600160401b03808211156111f957600080fd5b6112058b838c0161116c565b909850965060408a013591508082111561121e57600080fd5b61122a8b838c0161116c565b909650945060608a013591508082111561124357600080fd5b506112508a828b0161116c565b989b979a50959850939692959293505050565b60006020828403121561127557600080fd5b81356111188161111f565b6000806000806080858703121561129657600080fd5b84356112a18161111f565b935060208501356112b18161111f565b93969395505050506040820135916060013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611304576113046112c6565b604052919050565b60006001600160401b03821115611325576113256112c6565b5060051b60200190565b600082601f83011261134057600080fd5b813560206113556113508361130c565b6112dc565b82815260059290921b8401810191818101908684111561137457600080fd5b8286015b8481101561138f5780358352918301918301611378565b509695505050505050565b600082601f8301126113ab57600080fd5b81356001600160401b038111156113c4576113c46112c6565b6113d7601f8201601f19166020016112dc565b8181528460208386010111156113ec57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561142157600080fd5b853561142c8161111f565b9450602086013561143c8161111f565b935060408601356001600160401b038082111561145857600080fd5b61146489838a0161132f565b9450606088013591508082111561147a57600080fd5b61148689838a0161132f565b9350608088013591508082111561149c57600080fd5b506114a98882890161139a565b9150509295509295909350565b600080600080600060a086880312156114ce57600080fd5b85356114d98161111f565b945060208601356114e98161111f565b9350604086013592506060860135915060808601356001600160401b0381111561151257600080fd5b6114a98882890161139a565b6000806000806060858703121561153457600080fd5b8435935060208501356115468161111f565b925060408501356001600160401b038082111561156257600080fd5b818701915087601f83011261157657600080fd5b81358181111561158557600080fd5b88602082850101111561159757600080fd5b95989497505060200194505050565b600080600080608085870312156115bc57600080fd5b84356115c78161111f565b935060208501356115d78161111f565b925060408501356115e78161111f565b915060608501356115f78161111f565b939692955090935050565b6000808585111561161257600080fd5b8386111561161f57600080fd5b5050820193919092039150565b803560208310156103ae57600019602084900360031b1b1692915050565b60018060a01b038316815260006020604081840152835180604085015260005b818110156116865785810183015185820160600152820161166a565b506000606082860101526060601f19601f830116850101925050509392505050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b634e487b7160e01b600052603260045260246000fd5b8183526000602080850194508260005b858110156117345781356117198161111f565b6001600160a01b031687529582019590820190600101611706565b509495945050505050565b81835260006001600160fb1b0383111561175857600080fd5b8260051b80836020870137939093016020019392505050565b8981526001600160a01b0389811660208301528816604082015260c0606082018190526000906117a4908301888a6116f6565b82810360808401526117b781878961173f565b905082810360a08401526117cc81858761173f565b9c9b505050505050505050505050565b6060815260006117f060608301888a6116f6565b828103602084015261180381878961173f565b9050828103604084015261181881858761173f565b9998505050505050505050565b600080600080600060a0868803121561183d57600080fd5b85356118488161111f565b945060208601356118588161111f565b935060408601356118688161111f565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052600160045260246000fd5b60008060008060008060c087890312156118af57600080fd5b863595506020808801356118c28161111f565b955060408801356118d28161111f565b945060608801356001600160401b03808211156118ee57600080fd5b818a0191508a601f83011261190257600080fd5b81356119106113508261130c565b81815260059190911b8301840190848101908d83111561192f57600080fd5b938501935b828510156119565784356119478161111f565b82529385019390850190611934565b9750505060808a013592508083111561196e57600080fd5b61197a8b848c0161132f565b945060a08a013592508083111561199057600080fd5b505061199e89828a0161132f565b9150509295509295509295565b600081518084526020808501945080840160005b83811015611734578151875295820195908201906001016119bf565b606080825284519082018190526000906020906080840190828801845b82811015611a1d5781516001600160a01b0316845292840192908401906001016119f8565b50505083810382850152611a3181876119ab565b9150508281036040840152611a4681856119ab565b969550505050505056fea26469706673582212208fb2d0aca698f4006f1129d1d6cb7c34db407c5f131d3716c8011bd60a68f8cd64736f6c63430008110033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {}\n}\n" diff --git a/e2e-polybft/e2e/bridge_test.go b/e2e-polybft/e2e/bridge_test.go index 9a52502242..79525fdb5d 100644 --- a/e2e-polybft/e2e/bridge_test.go +++ b/e2e-polybft/e2e/bridge_test.go @@ -32,17 +32,17 @@ const ( func TestE2E_Bridge_DepositAndWithdrawERC20(t *testing.T) { const ( - num = 10 + transfersCount = 10 amount = 100 numBlockConfirmations = 2 // make epoch size long enough, so that all exit events are processed within the same epoch epochSize = 30 ) - receivers := make([]string, num) - amounts := make([]string, num) + receivers := make([]string, transfersCount) + amounts := make([]string, transfersCount) - for i := 0; i < num; i++ { + for i := 0; i < transfersCount; i++ { key, err := ethgow.GenerateKey() require.NoError(t, err) @@ -63,136 +63,216 @@ func TestE2E_Bridge_DepositAndWithdrawERC20(t *testing.T) { manifest, err := polybft.LoadManifest(path.Join(cluster.Config.TmpDir, manifestFileName)) require.NoError(t, err) - // DEPOSIT ERC20 TOKENS - // send a few transactions to the bridge - require.NoError( - t, - cluster.Bridge.DepositERC20( - manifest.RootchainConfig.RootNativeERC20Address, - manifest.RootchainConfig.RootERC20PredicateAddress, - strings.Join(receivers[:], ","), - strings.Join(amounts[:], ","), - ), - ) + validatorSrv := cluster.Servers[0] + childEthEndpoint := validatorSrv.JSONRPC().Eth() + + t.Run("bridge ERC 20 tokens", func(t *testing.T) { + t.Logf("bridge ERC 20 tokens started...\n") + // DEPOSIT ERC20 TOKENS + // send a few transactions to the bridge + require.NoError( + t, + cluster.Bridge.DepositERC20( + manifest.RootchainConfig.RootNativeERC20Address, + manifest.RootchainConfig.RootERC20PredicateAddress, + strings.Join(receivers[:], ","), + strings.Join(amounts[:], ","), + ), + ) + + // wait for a few more sprints + require.NoError(t, cluster.WaitForBlock(35, 2*time.Minute)) + + // the transactions are processed and there should be a success events + var stateSyncedResult contractsapi.StateSyncResultEvent + + id := stateSyncedResult.Sig() + filter := ðgo.LogFilter{ + Topics: [][]*ethgo.Hash{ + {&id}, + }, + } - // wait for a few more sprints - require.NoError(t, cluster.WaitForBlock(35, 2*time.Minute)) + filter.SetFromUint64(0) + filter.SetToUint64(100) - // the transactions are processed and there should be a success events - var stateSyncedResult contractsapi.StateSyncResultEvent + logs, err := childEthEndpoint.GetLogs(filter) + require.NoError(t, err) - id := stateSyncedResult.Sig() - filter := ðgo.LogFilter{ - Topics: [][]*ethgo.Hash{ - {&id}, - }, - } + // assert that all deposits are executed successfully + checkStateSyncResultLogs(t, logs, transfersCount) - filter.SetFromUint64(0) - filter.SetToUint64(100) + // check receivers balances got increased by deposited amount + for _, receiver := range receivers { + balance, err := childEthEndpoint.GetBalance(ethgo.Address(types.StringToAddress(receiver)), ethgo.Latest) + require.NoError(t, err) + require.Equal(t, big.NewInt(amount), balance) + } - childEthEndpoint := cluster.Servers[0].JSONRPC().Eth() + t.Log("Deposits were successfully processed") - logs, err := childEthEndpoint.GetLogs(filter) - require.NoError(t, err) + // WITHDRAW ERC20 TOKENS + rootchainTxRelayer, err := txrelayer.NewTxRelayer(txrelayer.WithIPAddress(cluster.Bridge.JSONRPCAddr())) + require.NoError(t, err) + + senderAccount, err := sidechain.GetAccountFromDir(validatorSrv.DataDir()) + require.NoError(t, err) - // assert that all deposits are executed successfully - checkStateSyncResultLogs(t, logs, num) + t.Logf("Withdraw sender: %s\n", senderAccount.Ecdsa.Address()) - // check receivers balances got increased by deposited amount - for _, receiver := range receivers { - balance, err := childEthEndpoint.GetBalance(ethgo.Address(types.StringToAddress(receiver)), ethgo.Latest) + rawKey, err := senderAccount.Ecdsa.MarshallPrivateKey() require.NoError(t, err) - require.Equal(t, big.NewInt(amount), balance) - } - t.Log("Deposits were successfully processed") + // send withdraw transaction + err = cluster.Bridge.WithdrawERC20( + hex.EncodeToString(rawKey), + strings.Join(receivers[:], ","), + strings.Join(amounts[:], ","), + validatorSrv.JSONRPCAddr()) + require.NoError(t, err) - // WITHDRAW ERC20 TOKENS - rootchainTxRelayer, err := txrelayer.NewTxRelayer(txrelayer.WithIPAddress(cluster.Bridge.JSONRPCAddr())) - require.NoError(t, err) + currentBlock, err := childEthEndpoint.GetBlockByNumber(ethgo.Latest, false) + require.NoError(t, err) - senderAccount, err := sidechain.GetAccountFromDir(cluster.Servers[0].DataDir()) - require.NoError(t, err) + currentExtra, err := polybft.GetIbftExtra(currentBlock.ExtraData) + require.NoError(t, err) - t.Logf("Withdraw sender: %s\n", senderAccount.Ecdsa.Address()) + t.Logf("Latest block number: %d, epoch number: %d\n", currentBlock.Number, currentExtra.Checkpoint.EpochNumber) - rawKey, err := senderAccount.Ecdsa.MarshallPrivateKey() - require.NoError(t, err) + currentEpoch := currentExtra.Checkpoint.EpochNumber - // send withdraw transaction - err = cluster.Bridge.WithdrawERC20( - hex.EncodeToString(rawKey), - strings.Join(receivers[:], ","), - strings.Join(amounts[:], ","), - cluster.Servers[0].JSONRPCAddr()) - require.NoError(t, err) + require.NoError(t, waitForRootchainEpoch(currentEpoch, 3*time.Minute, + rootchainTxRelayer, manifest.RootchainConfig.CheckpointManagerAddress)) - currentBlock, err := childEthEndpoint.GetBlockByNumber(ethgo.Latest, false) - require.NoError(t, err) + exitHelper := manifest.RootchainConfig.ExitHelperAddress + rootJSONRPC := cluster.Bridge.JSONRPCAddr() + childJSONRPC := validatorSrv.JSONRPCAddr() - currentExtra, err := polybft.GetIbftExtra(currentBlock.ExtraData) - require.NoError(t, err) + for i := uint64(0); i < transfersCount; i++ { + exitEventID := i + 1 - t.Logf("Latest block number: %d, epoch number: %d\n", currentBlock.Number, currentExtra.Checkpoint.EpochNumber) + // send exit transaction to exit helper + err = cluster.Bridge.SendExitTransaction(exitHelper, exitEventID, rootJSONRPC, childJSONRPC) + require.NoError(t, err) - currentEpoch := currentExtra.Checkpoint.EpochNumber - fail := 0 + // make sure exit event is processed successfully + isProcessed, err := isExitEventProcessed(exitEventID, ethgo.Address(exitHelper), rootchainTxRelayer) + require.NoError(t, err) + require.True(t, isProcessed, fmt.Sprintf("exit event with ID %d was not processed", exitEventID)) + } - // make sure we have progressed to the next epoch on the root chain - // before sending exit transaction to the root chain - // (it means that checkpoint was submitted) - for range time.Tick(time.Second) { - currentEpochString, err := ABICall(rootchainTxRelayer, contractsapi.CheckpointManager, - ethgo.Address(manifest.RootchainConfig.CheckpointManagerAddress), ethgo.ZeroAddress, "currentEpoch") - require.NoError(t, err) + // assert that receiver's balances on RootERC20 smart contract are expected + for _, receiver := range receivers { + balanceOfFn := &contractsapi.BalanceOfRootERC20Fn{Account: types.StringToAddress(receiver)} + balanceInput, err := balanceOfFn.EncodeAbi() + require.NoError(t, err) - rootchainEpoch, err := types.ParseUint64orHex(¤tEpochString) - require.NoError(t, err) + balanceRaw, err := rootchainTxRelayer.Call(ethgo.ZeroAddress, + ethgo.Address(manifest.RootchainConfig.RootNativeERC20Address), balanceInput) + require.NoError(t, err) - if rootchainEpoch >= currentEpoch { - break + balance, err := types.ParseUint256orHex(&balanceRaw) + require.NoError(t, err) + require.Equal(t, big.NewInt(amount), balance) } - if fail > 300 { - t.Fatal("root chain hasn't progressed to the next epoch") - } - fail++ - } + t.Logf("bridge ERC 20 tokens finished.\n") + }) + + t.Run("multiple deposit batches per epoch", func(t *testing.T) { + const ( + depositsSubset = 2 + sprintSize = 5 + ) + + initialBlockNum, err := childEthEndpoint.BlockNumber() + require.NoError(t, err) + + initialBlockNum = initialBlockNum + sprintSize - (initialBlockNum % sprintSize) + require.NoError(t, cluster.WaitForBlock(initialBlockNum, 1*time.Minute)) + + t.Logf("multiple deposit batches started %d...\n", initialBlockNum) - exitHelper := manifest.RootchainConfig.ExitHelperAddress - rootJSONRPC := cluster.Bridge.JSONRPCAddr() - childJSONRPC := cluster.Servers[0].JSONRPCAddr() + // send two transactions to the bridge so that we have a minimal commitment + require.NoError( + t, + cluster.Bridge.DepositERC20( + manifest.RootchainConfig.RootNativeERC20Address, + manifest.RootchainConfig.RootERC20PredicateAddress, + strings.Join(receivers[:depositsSubset], ","), + strings.Join(amounts[:depositsSubset], ","), + ), + ) - for i := uint64(0); i < num; i++ { - exitEventID := i + 1 + // wait for a few more sprints + midBlockNumber := initialBlockNum + 2*sprintSize + require.NoError(t, cluster.WaitForBlock(midBlockNumber, 2*time.Minute)) - // send exit transaction to exit helper - err = cluster.Bridge.SendExitTransaction(exitHelper, exitEventID, rootJSONRPC, childJSONRPC) + txRelayer, err := txrelayer.NewTxRelayer(txrelayer.WithClient(validatorSrv.JSONRPC())) require.NoError(t, err) - // make sure exit event is processed successfully - isProcessed, err := isExitEventProcessed(exitEventID, ethgo.Address(exitHelper), rootchainTxRelayer) + lastCommittedIDMethod := contractsapi.StateReceiver.Abi.GetMethod("lastCommittedId") + encode, err := lastCommittedIDMethod.Encode([]interface{}{}) require.NoError(t, err) - require.True(t, isProcessed, fmt.Sprintf("exit event with ID %d was not processed", exitEventID)) - } - // assert that receiver's balances on RootERC20 smart contract are expected - for _, receiver := range receivers { - balanceInput, err := contractsapi.RootERC20.Abi.Methods["balanceOf"].Encode([]interface{}{receiver}) + // check that we submitted the minimal commitment to smart contract + commitmentIDRaw, err := txRelayer.Call(ethgo.ZeroAddress, ethgo.Address(contracts.StateReceiverContract), encode) require.NoError(t, err) - balanceRaw, err := rootchainTxRelayer.Call(ethgo.ZeroAddress, - ethgo.Address(manifest.RootchainConfig.RootNativeERC20Address), balanceInput) + lastCommittedID, err := types.ParseUint64orHex(&commitmentIDRaw) + require.NoError(t, err) + require.Equal(t, uint64(transfersCount+depositsSubset), lastCommittedID) + + // send some more transactions to the bridge to build another commitment in epoch + require.NoError( + t, + cluster.Bridge.DepositERC20( + manifest.RootchainConfig.RootNativeERC20Address, + manifest.RootchainConfig.RootERC20PredicateAddress, + strings.Join(receivers[depositsSubset:], ","), + strings.Join(amounts[depositsSubset:], ","), + ), + ) + + // wait for a few more sprints + require.NoError(t, cluster.WaitForBlock(midBlockNumber+epochSize, 3*time.Minute)) + + // check that we submitted the minimal commitment to smart contract + commitmentIDRaw, err = txRelayer.Call(ethgo.ZeroAddress, ethgo.Address(contracts.StateReceiverContract), encode) require.NoError(t, err) - balance, err := types.ParseUint256orHex(&balanceRaw) + // check that the second (larger commitment) was also submitted in epoch + lastCommittedID, err = types.ParseUint64orHex(&commitmentIDRaw) require.NoError(t, err) - require.Equal(t, big.NewInt(amount), balance) - } + require.Equal(t, uint64(2*transfersCount), lastCommittedID) + + // the transactions are mined and state syncs should be executed by the relayer + // and there should be a success events + var stateSyncedResult contractsapi.StateSyncResultEvent + + id := stateSyncedResult.Sig() + filter := ðgo.LogFilter{ + Topics: [][]*ethgo.Hash{ + {&id}, + }, + } + + filter.SetFromUint64(initialBlockNum) + filter.SetToUint64(initialBlockNum + 2*epochSize) + + logs, err := childEthEndpoint.GetLogs(filter) + require.NoError(t, err) + + // assert that all state syncs are executed successfully + checkStateSyncResultLogs(t, logs, transfersCount) + + t.Logf("multiple deposit batches finished.\n") + }) } func TestE2E_Bridge_MultipleCommitmentsPerEpoch(t *testing.T) { + t.Skip("REMOVE") + const depositsCount = 10 receivers := make([]string, depositsCount) @@ -487,10 +567,10 @@ func TestE2E_Bridge_L2toL1ExitMultiple(t *testing.T) { } for i := uint64(1); i <= roundNumber; i++ { - for j := 0; j < userNumber; j++ { - go addTransaction(uint64(j), uint64(i)) + for j := uint64(0); j < userNumber; j++ { + go addTransaction(j, i) } - require.NoError(t, cluster.WaitForBlock(uint64((i)*epochSize), 2*time.Minute)) + require.NoError(t, cluster.WaitForBlock(i*epochSize, 2*time.Minute)) require.NoError(t, waitForRootchainEpoch(i*checkpointEpoch, 5*time.Minute, l1TxRelayer, types.Address(checkpointManagerAddr))) }