[ { "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": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "NotInitializing", "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": "account", "type": "address" } ], "name": "Blacklisted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Disbursed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "string", "name": "name", "type": "string" }, { "indexed": false, "internalType": "string", "name": "symbol", "type": "string" } ], "name": "Initialized", "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "UnBlacklisted", "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": "blacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" } ], "name": "blacklistList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address[]", "name": "addresses", "type": "address[]" }, { "internalType": "uint256[]", "name": "disbursements", "type": "uint256[]" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isBlacklisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [], "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": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "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" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "unBlacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801561001057600080fd5b50611b7f806100206000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806370a08231116100b2578063a9059cbb11610081578063f2fde38b11610066578063f2fde38b14610313578063f9f92be414610326578063fe575a871461033957600080fd5b8063a9059cbb1461029b578063dd62ed3e146102ae57600080fd5b806370a08231146101ef578063715018a6146102445780638da5cb5b1461024c57806395d89b411461029357600080fd5b806323b872dd116100ee57806323b872dd146101a7578063300618e3146101ba578063313ce567146101cd578063445d9787146101dc57600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd146101615780631a89526614610192575b600080fd5b610128610372565b6040516101359190611524565b60405180910390f35b61015161014c366004611567565b610447565b6040519015158152602001610135565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610135565b6101a56101a0366004611591565b610461565b005b6101516101b53660046115ac565b610571565b6101a56101c8366004611700565b6106aa565b60405160128152602001610135565b6101a56101ea3660046117cb565b6106ec565b6101846101fd366004611591565b73ffffffffffffffffffffffffffffffffffffffff1660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b6101a5610a2d565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610135565b610128610a41565b6101516102a9366004611567565b610a92565b6101846102bc3660046118cb565b73ffffffffffffffffffffffffffffffffffffffff91821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6101a5610321366004611591565b610bb4565b6101a5610334366004611591565b610c18565b610151610347366004611591565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00916103c3906118fe565b80601f01602080910402602001604051908101604052809291908181526020018280546103ef906118fe565b801561043c5780601f106104115761010080835404028352916020019161043c565b820191906000526020600020905b81548152906001019060200180831161041f57829003601f168201915b505050505091505090565b600033610455818585610cb9565b60019150505b92915050565b610469610ccb565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604090205460ff166104fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c697374656400000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e9190a250565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040812054849060ff1615610603576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4163636f756e7420697320626c61636b6c69737465640000000000000000000060448201526064016104f4565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208190526040902054849060ff1615610695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4163636f756e7420697320626c61636b6c69737465640000000000000000000060448201526064016104f4565b6106a0868686610d59565b9695505050505050565b6106b2610ccb565b60005b81518110156106e8576106e08282815181106106d3576106d3611951565b6020026020010151610d7d565b6001016106b5565b5050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156107375750825b905060008267ffffffffffffffff1660011480156107545750303b155b905081158015610762575080155b15610799576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117855583156107fa5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6108048989610df4565b61080d33610e06565b855187511461089e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f41646472657373657320616e642064697362757273656d656e7473206c656e6760448201527f7468206d69736d6174636800000000000000000000000000000000000000000060648201526084016104f4565b60005b8751811015610970576108e68882815181106108bf576108bf611951565b60200260200101518883815181106108d9576108d9611951565b6020026020010151610e17565b8781815181106108f8576108f8611951565b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f5724630c7039b7451802c963e5285779ee0776995655e2fb2cc6215d909493d988838151811061094957610949611951565b602002602001015160405161096091815260200190565b60405180910390a26001016108a1565b503373ffffffffffffffffffffffffffffffffffffffff167f82dfd53401a55bb491abcb3e7a97c99da1ed7eaffd89721d3e96e8e8ad4a692d8a8a6040516109b9929190611980565b60405180910390a28315610a225784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610a35610ccb565b610a3f6000610e73565b565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00916103c3906118fe565b3360008181526020819052604081205490919060ff1615610b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4163636f756e7420697320626c61636b6c69737465640000000000000000000060448201526064016104f4565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208190526040902054849060ff1615610ba1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4163636f756e7420697320626c61636b6c69737465640000000000000000000060448201526064016104f4565b610bab8585610f09565b95945050505050565b610bbc610ccb565b73ffffffffffffffffffffffffffffffffffffffff8116610c0c576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016104f4565b610c1581610e73565b50565b610c20610ccb565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604090205460ff1615610cb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c6973746564000060448201526064016104f4565b610c1581610d7d565b610cc68383836001610f17565b505050565b33610d0a7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610a3f576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016104f4565b600033610d67858285611084565b610d72858585611172565b506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b8559190a250565b610dfc61121d565b6106e88282611284565b610e0e61121d565b610c15816112e7565b73ffffffffffffffffffffffffffffffffffffffff8216610e67576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016104f4565b6106e8600083836112ef565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b600033610455818585611172565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0073ffffffffffffffffffffffffffffffffffffffff8516610f88576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024016104f4565b73ffffffffffffffffffffffffffffffffffffffff8416610fd8576040517f94280d62000000000000000000000000000000000000000000000000000000008152600060048201526024016104f4565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526001830160209081526040808320938816835292905220839055811561107d578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161107491815260200190565b60405180910390a35b5050505050565b73ffffffffffffffffffffffffffffffffffffffff83811660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461116c578181101561115d576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064016104f4565b61116c84848484036000610f17565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166111c2576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024016104f4565b73ffffffffffffffffffffffffffffffffffffffff8216611212576040517fec442f05000000000000000000000000000000000000000000000000000000008152600060048201526024016104f4565b610cc68383836112ef565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16610a3f576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61128c61121d565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036112d884826119f5565b506004810161116c83826119f5565b610bbc61121d565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0073ffffffffffffffffffffffffffffffffffffffff841661134a578181600201600082825461133f9190611b0f565b909155506113fc9050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208290526040902054828110156113d0576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260248101829052604481018490526064016104f4565b73ffffffffffffffffffffffffffffffffffffffff851660009081526020839052604090209083900390555b73ffffffffffffffffffffffffffffffffffffffff8316611427576002810180548390039055611453565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020829052604090208054830190555b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114b291815260200190565b60405180910390a350505050565b6000815180845260005b818110156114e6576020818501810151868301820152016114ca565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061153760208301846114c0565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461156257600080fd5b919050565b6000806040838503121561157a57600080fd5b6115838361153e565b946020939093013593505050565b6000602082840312156115a357600080fd5b6115378261153e565b6000806000606084860312156115c157600080fd5b6115ca8461153e565b92506115d86020850161153e565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561165e5761165e6115e8565b604052919050565b600067ffffffffffffffff821115611680576116806115e8565b5060051b60200190565b600082601f83011261169b57600080fd5b813560206116b06116ab83611666565b611617565b8083825260208201915060208460051b8701019350868411156116d257600080fd5b602086015b848110156116f5576116e88161153e565b83529183019183016116d7565b509695505050505050565b60006020828403121561171257600080fd5b813567ffffffffffffffff81111561172957600080fd5b6117358482850161168a565b949350505050565b600082601f83011261174e57600080fd5b813567ffffffffffffffff811115611768576117686115e8565b61179960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611617565b8181528460208386010111156117ae57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156117e157600080fd5b843567ffffffffffffffff808211156117f957600080fd5b6118058883890161173d565b955060209150818701358181111561181c57600080fd5b61182889828a0161173d565b95505060408701358181111561183d57600080fd5b61184989828a0161168a565b94505060608701358181111561185e57600080fd5b87019050601f8101881361187157600080fd5b803561187f6116ab82611666565b81815260059190911b8201830190838101908a83111561189e57600080fd5b928401925b828410156118bc578335825292840192908401906118a3565b979a9699509497505050505050565b600080604083850312156118de57600080fd5b6118e78361153e565b91506118f56020840161153e565b90509250929050565b600181811c9082168061191257607f821691505b60208210810361194b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60408152600061199360408301856114c0565b8281036020840152610bab81856114c0565b601f821115610cc6576000816000526020600020601f850160051c810160208610156119ce5750805b601f850160051c820191505b818110156119ed578281556001016119da565b505050505050565b815167ffffffffffffffff811115611a0f57611a0f6115e8565b611a2381611a1d84546118fe565b846119a5565b602080601f831160018114611a765760008415611a405750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556119ed565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015611ac357888601518255948401946001909101908401611aa4565b5085821015611aff57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561045b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122092d886721888351ca500def930837f2e9c3761c96765027581edacf960a2a1e464736f6c63430008180033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000000a5343554d4e55474745540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064e5547474554000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001bc389bac97a859ad2a5e25830d468c8f85bc71d0000000000000000000000001586c2593ca1d2776d0e743e41007812ddab5c9800000000000000000000000014cb7e4d0a6ed69bf531d474d04cb97448faa1440000000000000000000000007e2b9db77527dc4ee40999210abbda2e708541fe000000000000000000000000470783c628c60216ec562a8851d44f776b6df783000000000000000000000000294864cd0e3b0ac9e7ba7a721e75c4a133fd59de000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000010fdd52876de48c14ea00000000000000000000000000000000000000000000010fdd52876de48c14ea00000000000000000000000000000000000000000000010fdd52876de48c14ea00000000000000000000000000000000000000000000000d97ddb9f8b1d3cdd880000000000000000000000000000000000000000000000d97ddb9f8b1d3cdd88000000000000000000000000000000000000000000002048ae99aea65708e23000000