[ { "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" }, { "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": "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": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "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": [], "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": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "transfer", "outputs": [], "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" } ]
608060405234801562000010575f80fd5b506040518060400160405280600b81526020017f4253484942412042494e550000000000000000000000000000000000000000008152506040518060400160405280600581526020017f425348494200000000000000000000000000000000000000000000000000000081525081600390816200008e919062000904565b508060049081620000a0919062000904565b505050620000e433620000b8620000ea60201b60201c565b600a620000c6919062000b71565b64e8d4a51000620000d8919062000bc1565b620000f260201b60201c565b62000d6e565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000165575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200015c919062000c4e565b60405180910390fd5b692c2e732d281b2a2a6edf6302666c0b02603b621f95a80202600555620001945f83836200019860201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620001ec578060025f828254620001df919062000c69565b92505081905550620002bd565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000278578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016200026f9392919062000cb4565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000306578060025f8282540392505081905550620004ef565b620003198184846200055b60201b60201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403620004ee573073ffffffffffffffffffffffffffffffffffffffff1660015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200054e919062000cef565b60405180910390a3505050565b5f3073ffffffffffffffffffffffffffffffffffffffff16620005a660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846200061e60201b60201c565b620005d960055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866200061e60201b60201c565b620005e5919062000c69565b10620006135762ffffff61ffff85620005ff919062000bc1565b6200060b919062000d37565b905062000617565b8390505b9392505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200071c57607f821691505b602082108103620007325762000731620006d7565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620007967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000759565b620007a2868362000759565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620007ec620007e6620007e084620007ba565b620007c3565b620007ba565b9050919050565b5f819050919050565b6200080783620007cc565b6200081f6200081682620007f3565b84845462000765565b825550505050565b5f90565b6200083562000827565b62000842818484620007fc565b505050565b5b8181101562000869576200085d5f826200082b565b60018101905062000848565b5050565b601f821115620008b857620008828162000738565b6200088d846200074a565b810160208510156200089d578190505b620008b5620008ac856200074a565b83018262000847565b50505b505050565b5f82821c905092915050565b5f620008da5f1984600802620008bd565b1980831691505092915050565b5f620008f48383620008c9565b9150826002028217905092915050565b6200090f82620006a0565b67ffffffffffffffff8111156200092b576200092a620006aa565b5b62000937825462000704565b620009448282856200086d565b5f60209050601f8311600181146200097a575f841562000965578287015190505b620009718582620008e7565b865550620009e0565b601f1984166200098a8662000738565b5f5b82811015620009b3578489015182556001820191506020850194506020810190506200098c565b86831015620009d35784890151620009cf601f891682620008c9565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000a725780860481111562000a4a5762000a49620009e8565b5b600185161562000a5a5780820291505b808102905062000a6a8562000a15565b945062000a2a565b94509492505050565b5f8262000a8c576001905062000b5e565b8162000a9b575f905062000b5e565b816001811462000ab4576002811462000abf5762000af5565b600191505062000b5e565b60ff84111562000ad45762000ad3620009e8565b5b8360020a91508482111562000aee5762000aed620009e8565b5b5062000b5e565b5060208310610133831016604e8410600b841016171562000b2f5782820a90508381111562000b295762000b28620009e8565b5b62000b5e565b62000b3e848484600162000a21565b9250905081840481111562000b585762000b57620009e8565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000b7d82620007ba565b915062000b8a8362000b65565b925062000bb97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a7b565b905092915050565b5f62000bcd82620007ba565b915062000bda83620007ba565b925082820262000bea81620007ba565b9150828204841483151762000c045762000c03620009e8565b5b5092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000c368262000c0b565b9050919050565b62000c488162000c2a565b82525050565b5f60208201905062000c635f83018462000c3d565b92915050565b5f62000c7582620007ba565b915062000c8283620007ba565b925082820190508082111562000c9d5762000c9c620009e8565b5b92915050565b62000cae81620007ba565b82525050565b5f60608201905062000cc95f83018662000c3d565b62000cd8602083018562000ca3565b62000ce7604083018462000ca3565b949350505050565b5f60208201905062000d045f83018462000ca3565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000d4382620007ba565b915062000d5083620007ba565b92508262000d635762000d6262000d0a565b5b828204905092915050565b6111bb8062000d7c5f395ff3fe608060405234801561000f575f80fd5b506004361061009c575f3560e01c806370a082311161006457806370a082311461015a57806395d89b411461018a578063a9059cbb146101a8578063ccb570e3146101d8578063dd62ed3e146101f45761009c565b806306fdde03146100a0578063095ea7b3146100be57806318160ddd146100ee57806323b872dd1461010c578063313ce5671461013c575b5f80fd5b6100a8610224565b6040516100b59190610d46565b60405180910390f35b6100d860048036038101906100d39190610df7565b6102b4565b6040516100e59190610e4f565b60405180910390f35b6100f66102d6565b6040516101039190610e77565b60405180910390f35b61012660048036038101906101219190610e90565b6102df565b6040516101339190610e4f565b60405180910390f35b61014461030d565b6040516101519190610efb565b60405180910390f35b610174600480360381019061016f9190610f14565b610315565b6040516101819190610e77565b60405180910390f35b61019261035a565b60405161019f9190610d46565b60405180910390f35b6101c260048036038101906101bd9190610df7565b6103ea565b6040516101cf9190610e4f565b60405180910390f35b6101f260048036038101906101ed9190610f3f565b61040c565b005b61020e60048036038101906102099190610f8f565b610476565b60405161021b9190610e77565b60405180910390f35b60606003805461023390610ffa565b80601f016020809104026020016040519081016040528092919081815260200182805461025f90610ffa565b80156102aa5780601f10610281576101008083540402835291602001916102aa565b820191905f5260205f20905b81548152906001019060200180831161028d57829003601f168201915b5050505050905090565b5f806102be6104f8565b90506102cb8185856104ff565b600191505092915050565b5f600254905090565b5f806102e96104f8565b90506102f6858285610511565b6103018585856105a3565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606004805461036990610ffa565b80601f016020809104026020016040519081016040528092919081815260200182805461039590610ffa565b80156103e05780601f106103b7576101008083540402835291602001916103e0565b820191905f5260205f20905b8154815290600101906020018083116103c357829003601f168201915b5050505050905090565b5f806103f46104f8565b90506104018185856105a3565b600191505092915050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516104699190610e77565b60405180910390a3505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b61050c8383836001610693565b505050565b5f61051c8484610476565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059d578181101561058e578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161058593929190611039565b60405180910390fd5b61059c84848484035f610693565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610613575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161060a919061106e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610683575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161067a919061106e565b60405180910390fd5b61068e838383610862565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610703575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016106fa919061106e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610773575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161076a919061106e565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561085c578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108539190610e77565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108b2578060025f8282546108a691906110b4565b92505081905550610980565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561093b578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161093293929190611039565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109c7578060025f8282540392505081905550610ba7565b6109d2818484610c11565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610ba6573073ffffffffffffffffffffffffffffffffffffffff1660015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c049190610e77565b60405180910390a3505050565b5f3073ffffffffffffffffffffffffffffffffffffffff16610c5460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610476565b610c7f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686610476565b610c8991906110b4565b10610cb15762ffffff61ffff85610ca091906110e7565b610caa9190611155565b9050610cb5565b8390505b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610cf3578082015181840152602081019050610cd8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610d1882610cbc565b610d228185610cc6565b9350610d32818560208601610cd6565b610d3b81610cfe565b840191505092915050565b5f6020820190508181035f830152610d5e8184610d0e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610d9382610d6a565b9050919050565b610da381610d89565b8114610dad575f80fd5b50565b5f81359050610dbe81610d9a565b92915050565b5f819050919050565b610dd681610dc4565b8114610de0575f80fd5b50565b5f81359050610df181610dcd565b92915050565b5f8060408385031215610e0d57610e0c610d66565b5b5f610e1a85828601610db0565b9250506020610e2b85828601610de3565b9150509250929050565b5f8115159050919050565b610e4981610e35565b82525050565b5f602082019050610e625f830184610e40565b92915050565b610e7181610dc4565b82525050565b5f602082019050610e8a5f830184610e68565b92915050565b5f805f60608486031215610ea757610ea6610d66565b5b5f610eb486828701610db0565b9350506020610ec586828701610db0565b9250506040610ed686828701610de3565b9150509250925092565b5f60ff82169050919050565b610ef581610ee0565b82525050565b5f602082019050610f0e5f830184610eec565b92915050565b5f60208284031215610f2957610f28610d66565b5b5f610f3684828501610db0565b91505092915050565b5f805f60608486031215610f5657610f55610d66565b5b5f610f6386828701610de3565b9350506020610f7486828701610db0565b9250506040610f8586828701610db0565b9150509250925092565b5f8060408385031215610fa557610fa4610d66565b5b5f610fb285828601610db0565b9250506020610fc385828601610db0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061101157607f821691505b60208210810361102457611023610fcd565b5b50919050565b61103381610d89565b82525050565b5f60608201905061104c5f83018661102a565b6110596020830185610e68565b6110666040830184610e68565b949350505050565b5f6020820190506110815f83018461102a565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6110be82610dc4565b91506110c983610dc4565b92508282019050808211156110e1576110e0611087565b5b92915050565b5f6110f182610dc4565b91506110fc83610dc4565b925082820261110a81610dc4565b9150828204841483151761112157611120611087565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61115f82610dc4565b915061116a83610dc4565b92508261117a57611179611128565b5b82820490509291505056fea26469706673582212202b40ead41370d0ac3876e5535bc2051ab5241b0a4314ec4a2e85a768d18b595864736f6c63430008180033