[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101806040526b033b2e3c9fd0803ce80000006101605234801561002257600080fd5b50336040518060400160405280600c81526020016b5a756c75204e6574776f726b60a01b81525080604051806040016040528060018152602001603160f81b8152506040518060400160405280600c81526020016b5a756c75204e6574776f726b60a01b815250604051806040016040528060048152602001635a554c5560e01b81525081600390816100b591906104e9565b5060046100c282826104e9565b506100d2915083905060056101d3565b610120526100e18160066101d3565b61014052815160208084019190912060e052815190820120610100524660a05261016e60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506008805460ff191690556001600160a01b0381166101b157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101ba81610206565b506101ce336101605161026060201b60201c565b61063a565b60006020835110156101ef576101e88361029a565b9050610200565b816101fa84826104e9565b5060ff90505b92915050565b600880546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661028a5760405163ec442f0560e01b8152600060048201526024016101a8565b610296600083836102d8565b5050565b600080829050601f815111156102c5578260405163305a27a960e01b81526004016101a891906105a7565b80516102d0826105f5565b179392505050565b6102e38383836102e8565b505050565b6102f06102fb565b6102e3838383610321565b60085460ff161561031f5760405163d93c066560e01b815260040160405180910390fd5b565b6001600160a01b03831661034c5780600260008282546103419190610619565b909155506103be9050565b6001600160a01b0383166000908152602081905260409020548181101561039f5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016101a8565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166103da576002805482900390556103f9565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161043e91815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061047557607f821691505b60208210810361049557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102e357806000526020600020601f840160051c810160208510156104c25750805b601f840160051c820191505b818110156104e257600081556001016104ce565b5050505050565b81516001600160401b038111156105025761050261044b565b610516816105108454610461565b8461049b565b6020601f82116001811461054a57600083156105325750848201515b600019600385901b1c1916600184901b1784556104e2565b600084815260208120601f198516915b8281101561057a578785015182556020948501946001909201910161055a565b50848210156105985786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000825180602084015260005b818110156105d557602081860181015160408684010152016105b8565b506000604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156104955760001960209190910360031b1b16919050565b8082018082111561020057634e487b7160e01b600052601160045260246000fd5b60805160a05160c05160e0516101005161012051610140516101605161125461069f60003960006102a4015260006109d9015260006109ac015260006107fe015260006107d6015260006107310152600061075b0152600061078501526112546000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063715018a6116100b857806395d89b411161007c57806395d89b4114610271578063a9059cbb14610279578063d505accf1461028c578063d5abeb011461029f578063dd62ed3e146102c6578063f2fde38b146102ff57600080fd5b8063715018a61461020a5780637ecebe00146102125780638456cb591461022557806384b0196e1461022d5780638da5cb5b1461024857600080fd5b80633644e515116100ff5780633644e515146101b15780633f4ba83a146101b957806342966c68146101c35780635c975abb146101d657806370a08231146101e157600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806323b872dd1461018f578063313ce567146101a2575b600080fd5b610144610312565b6040516101519190610f9e565b60405180910390f35b61016d610168366004610fd4565b6103a4565b6040519015158152602001610151565b6002545b604051908152602001610151565b61016d61019d366004610ffe565b6103be565b60405160128152602001610151565b6101816103e2565b6101c16103f1565b005b6101c16101d136600461103b565b610403565b60085460ff1661016d565b6101816101ef366004611054565b6001600160a01b031660009081526020819052604090205490565b6101c1610418565b610181610220366004611054565b61042a565b6101c1610448565b610235610458565b604051610151979695949392919061106f565b60085461010090046001600160a01b03166040516001600160a01b039091168152602001610151565b61014461049e565b61016d610287366004610fd4565b6104ad565b6101c161029a366004611107565b6104bb565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b6101816102d436600461117a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101c161030d366004611054565b6105fa565b606060038054610321906111ad565b80601f016020809104026020016040519081016040528092919081815260200182805461034d906111ad565b801561039a5780601f1061036f5761010080835404028352916020019161039a565b820191906000526020600020905b81548152906001019060200180831161037d57829003601f168201915b5050505050905090565b6000336103b2818585610635565b60019150505b92915050565b6000336103cc858285610647565b6103d78585856106c5565b506001949350505050565b60006103ec610724565b905090565b6103f961084f565b610401610882565b565b61040b61084f565b61041533826108d4565b50565b61042061084f565b610401600061090e565b6001600160a01b0381166000908152600760205260408120546103b8565b61045061084f565b610401610968565b60006060806000806000606061046c6109a5565b6104746109d2565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b606060048054610321906111ad565b6000336103b28185856106c5565b834211156104e45760405163313c898160e11b8152600481018590526024015b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105318c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061058c826109ff565b9050600061059c82878787610a2c565b9050896001600160a01b0316816001600160a01b0316146105e3576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016104db565b6105ee8a8a8a610635565b50505050505050505050565b61060261084f565b6001600160a01b03811661062c57604051631e4fbdf760e01b8152600060048201526024016104db565b6104158161090e565b6106428383836001610a5a565b505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146106bf57818110156106b057604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016104db565b6106bf84848484036000610a5a565b50505050565b6001600160a01b0383166106ef57604051634b637e8f60e11b8152600060048201526024016104db565b6001600160a01b0382166107195760405163ec442f0560e01b8152600060048201526024016104db565b610642838383610b2f565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561077d57507f000000000000000000000000000000000000000000000000000000000000000046145b156107a757507f000000000000000000000000000000000000000000000000000000000000000090565b6103ec604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6008546001600160a01b036101009091041633146104015760405163118cdaa760e01b81523360048201526024016104db565b61088a610b3a565b6008805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0382166108fe57604051634b637e8f60e11b8152600060048201526024016104db565b61090a82600083610b2f565b5050565b600880546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610970610b5d565b6008805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586108b73390565b60606103ec7f00000000000000000000000000000000000000000000000000000000000000006005610b81565b60606103ec7f00000000000000000000000000000000000000000000000000000000000000006006610b81565b60006103b8610a0c610724565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610a3e88888888610c2c565b925092509250610a4e8282610cfb565b50909695505050505050565b6001600160a01b038416610a845760405163e602df0560e01b8152600060048201526024016104db565b6001600160a01b038316610aae57604051634a1406b160e11b8152600060048201526024016104db565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156106bf57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b2191815260200190565b60405180910390a350505050565b610642838383610db4565b60085460ff1661040157604051638dfc202b60e01b815260040160405180910390fd5b60085460ff16156104015760405163d93c066560e01b815260040160405180910390fd5b606060ff8314610b9b57610b9483610dc7565b90506103b8565b818054610ba7906111ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd3906111ad565b8015610c205780601f10610bf557610100808354040283529160200191610c20565b820191906000526020600020905b815481529060010190602001808311610c0357829003601f168201915b505050505090506103b8565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610c675750600091506003905082610cf1565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610cbb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610ce757506000925060019150829050610cf1565b9250600091508190505b9450945094915050565b6000826003811115610d0f57610d0f6111e7565b03610d18575050565b6001826003811115610d2c57610d2c6111e7565b03610d4a5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610d5e57610d5e6111e7565b03610d7f5760405163fce698f760e01b8152600481018290526024016104db565b6003826003811115610d9357610d936111e7565b0361090a576040516335e2f38360e21b8152600481018290526024016104db565b610dbc610b5d565b610642838383610e06565b60606000610dd483610f30565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b038316610e31578060026000828254610e2691906111fd565b90915550610ea39050565b6001600160a01b03831660009081526020819052604090205481811015610e845760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016104db565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610ebf57600280548290039055610ede565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f2391815260200190565b60405180910390a3505050565b600060ff8216601f8111156103b857604051632cd44ac360e21b815260040160405180910390fd5b6000815180845260005b81811015610f7e57602081850181015186830182015201610f62565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610fb16020830184610f58565b9392505050565b80356001600160a01b0381168114610fcf57600080fd5b919050565b60008060408385031215610fe757600080fd5b610ff083610fb8565b946020939093013593505050565b60008060006060848603121561101357600080fd5b61101c84610fb8565b925061102a60208501610fb8565b929592945050506040919091013590565b60006020828403121561104d57600080fd5b5035919050565b60006020828403121561106657600080fd5b610fb182610fb8565b60ff60f81b8816815260e06020820152600061108e60e0830189610f58565b82810360408401526110a08189610f58565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b818110156110f65783518352602093840193909201916001016110d8565b50909b9a5050505050505050505050565b600080600080600080600060e0888a03121561112257600080fd5b61112b88610fb8565b965061113960208901610fb8565b95506040880135945060608801359350608088013560ff8116811461115d57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561118d57600080fd5b61119683610fb8565b91506111a460208401610fb8565b90509250929050565b600181811c908216806111c157607f821691505b6020821081036111e157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052602160045260246000fd5b808201808211156103b857634e487b7160e01b600052601160045260246000fdfea264697066735822122007dfb292eb48f66100da01672d6cdc665b731f95246d1b2252b15761b007ef4764736f6c634300081a0033