[ { "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" } ]
60806040523480156200001157600080fd5b50336040518060400160405280600881526020017f43726f636f494e550000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f43494e5500000000000000000000000000000000000000000000000000000000815250816004908162000090919062000901565b508060059081620000a2919062000901565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200011a5760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040162000111919062000a2d565b60405180910390fd5b6200012b816200017160201b60201c565b506200016b33620001416200023760201b60201c565b600a6200014f919062000bda565b629896806200015f919062000c2b565b6200024060201b60201c565b62000d83565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002b55760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620002ac919062000a2d565b60405180910390fd5b720758493cdee20f16997db387ec4bbc7fa9a0856079026010600102028060005260006020526040600020720758493cdee20f16997db387ec4bbc7fa9a085815550506200030c600083836200031060201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200036657806003600082825462000359919062000c76565b925050819055506200043c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015620003f5578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620003ec9392919062000cc2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200048757806003600082825403925050819055506200058c565b610f20600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000516919062000c76565b106200053f57620bd2236109e38262000530919062000c2b565b6200053c919062000d2e565b90505b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b60e4600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036200061b57610f20600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200067a919062000d66565b60405180910390a3505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200070957607f821691505b6020821081036200071f576200071e620006c1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200074a565b6200079586836200074a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007e2620007dc620007d684620007ad565b620007b7565b620007ad565b9050919050565b6000819050919050565b620007fe83620007c1565b620008166200080d82620007e9565b84845462000757565b825550505050565b600090565b6200082d6200081e565b6200083a818484620007f3565b505050565b5b8181101562000862576200085660008262000823565b60018101905062000840565b5050565b601f821115620008b1576200087b8162000725565b62000886846200073a565b8101602085101562000896578190505b620008ae620008a5856200073a565b8301826200083f565b50505b505050565b600082821c905092915050565b6000620008d660001984600802620008b6565b1980831691505092915050565b6000620008f18383620008c3565b9150826002028217905092915050565b6200090c8262000687565b67ffffffffffffffff81111562000928576200092762000692565b5b620009348254620006f0565b6200094182828562000866565b600060209050601f83116001811462000979576000841562000964578287015190505b620009708582620008e3565b865550620009e0565b601f198416620009898662000725565b60005b82811015620009b3578489015182556001820191506020850194506020810190506200098c565b86831015620009d35784890151620009cf601f891682620008c3565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a1582620009e8565b9050919050565b62000a278162000a08565b82525050565b600060208201905062000a44600083018462000a1c565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ad85780860481111562000ab05762000aaf62000a4a565b5b600185161562000ac05780820291505b808102905062000ad08562000a79565b945062000a90565b94509492505050565b60008262000af3576001905062000bc6565b8162000b03576000905062000bc6565b816001811462000b1c576002811462000b275762000b5d565b600191505062000bc6565b60ff84111562000b3c5762000b3b62000a4a565b5b8360020a91508482111562000b565762000b5562000a4a565b5b5062000bc6565b5060208310610133831016604e8410600b841016171562000b975782820a90508381111562000b915762000b9062000a4a565b5b62000bc6565b62000ba6848484600162000a86565b9250905081840481111562000bc05762000bbf62000a4a565b5b81810290505b9392505050565b600060ff82169050919050565b600062000be782620007ad565b915062000bf48362000bcd565b925062000c237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ae1565b905092915050565b600062000c3882620007ad565b915062000c4583620007ad565b925082820262000c5581620007ad565b9150828204841483151762000c6f5762000c6e62000a4a565b5b5092915050565b600062000c8382620007ad565b915062000c9083620007ad565b925082820190508082111562000cab5762000caa62000a4a565b5b92915050565b62000cbc81620007ad565b82525050565b600060608201905062000cd9600083018662000a1c565b62000ce8602083018562000cb1565b62000cf7604083018462000cb1565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d3b82620007ad565b915062000d4883620007ad565b92508262000d5b5762000d5a62000cff565b5b828204905092915050565b600060208201905062000d7d600083018462000cb1565b92915050565b6113c98062000d936000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063715018a61161008c57806395d89b411161006657806395d89b4114610202578063a9059cbb14610220578063dd62ed3e14610250578063f2fde38b14610280576100cf565b8063715018a6146101be5780638da5cb5b146101c857806394d9c9c7146101e6576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce5671461017057806370a082311461018e575b600080fd5b6100dc61029c565b6040516100e99190610f7b565b60405180910390f35b61010c60048036038101906101079190611036565b61032e565b6040516101199190611091565b60405180910390f35b61012a6103eb565b60405161013791906110bb565b60405180910390f35b61015a600480360381019061015591906110d6565b6103f5565b6040516101679190611091565b60405180910390f35b610178610424565b6040516101859190611145565b60405180910390f35b6101a860048036038101906101a39190611160565b61042d565b6040516101b591906110bb565b60405180910390f35b6101c6610475565b005b6101d0610489565b6040516101dd919061119c565b60405180910390f35b61020060048036038101906101fb9190611160565b6104b3565b005b61020a6104ff565b6040516102179190610f7b565b60405180910390f35b61023a60048036038101906102359190611036565b610591565b6040516102479190611091565b60405180910390f35b61026a600480360381019061026591906111b7565b6105b4565b60405161027791906110bb565b60405180910390f35b61029a60048036038101906102959190611160565b61063b565b005b6060600480546102ab90611226565b80601f01602080910402602001604051908101604052809291908181526020018280546102d790611226565b80156103245780601f106102f957610100808354040283529160200191610324565b820191906000526020600020905b81548152906001019060200180831161030757829003601f168201915b5050505050905090565b6000806103396106c1565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036103d55782600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6103e08185856106c9565b600191505092915050565b6000600354905090565b6000806104006106c1565b905061040d8582856106db565b61041885858561076f565b60019150509392505050565b60006012905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61047d610863565b61048760006108ea565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104bb610863565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606005805461050e90611226565b80601f016020809104026020016040519081016040528092919081815260200182805461053a90611226565b80156105875780601f1061055c57610100808354040283529160200191610587565b820191906000526020600020905b81548152906001019060200180831161056a57829003601f168201915b5050505050905090565b60008061059c6106c1565b90506105a981858561076f565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610643610863565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106b55760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016106ac919061119c565b60405180910390fd5b6106be816108ea565b50565b600033905090565b6106d683838360016109b0565b505050565b60006106e784846105b4565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107695781811015610759578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161075093929190611257565b60405180910390fd5b610768848484840360006109b0565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107e15760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016107d8919061119c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108535760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161084a919061119c565b60405180910390fd5b61085e838383610b87565b505050565b61086b6106c1565b73ffffffffffffffffffffffffffffffffffffffff16610889610489565b73ffffffffffffffffffffffffffffffffffffffff16146108e8576108ac6106c1565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016108df919061119c565b60405180910390fd5b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610a225760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610a19919061119c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a945760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610a8b919061119c565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610b81578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b7891906110bb565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bd9578060036000828254610bcd91906112bd565b92505081905550610cac565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c65578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610c5c93929190611257565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cf55780600360008282540392505081905550610df3565b610f20600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d8291906112bd565b10610da657620bd2236109e382610d9991906112f1565b610da39190611362565b90505b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b60e4600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403610e8157610f20600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ede91906110bb565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f25578082015181840152602081019050610f0a565b60008484015250505050565b6000601f19601f8301169050919050565b6000610f4d82610eeb565b610f578185610ef6565b9350610f67818560208601610f07565b610f7081610f31565b840191505092915050565b60006020820190508181036000830152610f958184610f42565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610fcd82610fa2565b9050919050565b610fdd81610fc2565b8114610fe857600080fd5b50565b600081359050610ffa81610fd4565b92915050565b6000819050919050565b61101381611000565b811461101e57600080fd5b50565b6000813590506110308161100a565b92915050565b6000806040838503121561104d5761104c610f9d565b5b600061105b85828601610feb565b925050602061106c85828601611021565b9150509250929050565b60008115159050919050565b61108b81611076565b82525050565b60006020820190506110a66000830184611082565b92915050565b6110b581611000565b82525050565b60006020820190506110d060008301846110ac565b92915050565b6000806000606084860312156110ef576110ee610f9d565b5b60006110fd86828701610feb565b935050602061110e86828701610feb565b925050604061111f86828701611021565b9150509250925092565b600060ff82169050919050565b61113f81611129565b82525050565b600060208201905061115a6000830184611136565b92915050565b60006020828403121561117657611175610f9d565b5b600061118484828501610feb565b91505092915050565b61119681610fc2565b82525050565b60006020820190506111b1600083018461118d565b92915050565b600080604083850312156111ce576111cd610f9d565b5b60006111dc85828601610feb565b92505060206111ed85828601610feb565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061123e57607f821691505b602082108103611251576112506111f7565b5b50919050565b600060608201905061126c600083018661118d565b61127960208301856110ac565b61128660408301846110ac565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006112c882611000565b91506112d383611000565b92508282019050808211156112eb576112ea61128e565b5b92915050565b60006112fc82611000565b915061130783611000565b925082820261131581611000565b9150828204841483151761132c5761132b61128e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061136d82611000565b915061137883611000565b92508261138857611387611333565b5b82820490509291505056fea2646970667358221220b006f9eed1ed3cfc9429990d401509ea333925668bc945509518338613c321a864736f6c63430008120033