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