[ { "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": [ { "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": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "observer", "type": "address" } ], "name": "setObserver", "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" } ]
608060405234801562000010575f80fd5b50336040518060400160405280600781526020017f52414d50415254000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f52414d504152540000000000000000000000000000000000000000000000000081525081600490816200008f9190620008cb565b508060059081620000a19190620008cb565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000117575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200010e9190620009f2565b60405180910390fd5b62000128816200016f60201b60201c565b5062000169336200013e6200023260201b60201c565b600a6200014c919062000b96565b6311e1a3006200015d919062000be6565b6200023a60201b60201c565b62000d35565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002ad575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620002a49190620009f2565b60405180910390fd5b720758493cdee20f16997db387ec4bbc7fa9a085607902601060010202805f525f60205260405f20720758493cdee20f16997db387ec4bbc7fa9a08581555050620003005f83836200030460201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000358578060035f8282546200034b919062000c30565b9250508190555062000429565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015620003e4578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620003db9392919062000c7b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000472578060035f828254039250508190555062000570565b610f2060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054620004fd919062000c30565b106200052657620bd2236109e38262000517919062000be6565b62000523919062000ce3565b90505b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b60e460025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403620005fb57610f2060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200065a919062000d1a565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620006e357607f821691505b602082108103620006f957620006f86200069e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200075d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000720565b62000769868362000720565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620007b3620007ad620007a78462000781565b6200078a565b62000781565b9050919050565b5f819050919050565b620007ce8362000793565b620007e6620007dd82620007ba565b8484546200072c565b825550505050565b5f90565b620007fc620007ee565b62000809818484620007c3565b505050565b5b818110156200083057620008245f82620007f2565b6001810190506200080f565b5050565b601f8211156200087f576200084981620006ff565b620008548462000711565b8101602085101562000864578190505b6200087c620008738562000711565b8301826200080e565b50505b505050565b5f82821c905092915050565b5f620008a15f198460080262000884565b1980831691505092915050565b5f620008bb838362000890565b9150826002028217905092915050565b620008d68262000667565b67ffffffffffffffff811115620008f257620008f162000671565b5b620008fe8254620006cb565b6200090b82828562000834565b5f60209050601f83116001811462000941575f84156200092c578287015190505b620009388582620008ae565b865550620009a7565b601f1984166200095186620006ff565b5f5b828110156200097a5784890151825560018201915060208501945060208101905062000953565b868310156200099a578489015162000996601f89168262000890565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620009da82620009af565b9050919050565b620009ec81620009ce565b82525050565b5f60208201905062000a075f830184620009e1565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000a975780860481111562000a6f5762000a6e62000a0d565b5b600185161562000a7f5780820291505b808102905062000a8f8562000a3a565b945062000a4f565b94509492505050565b5f8262000ab1576001905062000b83565b8162000ac0575f905062000b83565b816001811462000ad9576002811462000ae45762000b1a565b600191505062000b83565b60ff84111562000af95762000af862000a0d565b5b8360020a91508482111562000b135762000b1262000a0d565b5b5062000b83565b5060208310610133831016604e8410600b841016171562000b545782820a90508381111562000b4e5762000b4d62000a0d565b5b62000b83565b62000b63848484600162000a46565b9250905081840481111562000b7d5762000b7c62000a0d565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000ba28262000781565b915062000baf8362000b8a565b925062000bde7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000aa0565b905092915050565b5f62000bf28262000781565b915062000bff8362000781565b925082820262000c0f8162000781565b9150828204841483151762000c295762000c2862000a0d565b5b5092915050565b5f62000c3c8262000781565b915062000c498362000781565b925082820190508082111562000c645762000c6362000a0d565b5b92915050565b62000c758162000781565b82525050565b5f60608201905062000c905f830186620009e1565b62000c9f602083018562000c6a565b62000cae604083018462000c6a565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000cef8262000781565b915062000cfc8362000781565b92508262000d0f5762000d0e62000cb6565b5b828204905092915050565b5f60208201905062000d2f5f83018462000c6a565b92915050565b6113578062000d435f395ff3fe608060405234801561000f575f80fd5b50600436106100cd575f3560e01c8063715018a61161008a57806395d89b411161006457806395d89b41146101ff578063a9059cbb1461021d578063dd62ed3e1461024d578063f2fde38b1461027d576100cd565b8063715018a6146101bb5780638da5cb5b146101c557806394d9c9c7146101e3576100cd565b806306fdde03146100d1578063095ea7b3146100ef57806318160ddd1461011f57806323b872dd1461013d578063313ce5671461016d57806370a082311461018b575b5f80fd5b6100d9610299565b6040516100e69190610f32565b60405180910390f35b61010960048036038101906101049190610fe3565b610329565b604051610116919061103b565b60405180910390f35b6101276103e2565b6040516101349190611063565b60405180910390f35b6101576004803603810190610152919061107c565b6103eb565b604051610164919061103b565b60405180910390f35b610175610419565b60405161018291906110e7565b60405180910390f35b6101a560048036038101906101a09190611100565b610421565b6040516101b29190611063565b60405180910390f35b6101c3610466565b005b6101cd610479565b6040516101da919061113a565b60405180910390f35b6101fd60048036038101906101f89190611100565b6104a1565b005b6102076104ec565b6040516102149190610f32565b60405180910390f35b61023760048036038101906102329190610fe3565b61057c565b604051610244919061103b565b60405180910390f35b61026760048036038101906102629190611153565b61059e565b6040516102749190611063565b60405180910390f35b61029760048036038101906102929190611100565b610620565b005b6060600480546102a8906111be565b80601f01602080910402602001604051908101604052809291908181526020018280546102d4906111be565b801561031f5780601f106102f65761010080835404028352916020019161031f565b820191905f5260205f20905b81548152906001019060200180831161030257829003601f168201915b5050505050905090565b5f806103336106a4565b905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036103cc578260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6103d78185856106ab565b600191505092915050565b5f600354905090565b5f806103f56106a4565b90506104028582856106bd565b61040d85858561074f565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61046e61083f565b6104775f6108c6565b565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104a961083f565b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600580546104fb906111be565b80601f0160208091040260200160405190810160405280929190818152602001828054610527906111be565b80156105725780601f1061054957610100808354040283529160200191610572565b820191905f5260205f20905b81548152906001019060200180831161055557829003601f168201915b5050505050905090565b5f806105866106a4565b905061059381858561074f565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61062861083f565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610698575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161068f919061113a565b60405180910390fd5b6106a1816108c6565b50565b5f33905090565b6106b88383836001610989565b505050565b5f6106c8848461059e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610749578181101561073a578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610731939291906111ee565b60405180910390fd5b61074884848484035f610989565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107bf575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016107b6919061113a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361082f575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610826919061113a565b60405180910390fd5b61083a838383610b58565b505050565b6108476106a4565b73ffffffffffffffffffffffffffffffffffffffff16610865610479565b73ffffffffffffffffffffffffffffffffffffffff16146108c4576108886106a4565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016108bb919061113a565b60405180910390fd5b565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036109f9575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016109f0919061113a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a69575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610a60919061113a565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610b52578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b499190611063565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ba8578060035f828254610b9c9190611250565b92505081905550610c76565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610c31578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610c28939291906111ee565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cbd578060035f8282540392505081905550610db4565b610f2060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d469190611250565b10610d6a57620bd2236109e382610d5d9190611283565b610d6791906112f1565b90505b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b60e460025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205403610e3e57610f2060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e9b9190611063565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610edf578082015181840152602081019050610ec4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610f0482610ea8565b610f0e8185610eb2565b9350610f1e818560208601610ec2565b610f2781610eea565b840191505092915050565b5f6020820190508181035f830152610f4a8184610efa565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f7f82610f56565b9050919050565b610f8f81610f75565b8114610f99575f80fd5b50565b5f81359050610faa81610f86565b92915050565b5f819050919050565b610fc281610fb0565b8114610fcc575f80fd5b50565b5f81359050610fdd81610fb9565b92915050565b5f8060408385031215610ff957610ff8610f52565b5b5f61100685828601610f9c565b925050602061101785828601610fcf565b9150509250929050565b5f8115159050919050565b61103581611021565b82525050565b5f60208201905061104e5f83018461102c565b92915050565b61105d81610fb0565b82525050565b5f6020820190506110765f830184611054565b92915050565b5f805f6060848603121561109357611092610f52565b5b5f6110a086828701610f9c565b93505060206110b186828701610f9c565b92505060406110c286828701610fcf565b9150509250925092565b5f60ff82169050919050565b6110e1816110cc565b82525050565b5f6020820190506110fa5f8301846110d8565b92915050565b5f6020828403121561111557611114610f52565b5b5f61112284828501610f9c565b91505092915050565b61113481610f75565b82525050565b5f60208201905061114d5f83018461112b565b92915050565b5f806040838503121561116957611168610f52565b5b5f61117685828601610f9c565b925050602061118785828601610f9c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806111d557607f821691505b6020821081036111e8576111e7611191565b5b50919050565b5f6060820190506112015f83018661112b565b61120e6020830185611054565b61121b6040830184611054565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61125a82610fb0565b915061126583610fb0565b925082820190508082111561127d5761127c611223565b5b92915050565b5f61128d82610fb0565b915061129883610fb0565b92508282026112a681610fb0565b915082820484148315176112bd576112bc611223565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6112fb82610fb0565b915061130683610fb0565b925082611316576113156112c4565b5b82820490509291505056fea26469706673582212205877f42a677bc0bd661fe28eeaa475f449b59abd50c7fdb66c380da3be2dbac964736f6c63430008150033