[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "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": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "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" } ]
60806040526005805460ff60a01b191690553480156200001e57600080fd5b5033604051806040016040528060068152602001655a4b4261736560d01b815250604051806040016040528060038152602001622d25a160e91b81525081600390816200006c9190620001b8565b5060046200007b8282620001b8565b5050506001600160a01b038116620000ad57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000b881620000bf565b5062000284565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200013c57607f821691505b6020821081036200015d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b3576000816000526020600020601f850160051c810160208610156200018e5750805b601f850160051c820191505b81811015620001af578281556001016200019a565b5050505b505050565b81516001600160401b03811115620001d457620001d462000111565b620001ec81620001e5845462000127565b8462000163565b602080601f8311600181146200022457600084156200020b5750858301515b600019600386901b1c1916600185901b178555620001af565b600085815260208120601f198616915b82811015620002555788860151825594840194600190910190840162000234565b5085821015620002745787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6109bb80620002946000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b41146101d8578063a9059cbb146101e0578063dd62ed3e146101f3578063f2fde38b1461022c57600080fd5b806370a082311461018c578063715018a6146101b55780638da5cb5b146101bd57600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce5671461015557806340c10f191461016457806342966c681461017957600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761023f565b60405161010491906107eb565b60405180910390f35b61012061011b366004610856565b6102d1565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610880565b6102eb565b60405160128152602001610104565b610177610172366004610856565b61030f565b005b6101776101873660046108bc565b61038d565b61013461019a3660046108d5565b6001600160a01b031660009081526020819052604090205490565b6101776103a2565b6005546040516001600160a01b039091168152602001610104565b6100f76103b6565b6101206101ee366004610856565b6103c5565b6101346102013660046108f7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61017761023a3660046108d5565b6103d3565b60606003805461024e9061092a565b80601f016020809104026020016040519081016040528092919081815260200182805461027a9061092a565b80156102c75780601f1061029c576101008083540402835291602001916102c7565b820191906000526020600020905b8154815290600101906020018083116102aa57829003601f168201915b5050505050905090565b6000336102df81858561040e565b60019150505b92915050565b6000336102f9858285610420565b61030485858561049e565b506001949350505050565b6103176104fd565b600554600160a01b900460ff161561036c5760405162461bcd60e51b81526020600482015260136024820152721692d08e88185b1c9958591e481b5a5b9d1959606a1b60448201526064015b60405180910390fd5b610376828261052a565b50506005805460ff60a01b1916600160a01b179055565b6103956104fd565b61039f3382610564565b50565b6103aa6104fd565b6103b4600061059a565b565b60606004805461024e9061092a565b6000336102df81858561049e565b6103db6104fd565b6001600160a01b03811661040557604051631e4fbdf760e01b815260006004820152602401610363565b61039f8161059a565b61041b83838360016105ec565b505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610498578181101561048957604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610363565b610498848484840360006105ec565b50505050565b6001600160a01b0383166104c857604051634b637e8f60e11b815260006004820152602401610363565b6001600160a01b0382166104f25760405163ec442f0560e01b815260006004820152602401610363565b61041b8383836106c1565b6005546001600160a01b031633146103b45760405163118cdaa760e01b8152336004820152602401610363565b6001600160a01b0382166105545760405163ec442f0560e01b815260006004820152602401610363565b610560600083836106c1565b5050565b6001600160a01b03821661058e57604051634b637e8f60e11b815260006004820152602401610363565b610560826000836106c1565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166106165760405163e602df0560e01b815260006004820152602401610363565b6001600160a01b03831661064057604051634a1406b160e11b815260006004820152602401610363565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561049857826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106b391815260200190565b60405180910390a350505050565b6001600160a01b0383166106ec5780600260008282546106e19190610964565b9091555061075e9050565b6001600160a01b0383166000908152602081905260409020548181101561073f5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610363565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661077a57600280548290039055610799565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516107de91815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b81811015610819578581018301518582016040015282016107fd565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461085157600080fd5b919050565b6000806040838503121561086957600080fd5b6108728361083a565b946020939093013593505050565b60008060006060848603121561089557600080fd5b61089e8461083a565b92506108ac6020850161083a565b9150604084013590509250925092565b6000602082840312156108ce57600080fd5b5035919050565b6000602082840312156108e757600080fd5b6108f08261083a565b9392505050565b6000806040838503121561090a57600080fd5b6109138361083a565b91506109216020840161083a565b90509250929050565b600181811c9082168061093e57607f821691505b60208210810361095e57634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102e557634e487b7160e01b600052601160045260246000fdfea2646970667358221220b72858424180caef365aa49ceff4e318b7354de71abb3823dc0e64bd25becc8364736f6c63430008170033