[ { "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": [], "name": "__name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "__symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" } ], "name": "initialize", "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" } ]
60808060405234610078573315610063575f8054336001600160a01b03198216811783556040519290916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3610c28908161007d8239f35b631e4fbdf760e01b81525f6004820152602490fd5b5f80fdfe604060808152600480361015610013575f80fd5b5f3560e01c806306fdde031461021b578063095ea7b3146107ac57806318160ddd1461078e57806323b872dd1461069d578063313ce567146106825780634cd88b76146102c657806370a082311461028f578063715018a6146102385780637269ada11461021b57806382215cb1146101c85780638da5cb5b146101f457806395d89b41146101c8578063a9059cbb14610198578063dd62ed3e1461014f5763f2fde38b146100c0575f80fd5b3461014b57602036600319011261014b576100d961089c565b906100e2610bc7565b6001600160a01b039182169283156101355750505f54826bffffffffffffffffffffffff60a01b8216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b5f80fd5b823461014b578060031936011261014b5760209061016b61089c565b6101736108b2565b9060018060a01b038091165f5260028452825f2091165f528252805f20549051908152f35b823461014b578060031936011261014b576020906101c16101b761089c565b6024359033610aeb565b5160018152f35b823461014b575f36600319011261014b576101f0906101e5610a4f565b905191829182610855565b0390f35b823461014b575f36600319011261014b575f5490516001600160a01b039091168152602090f35b823461014b575f36600319011261014b576101f0906101e561098c565b3461014b575f36600319011261014b57610250610bc7565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b823461014b57602036600319011261014b576020906001600160a01b036102b461089c565b165f5260018252805f20549051908152f35b50903461014b578060031936011261014b5767ffffffffffffffff823581811161014b576102f790369085016108fe565b602491823581811161014b5761031090369087016108fe565b90600392835461064057805182811161062e578061032e8954610954565b92601f938481116105c3575b50602090848311600114610543575f92610538575b50508160011b915f1990871b1c19161787555b825191821161052657819060059361037a8554610954565b8281116104ba575b50602091831160011461043a575f9261042f575b50508160011b915f1990851b1c19161790555b331561041b578054916a52b7d2dcc80cd2e40000009485840180941161040a57505055335f526001602052805f20828154019055519081525f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a3005b601190634e487b7160e01b5f52525ffd5b50815163ec442f0560e01b81525f81850152fd5b015190505f80610396565b5f8581527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09350601f198516905b8181106104a2575090846001959493921061048b575b505050811b0190556103a9565b01515f1983871b60f8161c191690555f808061047e565b92936020600181928786015181550195019301610468565b90919250845f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db083808601871c8201926020871061051d575b948695949392919401871c01905b81811061050f5750610382565b5f8155859450600101610502565b925081926104f4565b84604188634e487b7160e01b5f52525ffd5b015190505f8061034f565b5f8b81527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9350601f198516905b8181106105ab5750908460019594939210610594575b505050811b018755610362565b01515f1983891b60f8161c191690555f8080610587565b92936020600181928786015181550195019301610571565b909150895f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b8480850160051c82019260208610610625575b9085949392910160051c01905b818110610617575061033a565b5f815584935060010161060a565b925081926105fd565b85604189634e487b7160e01b5f52525ffd5b855162461bcd60e51b8152602081890152601f818701527f4c616d626f546f6b656e3a20416c726561647920696e697469616c697a6564006044820152606490fd5b823461014b575f36600319011261014b576020905160128152f35b503461014b57606036600319011261014b576106b761089c565b6106bf6108b2565b906044359260018060a01b038216805f526002602052855f20335f52602052855f2054915f1983036106fa575b6020876101c1888888610aeb565b85831061076257811561074c57331561073657505f908152600260209081528682203383528152908690209185900390915582906101c16106ec565b6024905f885191634a1406b160e11b8352820152fd5b6024905f88519163e602df0560e01b8352820152fd5b8651637dc7a0d960e11b8152339181019182526020820193909352604081018690528291506060010390fd5b823461014b575f36600319011261014b576020906003549051908152f35b50903461014b578060031936011261014b576107c661089c565b60243590331561083f576001600160a01b03169081156108295760209350335f5260028452825f20825f52845280835f205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b8251634a1406b160e11b81525f81860152602490fd5b825163e602df0560e01b81525f81860152602490fd5b602080825282518183018190529093925f5b82811061088857505060409293505f838284010152601f8019910116010190565b818101860151848201604001528501610867565b600435906001600160a01b038216820361014b57565b602435906001600160a01b038216820361014b57565b90601f8019910116810190811067ffffffffffffffff8211176108ea57604052565b634e487b7160e01b5f52604160045260245ffd5b81601f8201121561014b5780359067ffffffffffffffff82116108ea5760405192610933601f8401601f1916602001856108c8565b8284526020838301011161014b57815f926020809301838601378301015290565b90600182811c92168015610982575b602083101461096e57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610963565b604051905f826004549161099f83610954565b80835292602090600190818116908115610a2b57506001146109cc575b50506109ca925003836108c8565b565b91509260045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b935f925b828410610a1357506109ca9450505081016020015f806109bc565b855488850183015294850194879450928101926109f8565b915050602092506109ca94915060ff191682840152151560051b8201015f806109bc565b604051905f8260055491610a6283610954565b80835292602090600190818116908115610a2b5750600114610a8c5750506109ca925003836108c8565b91509260055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0935f925b828410610ad357506109ca9450505081016020015f806109bc565b85548885018301529485019487945092810192610ab8565b916001600160a01b03808416928315610baf5716928315610b9757825f52600160205260405f205490828210610b655750817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600184520360405f2055845f5260405f20818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101829052606490fd5b60405163ec442f0560e01b81525f6004820152602490fd5b604051634b637e8f60e11b81525f6004820152602490fd5b5f546001600160a01b03163303610bda57565b60405163118cdaa760e01b8152336004820152602490fdfea2646970667358221220112c3ed093b7c5104d4a0b51332192c20e29661d028b8fa588200d5c8d2b843764736f6c63430008170033