[ { "inputs": [ { "internalType": "address", "name": "initialOwner", "type": "address" } ], "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": "address", "name": "account", "type": "address" } ], "name": "bind", "outputs": [], "stateMutability": "nonpayable", "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": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "shift", "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" } ]
608060405234801562000010575f80fd5b5060405162002027380380620020278339818101604052810190620000369190620006ec565b806040518060400160405280600a81526020017f57616c72757320446f67000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f574f4700000000000000000000000000000000000000000000000000000000008152508160039081620000b4919062000980565b508060049081620000c6919062000980565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200013c575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000133919062000a75565b60405180910390fd5b6200014d81620001a660201b60201c565b506200018e81620001636200026960201b60201c565b600a62000171919062000c19565b634d7c6d0062000182919062000c69565b6200027160201b60201c565b6200019f81620002fb60201b60201c565b5062000d54565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002e4575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620002db919062000a75565b60405180910390fd5b620002f75f83836200039260201b60201c565b5050565b6200030b620005b660201b60201c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200037e575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000375919062000a75565b60405180910390fd5b6200038f81620001a660201b60201c565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620003e6578060025f828254620003d9919062000cb3565b92505081905550620004b7565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101562000472578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620004699392919062000cfe565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000500578060025f82825403925050819055506200054a565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620005a9919062000d39565b60405180910390a3505050565b620005c66200065860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005ec6200065f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200065657620006186200065860201b60201c565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016200064d919062000a75565b60405180910390fd5b565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620006b6826200068b565b9050919050565b620006c881620006aa565b8114620006d3575f80fd5b50565b5f81519050620006e681620006bd565b92915050565b5f6020828403121562000704576200070362000687565b5b5f6200071384828501620006d6565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200079857607f821691505b602082108103620007ae57620007ad62000753565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007d5565b6200081e8683620007d5565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000868620008626200085c8462000836565b6200083f565b62000836565b9050919050565b5f819050919050565b620008838362000848565b6200089b62000892826200086f565b848454620007e1565b825550505050565b5f90565b620008b1620008a3565b620008be81848462000878565b505050565b5b81811015620008e557620008d95f82620008a7565b600181019050620008c4565b5050565b601f8211156200093457620008fe81620007b4565b6200090984620007c6565b8101602085101562000919578190505b620009316200092885620007c6565b830182620008c3565b50505b505050565b5f82821c905092915050565b5f620009565f198460080262000939565b1980831691505092915050565b5f62000970838362000945565b9150826002028217905092915050565b6200098b826200071c565b67ffffffffffffffff811115620009a757620009a662000726565b5b620009b3825462000780565b620009c0828285620008e9565b5f60209050601f831160018114620009f6575f8415620009e1578287015190505b620009ed858262000963565b86555062000a5c565b601f19841662000a0686620007b4565b5f5b8281101562000a2f5784890151825560018201915060208501945060208101905062000a08565b8683101562000a4f578489015162000a4b601f89168262000945565b8355505b6001600288020188555050505b505050505050565b62000a6f81620006aa565b82525050565b5f60208201905062000a8a5f83018462000a64565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000b1a5780860481111562000af25762000af162000a90565b5b600185161562000b025780820291505b808102905062000b128562000abd565b945062000ad2565b94509492505050565b5f8262000b34576001905062000c06565b8162000b43575f905062000c06565b816001811462000b5c576002811462000b675762000b9d565b600191505062000c06565b60ff84111562000b7c5762000b7b62000a90565b5b8360020a91508482111562000b965762000b9562000a90565b5b5062000c06565b5060208310610133831016604e8410600b841016171562000bd75782820a90508381111562000bd15762000bd062000a90565b5b62000c06565b62000be6848484600162000ac9565b9250905081840481111562000c005762000bff62000a90565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000c258262000836565b915062000c328362000c0d565b925062000c617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b23565b905092915050565b5f62000c758262000836565b915062000c828362000836565b925082820262000c928162000836565b9150828204841483151762000cac5762000cab62000a90565b5b5092915050565b5f62000cbf8262000836565b915062000ccc8362000836565b925082820190508082111562000ce75762000ce662000a90565b5b92915050565b62000cf88162000836565b82525050565b5f60608201905062000d135f83018662000a64565b62000d22602083018562000ced565b62000d31604083018462000ced565b949350505050565b5f60208201905062000d4e5f83018462000ced565b92915050565b6112c58062000d625f395ff3fe608060405234801561000f575f80fd5b50600436106100e8575f3560e01c806381bac14f1161008a578063a9059cbb11610064578063a9059cbb14610238578063c094df2014610268578063dd62ed3e14610284578063f2fde38b146102b4576100e8565b806381bac14f146101e05780638da5cb5b146101fc57806395d89b411461021a576100e8565b806323b872dd116100c657806323b872dd14610158578063313ce5671461018857806370a08231146101a6578063715018a6146101d6576100e8565b806306fdde03146100ec578063095ea7b31461010a57806318160ddd1461013a575b5f80fd5b6100f46102d0565b6040516101019190610ed6565b60405180910390f35b610124600480360381019061011f9190610f87565b610360565b6040516101319190610fdf565b60405180910390f35b610142610382565b60405161014f9190611007565b60405180910390f35b610172600480360381019061016d9190611020565b61038b565b60405161017f9190610fdf565b60405180910390f35b6101906103b9565b60405161019d919061108b565b60405180910390f35b6101c060048036038101906101bb91906110a4565b6103c1565b6040516101cd9190611007565b60405180910390f35b6101de610406565b005b6101fa60048036038101906101f591906110a4565b610419565b005b61020461047d565b60405161021191906110de565b60405180910390f35b6102226104a5565b60405161022f9190610ed6565b60405180910390f35b610252600480360381019061024d9190610f87565b610535565b60405161025f9190610fdf565b60405180910390f35b610282600480360381019061027d9190610f87565b610557565b005b61029e600480360381019061029991906110f7565b61056d565b6040516102ab9190611007565b60405180910390f35b6102ce60048036038101906102c991906110a4565b6105ef565b005b6060600380546102df90611162565b80601f016020809104026020016040519081016040528092919081815260200182805461030b90611162565b80156103565780601f1061032d57610100808354040283529160200191610356565b820191905f5260205f20905b81548152906001019060200180831161033957829003601f168201915b5050505050905090565b5f8061036a610673565b905061037781858561067a565b600191505092915050565b5f600254905090565b5f80610395610673565b90506103a285828561068c565b6103ad85858561071e565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61040e61080e565b6104175f610895565b565b61042161080e565b5f61042b826103c1565b90505f811161046f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610466906111dc565b60405180910390fd5b6104798282610958565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546104b490611162565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090611162565b801561052b5780601f106105025761010080835404028352916020019161052b565b820191905f5260205f20905b81548152906001019060200180831161050e57829003601f168201915b5050505050905090565b5f8061053f610673565b905061054c81858561071e565b600191505092915050565b61055f61080e565b61056982826109d7565b5050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6105f761080e565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610667575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161065e91906110de565b60405180910390fd5b61067081610895565b50565b5f33905090565b61068783838360016109e5565b505050565b5f610697848461056d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107185781811015610709578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610700939291906111fa565b60405180910390fd5b61071784848484035f6109e5565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361078e575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161078591906110de565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107fe575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107f591906110de565b60405180910390fd5b610809838383610bb4565b505050565b610816610673565b73ffffffffffffffffffffffffffffffffffffffff1661083461047d565b73ffffffffffffffffffffffffffffffffffffffff161461089357610857610673565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161088a91906110de565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109c8575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016109bf91906110de565b60405180910390fd5b6109d3825f83610bb4565b5050565b6109e18282610dcd565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610a55575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610a4c91906110de565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ac5575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610abc91906110de565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610bae578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ba59190611007565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c04578060025f828254610bf8919061125c565b92505081905550610cd2565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610c8d578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610c84939291906111fa565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d19578060025f8282540392505081905550610d63565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610dc09190611007565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e3d575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610e3491906110de565b60405180910390fd5b610e485f8383610bb4565b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610e83578082015181840152602081019050610e68565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610ea882610e4c565b610eb28185610e56565b9350610ec2818560208601610e66565b610ecb81610e8e565b840191505092915050565b5f6020820190508181035f830152610eee8184610e9e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f2382610efa565b9050919050565b610f3381610f19565b8114610f3d575f80fd5b50565b5f81359050610f4e81610f2a565b92915050565b5f819050919050565b610f6681610f54565b8114610f70575f80fd5b50565b5f81359050610f8181610f5d565b92915050565b5f8060408385031215610f9d57610f9c610ef6565b5b5f610faa85828601610f40565b9250506020610fbb85828601610f73565b9150509250929050565b5f8115159050919050565b610fd981610fc5565b82525050565b5f602082019050610ff25f830184610fd0565b92915050565b61100181610f54565b82525050565b5f60208201905061101a5f830184610ff8565b92915050565b5f805f6060848603121561103757611036610ef6565b5b5f61104486828701610f40565b935050602061105586828701610f40565b925050604061106686828701610f73565b9150509250925092565b5f60ff82169050919050565b61108581611070565b82525050565b5f60208201905061109e5f83018461107c565b92915050565b5f602082840312156110b9576110b8610ef6565b5b5f6110c684828501610f40565b91505092915050565b6110d881610f19565b82525050565b5f6020820190506110f15f8301846110cf565b92915050565b5f806040838503121561110d5761110c610ef6565b5b5f61111a85828601610f40565b925050602061112b85828601610f40565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061117957607f821691505b60208210810361118c5761118b611135565b5b50919050565b7f4e6f20746f6b656e7320746f206275726e0000000000000000000000000000005f82015250565b5f6111c6601183610e56565b91506111d182611192565b602082019050919050565b5f6020820190508181035f8301526111f3816111ba565b9050919050565b5f60608201905061120d5f8301866110cf565b61121a6020830185610ff8565b6112276040830184610ff8565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61126682610f54565b915061127183610f54565b92508282019050808211156112895761128861122f565b5b9291505056fea264697066735822122048f0863069a76ddf461fa21b2e099f10e45bfc691a6a7013b425ecdac68d167364736f6c634300081400330000000000000000000000007ece98c6140ccccfcde975e860b1ac8e36c3c7f9