ETH Price: $2,524.42 (-0.55%)

Token

FeSwap DAO (FESW)
 

Overview

Max Total Supply

1,000,000,000 FESW

Holders

20

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Fesw

Compiler Version
v0.7.0+commit.9e61f92b

Optimization Enabled:
Yes with 999999 runs

Other Settings:
istanbul EvmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-08-17
*/

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;

/**
 * @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 addition of two unsigned integers, reverting with custom message on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);

        return c;
    }

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    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 multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b, string memory errorMessage) 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, errorMessage);

        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) {
        // Solidity only automatically asserts when dividing by 0
        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;
    }
}

contract Fesw {
    /// @notice EIP-20 token name for this token
    string public constant name = "FeSwap DAO";

    /// @notice EIP-20 token symbol for this token
    string public constant symbol = "FESW";

    /// @notice EIP-20 token decimals for this token
    uint8 public constant decimals = 18;

    /// @notice Total number of tokens in circulation
    uint public totalSupply = 1_000_000_000e18;     // 1 billion FESW

    /// @notice Address which may mint and burn FESW tokens
    address public minterBurner;

    /// @notice The timestamp after which minting may occur
    uint public mintingAllowedAfter;

    /// @notice Minimum time between mints
    uint32 public constant minimumTimeBetweenMints = 1 days * 365;

    /// @notice Cap that can be minted at each mint after 5 years
    uint public mintCap = 10_000_000e18;      // 10 million FESW

    // @notice Allowance amounts on behalf of others
    // Documentation tag @notice not valid for non-public state variables
    mapping (address => mapping (address => uint96)) internal allowances;

    // @notice Official record of token balances for each account
    mapping (address => uint96) internal balances;

    /// @notice A record of each accounts delegate
    mapping (address => address) public delegates;

    /// @notice A checkpoint for marking number of votes from a given block
    struct Checkpoint {
        uint32 fromBlock;
        uint96 votes;
    }

    /// @notice A record of votes checkpoints for each account, by index
    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;

    /// @notice The number of checkpoints for each account
    mapping (address => uint32) public numCheckpoints;

    /// @notice The EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    /// @notice The EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    /// @notice The EIP-712 typehash for the permit struct used by the contract
    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

    /// @notice A record of states for signing / validating signatures
    mapping (address => uint) public nonces;

    /// @notice An event thats emitted when the minterBurner address is changed
    event MinterBurnerChanged(address minterBurner, address newMinterBurner);

    /// @notice An event thats emitted when an account changes its delegate
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    /// @notice An event thats emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    /// @notice The standard EIP-20 transfer event
    event Transfer(address indexed from, address indexed to, uint256 amount);

    /// @notice The standard EIP-20 approval event
    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /**
     * @notice Construct a new FESW token
     * @param account The initial account to grant all the tokens
     * @param minterBurner_ The account with minting/burning ability
     * @param mintingAllowedAfter_ The timestamp after which minting may occur
     */
    constructor(address account, address minterBurner_, uint mintingAllowedAfter_) {
        require(mintingAllowedAfter_ >= block.timestamp, "FESW::constructor: minting can only begin after deployment");

        balances[account] = uint96(totalSupply);
        emit Transfer(address(0), account, totalSupply);
        minterBurner = minterBurner_;
        emit MinterBurnerChanged(address(0), minterBurner);
        mintingAllowedAfter = mintingAllowedAfter_;
    }

    /**
     * @notice Change the minter/burner address
     * @param minterBurner_ The address of the new minter/burner
     */
    function setMinterBurner(address minterBurner_) external {
        require(msg.sender == minterBurner, "FESW::setMinter: only the minter can change the minter address");
        emit MinterBurnerChanged(minterBurner, minterBurner_);
        minterBurner = minterBurner_;
    }

    /**
     * @notice Mint new tokens
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to be minted
     */
    function mint(address dst, uint rawAmount) external {
        require(msg.sender == minterBurner, "FESW::mint: only the minter can mint");
        require(block.timestamp >= mintingAllowedAfter, "FESW::mint: minting not allowed yet");
        require(dst != address(0), "FESW::mint: cannot transfer to the zero address");
        //maximum 8 times minting
        require(mintCap >= 50_000e18, "FESW::mint: minting not allowed any more");   

        // record the mint
        mintingAllowedAfter = SafeMath.add(block.timestamp, minimumTimeBetweenMints);

        // mint the amount
        uint96 amount = safe96(rawAmount, "FESW::mint: amount exceeds 96 bits");
        require(amount <= mintCap, "FESW::mint: exceeded mint cap");
        mintCap = mintCap / 2;
        totalSupply = safe96(SafeMath.add(totalSupply, amount), "FESW::mint: totalSupply exceeds 96 bits");

        // transfer the amount to the recipient
        balances[dst] = add96(balances[dst], amount, "FESW::mint: transfer amount overflows");
        emit Transfer(address(0), dst, amount);

        // move delegates
        _moveDelegates(address(0), delegates[dst], amount);
    }

    /**
     * @notice Burn some tokens
     */
    function burn() external {
        require(msg.sender == minterBurner, "FESW::burn: Only the burner can burn");

        // burn the amount
        uint96 amount = balances[minterBurner];
        require(amount != 0, "FESW::burn: No FESW token to burn");

        balances[minterBurner] = 0;
        totalSupply = SafeMath.sub(totalSupply, amount);
        emit Transfer(minterBurner, address(0), amount);

        // move delegates
        _moveDelegates(delegates[minterBurner], address(0), amount);
    }

    /**
     * @notice Get the number of tokens `spender` is approved to spend on behalf of `account`
     * @param account The address of the account holding the funds
     * @param spender The address of the account spending the funds
     * @return The number of tokens approved
     */
    function allowance(address account, address spender) external view returns (uint) {
        return allowances[account][spender];
    }

    /**
     * @notice Approve `spender` to transfer up to `amount` from `src`
     * @dev This will overwrite the approval amount for `spender`
     *  and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)
     * @param spender The address of the account which may transfer tokens
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @return Whether or not the approval succeeded
     */
    function approve(address spender, uint rawAmount) external returns (bool) {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "FESW::approve: amount exceeds 96 bits");
        }

        allowances[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);
        return true;
    }

    /**
     * @notice Triggers an approval from owner to spends
     * @param owner The address to approve from
     * @param spender The address to be approved
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @param deadline The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function permit(address owner, address spender, uint rawAmount, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "FESW::permit: amount exceeds 96 bits");
        }

        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, rawAmount, nonces[owner]++, deadline));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "FESW::permit: invalid signature");
        require(signatory == owner, "FESW::permit: unauthorized");
        require(block.timestamp <= deadline, "FESW::permit: signature expired");

        allowances[owner][spender] = amount;

        emit Approval(owner, spender, amount);
    }

    /**
     * @notice Get the number of tokens held by the `account`
     * @param account The address of the account to get the balance of
     * @return The number of tokens held
     */
    function balanceOf(address account) external view returns (uint) {
        return balances[account];
    }

    /**
     * @notice Transfer `amount` tokens from `msg.sender` to `dst`
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transfer(address dst, uint rawAmount) external returns (bool) {
        uint96 amount = safe96(rawAmount, "FESW::transfer: amount exceeds 96 bits");
        _transferTokens(msg.sender, dst, amount);
        return true;
    }

    /**
     * @notice Transfer `amount` tokens from `src` to `dst`
     * @param src The address of the source account
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transferFrom(address src, address dst, uint rawAmount) external returns (bool) {
        address spender = msg.sender;
        uint96 spenderAllowance = allowances[src][spender];
        uint96 amount = safe96(rawAmount, "FESW::approve: amount exceeds 96 bits");

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "FESW::transferFrom: transfer amount exceeds spender allowance");
            allowances[src][spender] = newAllowance;

            emit Approval(src, spender, newAllowance);
        }
        
        _transferTokens(src, dst, amount);
        return true;
    }

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegatee The address to delegate votes to
     */
    function delegate(address delegatee) public {
        return _delegate(msg.sender, delegatee);
    }

    /**
     * @notice Delegates votes from signatory to `delegatee`
     * @param delegatee The address to delegate votes to
     * @param nonce The contract state required to match the signature
     * @param expiry The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "FESW::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "FESW::delegateBySig: invalid nonce");
        require(block.timestamp <= expiry, "FESW::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

    /**
     * @notice Gets the current votes balance for `account`
     * @param account The address to get votes balance
     * @return The number of current votes for `account`
     */
    function getCurrentVotes(address account) external view returns (uint96) {
        uint32 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    /**
     * @notice Determine the prior number of votes for an account as of a block number
     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
     * @param account The address of the account to check
     * @param blockNumber The block number to get the vote balance at
     * @return The number of votes the account had as of the given block
     */
    function getPriorVotes(address account, uint blockNumber) public view returns (uint96) {
        require(blockNumber < block.number, "FESW::getPriorVotes: not yet determined");

        uint32 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }

        // First check most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        // Next check implicit zero balance
        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }

        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromBlock == blockNumber) {
                return cp.votes;
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = delegates[delegator];
        uint96 delegatorBalance = balances[delegator];
        delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _transferTokens(address src, address dst, uint96 amount) internal {
        require(src != address(0), "FESW::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "FESW::_transferTokens: cannot transfer to the zero address");

        balances[src] = sub96(balances[src], amount, "FESW::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "FESW::_transferTokens: transfer amount overflows");
        emit Transfer(src, dst, amount);

        _moveDelegates(delegates[src], delegates[dst], amount);
    }

    function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint96 srcRepNew = sub96(srcRepOld, amount, "FESW::_moveVotes: vote amount underflows");
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint96 dstRepNew = add96(dstRepOld, amount, "FESW::_moveVotes: vote amount overflows");
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal {
      uint32 blockNumber = safe32(block.number, "FESW::_writeCheckpoint: block number exceeds 32 bits");

      if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
          checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
      } else {
          checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
          numCheckpoints[delegatee] = nCheckpoints + 1;
      }

      emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

    function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }

    function safe96(uint n, string memory errorMessage) internal pure returns (uint96) {
        require(n < 2**96, errorMessage);
        return uint96(n);
    }

    function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        uint96 c = a + b;
        require(c >= a, errorMessage);
        return c;
    }

    function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        require(b <= a, errorMessage);
        return a - b;
    }

    function getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"minterBurner_","type":"address"},{"internalType":"uint256","name":"mintingAllowedAfter_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minterBurner","type":"address"},{"indexed":false,"internalType":"address","name":"newMinterBurner","type":"address"}],"name":"MinterBurnerChanged","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","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":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTimeBetweenMints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minterBurner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintingAllowedAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minterBurner_","type":"address"}],"name":"setMinterBurner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526b033b2e3c9fd0803ce80000006000556a084595161401484a0000006003553480156200003057600080fd5b506040516200320a3803806200320a83398101604081905262000053916200017e565b428110156200007f5760405162461bcd60e51b81526004016200007690620001da565b60405180910390fd5b600080546001600160a01b0385168083526005602052604080842080546001600160601b0319166001600160601b0390941693909317909255825491519092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620000ed919062000237565b60405180910390a3600180546001600160a01b0319166001600160a01b0384811691909117918290556040517f5cd7ad3baa6b612b797d53699b140d3d862f62e268971aa522613aaecd347b55926200014c92600092911690620001c0565b60405180910390a160025550620002409050565b80516001600160a01b03811681146200017857600080fd5b92915050565b60008060006060848603121562000193578283fd5b6200019f858562000160565b9250620001b0856020860162000160565b9150604084015190509250925092565b6001600160a01b0392831681529116602082015260400190565b6020808252603a908201527f464553573a3a636f6e7374727563746f723a206d696e74696e672063616e206f60408201527f6e6c7920626567696e206166746572206465706c6f796d656e74000000000000606082015260800190565b90815260200190565b612fba80620002506000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636fcfff45116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e1461037e578063e7a324dc14610391578063ead1be1c14610399578063f1127ed8146103ac576101c4565b8063b4b5ea5714610345578063c3cda52014610358578063d505accf1461036b576101c4565b8063782d6fe1116100d3578063782d6fe1146102f75780637ecebe001461031757806395d89b411461032a578063a9059cbb14610332576101c4565b80636fcfff45146102c957806370a08231146102dc57806376c71ca1146102ef576101c4565b806330b36cef1161016657806344df8e701161014057806344df8e7014610286578063587cde1e1461028e5780635c11d62f146102a15780635c19a95c146102b6576101c4565b806330b36cef14610254578063313ce5671461025c57806340c10f1914610271576101c4565b806320606b70116101a257806320606b701461021c57806323b872dd146102245780632ef8c5a41461023757806330adf81f1461024c576101c4565b806306fdde03146101c9578063095ea7b3146101e757806318160ddd14610207575b600080fd5b6101d16103cd565b6040516101de91906126a7565b60405180910390f35b6101fa6101f5366004612492565b610406565b6040516101de91906125d2565b61020f61052b565b6040516101de91906125dd565b61020f610531565b6101fa6102323660046123e6565b610555565b61023f6106f7565b6040516101de919061258a565b61020f610713565b61020f610737565b61026461073d565b6040516101de9190612d19565b61028461027f366004612492565b610742565b005b610284610a73565b61023f61029c366004612397565b610c29565b6102a9610c51565b6040516101de9190612ce4565b6102846102c4366004612397565b610c59565b6102a96102d7366004612397565b610c63565b61020f6102ea366004612397565b610c7b565b61020f610cb1565b61030a610305366004612492565b610cb7565b6040516101de9190612d27565b61020f610325366004612397565b610f99565b6101d1610fab565b6101fa610340366004612492565b610fe4565b61030a610353366004612397565b611020565b6102846103663660046124bc565b6110cf565b610284610379366004612426565b611370565b61020f61038c3660046123b2565b6117d9565b61020f61181f565b6102846103a7366004612397565b611843565b6103bf6103ba366004612515565b61192f565b6040516101de929190612cf5565b6040518060400160405280600a81526020017f4665537761702044414f0000000000000000000000000000000000000000000081525081565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561045857507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61047d565b61047a83604051806060016040528060258152602001612dcb6025913961196a565b90505b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610517908590612d27565b60405180910390a360019150505b92915050565b60005481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083203380855290835281842054825160608101909352602580845291936bffffffffffffffffffffffff9091169285926105bf9288929190612dcb9083013961196a565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561060b57506bffffffffffffffffffffffff82811614155b156106df57600061063583836040518060600160405280603d8152602001612f23603d91396119bc565b73ffffffffffffffffffffffffffffffffffffffff8981166000818152600460209081526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106d5908590612d27565b60405180910390a3505b6106ea878783611a1f565b5060019695505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60025481565b601281565b60015473ffffffffffffffffffffffffffffffffffffffff16331461079c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612a22565b60405180910390fd5b6002544210156107d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612b96565b73ffffffffffffffffffffffffffffffffffffffff8216610825576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107939061290b565b690a968163f0a57b400000600354101561086b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610793906127e3565b610879426301e13380611c86565b60028190555060006108a382604051806060016040528060228152602001612d826022913961196a565b9050600354816bffffffffffffffffffffffff1611156108ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612718565b6002600354816108fb57fe5b0460035560005461093c9061091e906bffffffffffffffffffffffff8416611c86565b604051806060016040528060278152602001612efc6027913961196a565b6bffffffffffffffffffffffff908116600090815573ffffffffffffffffffffffffffffffffffffffff85168152600560209081526040918290205482516060810190935260258084526109a09491909116928592909190612f6090830139611cc5565b73ffffffffffffffffffffffffffffffffffffffff841660008181526005602052604080822080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a34908590612d27565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff808416600090815260066020526040812054610a6e921683611d20565b505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610ac4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612adc565b60015473ffffffffffffffffffffffffffffffffffffffff166000908152600560205260409020546bffffffffffffffffffffffff1680610b31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612b39565b60015473ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040812080547fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016905554610b97906bffffffffffffffffffffffff8316611f67565b600090815560015460405173ffffffffffffffffffffffffffffffffffffffff909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610be8908590612d27565b60405180910390a360015473ffffffffffffffffffffffffffffffffffffffff908116600090815260066020526040812054610c2692169083611d20565b50565b60066020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610c263382611fa9565b60086020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600560205260409020546bffffffffffffffffffffffff1690565b60035481565b6000438210610cf2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612840565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604090205463ffffffff1680610d2d576000915050610525565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260076020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860181168552925290912054168310610e055773ffffffffffffffffffffffffffffffffffffffff841660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff169050610525565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260076020908152604080832083805290915290205463ffffffff16831015610e4d576000915050610525565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff161115610f4157600282820363ffffffff16048103610e9d61234b565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260076020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff169181019190915290871415610f1c576020015194506105259350505050565b805163ffffffff16871115610f3357819350610f3a565b6001820392505b5050610e73565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260076020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60096020526000908152604090205481565b6040518060400160405280600481526020017f464553570000000000000000000000000000000000000000000000000000000081525081565b60008061100983604051806060016040528060268152602001612df06026913961196a565b9050611016338583611a1f565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205463ffffffff16806110585760006110c8565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b9392505050565b60408051808201909152600a81527f4665537761702044414f0000000000000000000000000000000000000000000060209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f62e653a995128fe1f1e39e9a507edfdee740ce379b334075caa1a2187975cd4761115061205d565b306040516020016111649493929190612658565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf8888886040516020016111b59493929190612627565b604051602081830303815290604052805190602001209050600082826040516020016111e2929190612554565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161121f9493929190612689565b6020604051602081039080840390855afa158015611241573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166112b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612c87565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600960205260409020805460018101909155891461131f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612968565b87421115611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612a7f565b611363818b611fa9565b505050505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8614156113c157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6113e6565b6113e386604051806060016040528060248152602001612ed86024913961196a565b90505b60408051808201909152600a81527f4665537761702044414f0000000000000000000000000000000000000000000060209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f62e653a995128fe1f1e39e9a507edfdee740ce379b334075caa1a2187975cd4761146761205d565b3060405160200161147b9493929190612658565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012073ffffffffffffffffffffffffffffffffffffffff8d166000908152600983529283208054600181019091559094509192611518927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928e928e928e9290918e91016125e6565b60405160208183030381529060405280519060200120905060008282604051602001611545929190612554565b6040516020818303038152906040528051906020012090506000600182898989604051600081526020016040526040516115829493929190612689565b6020604051602081039080840390855afa1580156115a4573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612c50565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611681576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107939061274f565b884211156116bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610793906128d4565b84600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516117c39190612d27565b60405180910390a3505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526004602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60015473ffffffffffffffffffffffffffffffffffffffff163314611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612786565b6001546040517f5cd7ad3baa6b612b797d53699b140d3d862f62e268971aa522613aaecd347b55916118e09173ffffffffffffffffffffffffffffffffffffffff9091169084906125ab565b60405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600760209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b6000816c0100000000000000000000000084106119b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079391906126a7565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611a17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079391906126a7565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff8316611a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610793906129c5565b73ffffffffffffffffffffffffffffffffffffffff8216611ab9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612bf3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604091829020548251606081019093526036808452611b16936bffffffffffffffffffffffff9092169285929190612ea2908301396119bc565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260056020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff968716179055928616825290829020548251606081019093526030808452611ba89491909116928592909190612e3e90830139611cc5565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600560205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c3f908590612d27565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff808416600090815260066020526040808220548584168352912054610a6e92918216911683611d20565b6000828201838110156110c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107939061289d565b6000838301826bffffffffffffffffffffffff8087169083161015611d17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079391906126a7565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d6a57506000816bffffffffffffffffffffffff16115b15610a6e5773ffffffffffffffffffffffffffffffffffffffff831615611e6d5773ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604081205463ffffffff169081611dc4576000611e34565b73ffffffffffffffffffffffffffffffffffffffff851660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611e5b8285604051806060016040528060288152602001612e16602891396119bc565b9050611e6986848484612061565b5050505b73ffffffffffffffffffffffffffffffffffffffff821615610a6e5773ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604081205463ffffffff169081611ec2576000611f32565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611f598285604051806060016040528060278152602001612da460279139611cc5565b905061136885848484612061565b60006110c883836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152506122cb565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260066020818152604080842080546005845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4612057828483611d20565b50505050565b4690565b600061208543604051806060016040528060348152602001612e6e60349139612309565b905060008463ffffffff161180156120f9575073ffffffffffffffffffffffffffffffffffffffff8516600090815260076020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b156121985773ffffffffffffffffffffffffffffffffffffffff851660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff851602179055612274565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600783528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600890935292909220805460018801909316929091169190911790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516122bc929190612d40565b60405180910390a25050505050565b60008184841115611a17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079391906126a7565b60008164010000000084106119b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079391906126a7565b604080518082019091526000808252602082015290565b803573ffffffffffffffffffffffffffffffffffffffff8116811461052557600080fd5b803560ff8116811461052557600080fd5b6000602082840312156123a8578081fd5b6110c88383612362565b600080604083850312156123c4578081fd5b6123ce8484612362565b91506123dd8460208501612362565b90509250929050565b6000806000606084860312156123fa578081fd5b833561240581612d5f565b9250602084013561241581612d5f565b929592945050506040919091013590565b600080600080600080600060e0888a031215612440578283fd5b61244a8989612362565b96506124598960208a01612362565b955060408801359450606088013593506124768960808a01612386565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156124a4578182fd5b6124ae8484612362565b946020939093013593505050565b60008060008060008060c087890312156124d4578182fd5b6124de8888612362565b955060208701359450604087013593506124fb8860608901612386565b92506080870135915060a087013590509295509295509295565b60008060408385031215612527578182fd5b6125318484612362565b9150602083013563ffffffff81168114612549578182fd5b809150509250929050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b901515815260200190565b90815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b9384526020840192909252604083015273ffffffffffffffffffffffffffffffffffffffff16606082015260800190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b818110156126d3578581018301518582016040015282016126b7565b818111156126e45783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6020808252601d908201527f464553573a3a6d696e743a206578636565646564206d696e7420636170000000604082015260600190565b6020808252601a908201527f464553573a3a7065726d69743a20756e617574686f72697a6564000000000000604082015260600190565b6020808252603e908201527f464553573a3a7365744d696e7465723a206f6e6c7920746865206d696e74657260408201527f2063616e206368616e676520746865206d696e74657220616464726573730000606082015260800190565b60208082526028908201527f464553573a3a6d696e743a206d696e74696e67206e6f7420616c6c6f7765642060408201527f616e79206d6f7265000000000000000000000000000000000000000000000000606082015260800190565b60208082526027908201527f464553573a3a6765745072696f72566f7465733a206e6f74207965742064657460408201527f65726d696e656400000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601f908201527f464553573a3a7065726d69743a207369676e6174757265206578706972656400604082015260600190565b6020808252602f908201527f464553573a3a6d696e743a2063616e6e6f74207472616e7366657220746f207460408201527f6865207a65726f20616464726573730000000000000000000000000000000000606082015260800190565b60208082526022908201527f464553573a3a64656c656761746542795369673a20696e76616c6964206e6f6e60408201527f6365000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252603c908201527f464553573a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260408201527f616e736665722066726f6d20746865207a65726f206164647265737300000000606082015260800190565b60208082526024908201527f464553573a3a6d696e743a206f6e6c7920746865206d696e7465722063616e2060408201527f6d696e7400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f464553573a3a64656c656761746542795369673a207369676e6174757265206560408201527f7870697265640000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f464553573a3a6275726e3a204f6e6c7920746865206275726e65722063616e2060408201527f6275726e00000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f464553573a3a6275726e3a204e6f204645535720746f6b656e20746f2062757260408201527f6e00000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f464553573a3a6d696e743a206d696e74696e67206e6f7420616c6c6f7765642060408201527f7965740000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252603a908201527f464553573a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260408201527f616e7366657220746f20746865207a65726f2061646472657373000000000000606082015260800190565b6020808252601f908201527f464553573a3a7065726d69743a20696e76616c6964207369676e617475726500604082015260600190565b60208082526026908201527f464553573a3a64656c656761746542795369673a20696e76616c69642073696760408201527f6e61747572650000000000000000000000000000000000000000000000000000606082015260800190565b63ffffffff91909116815260200190565b63ffffffff9290921682526bffffffffffffffffffffffff16602082015260400190565b60ff91909116815260200190565b6bffffffffffffffffffffffff91909116815260200190565b6bffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2657600080fdfe464553573a3a6d696e743a20616d6f756e7420657863656564732039362062697473464553573a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773464553573a3a617070726f76653a20616d6f756e7420657863656564732039362062697473464553573a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473464553573a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773464553573a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773464553573a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473464553573a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365464553573a3a7065726d69743a20616d6f756e7420657863656564732039362062697473464553573a3a6d696e743a20746f74616c537570706c7920657863656564732039362062697473464553573a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365464553573a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f7773a264697066735822122099f944cdf64f45c9fbcd76b50f9416beaff3ea0a2ca455688a2778667d090b5964736f6c63430007000033000000000000000000000000dc7ef6b5d1a15768c0520e54e7414e1e0297e141000000000000000000000000dc7ef6b5d1a15768c0520e54e7414e1e0297e141000000000000000000000000000000000000000000000000000000006a6d6ed0

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80636fcfff45116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e1461037e578063e7a324dc14610391578063ead1be1c14610399578063f1127ed8146103ac576101c4565b8063b4b5ea5714610345578063c3cda52014610358578063d505accf1461036b576101c4565b8063782d6fe1116100d3578063782d6fe1146102f75780637ecebe001461031757806395d89b411461032a578063a9059cbb14610332576101c4565b80636fcfff45146102c957806370a08231146102dc57806376c71ca1146102ef576101c4565b806330b36cef1161016657806344df8e701161014057806344df8e7014610286578063587cde1e1461028e5780635c11d62f146102a15780635c19a95c146102b6576101c4565b806330b36cef14610254578063313ce5671461025c57806340c10f1914610271576101c4565b806320606b70116101a257806320606b701461021c57806323b872dd146102245780632ef8c5a41461023757806330adf81f1461024c576101c4565b806306fdde03146101c9578063095ea7b3146101e757806318160ddd14610207575b600080fd5b6101d16103cd565b6040516101de91906126a7565b60405180910390f35b6101fa6101f5366004612492565b610406565b6040516101de91906125d2565b61020f61052b565b6040516101de91906125dd565b61020f610531565b6101fa6102323660046123e6565b610555565b61023f6106f7565b6040516101de919061258a565b61020f610713565b61020f610737565b61026461073d565b6040516101de9190612d19565b61028461027f366004612492565b610742565b005b610284610a73565b61023f61029c366004612397565b610c29565b6102a9610c51565b6040516101de9190612ce4565b6102846102c4366004612397565b610c59565b6102a96102d7366004612397565b610c63565b61020f6102ea366004612397565b610c7b565b61020f610cb1565b61030a610305366004612492565b610cb7565b6040516101de9190612d27565b61020f610325366004612397565b610f99565b6101d1610fab565b6101fa610340366004612492565b610fe4565b61030a610353366004612397565b611020565b6102846103663660046124bc565b6110cf565b610284610379366004612426565b611370565b61020f61038c3660046123b2565b6117d9565b61020f61181f565b6102846103a7366004612397565b611843565b6103bf6103ba366004612515565b61192f565b6040516101de929190612cf5565b6040518060400160405280600a81526020017f4665537761702044414f0000000000000000000000000000000000000000000081525081565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561045857507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61047d565b61047a83604051806060016040528060258152602001612dcb6025913961196a565b90505b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610517908590612d27565b60405180910390a360019150505b92915050565b60005481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083203380855290835281842054825160608101909352602580845291936bffffffffffffffffffffffff9091169285926105bf9288929190612dcb9083013961196a565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561060b57506bffffffffffffffffffffffff82811614155b156106df57600061063583836040518060600160405280603d8152602001612f23603d91396119bc565b73ffffffffffffffffffffffffffffffffffffffff8981166000818152600460209081526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106d5908590612d27565b60405180910390a3505b6106ea878783611a1f565b5060019695505050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60025481565b601281565b60015473ffffffffffffffffffffffffffffffffffffffff16331461079c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612a22565b60405180910390fd5b6002544210156107d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612b96565b73ffffffffffffffffffffffffffffffffffffffff8216610825576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107939061290b565b690a968163f0a57b400000600354101561086b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610793906127e3565b610879426301e13380611c86565b60028190555060006108a382604051806060016040528060228152602001612d826022913961196a565b9050600354816bffffffffffffffffffffffff1611156108ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612718565b6002600354816108fb57fe5b0460035560005461093c9061091e906bffffffffffffffffffffffff8416611c86565b604051806060016040528060278152602001612efc6027913961196a565b6bffffffffffffffffffffffff908116600090815573ffffffffffffffffffffffffffffffffffffffff85168152600560209081526040918290205482516060810190935260258084526109a09491909116928592909190612f6090830139611cc5565b73ffffffffffffffffffffffffffffffffffffffff841660008181526005602052604080822080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff959095169490941790935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a34908590612d27565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff808416600090815260066020526040812054610a6e921683611d20565b505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610ac4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612adc565b60015473ffffffffffffffffffffffffffffffffffffffff166000908152600560205260409020546bffffffffffffffffffffffff1680610b31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612b39565b60015473ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040812080547fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016905554610b97906bffffffffffffffffffffffff8316611f67565b600090815560015460405173ffffffffffffffffffffffffffffffffffffffff909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610be8908590612d27565b60405180910390a360015473ffffffffffffffffffffffffffffffffffffffff908116600090815260066020526040812054610c2692169083611d20565b50565b60066020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610c263382611fa9565b60086020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600560205260409020546bffffffffffffffffffffffff1690565b60035481565b6000438210610cf2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612840565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604090205463ffffffff1680610d2d576000915050610525565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260076020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860181168552925290912054168310610e055773ffffffffffffffffffffffffffffffffffffffff841660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff169050610525565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260076020908152604080832083805290915290205463ffffffff16831015610e4d576000915050610525565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff161115610f4157600282820363ffffffff16048103610e9d61234b565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260076020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff169181019190915290871415610f1c576020015194506105259350505050565b805163ffffffff16871115610f3357819350610f3a565b6001820392505b5050610e73565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260076020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60096020526000908152604090205481565b6040518060400160405280600481526020017f464553570000000000000000000000000000000000000000000000000000000081525081565b60008061100983604051806060016040528060268152602001612df06026913961196a565b9050611016338583611a1f565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526008602052604081205463ffffffff16806110585760006110c8565b73ffffffffffffffffffffffffffffffffffffffff831660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b9392505050565b60408051808201909152600a81527f4665537761702044414f0000000000000000000000000000000000000000000060209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f62e653a995128fe1f1e39e9a507edfdee740ce379b334075caa1a2187975cd4761115061205d565b306040516020016111649493929190612658565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf8888886040516020016111b59493929190612627565b604051602081830303815290604052805190602001209050600082826040516020016111e2929190612554565b60405160208183030381529060405280519060200120905060006001828888886040516000815260200160405260405161121f9493929190612689565b6020604051602081039080840390855afa158015611241573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166112b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612c87565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600960205260409020805460018101909155891461131f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612968565b87421115611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612a7f565b611363818b611fa9565b505050505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8614156113c157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6113e6565b6113e386604051806060016040528060248152602001612ed86024913961196a565b90505b60408051808201909152600a81527f4665537761702044414f0000000000000000000000000000000000000000000060209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667f62e653a995128fe1f1e39e9a507edfdee740ce379b334075caa1a2187975cd4761146761205d565b3060405160200161147b9493929190612658565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012073ffffffffffffffffffffffffffffffffffffffff8d166000908152600983529283208054600181019091559094509192611518927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928e928e928e9290918e91016125e6565b60405160208183030381529060405280519060200120905060008282604051602001611545929190612554565b6040516020818303038152906040528051906020012090506000600182898989604051600081526020016040526040516115829493929190612689565b6020604051602081039080840390855afa1580156115a4573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612c50565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611681576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107939061274f565b884211156116bb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610793906128d4565b84600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516117c39190612d27565b60405180910390a3505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526004602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60015473ffffffffffffffffffffffffffffffffffffffff163314611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612786565b6001546040517f5cd7ad3baa6b612b797d53699b140d3d862f62e268971aa522613aaecd347b55916118e09173ffffffffffffffffffffffffffffffffffffffff9091169084906125ab565b60405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600760209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b6000816c0100000000000000000000000084106119b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079391906126a7565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611a17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079391906126a7565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff8316611a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610793906129c5565b73ffffffffffffffffffffffffffffffffffffffff8216611ab9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079390612bf3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604091829020548251606081019093526036808452611b16936bffffffffffffffffffffffff9092169285929190612ea2908301396119bc565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260056020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff968716179055928616825290829020548251606081019093526030808452611ba89491909116928592909190612e3e90830139611cc5565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600560205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c3f908590612d27565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff808416600090815260066020526040808220548584168352912054610a6e92918216911683611d20565b6000828201838110156110c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107939061289d565b6000838301826bffffffffffffffffffffffff8087169083161015611d17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079391906126a7565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d6a57506000816bffffffffffffffffffffffff16115b15610a6e5773ffffffffffffffffffffffffffffffffffffffff831615611e6d5773ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604081205463ffffffff169081611dc4576000611e34565b73ffffffffffffffffffffffffffffffffffffffff851660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611e5b8285604051806060016040528060288152602001612e16602891396119bc565b9050611e6986848484612061565b5050505b73ffffffffffffffffffffffffffffffffffffffff821615610a6e5773ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604081205463ffffffff169081611ec2576000611f32565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b90506000611f598285604051806060016040528060278152602001612da460279139611cc5565b905061136885848484612061565b60006110c883836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152506122cb565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260066020818152604080842080546005845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4612057828483611d20565b50505050565b4690565b600061208543604051806060016040528060348152602001612e6e60349139612309565b905060008463ffffffff161180156120f9575073ffffffffffffffffffffffffffffffffffffffff8516600090815260076020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b156121985773ffffffffffffffffffffffffffffffffffffffff851660009081526007602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff851602179055612274565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600783528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600890935292909220805460018801909316929091169190911790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516122bc929190612d40565b60405180910390a25050505050565b60008184841115611a17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079391906126a7565b60008164010000000084106119b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079391906126a7565b604080518082019091526000808252602082015290565b803573ffffffffffffffffffffffffffffffffffffffff8116811461052557600080fd5b803560ff8116811461052557600080fd5b6000602082840312156123a8578081fd5b6110c88383612362565b600080604083850312156123c4578081fd5b6123ce8484612362565b91506123dd8460208501612362565b90509250929050565b6000806000606084860312156123fa578081fd5b833561240581612d5f565b9250602084013561241581612d5f565b929592945050506040919091013590565b600080600080600080600060e0888a031215612440578283fd5b61244a8989612362565b96506124598960208a01612362565b955060408801359450606088013593506124768960808a01612386565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156124a4578182fd5b6124ae8484612362565b946020939093013593505050565b60008060008060008060c087890312156124d4578182fd5b6124de8888612362565b955060208701359450604087013593506124fb8860608901612386565b92506080870135915060a087013590509295509295509295565b60008060408385031215612527578182fd5b6125318484612362565b9150602083013563ffffffff81168114612549578182fd5b809150509250929050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b901515815260200190565b90815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b9384526020840192909252604083015273ffffffffffffffffffffffffffffffffffffffff16606082015260800190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b818110156126d3578581018301518582016040015282016126b7565b818111156126e45783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6020808252601d908201527f464553573a3a6d696e743a206578636565646564206d696e7420636170000000604082015260600190565b6020808252601a908201527f464553573a3a7065726d69743a20756e617574686f72697a6564000000000000604082015260600190565b6020808252603e908201527f464553573a3a7365744d696e7465723a206f6e6c7920746865206d696e74657260408201527f2063616e206368616e676520746865206d696e74657220616464726573730000606082015260800190565b60208082526028908201527f464553573a3a6d696e743a206d696e74696e67206e6f7420616c6c6f7765642060408201527f616e79206d6f7265000000000000000000000000000000000000000000000000606082015260800190565b60208082526027908201527f464553573a3a6765745072696f72566f7465733a206e6f74207965742064657460408201527f65726d696e656400000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601f908201527f464553573a3a7065726d69743a207369676e6174757265206578706972656400604082015260600190565b6020808252602f908201527f464553573a3a6d696e743a2063616e6e6f74207472616e7366657220746f207460408201527f6865207a65726f20616464726573730000000000000000000000000000000000606082015260800190565b60208082526022908201527f464553573a3a64656c656761746542795369673a20696e76616c6964206e6f6e60408201527f6365000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252603c908201527f464553573a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260408201527f616e736665722066726f6d20746865207a65726f206164647265737300000000606082015260800190565b60208082526024908201527f464553573a3a6d696e743a206f6e6c7920746865206d696e7465722063616e2060408201527f6d696e7400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f464553573a3a64656c656761746542795369673a207369676e6174757265206560408201527f7870697265640000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f464553573a3a6275726e3a204f6e6c7920746865206275726e65722063616e2060408201527f6275726e00000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526021908201527f464553573a3a6275726e3a204e6f204645535720746f6b656e20746f2062757260408201527f6e00000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f464553573a3a6d696e743a206d696e74696e67206e6f7420616c6c6f7765642060408201527f7965740000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252603a908201527f464553573a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260408201527f616e7366657220746f20746865207a65726f2061646472657373000000000000606082015260800190565b6020808252601f908201527f464553573a3a7065726d69743a20696e76616c6964207369676e617475726500604082015260600190565b60208082526026908201527f464553573a3a64656c656761746542795369673a20696e76616c69642073696760408201527f6e61747572650000000000000000000000000000000000000000000000000000606082015260800190565b63ffffffff91909116815260200190565b63ffffffff9290921682526bffffffffffffffffffffffff16602082015260400190565b60ff91909116815260200190565b6bffffffffffffffffffffffff91909116815260200190565b6bffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff81168114610c2657600080fdfe464553573a3a6d696e743a20616d6f756e7420657863656564732039362062697473464553573a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773464553573a3a617070726f76653a20616d6f756e7420657863656564732039362062697473464553573a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473464553573a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773464553573a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773464553573a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473464553573a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365464553573a3a7065726d69743a20616d6f756e7420657863656564732039362062697473464553573a3a6d696e743a20746f74616c537570706c7920657863656564732039362062697473464553573a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365464553573a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f7773a264697066735822122099f944cdf64f45c9fbcd76b50f9416beaff3ea0a2ca455688a2778667d090b5964736f6c63430007000033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000dc7ef6b5d1a15768c0520e54e7414e1e0297e141000000000000000000000000dc7ef6b5d1a15768c0520e54e7414e1e0297e141000000000000000000000000000000000000000000000000000000006a6d6ed0

-----Decoded View---------------
Arg [0] : account (address): 0xDC7Ef6b5d1A15768c0520e54E7414e1E0297E141
Arg [1] : minterBurner_ (address): 0xDC7Ef6b5d1A15768c0520e54E7414e1E0297E141
Arg [2] : mintingAllowedAfter_ (uint256): 1785556688

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000dc7ef6b5d1a15768c0520e54e7414e1e0297e141
Arg [1] : 000000000000000000000000dc7ef6b5d1a15768c0520e54e7414e1e0297e141
Arg [2] : 000000000000000000000000000000000000000000000000000000006a6d6ed0


Deployed Bytecode Sourcemap

6537:18141:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6608:42;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13883:419;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6911:42::-;;;:::i;:::-;;;;;;;:::i;8360:122::-;;;:::i;16981:680::-;;;;;;:::i;:::-;;:::i;7045:27::-;;;:::i;:::-;;;;;;;:::i;8783:137::-;;;:::i;7142:31::-;;;:::i;6812:35::-;;;:::i;:::-;;;;;;;:::i;11207:1179::-;;;;;;:::i;:::-;;:::i;:::-;;12445:520;;;:::i;7810:45::-;;;;;;:::i;:::-;;:::i;7226:61::-;;;:::i;:::-;;;;;;;:::i;17809:102::-;;;;;;:::i;:::-;;:::i;8238:49::-;;;;;;:::i;:::-;;:::i;16061:108::-;;;;;;:::i;:::-;;:::i;7363:35::-;;;:::i;20000:1218::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9001:39::-;;;;;;:::i;:::-;;:::i;6711:38::-;;;:::i;16433:238::-;;;;;;:::i;:::-;;:::i;19347:222::-;;;;;;:::i;:::-;;:::i;18345:801::-;;;;;;:::i;:::-;;:::i;14792:1066::-;;;;;;:::i;:::-;;:::i;13269:136::-;;;;;;:::i;:::-;;:::i;8576:117::-;;;:::i;10752:280::-;;;;;;:::i;:::-;;:::i;8099:70::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;6608:42::-;;;;;;;;;;;;;;;;;;;:::o;13883:419::-;13951:4;13968:13;14014:2;13996:9;:21;13992:173;;;-1:-1:-1;14050:2:0;13992:173;;;14095:58;14102:9;14095:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;14086:67;;13992:173;14188:10;14177:22;;;;:10;:22;;;;;;;;;:31;;;;;;;;;;;:40;;;;;;;;;;14235:37;;14177:31;;14188:10;14235:37;;;;14177:40;;14235:37;:::i;:::-;;;;;;;;14290:4;14283:11;;;13883:419;;;;;:::o;6911:42::-;;;;:::o;8360:122::-;8402:80;8360:122;:::o;16981:680::-;17145:15;;;17063:4;17145:15;;;:10;:15;;;;;;;;17098:10;17145:24;;;;;;;;;;17196:58;;;;;;;;;;;;17098:10;;17145:24;;;;;17063:4;;17196:58;;17203:9;;17196:58;;;;;;;:6;:58::i;:::-;17180:74;;17282:3;17271:14;;:7;:14;;;;:48;;;;-1:-1:-1;17289:30:0;;;;;;17271:48;17267:311;;;17336:19;17358:96;17364:16;17382:6;17358:96;;;;;;;;;;;;;;;;;:5;:96::i;:::-;17469:15;;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;;:39;;;;;;;;;;17530:36;17469:39;;-1:-1:-1;17469:24:0;;17530:36;;;;17469:39;;17530:36;:::i;:::-;;;;;;;;17267:311;;17598:33;17614:3;17619;17624:6;17598:15;:33::i;:::-;-1:-1:-1;17649:4:0;;16981:680;-1:-1:-1;;;;;;16981:680:0:o;7045:27::-;;;;;;:::o;8783:137::-;8825:95;8783:137;:::o;7142:31::-;;;;:::o;6812:35::-;6845:2;6812:35;:::o;11207:1179::-;11292:12;;;;11278:10;:26;11270:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11383:19;;11364:15;:38;;11356:86;;;;;;;;;;;;:::i;:::-;11461:17;;;11453:77;;;;;;;;;;;;:::i;:::-;11595:9;11584:7;;:20;;11576:73;;;;;;;;;;;;:::i;:::-;11715:54;11728:15;7275:12;11715;:54::i;:::-;11693:19;:76;;;;11810:13;11826:55;11833:9;11826:55;;;;;;;;;;;;;;;;;:6;:55::i;:::-;11810:71;;11910:7;;11900:6;:17;;;;11892:59;;;;;;;;;;;;:::i;:::-;11982:1;11972:7;;:11;;;;;;11962:7;:21;12028:11;;12008:84;;12015:33;;;;;:12;:33::i;:::-;12008:84;;;;;;;;;;;;;;;;;:6;:84::i;:::-;11994:98;;;;:11;:98;;;12176:13;;;;;:8;:13;;;;;;;;;;12170:69;;;;;;;;;;;;;;12176:13;;;;;12191:6;;12170:69;;;;;;;;:5;:69::i;:::-;12154:13;;;;;;;:8;:13;;;;;;:85;;;;;;;;;;;;;;;;12255:33;;12154:13;;;12255:33;;;;12281:6;;12255:33;:::i;:::-;;;;;;;;12355:14;;;;12351:1;12355:14;;;:9;:14;;;;;;12328:50;;12355:14;12371:6;12328:14;:50::i;:::-;11207:1179;;;:::o;12445:520::-;12503:12;;;;12489:10;:26;12481:75;;;;;;;;;;;;:::i;:::-;12622:12;;;;12597:13;12613:22;;;:8;:22;;;;;;;;12654:11;12646:57;;;;;;;;;;;;:::i;:::-;12725:12;;;;12741:1;12716:22;;;:8;:22;;;;;:26;;;;;;12780:11;12767:33;;12716:26;12767:33;;:12;:33::i;:::-;12753:11;:47;;;12825:12;;12816:42;;;12825:12;;;;12816:42;;;;12851:6;;12816:42;:::i;:::-;;;;;;;;12923:12;;;;;;12913:23;;;;:9;:23;;;;;;12898:59;;12913:23;;12950:6;12898:14;:59::i;:::-;12445:520;:::o;7810:45::-;;;;;;;;;;;;;;;:::o;7226:61::-;7275:12;7226:61;:::o;17809:102::-;17871:32;17881:10;17893:9;17871;:32::i;8238:49::-;;;;;;;;;;;;;;;:::o;16061:108::-;16144:17;;16120:4;16144:17;;;:8;:17;;;;;;;;;16061:108::o;7363:35::-;;;;:::o;20000:1218::-;20079:6;20120:12;20106:11;:26;20098:78;;;;;;;;;;;;:::i;:::-;20211:23;;;20189:19;20211:23;;;:14;:23;;;;;;;;20249:17;20245:58;;20290:1;20283:8;;;;;20245:58;20363:20;;;;;;;:11;:20;;;;;;;;:38;20384:16;;;20363:38;;;;;;;;;:48;;:63;-1:-1:-1;20359:147:0;;20450:20;;;;;;;:11;:20;;;;;;;;20471:16;;;;;20450:38;;;;;;;;:44;;;;;;;-1:-1:-1;20443:51:0;;20359:147;20567:20;;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;20563:88:0;;;20638:1;20631:8;;;;;20563:88;20663:12;20705:16;;;20732:428;20747:5;20739:13;;:5;:13;;;20732:428;;;20811:1;20794:13;;;20793:19;;;20785:27;;20854:20;;:::i;:::-;-1:-1:-1;20877:20:0;;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;20854:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20924:27;;20920:229;;;20979:8;;;;-1:-1:-1;20972:15:0;;-1:-1:-1;;;;20972:15:0;20920:229;21013:12;;:26;;;-1:-1:-1;21009:140:0;;;21068:6;21060:14;;21009:140;;;21132:1;21123:6;:10;21115:18;;21009:140;20732:428;;;;;-1:-1:-1;21177:20:0;;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;;;;;-1:-1:-1;;20000:1218:0;;;;:::o;9001:39::-;;;;;;;;;;;;;:::o;6711:38::-;;;;;;;;;;;;;;;;;;;:::o;16433:238::-;16498:4;16515:13;16531:59;16538:9;16531:59;;;;;;;;;;;;;;;;;:6;:59::i;:::-;16515:75;;16601:40;16617:10;16629:3;16634:6;16601:15;:40::i;:::-;-1:-1:-1;16659:4:0;;16433:238;-1:-1:-1;;;16433:238:0:o;19347:222::-;19453:23;;;19412:6;19453:23;;;:14;:23;;;;;;;;19494:16;:67;;19560:1;19494:67;;;19513:20;;;;;;;:11;:20;;;;;;;;19534:16;;;19513:38;;;;;;;;;:44;;;;;;19494:67;19487:74;19347:222;-1:-1:-1;;;19347:222:0:o;18345:801::-;18541:4;;;;;;;;;;;;;;;;;;18461:23;8402:80;18525:22;18549:12;:10;:12::i;:::-;18571:4;18497:80;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18487:91;;;;;;18461:117;;18589:18;8622:71;18652:9;18663:5;18670:6;18620:57;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18610:68;;;;;;18589:89;;18689:14;18745:15;18762:10;18716:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18706:68;;;;;;18689:85;;18785:17;18805:26;18815:6;18823:1;18826;18829;18805:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18805:26:0;;;;;;-1:-1:-1;;18850:23:0;;;18842:74;;;;;;;;;;;;:::i;:::-;18944:17;;;;;;;:6;:17;;;;;:19;;;;;;;;18935:28;;18927:75;;;;;;;;;;;;:::i;:::-;19040:6;19021:15;:25;;19013:76;;;;;;;;;;;;:::i;:::-;19107:31;19117:9;19128;19107;:31::i;:::-;19100:38;;;;18345:801;;;;;;;:::o;14792:1066::-;14922:13;14968:2;14950:9;:21;14946:172;;;-1:-1:-1;15004:2:0;14946:172;;;15049:57;15056:9;15049:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;15040:66;;14946:172;15210:4;;;;;;;;;;;;;;;;;;15130:23;8402:80;15194:22;15218:12;:10;:12::i;:::-;15240:4;15166:80;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;15156:91;;15166:80;15156:91;;;;15344:13;;;15258:18;15344:13;;;:6;:13;;;;;:15;;;;;;;;15156:91;;-1:-1:-1;15258:18:0;;15289:81;;8825:95;;15317:5;;15324:7;;15333:9;;15344:15;;15361:8;;15289:81;;:::i;:::-;;;;;;;;;;;;;15279:92;;;;;;15258:113;;15382:14;15438:15;15455:10;15409:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15399:68;;;;;;15382:85;;15478:17;15498:26;15508:6;15516:1;15519;15522;15498:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15498:26:0;;;;;;-1:-1:-1;;15543:23:0;;;15535:67;;;;;;;;;;;;:::i;:::-;15634:5;15621:18;;:9;:18;;;15613:57;;;;;;;;;;;;:::i;:::-;15708:8;15689:15;:27;;15681:71;;;;;;;;;;;;:::i;:::-;15794:6;15765:10;:17;15776:5;15765:17;;;;;;;;;;;;;;;:26;15783:7;15765:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15834:7;15818:32;;15827:5;15818:32;;;15843:6;15818:32;;;;;;:::i;:::-;;;;;;;;14792:1066;;;;;;;;;;;;:::o;13269:136::-;13369:19;;;;13345:4;13369:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;;;;13269:136::o;8576:117::-;8622:71;8576:117;:::o;10752:280::-;10842:12;;;;10828:10;:26;10820:101;;;;;;;;;;;;:::i;:::-;10957:12;;10937:48;;;;;;10957:12;;;;;10971:13;;10937:48;:::i;:::-;;;;;;;;10996:12;:28;;;;;;;;;;;;;;;10752:280::o;8099:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23984:161::-;24059:6;24097:12;24090:5;24086:9;;24078:32;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;24135:1:0;;23984:161;-1:-1:-1;;23984:161:0:o;24349:165::-;24435:6;24467:1;24462:6;;:1;:6;;;;24470:12;24454:29;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;24501:5:0;;;24349:165::o;21609:614::-;21703:17;;;21695:90;;;;;;;;;;;;:::i;:::-;21804:17;;;21796:88;;;;;;;;;;;;:::i;:::-;21919:13;;;;;;;:8;:13;;;;;;;;;;21913:86;;;;;;;;;;;;;;21919:13;;;;;21934:6;;21913:86;;;;;;;:5;:86::i;:::-;21897:13;;;;;;;;:8;:13;;;;;;;;:102;;;;;;;;;;;22032:13;;;;;;;;;;22026:80;;;;;;;;;;;;;;22032:13;;;;;22047:6;;22026:80;;;;;;;;:5;:80::i;:::-;22010:13;;;;;;;;:8;:13;;;;;;;:96;;;;;;;;;;;;;;;;22122:26;;;;;;;;;;22141:6;;22122:26;:::i;:::-;;;;;;;;22176:14;;;;;;;;:9;:14;;;;;;;22192;;;;;;;;22161:54;;22176:14;;;;22192;22208:6;22161:14;:54::i;923:181::-;981:7;1013:5;;;1037:6;;;;1029:46;;;;;;;;;;;;:::i;24153:188::-;24239:6;24269:5;;;24301:12;24293:6;;;;;;;;;24285:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;24332:1:0;24153:188;-1:-1:-1;;;;24153:188:0:o;22231:939::-;22336:6;22326:16;;:6;:16;;;;:30;;;;;22355:1;22346:6;:10;;;22326:30;22322:841;;;22377:20;;;;22373:382;;22437:22;;;22418:16;22437:22;;;:14;:22;;;;;;;;;22497:13;:60;;22556:1;22497:60;;;22513:19;;;;;;;:11;:19;;;;;;;;22533:13;;;22513:34;;;;;;;;;:40;;;;;;22497:60;22478:79;;22576:16;22595:68;22601:9;22612:6;22595:68;;;;;;;;;;;;;;;;;:5;:68::i;:::-;22576:87;;22682:57;22699:6;22707:9;22718;22729;22682:16;:57::i;:::-;22373:382;;;;22775:20;;;;22771:381;;22835:22;;;22816:16;22835:22;;;:14;:22;;;;;;;;;22895:13;:60;;22954:1;22895:60;;;22911:19;;;;;;;:11;:19;;;;;;;;22931:13;;;22911:34;;;;;;;;;:40;;;;;;22895:60;22876:79;;22974:16;22993:67;22999:9;23010:6;22993:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;22974:86;;23079:57;23096:6;23104:9;23115;23126;23079:16;:57::i;1816:137::-;1874:7;1901:44;1905:1;1908;1901:44;;;;;;;;;;;;;;;;;:3;:44::i;21226:375::-;21329:20;;;;21303:23;21329:20;;;:9;:20;;;;;;;;;;21386:8;:19;;;;;;21416:20;;;;:32;;;;;;;;;;;21466:54;;21329:20;;;;;21386:19;;;;;21416:32;;21329:20;;;21466:54;;21303:23;21466:54;21533:60;21548:15;21565:9;21576:16;21533:14;:60::i;:::-;21226:375;;;;:::o;24522:153::-;24632:9;24522:153;:::o;23178:629::-;23296:18;23317:76;23324:12;23317:76;;;;;;;;;;;;;;;;;:6;:76::i;:::-;23296:97;;23423:1;23408:12;:16;;;:85;;;;-1:-1:-1;23428:22:0;;;;;;;:11;:22;;;;;;;;:65;23451:16;;;23428:40;;;;;;;;;:50;:65;;;:50;;:65;23408:85;23404:329;;;23508:22;;;;;;;:11;:22;;;;;;;;23531:16;;;23508:40;;;;;;;;;:57;;;;;;;;;;;;23404:329;;;23633:33;;;;;;;;;;;;;;;;;;;;;;;;;23594:22;;;-1:-1:-1;23594:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23679:25;;;:14;:25;;;;;;;:44;;23594:72;23707:16;;23679:44;;;;;;;;;;;;;23404:329;23769:9;23748:51;;;23780:8;23790;23748:51;;;;;;;:::i;:::-;;;;;;;;23178:629;;;;;:::o;2242:192::-;2328:7;2364:12;2356:6;;;;2348:29;;;;;;;;;;;;;:::i;23815:161::-;23890:6;23928:12;23921:5;23917:9;;23909:32;;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;5:130::-;72:20;;27702:42;27691:54;;28765:35;;28755:2;;28814:1;;28804:12;551:126;616:20;;28002:4;27991:16;;29257:33;;29247:2;;29304:1;;29294:12;684:241;;788:2;776:9;767:7;763:23;759:32;756:2;;;-1:-1;;794:12;756:2;856:53;901:7;877:22;856:53;:::i;932:366::-;;;1053:2;1041:9;1032:7;1028:23;1024:32;1021:2;;;-1:-1;;1059:12;1021:2;1121:53;1166:7;1142:22;1121:53;:::i;:::-;1111:63;;1229:53;1274:7;1211:2;1254:9;1250:22;1229:53;:::i;:::-;1219:63;;1015:283;;;;;:::o;1305:491::-;;;;1443:2;1431:9;1422:7;1418:23;1414:32;1411:2;;;-1:-1;;1449:12;1411:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1501:63;-1:-1;1601:2;1640:22;;72:20;97:33;72:20;97:33;:::i;:::-;1405:391;;1609:63;;-1:-1;;;1709:2;1748:22;;;;346:20;;1405:391::o;1803:991::-;;;;;;;;2007:3;1995:9;1986:7;1982:23;1978:33;1975:2;;;-1:-1;;2014:12;1975:2;2076:53;2121:7;2097:22;2076:53;:::i;:::-;2066:63;;2184:53;2229:7;2166:2;2209:9;2205:22;2184:53;:::i;:::-;2174:63;;2274:2;2317:9;2313:22;346:20;2282:63;;2382:2;2425:9;2421:22;346:20;2390:63;;2509:51;2552:7;2490:3;2532:9;2528:22;2509:51;:::i;:::-;2499:61;;2597:3;2641:9;2637:22;209:20;2606:63;;2706:3;2750:9;2746:22;209:20;2715:63;;1969:825;;;;;;;;;;:::o;2801:366::-;;;2922:2;2910:9;2901:7;2897:23;2893:32;2890:2;;;-1:-1;;2928:12;2890:2;2990:53;3035:7;3011:22;2990:53;:::i;:::-;2980:63;3080:2;3119:22;;;;346:20;;-1:-1;;;2884:283::o;3174:865::-;;;;;;;3361:3;3349:9;3340:7;3336:23;3332:33;3329:2;;;-1:-1;;3368:12;3329:2;3430:53;3475:7;3451:22;3430:53;:::i;:::-;3420:63;;3520:2;3563:9;3559:22;346:20;3528:63;;3628:2;3671:9;3667:22;346:20;3636:63;;3754:51;3797:7;3736:2;3777:9;3773:22;3754:51;:::i;:::-;3744:61;;3842:3;3886:9;3882:22;209:20;3851:63;;3951:3;3995:9;3991:22;209:20;3960:63;;3323:716;;;;;;;;:::o;4046:364::-;;;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;-1:-1;;4172:12;4134:2;4234:53;4279:7;4255:22;4234:53;:::i;:::-;4224:63;;4324:2;4366:9;4362:22;482:20;27908:10;29163:5;27897:22;29139:5;29136:34;29126:2;;-1:-1;;29174:12;29126:2;4332:62;;;;4128:282;;;;;:::o;13030:659::-;7429:66;7409:87;;7394:1;7515:11;;4719:37;;;;13541:12;;;4719:37;13652:12;;;13275:414::o;13696:222::-;27702:42;27691:54;;;;4488:37;;13823:2;13808:18;;13794:124::o;13925:333::-;27702:42;27691:54;;;4488:37;;27691:54;;14244:2;14229:18;;4488:37;14080:2;14065:18;;14051:207::o;14265:210::-;27524:13;;27517:21;4602:34;;14386:2;14371:18;;14357:118::o;14482:222::-;4719:37;;;14609:2;14594:18;;14580:124::o;14711:780::-;4719:37;;;27702:42;27691:54;;;15143:2;15128:18;;4488:37;27691:54;;;;15226:2;15211:18;;4488:37;15309:2;15294:18;;4719:37;15392:3;15377:19;;4719:37;;;;15476:3;15461:19;;4719:37;14978:3;14963:19;;14949:542::o;15498:556::-;4719:37;;;27702:42;27691:54;;;;15874:2;15859:18;;4488:37;15957:2;15942:18;;4719:37;16040:2;16025:18;;4719:37;15709:3;15694:19;;15680:374::o;16061:556::-;4719:37;;;16437:2;16422:18;;4719:37;;;;16520:2;16505:18;;4719:37;27702:42;27691:54;16603:2;16588:18;;4488:37;16272:3;16257:19;;16243:374::o;16624:548::-;4719:37;;;28002:4;27991:16;;;;16992:2;16977:18;;12735:35;17075:2;17060:18;;4719:37;17158:2;17143:18;;4719:37;16831:3;16816:19;;16802:370::o;17179:310::-;;17326:2;;17347:17;17340:47;5072:5;26993:12;27150:6;17326:2;17315:9;17311:18;27138:19;-1:-1;28316:101;28330:6;28327:1;28324:13;28316:101;;;28397:11;;;;;28391:18;28378:11;;;27178:14;28378:11;28371:39;28345:10;;28316:101;;;28432:6;28429:1;28426:13;28423:2;;;-1:-1;27178:14;28488:6;17315:9;28479:16;;28472:27;28423:2;-1:-1;28689:2;28669:14;28685:7;28665:28;5230:39;;;;27178:14;5230:39;;17297:192;-1:-1;;;17297:192::o;17496:416::-;17696:2;17710:47;;;5506:2;17681:18;;;27138:19;5542:31;27178:14;;;5522:52;5593:12;;;17667:245::o;17919:416::-;18119:2;18133:47;;;5844:2;18104:18;;;27138:19;5880:28;27178:14;;;5860:49;5928:12;;;18090:245::o;18342:416::-;18542:2;18556:47;;;6179:2;18527:18;;;27138:19;6215:34;27178:14;;;6195:55;6284:32;6270:12;;;6263:54;6336:12;;;18513:245::o;18765:416::-;18965:2;18979:47;;;6587:2;18950:18;;;27138:19;6623:34;27178:14;;;6603:55;6692:10;6678:12;;;6671:32;6722:12;;;18936:245::o;19188:416::-;19388:2;19402:47;;;6973:2;19373:18;;;27138:19;7009:34;27178:14;;;6989:55;7078:9;7064:12;;;7057:31;7107:12;;;19359:245::o;19611:416::-;19811:2;19825:47;;;7765:2;19796:18;;;27138:19;7801:29;27178:14;;;7781:50;7850:12;;;19782:245::o;20034:416::-;20234:2;20248:47;;;8101:2;20219:18;;;27138:19;8137:33;27178:14;;;8117:54;8190:12;;;20205:245::o;20457:416::-;20657:2;20671:47;;;8441:2;20642:18;;;27138:19;8477:34;27178:14;;;8457:55;8546:17;8532:12;;;8525:39;8583:12;;;20628:245::o;20880:416::-;21080:2;21094:47;;;8834:2;21065:18;;;27138:19;8870:34;27178:14;;;8850:55;8939:4;8925:12;;;8918:26;8963:12;;;21051:245::o;21303:416::-;21503:2;21517:47;;;9214:2;21488:18;;;27138:19;9250:34;27178:14;;;9230:55;9319:30;9305:12;;;9298:52;9369:12;;;21474:245::o;21726:416::-;21926:2;21940:47;;;9620:2;21911:18;;;27138:19;9656:34;27178:14;;;9636:55;9725:6;9711:12;;;9704:28;9751:12;;;21897:245::o;22149:416::-;22349:2;22363:47;;;10002:2;22334:18;;;27138:19;10038:34;27178:14;;;10018:55;10107:8;10093:12;;;10086:30;10135:12;;;22320:245::o;22572:416::-;22772:2;22786:47;;;10386:2;22757:18;;;27138:19;10422:34;27178:14;;;10402:55;10491:6;10477:12;;;10470:28;10517:12;;;22743:245::o;22995:416::-;23195:2;23209:47;;;10768:2;23180:18;;;27138:19;10804:34;27178:14;;;10784:55;10873:3;10859:12;;;10852:25;10896:12;;;23166:245::o;23418:416::-;23618:2;23632:47;;;11147:2;23603:18;;;27138:19;11183:34;27178:14;;;11163:55;11252:5;11238:12;;;11231:27;11277:12;;;23589:245::o;23841:416::-;24041:2;24055:47;;;11528:2;24026:18;;;27138:19;11564:34;27178:14;;;11544:55;11633:28;11619:12;;;11612:50;11681:12;;;24012:245::o;24264:416::-;24464:2;24478:47;;;11932:2;24449:18;;;27138:19;11968:33;27178:14;;;11948:54;12021:12;;;24435:245::o;24687:416::-;24887:2;24901:47;;;12272:2;24872:18;;;27138:19;12308:34;27178:14;;;12288:55;12377:8;12363:12;;;12356:30;12405:12;;;24858:245::o;25339:218::-;27908:10;27897:22;;;;12620:36;;25464:2;25449:18;;25435:122::o;25564:325::-;27908:10;27897:22;;;;12620:36;;28091:26;28080:38;25875:2;25860:18;;12982:36;25715:2;25700:18;;25686:203::o;25896:214::-;28002:4;27991:16;;;;12735:35;;26019:2;26004:18;;25990:120::o;26117:220::-;28091:26;28080:38;;;;12852:49;;26243:2;26228:18;;26214:123::o;26569:329::-;28091:26;28080:38;;;12852:49;;28080:38;;26884:2;26869:18;;12852:49;26722:2;26707:18;;26693:205::o;28706:117::-;27702:42;28793:5;27691:54;28768:5;28765:35;28755:2;;28814:1;;28804:12

Swarm Source

ipfs://99f944cdf64f45c9fbcd76b50f9416beaff3ea0a2ca455688a2778667d090b59
Loading...
Loading
Loading...
Loading
[ 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.