Mumbai Testnet

Token

Diverse USDC (dUSDC)
ERC-20

Overview

Max Total Supply

0 dUSDC

Holders

261

Market

Price

$0.00 @ 0.000000 MATIC

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
0 dUSDC
0x9aafe4dc8cca7830bd96a8ec9a8dd9d88086e232
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x4D771e8c...5702184aF
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
DiverseUsdcToken

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 7 : DiverseUsdcToken.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

import "./Token/AbstractFiatTokenV1.sol";
import "./Token/Ownable.sol";
import "./Token/Pausable.sol";
import "./Token/Blacklistable.sol";

import "./Token/SafeMathLibrary.sol";

// File: contracts/v1/FiatTokenV1.sol
/**
 * @title FiatToken
 * @dev ERC20 Token backed by fiat reserves
 */
contract DiverseUsdcToken is AbstractFiatTokenV1, Ownable, Pausable, Blacklistable {
    using SafeMath for uint256;

    string public name;
    string public symbol;
    uint8 public decimals;
    string public currency;
    address public masterMinter;
    bool internal initialized;

    mapping(address => uint256) internal balances;
    mapping(address => mapping(address => uint256)) internal allowed;
    uint256 internal totalSupply_ = 0;
    mapping(address => bool) internal minters;
    mapping(address => uint256) internal minterAllowed;

    event Mint(address indexed minter, address indexed to, uint256 amount);
    event Burn(address indexed burner, uint256 amount);
    event MinterConfigured(address indexed minter, uint256 minterAllowedAmount);
    event MinterRemoved(address indexed oldMinter);
    event MasterMinterChanged(address indexed newMasterMinter);

    function initialize(
        string memory tokenName,
        string memory tokenSymbol,
        string memory tokenCurrency,
        uint8 tokenDecimals,
        address newMasterMinter,
        address newPauser,
        address newBlacklister,
        address newOwner
    ) public {
        require(!initialized, "FiatToken: contract is already initialized");
        require(
            newMasterMinter != address(0),
            "FiatToken: new masterMinter is the zero address"
        );
        require(
            newPauser != address(0),
            "FiatToken: new pauser is the zero address"
        );
        require(
            newBlacklister != address(0),
            "FiatToken: new blacklister is the zero address"
        );
        require(
            newOwner != address(0),
            "FiatToken: new owner is the zero address"
        );

        name = tokenName;
        symbol = tokenSymbol;
        currency = tokenCurrency;
        decimals = tokenDecimals;
        masterMinter = newMasterMinter;
        pauser = newPauser;
        blacklister = newBlacklister;
        setOwner(newOwner);
        initialized = true;
    }

    /**
     * @dev Throws if called by any account other than a minter
     */
    modifier onlyMinters() {
        require(minters[msg.sender], "FiatToken: caller is not a minter");
        _;
    }

    /**
     * @dev Function to mint tokens
     * @param _to The address that will receive the minted tokens.
     * @param _amount The amount of tokens to mint. Must be less than or equal
     * to the minterAllowance of the caller.
     * @return A boolean that indicates if the operation was successful.
     */
    function mint(address _to, uint256 _amount)
        external
        whenNotPaused
        onlyMinters
        notBlacklisted(msg.sender)
        notBlacklisted(_to)
        returns (bool)
    {
        require(_to != address(0), "FiatToken: mint to the zero address");
        require(_amount > 0, "FiatToken: mint amount not greater than 0");

        uint256 mintingAllowedAmount = minterAllowed[msg.sender];
        require(
            _amount <= mintingAllowedAmount,
            "FiatToken: mint amount exceeds minterAllowance"
        );

        totalSupply_ = totalSupply_.add(_amount);
        balances[_to] = balances[_to].add(_amount);
        minterAllowed[msg.sender] = mintingAllowedAmount.sub(_amount);
        emit Mint(msg.sender, _to, _amount);
        emit Transfer(address(0), _to, _amount);
        return true;
    }

    /**
     * @dev Throws if called by any account other than the masterMinter
     */
    modifier onlyMasterMinter() {
        require(
            msg.sender == masterMinter,
            "FiatToken: caller is not the masterMinter"
        );
        _;
    }

    /**
     * @dev Get minter allowance for an account
     * @param minter The address of the minter
     */
    function minterAllowance(address minter) external view returns (uint256) {
        return minterAllowed[minter];
    }

    /**
     * @dev Checks if account is a minter
     * @param account The address to check
     */
    function isMinter(address account) external view returns (bool) {
        return minters[account];
    }

    /**
     * @notice Amount of remaining tokens spender is allowed to transfer on
     * behalf of the token owner
     * @param owner     Token owner's address
     * @param spender   Spender's address
     * @return Allowance amount
     */
    function allowance(address owner, address spender)
        external
        override
        view
        returns (uint256)
    {
        return allowed[owner][spender];
    }

    /**
     * @dev Get totalSupply of token
     */
    function totalSupply() external override view returns (uint256) {
        return totalSupply_;
    }

    /**
     * @dev Get token balance of an account
     * @param account address The account
     */
    function balanceOf(address account)
        external
        override
        view
        returns (uint256)
    {
        return balances[account];
    }

    /**
     * @notice Set spender's allowance over the caller's tokens to be a given
     * value.
     * @param spender   Spender's address
     * @param value     Allowance amount
     * @return True if successful
     */
    function approve(address spender, uint256 value)
        external
        override
        whenNotPaused
        notBlacklisted(msg.sender)
        notBlacklisted(spender)
        returns (bool)
    {
        _approve(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev Internal function to set allowance
     * @param owner     Token owner's address
     * @param spender   Spender's address
     * @param value     Allowance amount
     */
    function _approve(
        address owner,
        address spender,
        uint256 value
    ) internal override {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        allowed[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    /**
     * @notice Transfer tokens by spending allowance
     * @param from  Payer's address
     * @param to    Payee's address
     * @param value Transfer amount
     * @return True if successful
     */
    function transferFrom(
        address from,
        address to,
        uint256 value
    )
        external
        override
        whenNotPaused
        notBlacklisted(msg.sender)
        notBlacklisted(from)
        notBlacklisted(to)
        returns (bool)
    {
        require(
            value <= allowed[from][msg.sender],
            "ERC20: transfer amount exceeds allowance"
        );
        _transfer(from, to, value);
        allowed[from][msg.sender] = allowed[from][msg.sender].sub(value);
        return true;
    }

    /**
     * @notice Transfer tokens from the caller
     * @param to    Payee's address
     * @param value Transfer amount
     * @return True if successful
     */
    function transfer(address to, uint256 value)
        external
        override
        whenNotPaused
        notBlacklisted(msg.sender)
        notBlacklisted(to)
        returns (bool)
    {
        _transfer(msg.sender, to, value);
        return true;
    }

    /**
     * @notice Internal function to process transfers
     * @param from  Payer's address
     * @param to    Payee's address
     * @param value Transfer amount
     */
    function _transfer(
        address from,
        address to,
        uint256 value
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(
            value <= balances[from],
            "ERC20: transfer amount exceeds balance"
        );

        balances[from] = balances[from].sub(value);
        balances[to] = balances[to].add(value);
        emit Transfer(from, to, value);
    }

    /**
     * @dev Function to add/update a new minter
     * @param minter The address of the minter
     * @param minterAllowedAmount The minting amount allowed for the minter
     * @return True if the operation was successful.
     */
    function configureMinter(address minter, uint256 minterAllowedAmount)
        external
        whenNotPaused
        onlyMasterMinter
        returns (bool)
    {
        minters[minter] = true;
        minterAllowed[minter] = minterAllowedAmount;
        emit MinterConfigured(minter, minterAllowedAmount);
        return true;
    }

    /**
     * @dev Function to remove a minter
     * @param minter The address of the minter to remove
     * @return True if the operation was successful.
     */
    function removeMinter(address minter)
        external
        onlyMasterMinter
        returns (bool)
    {
        minters[minter] = false;
        minterAllowed[minter] = 0;
        emit MinterRemoved(minter);
        return true;
    }

    /**
     * @dev allows a minter to burn some of its own tokens
     * Validates that caller is a minter and that sender is not blacklisted
     * amount is less than or equal to the minter's account balance
     * @param _amount uint256 the amount of tokens to be burned
     */
    function burn(uint256 _amount)
        external
        whenNotPaused
        onlyMinters
        notBlacklisted(msg.sender)
    {
        uint256 balance = balances[msg.sender];
        require(_amount > 0, "FiatToken: burn amount not greater than 0");
        require(balance >= _amount, "FiatToken: burn amount exceeds balance");

        totalSupply_ = totalSupply_.sub(_amount);
        balances[msg.sender] = balance.sub(_amount);
        emit Burn(msg.sender, _amount);
        emit Transfer(msg.sender, address(0), _amount);
    }

    function updateMasterMinter(address _newMasterMinter) external onlyOwner {
        require(
            _newMasterMinter != address(0),
            "FiatToken: new masterMinter is the zero address"
        );
        masterMinter = _newMasterMinter;
        emit MasterMinterChanged(masterMinter);
    }
}

File 2 of 7 : AbstractFiatTokenV1.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

import "./IERC20.sol";

// File: contracts/v1/AbstractFiatTokenV1.sol
abstract contract AbstractFiatTokenV1 is IERC20 {
    function _approve(
        address owner,
        address spender,
        uint256 value
    ) internal virtual;

    function _transfer(
        address from,
        address to,
        uint256 value
    ) internal virtual;
}

File 3 of 7 : Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

// File: contracts/v1/Ownable.sol
/**
 * @notice The Ownable contract has an owner address, and provides basic
 * authorization control functions
 * @dev Forked from https://github.com/OpenZeppelin/openzeppelin-labs/blob/3887ab77b8adafba4a26ace002f3a684c1a3388b/upgradeability_ownership/contracts/ownership/Ownable.sol
 * Modifications:
 * 1. Consolidate OwnableStorage into this contract (7/13/18)
 * 2. Reformat, conform to Solidity 0.6 syntax, and add error messages (5/13/20)
 * 3. Make public functions external (5/27/20)
 */
contract Ownable {
    // Owner of the contract
    address private _owner;

    /**
     * @dev Event to show ownership has been transferred
     * @param previousOwner representing the address of the previous owner
     * @param newOwner representing the address of the new owner
     */
    event OwnershipTransferred(address previousOwner, address newOwner);

    /**
     * @dev The constructor sets the original owner of the contract to the sender account.
     */
    constructor() public {
        setOwner(msg.sender);
    }

    /**
     * @dev Tells the address of the owner
     * @return the address of the owner
     */
    function owner() external view returns (address) {
        return _owner;
    }

    /**
     * @dev Sets a new owner address
     */
    function setOwner(address newOwner) internal {
        _owner = newOwner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == _owner, "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) external onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        setOwner(newOwner);
    }
}

File 4 of 7 : Pausable.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

import "./Ownable.sol";

// File: contracts/v1/Pausable.sol
/**
 * @notice Base contract which allows children to implement an emergency stop
 * mechanism
 * @dev Forked from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/feb665136c0dae9912e08397c1a21c4af3651ef3/contracts/lifecycle/Pausable.sol
 * Modifications:
 * 1. Added pauser role, switched pause/unpause to be onlyPauser (6/14/2018)
 * 2. Removed whenNotPause/whenPaused from pause/unpause (6/14/2018)
 * 3. Removed whenPaused (6/14/2018)
 * 4. Switches ownable library to use ZeppelinOS (7/12/18)
 * 5. Remove constructor (7/13/18)
 * 6. Reformat, conform to Solidity 0.6 syntax and add error messages (5/13/20)
 * 7. Make public functions external (5/27/20)
 */
contract Pausable is Ownable {
    event Pause();
    event Unpause();
    event PauserChanged(address indexed newAddress);

    address public pauser;
    bool public paused = false;

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     */
    modifier whenNotPaused() {
        require(!paused, "Pausable: paused");
        _;
    }

    /**
     * @dev throws if called by any account other than the pauser
     */
    modifier onlyPauser() {
        require(msg.sender == pauser, "Pausable: caller is not the pauser");
        _;
    }

    /**
     * @dev called by the owner to pause, triggers stopped state
     */
    function pause() external onlyPauser {
        paused = true;
        emit Pause();
    }

    /**
     * @dev called by the owner to unpause, returns to normal state
     */
    function unpause() external onlyPauser {
        paused = false;
        emit Unpause();
    }

    /**
     * @dev update the pauser role
     */
    function updatePauser(address _newPauser) external onlyOwner {
        require(
            _newPauser != address(0),
            "Pausable: new pauser is the zero address"
        );
        pauser = _newPauser;
        emit PauserChanged(pauser);
    }
}

File 5 of 7 : Blacklistable.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

import "./Ownable.sol";

// File: contracts/v1/Blacklistable.sol
/**
 * @title Blacklistable Token
 * @dev Allows accounts to be blacklisted by a "blacklister" role
 */
contract Blacklistable is Ownable {
    address public blacklister;
    mapping(address => bool) internal blacklisted;

    event Blacklisted(address indexed _account);
    event UnBlacklisted(address indexed _account);
    event BlacklisterChanged(address indexed newBlacklister);

    /**
     * @dev Throws if called by any account other than the blacklister
     */
    modifier onlyBlacklister() {
        require(
            msg.sender == blacklister,
            "Blacklistable: caller is not the blacklister"
        );
        _;
    }

    /**
     * @dev Throws if argument account is blacklisted
     * @param _account The address to check
     */
    modifier notBlacklisted(address _account) {
        require(
            !blacklisted[_account],
            "Blacklistable: account is blacklisted"
        );
        _;
    }

    /**
     * @dev Checks if account is blacklisted
     * @param _account The address to check
     */
    function isBlacklisted(address _account) external view returns (bool) {
        return blacklisted[_account];
    }

    /**
     * @dev Adds account to blacklist
     * @param _account The address to blacklist
     */
    function blacklist(address _account) external onlyBlacklister {
        blacklisted[_account] = true;
        emit Blacklisted(_account);
    }

    /**
     * @dev Removes account from blacklist
     * @param _account The address to remove from the blacklist
     */
    function unBlacklist(address _account) external onlyBlacklister {
        blacklisted[_account] = false;
        emit UnBlacklisted(_account);
    }

    function updateBlacklister(address _newBlacklister) external onlyOwner {
        require(
            _newBlacklister != address(0),
            "Blacklistable: new blacklister is the zero address"
        );
        blacklister = _newBlacklister;
        emit BlacklisterChanged(blacklister);
    }
}

File 6 of 7 : SafeMathLibrary.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;

// File: @openzeppelin/contracts/math/SafeMath.sol
/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

File 7 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol
/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"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":"newBlacklister","type":"address"}],"name":"BlacklisterChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newMasterMinter","type":"address"}],"name":"MasterMinterChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"minterAllowedAmount","type":"uint256"}],"name":"MinterConfigured","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldMinter","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"PauserChanged","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"},{"anonymous":false,"inputs":[],"name":"Unpause","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":[],"name":"blacklister","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"minterAllowedAmount","type":"uint256"}],"name":"configureMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currency","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"string","name":"tokenCurrency","type":"string"},{"internalType":"uint8","name":"tokenDecimals","type":"uint8"},{"internalType":"address","name":"newMasterMinter","type":"address"},{"internalType":"address","name":"newPauser","type":"address"},{"internalType":"address","name":"newBlacklister","type":"address"},{"internalType":"address","name":"newOwner","type":"address"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"masterMinter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"minterAllowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"unBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newBlacklister","type":"address"}],"name":"updateBlacklister","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMasterMinter","type":"address"}],"name":"updateMasterMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newPauser","type":"address"}],"name":"updatePauser","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526001805460ff60a01b191690556000600b5534801561002257600080fd5b5061002c33610031565b610053565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b612567806100626000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806370a082311161010f578063aa271e1a116100a2578063e5a6b10f11610071578063e5a6b10f14610751578063f2fde38b14610759578063f9f92be41461077f578063fe575a87146107a5576101e5565b8063aa271e1a146106cf578063ad38bf22146106f5578063bd1024301461071b578063dd62ed3e14610723576101e5565b806395d89b41116100de57806395d89b411461066d5780639fd0506d14610675578063a9059cbb1461067d578063aa20e1e4146106a9576101e5565b806370a08231146106115780638456cb59146106375780638a6db9c31461063f5780638da5cb5b14610665576101e5565b80633357162b1161018757806342966c681161015657806342966c681461059a5780634e44d956146105b7578063554bab3c146105e35780635c975abb14610609576101e5565b80633357162b1461036357806335d99f35146105425780633f4ba83a1461056657806340c10f191461056e576101e5565b80631a895266116101c35780631a895266146102c157806323b872dd146102e95780633092afd51461031f578063313ce56714610345576101e5565b806306fdde03146101ea578063095ea7b31461026757806318160ddd146102a7575b600080fd5b6101f26107cb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610859565b604080519115158252519081900360200190f35b6102af61096d565b60408051918252519081900360200190f35b6102e7600480360360208110156102d757600080fd5b50356001600160a01b0316610973565b005b610293600480360360608110156102ff57600080fd5b506001600160a01b03813581169160208101359091169060400135610a05565b6102936004803603602081101561033557600080fd5b50356001600160a01b0316610c2a565b61034d610cd1565b6040805160ff9092168252519081900360200190f35b6102e7600480360361010081101561037a57600080fd5b81019060208101813564010000000081111561039557600080fd5b8201836020820111156103a757600080fd5b803590602001918460018302840111640100000000831117156103c957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561041c57600080fd5b82018360208201111561042e57600080fd5b8035906020019184600183028401116401000000008311171561045057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460018302840111640100000000831117156104d757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813560ff1692505060208101356001600160a01b0390811691604081013582169160608201358116916080013516610cda565b61054a610ee6565b604080516001600160a01b039092168252519081900360200190f35b6102e7610ef5565b6102936004803603604081101561058457600080fd5b506001600160a01b038135169060200135610f76565b6102e7600480360360208110156105b057600080fd5b5035611289565b610293600480360360408110156105cd57600080fd5b506001600160a01b0381351690602001356114a3565b6102e7600480360360208110156105f957600080fd5b50356001600160a01b03166115ac565b61029361168e565b6102af6004803603602081101561062757600080fd5b50356001600160a01b031661169e565b6102e76116b9565b6102af6004803603602081101561065557600080fd5b50356001600160a01b0316611740565b61054a61175b565b6101f261176a565b61054a6117c5565b6102936004803603604081101561069357600080fd5b506001600160a01b0381351690602001356117d4565b6102e7600480360360208110156106bf57600080fd5b50356001600160a01b03166118dd565b610293600480360360208110156106e557600080fd5b50356001600160a01b03166119bf565b6102e76004803603602081101561070b57600080fd5b50356001600160a01b03166119dd565b61054a611abf565b6102af6004803603604081101561073957600080fd5b506001600160a01b0381358116916020013516611ace565b6101f2611af9565b6102e76004803603602081101561076f57600080fd5b50356001600160a01b0316611b54565b6102e76004803603602081101561079557600080fd5b50356001600160a01b0316611c3a565b610293600480360360208110156107bb57600080fd5b50356001600160a01b0316611ccf565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108515780601f1061082657610100808354040283529160200191610851565b820191906000526020600020905b81548152906001019060200180831161083457829003601f168201915b505050505081565b600154600090600160a01b900460ff16156108ae576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b3360008181526003602052604090205460ff16156108fd5760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b6001600160a01b038416600090815260036020526040902054849060ff16156109575760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b610962338686611ced565b506001949350505050565b600b5490565b6002546001600160a01b031633146109bc5760405162461bcd60e51b815260040180806020018281038252602c8152602001806122d8602c913960400191505060405180910390fd5b6001600160a01b038116600081815260036020526040808220805460ff19169055517f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e9190a250565b600154600090600160a01b900460ff1615610a5a576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b3360008181526003602052604090205460ff1615610aa95760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b6001600160a01b038516600090815260036020526040902054859060ff1615610b035760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b6001600160a01b038516600090815260036020526040902054859060ff1615610b5d5760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b6001600160a01b0387166000908152600a60209081526040808320338452909152902054851115610bbf5760405162461bcd60e51b815260040180806020018281038252602881526020018061237a6028913960400191505060405180910390fd5b610bca878787611dd9565b6001600160a01b0387166000908152600a60209081526040808320338452909152902054610bf89086611f68565b6001600160a01b0388166000908152600a60209081526040808320338452909152902055600193505050509392505050565b6008546000906001600160a01b03163314610c765760405162461bcd60e51b81526004018080602001828103825260298152602001806122af6029913960400191505060405180910390fd5b6001600160a01b0382166000818152600c60209081526040808320805460ff19169055600d909152808220829055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a2506001919050565b60065460ff1681565b600854600160a01b900460ff1615610d235760405162461bcd60e51b815260040180806020018281038252602a8152602001806123f0602a913960400191505060405180910390fd5b6001600160a01b038416610d685760405162461bcd60e51b815260040180806020018281038252602f81526020018061234b602f913960400191505060405180910390fd5b6001600160a01b038316610dad5760405162461bcd60e51b81526004018080602001828103825260298152602001806122376029913960400191505060405180910390fd5b6001600160a01b038216610df25760405162461bcd60e51b815260040180806020018281038252602e8152602001806123c2602e913960400191505060405180910390fd5b6001600160a01b038116610e375760405162461bcd60e51b81526004018080602001828103825260288152602001806124b36028913960400191505060405180910390fd5b8751610e4a9060049060208b01906120c4565b508651610e5e9060059060208a01906120c4565b508551610e729060079060208901906120c4565b506006805460ff191660ff8716179055600880546001600160a01b03199081166001600160a01b038781169190911790925560018054821686841617905560028054909116918416919091179055610ec981611fb1565b50506008805460ff60a01b1916600160a01b179055505050505050565b6008546001600160a01b031681565b6001546001600160a01b03163314610f3e5760405162461bcd60e51b81526004018080602001828103825260228152602001806124916022913960400191505060405180910390fd5b6001805460ff60a01b191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b600154600090600160a01b900460ff1615610fcb576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b336000908152600c602052604090205460ff166110195760405162461bcd60e51b815260040180806020018281038252602181526020018061232a6021913960400191505060405180910390fd5b3360008181526003602052604090205460ff16156110685760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b6001600160a01b038416600090815260036020526040902054849060ff16156110c25760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b6001600160a01b0385166111075760405162461bcd60e51b81526004018080602001828103825260238152602001806121cc6023913960400191505060405180910390fd5b600084116111465760405162461bcd60e51b81526004018080602001828103825260298152602001806122606029913960400191505060405180910390fd5b336000908152600d6020526040902054808511156111955760405162461bcd60e51b815260040180806020018281038252602e815260200180612463602e913960400191505060405180910390fd5b600b546111a29086611fd3565b600b556001600160a01b0386166000908152600960205260409020546111c89086611fd3565b6001600160a01b0387166000908152600960205260409020556111eb8186611f68565b336000818152600d602090815260409182902093909355805188815290516001600160a01b038a16937fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8928290030190a36040805186815290516001600160a01b038816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600195945050505050565b600154600160a01b900460ff16156112db576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b336000908152600c602052604090205460ff166113295760405162461bcd60e51b815260040180806020018281038252602181526020018061232a6021913960400191505060405180910390fd5b3360008181526003602052604090205460ff16156113785760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b33600090815260096020526040902054826113c45760405162461bcd60e51b81526004018080602001828103825260298152602001806121a36029913960400191505060405180910390fd5b828110156114035760405162461bcd60e51b81526004018080602001828103825260268152602001806123046026913960400191505060405180910390fd5b600b546114109084611f68565b600b5561141d8184611f68565b33600081815260096020908152604091829020939093558051868152905191927fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca592918290030190a260408051848152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b600154600090600160a01b900460ff16156114f8576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6008546001600160a01b031633146115415760405162461bcd60e51b81526004018080602001828103825260298152602001806122af6029913960400191505060405180910390fd5b6001600160a01b0383166000818152600c60209081526040808320805460ff19166001179055600d825291829020859055815185815291517f46980fca912ef9bcdbd36877427b6b90e860769f604e89c0e67720cece530d209281900390910190a250600192915050565b6000546001600160a01b031633146115f9576040805162461bcd60e51b815260206004820181905260248201526000805160206123a2833981519152604482015290519081900360640190fd5b6001600160a01b03811661163e5760405162461bcd60e51b815260040180806020018281038252602881526020018061217b6028913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fb80482a293ca2e013eda8683c9bd7fc8347cfdaeea5ede58cba46df502c2a60490600090a250565b600154600160a01b900460ff1681565b6001600160a01b031660009081526009602052604090205490565b6001546001600160a01b031633146117025760405162461bcd60e51b81526004018080602001828103825260228152602001806124916022913960400191505060405180910390fd5b6001805460ff60a01b1916600160a01b1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b6001600160a01b03166000908152600d602052604090205490565b6000546001600160a01b031690565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108515780601f1061082657610100808354040283529160200191610851565b6001546001600160a01b031681565b600154600090600160a01b900460ff1615611829576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b3360008181526003602052604090205460ff16156118785760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b6001600160a01b038416600090815260036020526040902054849060ff16156118d25760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b610962338686611dd9565b6000546001600160a01b0316331461192a576040805162461bcd60e51b815260206004820181905260248201526000805160206123a2833981519152604482015290519081900360640190fd5b6001600160a01b03811661196f5760405162461bcd60e51b815260040180806020018281038252602f81526020018061234b602f913960400191505060405180910390fd5b600880546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fdb66dfa9c6b8f5226fe9aac7e51897ae8ee94ac31dc70bb6c9900b2574b707e690600090a250565b6001600160a01b03166000908152600c602052604090205460ff1690565b6000546001600160a01b03163314611a2a576040805162461bcd60e51b815260206004820181905260248201526000805160206123a2833981519152604482015290519081900360640190fd5b6001600160a01b038116611a6f5760405162461bcd60e51b81526004018080602001828103825260328152602001806124db6032913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fc67398012c111ce95ecb7429b933096c977380ee6c421175a71a4a4c6c88c06e90600090a250565b6002546001600160a01b031681565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108515780601f1061082657610100808354040283529160200191610851565b6000546001600160a01b03163314611ba1576040805162461bcd60e51b815260206004820181905260248201526000805160206123a2833981519152604482015290519081900360640190fd5b6001600160a01b038116611be65760405162461bcd60e51b81526004018080602001828103825260268152602001806121ef6026913960400191505060405180910390fd5b600054604080516001600160a01b039283168152918316602083015280517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09281900390910190a1611c3781611fb1565b50565b6002546001600160a01b03163314611c835760405162461bcd60e51b815260040180806020018281038252602c8152602001806122d8602c913960400191505060405180910390fd5b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b8559190a250565b6001600160a01b031660009081526003602052604090205460ff1690565b6001600160a01b038316611d325760405162461bcd60e51b815260040180806020018281038252602481526020018061243f6024913960400191505060405180910390fd5b6001600160a01b038216611d775760405162461bcd60e51b81526004018080602001828103825260228152602001806122156022913960400191505060405180910390fd5b6001600160a01b038084166000818152600a6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611e1e5760405162461bcd60e51b815260040180806020018281038252602581526020018061241a6025913960400191505060405180910390fd5b6001600160a01b038216611e635760405162461bcd60e51b81526004018080602001828103825260238152602001806121586023913960400191505060405180910390fd5b6001600160a01b038316600090815260096020526040902054811115611eba5760405162461bcd60e51b81526004018080602001828103825260268152602001806122896026913960400191505060405180910390fd5b6001600160a01b038316600090815260096020526040902054611edd9082611f68565b6001600160a01b038085166000908152600960205260408082209390935590841681522054611f0c9082611fd3565b6001600160a01b0380841660008181526009602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000611faa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202d565b9392505050565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015611faa576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081848411156120bc5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612081578181015183820152602001612069565b50505050905090810190601f1680156120ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061210557805160ff1916838001178555612132565b82800160010185558215612132579182015b82811115612132578251825591602001919060010190612117565b5061213e929150612142565b5090565b5b8082111561213e576000815560010161214356fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735061757361626c653a206e65772070617573657220697320746865207a65726f206164647265737346696174546f6b656e3a206275726e20616d6f756e74206e6f742067726561746572207468616e203046696174546f6b656e3a206d696e7420746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737346696174546f6b656e3a206e65772070617573657220697320746865207a65726f206164647265737346696174546f6b656e3a206d696e7420616d6f756e74206e6f742067726561746572207468616e203045524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636546696174546f6b656e3a2063616c6c6572206973206e6f7420746865206d61737465724d696e746572426c61636b6c69737461626c653a2063616c6c6572206973206e6f742074686520626c61636b6c697374657246696174546f6b656e3a206275726e20616d6f756e7420657863656564732062616c616e636546696174546f6b656e3a2063616c6c6572206973206e6f742061206d696e74657246696174546f6b656e3a206e6577206d61737465724d696e74657220697320746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657246696174546f6b656e3a206e657720626c61636b6c697374657220697320746865207a65726f206164647265737346696174546f6b656e3a20636f6e747261637420697320616c726561647920696e697469616c697a656445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737346696174546f6b656e3a206d696e7420616d6f756e742065786365656473206d696e746572416c6c6f77616e63655061757361626c653a2063616c6c6572206973206e6f74207468652070617573657246696174546f6b656e3a206e6577206f776e657220697320746865207a65726f2061646472657373426c61636b6c69737461626c653a206e657720626c61636b6c697374657220697320746865207a65726f2061646472657373426c61636b6c69737461626c653a206163636f756e7420697320626c61636b6c6973746564a2646970667358221220246247ebff3760aa3eeea76b46d8b9691b89cc52edb362ed949cbecb82aceb0e64736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101e55760003560e01c806370a082311161010f578063aa271e1a116100a2578063e5a6b10f11610071578063e5a6b10f14610751578063f2fde38b14610759578063f9f92be41461077f578063fe575a87146107a5576101e5565b8063aa271e1a146106cf578063ad38bf22146106f5578063bd1024301461071b578063dd62ed3e14610723576101e5565b806395d89b41116100de57806395d89b411461066d5780639fd0506d14610675578063a9059cbb1461067d578063aa20e1e4146106a9576101e5565b806370a08231146106115780638456cb59146106375780638a6db9c31461063f5780638da5cb5b14610665576101e5565b80633357162b1161018757806342966c681161015657806342966c681461059a5780634e44d956146105b7578063554bab3c146105e35780635c975abb14610609576101e5565b80633357162b1461036357806335d99f35146105425780633f4ba83a1461056657806340c10f191461056e576101e5565b80631a895266116101c35780631a895266146102c157806323b872dd146102e95780633092afd51461031f578063313ce56714610345576101e5565b806306fdde03146101ea578063095ea7b31461026757806318160ddd146102a7575b600080fd5b6101f26107cb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b038135169060200135610859565b604080519115158252519081900360200190f35b6102af61096d565b60408051918252519081900360200190f35b6102e7600480360360208110156102d757600080fd5b50356001600160a01b0316610973565b005b610293600480360360608110156102ff57600080fd5b506001600160a01b03813581169160208101359091169060400135610a05565b6102936004803603602081101561033557600080fd5b50356001600160a01b0316610c2a565b61034d610cd1565b6040805160ff9092168252519081900360200190f35b6102e7600480360361010081101561037a57600080fd5b81019060208101813564010000000081111561039557600080fd5b8201836020820111156103a757600080fd5b803590602001918460018302840111640100000000831117156103c957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561041c57600080fd5b82018360208201111561042e57600080fd5b8035906020019184600183028401116401000000008311171561045057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460018302840111640100000000831117156104d757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050813560ff1692505060208101356001600160a01b0390811691604081013582169160608201358116916080013516610cda565b61054a610ee6565b604080516001600160a01b039092168252519081900360200190f35b6102e7610ef5565b6102936004803603604081101561058457600080fd5b506001600160a01b038135169060200135610f76565b6102e7600480360360208110156105b057600080fd5b5035611289565b610293600480360360408110156105cd57600080fd5b506001600160a01b0381351690602001356114a3565b6102e7600480360360208110156105f957600080fd5b50356001600160a01b03166115ac565b61029361168e565b6102af6004803603602081101561062757600080fd5b50356001600160a01b031661169e565b6102e76116b9565b6102af6004803603602081101561065557600080fd5b50356001600160a01b0316611740565b61054a61175b565b6101f261176a565b61054a6117c5565b6102936004803603604081101561069357600080fd5b506001600160a01b0381351690602001356117d4565b6102e7600480360360208110156106bf57600080fd5b50356001600160a01b03166118dd565b610293600480360360208110156106e557600080fd5b50356001600160a01b03166119bf565b6102e76004803603602081101561070b57600080fd5b50356001600160a01b03166119dd565b61054a611abf565b6102af6004803603604081101561073957600080fd5b506001600160a01b0381358116916020013516611ace565b6101f2611af9565b6102e76004803603602081101561076f57600080fd5b50356001600160a01b0316611b54565b6102e76004803603602081101561079557600080fd5b50356001600160a01b0316611c3a565b610293600480360360208110156107bb57600080fd5b50356001600160a01b0316611ccf565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108515780601f1061082657610100808354040283529160200191610851565b820191906000526020600020905b81548152906001019060200180831161083457829003601f168201915b505050505081565b600154600090600160a01b900460ff16156108ae576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b3360008181526003602052604090205460ff16156108fd5760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b6001600160a01b038416600090815260036020526040902054849060ff16156109575760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b610962338686611ced565b506001949350505050565b600b5490565b6002546001600160a01b031633146109bc5760405162461bcd60e51b815260040180806020018281038252602c8152602001806122d8602c913960400191505060405180910390fd5b6001600160a01b038116600081815260036020526040808220805460ff19169055517f117e3210bb9aa7d9baff172026820255c6f6c30ba8999d1c2fd88e2848137c4e9190a250565b600154600090600160a01b900460ff1615610a5a576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b3360008181526003602052604090205460ff1615610aa95760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b6001600160a01b038516600090815260036020526040902054859060ff1615610b035760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b6001600160a01b038516600090815260036020526040902054859060ff1615610b5d5760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b6001600160a01b0387166000908152600a60209081526040808320338452909152902054851115610bbf5760405162461bcd60e51b815260040180806020018281038252602881526020018061237a6028913960400191505060405180910390fd5b610bca878787611dd9565b6001600160a01b0387166000908152600a60209081526040808320338452909152902054610bf89086611f68565b6001600160a01b0388166000908152600a60209081526040808320338452909152902055600193505050509392505050565b6008546000906001600160a01b03163314610c765760405162461bcd60e51b81526004018080602001828103825260298152602001806122af6029913960400191505060405180910390fd5b6001600160a01b0382166000818152600c60209081526040808320805460ff19169055600d909152808220829055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a2506001919050565b60065460ff1681565b600854600160a01b900460ff1615610d235760405162461bcd60e51b815260040180806020018281038252602a8152602001806123f0602a913960400191505060405180910390fd5b6001600160a01b038416610d685760405162461bcd60e51b815260040180806020018281038252602f81526020018061234b602f913960400191505060405180910390fd5b6001600160a01b038316610dad5760405162461bcd60e51b81526004018080602001828103825260298152602001806122376029913960400191505060405180910390fd5b6001600160a01b038216610df25760405162461bcd60e51b815260040180806020018281038252602e8152602001806123c2602e913960400191505060405180910390fd5b6001600160a01b038116610e375760405162461bcd60e51b81526004018080602001828103825260288152602001806124b36028913960400191505060405180910390fd5b8751610e4a9060049060208b01906120c4565b508651610e5e9060059060208a01906120c4565b508551610e729060079060208901906120c4565b506006805460ff191660ff8716179055600880546001600160a01b03199081166001600160a01b038781169190911790925560018054821686841617905560028054909116918416919091179055610ec981611fb1565b50506008805460ff60a01b1916600160a01b179055505050505050565b6008546001600160a01b031681565b6001546001600160a01b03163314610f3e5760405162461bcd60e51b81526004018080602001828103825260228152602001806124916022913960400191505060405180910390fd5b6001805460ff60a01b191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b600154600090600160a01b900460ff1615610fcb576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b336000908152600c602052604090205460ff166110195760405162461bcd60e51b815260040180806020018281038252602181526020018061232a6021913960400191505060405180910390fd5b3360008181526003602052604090205460ff16156110685760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b6001600160a01b038416600090815260036020526040902054849060ff16156110c25760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b6001600160a01b0385166111075760405162461bcd60e51b81526004018080602001828103825260238152602001806121cc6023913960400191505060405180910390fd5b600084116111465760405162461bcd60e51b81526004018080602001828103825260298152602001806122606029913960400191505060405180910390fd5b336000908152600d6020526040902054808511156111955760405162461bcd60e51b815260040180806020018281038252602e815260200180612463602e913960400191505060405180910390fd5b600b546111a29086611fd3565b600b556001600160a01b0386166000908152600960205260409020546111c89086611fd3565b6001600160a01b0387166000908152600960205260409020556111eb8186611f68565b336000818152600d602090815260409182902093909355805188815290516001600160a01b038a16937fab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8928290030190a36040805186815290516001600160a01b038816916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600195945050505050565b600154600160a01b900460ff16156112db576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b336000908152600c602052604090205460ff166113295760405162461bcd60e51b815260040180806020018281038252602181526020018061232a6021913960400191505060405180910390fd5b3360008181526003602052604090205460ff16156113785760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b33600090815260096020526040902054826113c45760405162461bcd60e51b81526004018080602001828103825260298152602001806121a36029913960400191505060405180910390fd5b828110156114035760405162461bcd60e51b81526004018080602001828103825260268152602001806123046026913960400191505060405180910390fd5b600b546114109084611f68565b600b5561141d8184611f68565b33600081815260096020908152604091829020939093558051868152905191927fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca592918290030190a260408051848152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b600154600090600160a01b900460ff16156114f8576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6008546001600160a01b031633146115415760405162461bcd60e51b81526004018080602001828103825260298152602001806122af6029913960400191505060405180910390fd5b6001600160a01b0383166000818152600c60209081526040808320805460ff19166001179055600d825291829020859055815185815291517f46980fca912ef9bcdbd36877427b6b90e860769f604e89c0e67720cece530d209281900390910190a250600192915050565b6000546001600160a01b031633146115f9576040805162461bcd60e51b815260206004820181905260248201526000805160206123a2833981519152604482015290519081900360640190fd5b6001600160a01b03811661163e5760405162461bcd60e51b815260040180806020018281038252602881526020018061217b6028913960400191505060405180910390fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fb80482a293ca2e013eda8683c9bd7fc8347cfdaeea5ede58cba46df502c2a60490600090a250565b600154600160a01b900460ff1681565b6001600160a01b031660009081526009602052604090205490565b6001546001600160a01b031633146117025760405162461bcd60e51b81526004018080602001828103825260228152602001806124916022913960400191505060405180910390fd5b6001805460ff60a01b1916600160a01b1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b6001600160a01b03166000908152600d602052604090205490565b6000546001600160a01b031690565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108515780601f1061082657610100808354040283529160200191610851565b6001546001600160a01b031681565b600154600090600160a01b900460ff1615611829576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b3360008181526003602052604090205460ff16156118785760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b6001600160a01b038416600090815260036020526040902054849060ff16156118d25760405162461bcd60e51b815260040180806020018281038252602581526020018061250d6025913960400191505060405180910390fd5b610962338686611dd9565b6000546001600160a01b0316331461192a576040805162461bcd60e51b815260206004820181905260248201526000805160206123a2833981519152604482015290519081900360640190fd5b6001600160a01b03811661196f5760405162461bcd60e51b815260040180806020018281038252602f81526020018061234b602f913960400191505060405180910390fd5b600880546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fdb66dfa9c6b8f5226fe9aac7e51897ae8ee94ac31dc70bb6c9900b2574b707e690600090a250565b6001600160a01b03166000908152600c602052604090205460ff1690565b6000546001600160a01b03163314611a2a576040805162461bcd60e51b815260206004820181905260248201526000805160206123a2833981519152604482015290519081900360640190fd5b6001600160a01b038116611a6f5760405162461bcd60e51b81526004018080602001828103825260328152602001806124db6032913960400191505060405180910390fd5b600280546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fc67398012c111ce95ecb7429b933096c977380ee6c421175a71a4a4c6c88c06e90600090a250565b6002546001600160a01b031681565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156108515780601f1061082657610100808354040283529160200191610851565b6000546001600160a01b03163314611ba1576040805162461bcd60e51b815260206004820181905260248201526000805160206123a2833981519152604482015290519081900360640190fd5b6001600160a01b038116611be65760405162461bcd60e51b81526004018080602001828103825260268152602001806121ef6026913960400191505060405180910390fd5b600054604080516001600160a01b039283168152918316602083015280517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09281900390910190a1611c3781611fb1565b50565b6002546001600160a01b03163314611c835760405162461bcd60e51b815260040180806020018281038252602c8152602001806122d8602c913960400191505060405180910390fd5b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517fffa4e6181777692565cf28528fc88fd1516ea86b56da075235fa575af6a4b8559190a250565b6001600160a01b031660009081526003602052604090205460ff1690565b6001600160a01b038316611d325760405162461bcd60e51b815260040180806020018281038252602481526020018061243f6024913960400191505060405180910390fd5b6001600160a01b038216611d775760405162461bcd60e51b81526004018080602001828103825260228152602001806122156022913960400191505060405180910390fd5b6001600160a01b038084166000818152600a6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611e1e5760405162461bcd60e51b815260040180806020018281038252602581526020018061241a6025913960400191505060405180910390fd5b6001600160a01b038216611e635760405162461bcd60e51b81526004018080602001828103825260238152602001806121586023913960400191505060405180910390fd5b6001600160a01b038316600090815260096020526040902054811115611eba5760405162461bcd60e51b81526004018080602001828103825260268152602001806122896026913960400191505060405180910390fd5b6001600160a01b038316600090815260096020526040902054611edd9082611f68565b6001600160a01b038085166000908152600960205260408082209390935590841681522054611f0c9082611fd3565b6001600160a01b0380841660008181526009602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000611faa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202d565b9392505050565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015611faa576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081848411156120bc5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612081578181015183820152602001612069565b50505050905090810190601f1680156120ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061210557805160ff1916838001178555612132565b82800160010185558215612132579182015b82811115612132578251825591602001919060010190612117565b5061213e929150612142565b5090565b5b8082111561213e576000815560010161214356fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735061757361626c653a206e65772070617573657220697320746865207a65726f206164647265737346696174546f6b656e3a206275726e20616d6f756e74206e6f742067726561746572207468616e203046696174546f6b656e3a206d696e7420746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737346696174546f6b656e3a206e65772070617573657220697320746865207a65726f206164647265737346696174546f6b656e3a206d696e7420616d6f756e74206e6f742067726561746572207468616e203045524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636546696174546f6b656e3a2063616c6c6572206973206e6f7420746865206d61737465724d696e746572426c61636b6c69737461626c653a2063616c6c6572206973206e6f742074686520626c61636b6c697374657246696174546f6b656e3a206275726e20616d6f756e7420657863656564732062616c616e636546696174546f6b656e3a2063616c6c6572206973206e6f742061206d696e74657246696174546f6b656e3a206e6577206d61737465724d696e74657220697320746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657246696174546f6b656e3a206e657720626c61636b6c697374657220697320746865207a65726f206164647265737346696174546f6b656e3a20636f6e747261637420697320616c726561647920696e697469616c697a656445524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737346696174546f6b656e3a206d696e7420616d6f756e742065786365656473206d696e746572416c6c6f77616e63655061757361626c653a2063616c6c6572206973206e6f74207468652070617573657246696174546f6b656e3a206e6577206f776e657220697320746865207a65726f2061646472657373426c61636b6c69737461626c653a206e657720626c61636b6c697374657220697320746865207a65726f2061646472657373426c61636b6c69737461626c653a206163636f756e7420697320626c61636b6c6973746564a2646970667358221220246247ebff3760aa3eeea76b46d8b9691b89cc52edb362ed949cbecb82aceb0e64736f6c634300060c0033

[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.