[ { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "maxSupply", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "MaxSupplyExceeded", "type": "error" }, { "inputs": [], "name": "ZeroAmount", "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": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "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": [], "name": "BURNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "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": "amount", "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": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "canBeMinted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "reduceMaxSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "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": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620016c7380380620016c783398101604081905262000034916200016b565b816040518060400160405280600c81526020016b32b9a7b93232b92a37b5b2b760a11b8152506040518060400160405280600781526020016632b9a7a92222a960c91b8152508383838383828281600390816200009291906200024c565b506004620000a182826200024c565b5050506006819055620000b6600085620000c6565b5050505050505050505062000318565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff16620001675760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001263390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080604083850312156200017f57600080fd5b82516001600160a01b03811681146200019757600080fd5b6020939093015192949293505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001d257607f821691505b602082108103620001f357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200024757600081815260208120601f850160051c81016020861015620002225750805b601f850160051c820191505b8181101562000243578281556001016200022e565b5050505b505050565b81516001600160401b03811115620002685762000268620001a7565b6200028081620002798454620001bd565b84620001f9565b602080601f831160018114620002b857600084156200029f5750858301515b600019600386901b1c1916600185901b17855562000243565b600085815260208120601f198616915b82811015620002e957888601518255948401946001909101908401620002c8565b5085821015620003085787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61139f80620003286000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370a08231116100de578063a217fddf11610097578063d539139311610071578063d53913931461036d578063d547741f14610382578063d5abeb0114610395578063dd62ed3e1461039e57600080fd5b8063a217fddf1461033f578063a457c2d714610347578063a9059cbb1461035a57600080fd5b806370a08231146102c257806373532802146102eb57806379cc6790146102fe57806384bd5d2b1461031157806391d148541461032457806395d89b411461033757600080fd5b8063282c51f31161014b57806336568abe1161012557806336568abe14610276578063395093511461028957806340c10f191461029c57806342966c68146102af57600080fd5b8063282c51f31461022b5780632f2ff15d14610252578063313ce5671461026757600080fd5b806301ffc9a71461019357806306fdde03146101bb578063095ea7b3146101d057806318160ddd146101e357806323b872dd146101f5578063248a9ca314610208575b600080fd5b6101a66101a136600461107d565b6103b1565b60405190151581526020015b60405180910390f35b6101c36103e8565b6040516101b291906110cb565b6101a66101de36600461111a565b61047a565b6002545b6040519081526020016101b2565b6101a6610203366004611144565b610492565b6101e7610216366004611180565b60009081526005602052604090206001015490565b6101e77f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b610265610260366004611199565b6104b6565b005b604051601281526020016101b2565b610265610284366004611199565b6104e0565b6101a661029736600461111a565b610563565b6102656102aa36600461111a565b610585565b6102656102bd366004611180565b6105dd565b6101e76102d03660046111c5565b6001600160a01b031660009081526020819052604090205490565b6102656102f9366004611180565b610610565b61026561030c36600461111a565b6106a0565b6101a661031f366004611180565b6106d4565b6101a6610332366004611199565b610710565b6101c361073b565b6101e7600081565b6101a661035536600461111a565b61074a565b6101a661036836600461111a565b6107c5565b6101e760008051602061134a83398151915281565b610265610390366004611199565b6107d3565b6101e760065481565b6101e76103ac3660046111e0565b6107f8565b60006001600160e01b03198216637965db0b60e01b14806103e257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600380546103f79061120a565b80601f01602080910402602001604051908101604052809291908181526020018280546104239061120a565b80156104705780601f1061044557610100808354040283529160200191610470565b820191906000526020600020905b81548152906001019060200180831161045357829003601f168201915b5050505050905090565b600033610488818585610823565b5060019392505050565b6000336104a0858285610947565b6104ab8585856109c1565b506001949350505050565b6000828152600560205260409020600101546104d181610b65565b6104db8383610b72565b505050565b6001600160a01b03811633146105555760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61055f8282610bf8565b5050565b60003361048881858561057683836107f8565b6105809190611254565b610823565b60008051602061134a83398151915261059d81610b65565b600654826105aa60025490565b6105b49190611254565b11156105d357604051638a164f6360e01b815260040160405180910390fd5b6104db8383610c5f565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84861060781610b65565b61055f82610d1e565b60008051602061134a83398151915261062881610b65565b8160000361064957604051631f2a200560e01b815260040160405180910390fd5b6006548211806106675750816006546106629190611267565b600254115b1561068557604051638a164f6360e01b815260040160405180910390fd5b81600660008282546106979190611267565b90915550505050565b7f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8486106ca81610b65565b6104db8383610d28565b600060008051602061134a8339815191526106ee81610b65565b600654836106fb60025490565b6107059190611254565b111591505b50919050565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600480546103f79061120a565b6000338161075882866107f8565b9050838110156107b85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161054c565b6104ab8286868403610823565b6000336104888185856109c1565b6000828152600560205260409020600101546107ee81610b65565b6104db8383610bf8565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108855760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161054c565b6001600160a01b0382166108e65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161054c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061095384846107f8565b905060001981146109bb57818110156109ae5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161054c565b6109bb8484848403610823565b50505050565b6001600160a01b038316610a255760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161054c565b6001600160a01b038216610a875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161054c565b6001600160a01b03831660009081526020819052604090205481811015610aff5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161054c565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36109bb565b610b6f8133610d3d565b50565b610b7c8282610710565b61055f5760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610bb43390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610c028282610710565b1561055f5760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b038216610cb55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161054c565b8060026000828254610cc79190611254565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b610b6f3382610d96565b610d33823383610947565b61055f8282610d96565b610d478282610710565b61055f57610d5481610ec8565b610d5f836020610eda565b604051602001610d7092919061127a565b60408051601f198184030181529082905262461bcd60e51b825261054c916004016110cb565b6001600160a01b038216610df65760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161054c565b6001600160a01b03821660009081526020819052604090205481811015610e6a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161054c565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60606103e26001600160a01b03831660145b60606000610ee98360026112ef565b610ef4906002611254565b67ffffffffffffffff811115610f0c57610f0c611306565b6040519080825280601f01601f191660200182016040528015610f36576020820181803683370190505b509050600360fc1b81600081518110610f5157610f5161131c565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610f8057610f8061131c565b60200101906001600160f81b031916908160001a9053506000610fa48460026112ef565b610faf906001611254565b90505b6001811115611027576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610fe357610fe361131c565b1a60f81b828281518110610ff957610ff961131c565b60200101906001600160f81b031916908160001a90535060049490941c9361102081611332565b9050610fb2565b5083156110765760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161054c565b9392505050565b60006020828403121561108f57600080fd5b81356001600160e01b03198116811461107657600080fd5b60005b838110156110c25781810151838201526020016110aa565b50506000910152565b60208152600082518060208401526110ea8160408501602087016110a7565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461111557600080fd5b919050565b6000806040838503121561112d57600080fd5b611136836110fe565b946020939093013593505050565b60008060006060848603121561115957600080fd5b611162846110fe565b9250611170602085016110fe565b9150604084013590509250925092565b60006020828403121561119257600080fd5b5035919050565b600080604083850312156111ac57600080fd5b823591506111bc602084016110fe565b90509250929050565b6000602082840312156111d757600080fd5b611076826110fe565b600080604083850312156111f357600080fd5b6111fc836110fe565b91506111bc602084016110fe565b600181811c9082168061121e57607f821691505b60208210810361070a57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156103e2576103e261123e565b818103818111156103e2576103e261123e565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516112b28160178501602088016110a7565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516112e38160288401602088016110a7565b01602801949350505050565b80820281158282048414176103e2576103e261123e565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000816113415761134161123e565b50600019019056fe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a26469706673582212200b4ca78ba80b15ae0e9ff29f93c2b86db2468a55c56f1bd01355859081f8ef3464736f6c634300081300330000000000000000000000008307c9feb668784394fa17234b9991091acf523400000000000000000000000000000000000000000000d3c21bcecceda1000000