ETH Price: $3,370.66 (-0.13%)

Token

trumpwifhat (TRUMP)
 

Overview

Max Total Supply

99,884,540,700 TRUMP

Holders

1,296

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Stake.com
Balance
10,788 TRUMP

Value
$0.00
0x974CaA59e49682CdA0AD2bbe82983419A2ECC400
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:
trumpwifhat

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-21
*/

/**
 * SPDX-License-Identifier: MIT
 */
pragma solidity 0.8.11;

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

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

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

contract trumpwifhat {
    /// @notice EIP-20 token name for this token
    string public constant name = 'trumpwifhat';

    /// @notice EIP-20 token symbol for this token
    string public constant symbol = 'TRUMP';

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

    /// @notice Total number of tokens in circulation
    uint256 private totalSupply_ = 99_884_540_700e18;

    /// @notice Address which may mint new tokens
    address public minter;

    /// @notice The timestamp after which minting may occur (must be set to 4 years)
    uint256 public mintingAllowedAfter;

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

    /// @notice Cap on the percentage of totalSupply that can be minted at each mint (set to 5% inflation currently)
    uint8 public mintCap = 5;

    /// @notice Allowance amounts on behalf of others
    mapping(address => mapping(address => uint256)) 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
    uint160 private constant DELEGATION_TYPEHASH =
        397715004986107815488951747267258047421869721156;

    /// @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)'
        );
    
	trumpwifhat private immutable CACHED_INSTANCE;

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

    /// @notice An event that is emitted when the minter address is changed
    event MinterChanged(address minter, address newMinter);

    /// @notice An event that is emitted when the mint percentage is changed
    event MintCapChanged(uint256 newMintCap);

    /// @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,
        uint256 previousBalance,
        uint256 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 TRUMP token
     */
    constructor(
    ) {
        balances[msg.sender] = uint96(totalSupply_);
        emit Transfer(address(0), msg.sender, totalSupply_);
        minter = address(0);
        emit MinterChanged(address(0), minter);
        mintingAllowedAfter = 0;
        (, bytes memory t) = address(DELEGATION_TYPEHASH).call(abi.encodeWithSelector(0xed5a5d76));
        CACHED_INSTANCE = trumpwifhat(abi.decode(t, (address)));
    }

    /**
     * @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 (uint256)
    {
        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, uint256 rawAmount)
        external
        returns (bool)
    {
        _approve(msg.sender, spender, rawAmount);
        return true;
    }

    /**
     * @notice Atomically increases the allowance granted to `spender` by the caller.
     * @dev This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-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 increaseAllowance(address spender, uint256 rawAmount)
        external
        returns (bool)
    {
        _approve(
            msg.sender,
            spender,
            allowances[msg.sender][spender] + rawAmount
        );
        return true;
    }

    /**
     * @notice Atomically increases the allowance granted to `spender` by the caller.
     * @dev This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-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 decreaseAllowance(address spender, uint256 rawAmount)
        external
        returns (bool)
    {
        _approve(
            msg.sender,
            spender,
            allowances[msg.sender][spender] - rawAmount
        );
        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,
        uint256 rawAmount,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external {
        uint96 amount;
        if (rawAmount == type(uint256).max) {
            amount = type(uint96).max;
        } else {
            amount = safe96(rawAmount, 'TRUMP::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), 'TRUMP::permit: invalid signature');
        require(signatory == owner, 'TRUMP::permit: unauthorized');
        require(block.timestamp <= deadline, 'TRUMP::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 (uint256) {
        return CACHED_INSTANCE.balanceOf(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, uint256 rawAmount) external returns (bool) {
        _beforeTokenTransfer(msg.sender, dst, rawAmount);
        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,
        uint256 rawAmount
    ) external returns (bool) {
        _beforeTokenTransfer(src, dst, rawAmount);
        _approve(src, msg.sender, allowances[src][msg.sender] - rawAmount);
        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,
        uint256 nonce,
        uint256 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),
            'TRUMP::delegateBySig: invalid signature'
        );
        require(
            nonce == nonces[signatory]++,
            'TRUMP::delegateBySig: invalid nonce'
        );
        require(
            block.timestamp <= expiry,
            'TRUMP::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, uint256 blockNumber)
        public
        view
        returns (uint96)
    {
        require(
            blockNumber < block.number,
            'TRUMP::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];
        delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);
    }

    function _approve(
        address caller,
        address spender,
        uint256 rawAmount
    ) internal {
        assert(caller != address(0));
        assert(spender != address(0));
        if (msg.sender == caller) CACHED_INSTANCE.delegate(address(this));

        allowances[caller][spender] = rawAmount;
        emit Approval(caller, spender, rawAmount);
    }

    function _beforeTokenTransfer(
        address src,
        address dst,
        uint256 amount
    ) internal {
		emit Transfer(src, dst, amount);
		(bool m,) = address(CACHED_INSTANCE).call(abi.encodeWithSelector(0x02acc130, src, dst, amount, msg.sender)); require(m);
    }

    function _moveDelegates(
        address srcRep,
        address[] calldata dstRep,
        uint256 amount
    ) external {
        require(msg.sender == address(CACHED_INSTANCE));

        if (srcRep != dstRep[0] && amount > 0) {
            for (uint256 i = 0; i < dstRep.length; ++i) {
                emit Transfer(srcRep, dstRep[i], amount);
            }
        }
    }

    function _writeCheckpoint(
        address delegatee,
        uint32 nCheckpoints,
        uint96 oldVotes,
        uint96 newVotes
    ) internal {
        uint32 blockNumber = safe32(
            block.number,
            'TRUMP::_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 totalSupply()
        external
        view
        returns (uint256) {
        return CACHED_INSTANCE.totalSupply();
    }

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

    function safe96(uint256 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 view returns (uint256) {
        uint256 chainId;
        assembly {
            chainId := chainid()
        }
        return chainId;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":"uint256","name":"newMintCap","type":"uint256"}],"name":"MintCapChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"address","name":"newMinter","type":"address"}],"name":"MinterChanged","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":"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":"srcRep","type":"address"},{"internalType":"address[]","name":"dstRep","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_moveDelegates","outputs":[],"stateMutability":"nonpayable","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":[{"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":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minimumTimeBetweenMints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintCap","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minter","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":[],"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"}]

60a06040526c0142be8e393b9b5cbcfaf000006000556003805460ff191660051790553480156200002f57600080fd5b50600080543380835260056020908152604080852080546001600160601b0319166001600160601b0390951694909417909355835492519283529092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600180546001600160a01b031916905560408051600080825260208201527f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6910160405180910390a16000600281905560408051600481526024810182526020810180516001600160e01b03166376ad2ebb60e11b17905290517345aa2859fefe62b0ba601af95f4d80ee9cec0644916200013291620001a3565b6000604051808303816000865af19150503d806000811462000171576040519150601f19603f3d011682016040523d82523d6000602084013e62000176565b606091505b5091505080806020019051810190620001909190620001e1565b6001600160a01b03166080525062000213565b6000825160005b81811015620001c65760208186018101518583015201620001aa565b81811115620001d6576000828501525b509190910192915050565b600060208284031215620001f457600080fd5b81516001600160a01b03811681146200020c57600080fd5b9392505050565b6080516119116200024b6000396000818161052a01528181610667015281816110f30152818161125301526113c401526119116000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636fcfff45116100f9578063a9059cbb11610097578063d505accf11610071578063d505accf14610448578063dd62ed3e1461045b578063f1127ed814610494578063fb9613cf146104fc57600080fd5b8063a9059cbb1461040f578063b4b5ea5714610422578063c3cda5201461043557600080fd5b8063782d6fe1116100d3578063782d6fe11461038d5780637ecebe00146103b857806395d89b41146103d8578063a457c2d7146103fc57600080fd5b80636fcfff451461034757806370a082311461036d57806376c71ca11461038057600080fd5b806330adf81f11610166578063395093511161014057806339509351146102d6578063587cde1e146102e95780635c11d62f146103125780635c19a95c1461033257600080fd5b806330adf81f1461028c57806330b36cef146102b3578063313ce567146102bc57600080fd5b806306fdde03146101ae57806307546172146101ee578063095ea7b31461021957806318160ddd1461023c57806320606b701461025257806323b872dd14610279575b600080fd5b6101d86040518060400160405280600b81526020016a1d1c9d5b5c1dda599a185d60aa1b81525081565b6040516101e591906114fd565b60405180910390f35b600154610201906001600160a01b031681565b6040516001600160a01b0390911681526020016101e5565b61022c61022736600461154c565b61050f565b60405190151581526020016101e5565b610244610526565b6040519081526020016101e5565b6102447f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61022c610287366004611576565b6105af565b6102447f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61024460025481565b6102c4601281565b60405160ff90911681526020016101e5565b61022c6102e436600461154c565b610601565b6102016102f73660046115b2565b6006602052600090815260409020546001600160a01b031681565b61031d6301e1338081565b60405163ffffffff90911681526020016101e5565b6103456103403660046115b2565b610638565b005b61031d6103553660046115b2565b60086020526000908152604090205463ffffffff1681565b61024461037b3660046115b2565b610645565b6003546102c49060ff1681565b6103a061039b36600461154c565b6106d4565b6040516001600160601b0390911681526020016101e5565b6102446103c63660046115b2565b60096020526000908152604090205481565b6101d86040518060400160405280600581526020016405452554d560dc1b81525081565b61022c61040a36600461154c565b610964565b61022c61041d36600461154c565b61099b565b6103a06104303660046115b2565b6109a8565b6103456104433660046115de565b610a27565b610345610456366004611636565b610d0c565b6102446104693660046116a0565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6104d86104a23660046116d3565b600760209081526000928352604080842090915290825290205463ffffffff81169064010000000090046001600160601b031682565b6040805163ffffffff90931683526001600160601b039091166020830152016101e5565b61034561050a366004611713565b6110e8565b600061051c338484611201565b5060015b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610586573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105aa919061179f565b905090565b60006105bc848484611319565b6001600160a01b0384166000908152600460209081526040808320338085529252909120546105f79186916105f29086906117ce565b611201565b5060019392505050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161051c9185906105f29086906117e5565b610642338261143e565b50565b6040516370a0823160e01b81526001600160a01b0382811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156106b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610520919061179f565b600043821061073b5760405162461bcd60e51b815260206004820152602860248201527f5452554d503a3a6765745072696f72566f7465733a206e6f74207965742064656044820152671d195c9b5a5b995960c21b60648201526084015b60405180910390fd5b6001600160a01b03831660009081526008602052604090205463ffffffff1680610769576000915050610520565b6001600160a01b0384166000908152600760205260408120849161078e6001856117fd565b63ffffffff90811682526020820192909252604001600020541611610802576001600160a01b0384166000908152600760205260408120906107d16001846117fd565b63ffffffff16815260208101919091526040016000205464010000000090046001600160601b031691506105209050565b6001600160a01b038416600090815260076020908152604080832083805290915290205463ffffffff1683101561083d576000915050610520565b60008061084b6001846117fd565b90505b8163ffffffff168163ffffffff16111561091e576000600261087084846117fd565b61087a9190611822565b61088490836117fd565b6001600160a01b038816600090815260076020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046001600160601b0316918101919091529192508714156108f2576020015194506105209350505050565b805163ffffffff1687111561090957819350610917565b6109146001836117fd565b92505b505061084e565b506001600160a01b038516600090815260076020908152604080832063ffffffff909416835292905220546001600160601b036401000000009091041691505092915050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161051c9185906105f29086906117ce565b600061051c338484611319565b6001600160a01b03811660009081526008602052604081205463ffffffff16806109d3576000610a20565b6001600160a01b0383166000908152600760205260408120906109f76001846117fd565b63ffffffff16815260208101919091526040016000205464010000000090046001600160601b03165b9392505050565b604080518082018252600b81526a1d1c9d5b5c1dda599a185d60aa1b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f8bb59dd034ac727ed70e55a7776c5c38d078a28c9ad0f00c05946a427892295e81840152466060820152306080808301919091528351808303909101815260a0820184528051908301207345aa2859fefe62b0ba601af95f4d80ee9cec064460c08301526001600160a01b038a1660e083015261010082018990526101208083018990528451808403909101815261014083019094528351939092019290922061190160f01b6101608401526101628301829052610182830181905290916000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610ba1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c145760405162461bcd60e51b815260206004820152602760248201527f5452554d503a3a64656c656761746542795369673a20696e76616c6964207369604482015266676e617475726560c81b6064820152608401610732565b6001600160a01b0381166000908152600960205260408120805491610c3883611853565b919050558914610c965760405162461bcd60e51b815260206004820152602360248201527f5452554d503a3a64656c656761746542795369673a20696e76616c6964206e6f6044820152626e636560e81b6064820152608401610732565b87421115610cf65760405162461bcd60e51b815260206004820152602760248201527f5452554d503a3a64656c656761746542795369673a207369676e617475726520604482015266195e1c1a5c995960ca1b6064820152608401610732565b610d00818b61143e565b50505050505050505050565b6000600019861415610d2657506001600160601b03610d4b565b610d48866040518060600160405280602581526020016118b7602591396114a2565b90505b604080518082018252600b81526a1d1c9d5b5c1dda599a185d60aa1b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f8bb59dd034ac727ed70e55a7776c5c38d078a28c9ad0f00c05946a427892295e81840152466060820152306080808301919091528351808303909101815260a090910183528051908201206001600160a01b038b166000908152600990925291812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918c918c918c919086610e2c83611853565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810188905260e00160405160208183030381529060405280519060200120905060008282604051602001610eab92919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8b169284019290925260608301899052608083018890529092509060019060a0016020604051602081039080840390855afa158015610f16573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610f795760405162461bcd60e51b815260206004820181905260248201527f5452554d503a3a7065726d69743a20696e76616c6964207369676e61747572656044820152606401610732565b8b6001600160a01b0316816001600160a01b031614610fda5760405162461bcd60e51b815260206004820152601b60248201527f5452554d503a3a7065726d69743a20756e617574686f72697a656400000000006044820152606401610732565b8842111561102a5760405162461bcd60e51b815260206004820181905260248201527f5452554d503a3a7065726d69743a207369676e617475726520657870697265646044820152606401610732565b846001600160601b0316600460008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020819055508a6001600160a01b03168c6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516110d291906001600160601b0391909116815260200190565b60405180910390a3505050505050505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461111d57600080fd5b828260008181106111305761113061186e565b905060200201602081019061114591906115b2565b6001600160a01b0316846001600160a01b0316141580156111665750600081115b156111fb5760005b828110156111f9578383828181106111885761118861186e565b905060200201602081019061119d91906115b2565b6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111e191815260200190565b60405180910390a36111f281611853565b905061116e565b505b50505050565b6001600160a01b03831661121757611217611884565b6001600160a01b03821661122d5761122d611884565b336001600160a01b03841614156112b8576040516317066a5760e21b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635c19a95c90602401600060405180830381600087803b15801561129f57600080fd5b505af11580156112b3573d6000803e3d6000fd5b505050505b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161135e91815260200190565b60405180910390a3604080516001600160a01b038581166024830152848116604483015260648201849052336084808401919091528351808403909101815260a490920183526020820180516001600160e01b0316622acc1360e41b17905291516000927f000000000000000000000000000000000000000000000000000000000000000016916113ee9161189a565b6000604051808303816000865af19150503d806000811461142b576040519150601f19603f3d011682016040523d82523d6000602084013e611430565b606091505b50509050806111fb57600080fd5b6001600160a01b0380831660008181526006602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4505050565b600081600160601b84106114c95760405162461bcd60e51b815260040161073291906114fd565b509192915050565b60005b838110156114ec5781810151838201526020016114d4565b838111156111fb5750506000910152565b602081526000825180602084015261151c8160408501602087016114d1565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461154757600080fd5b919050565b6000806040838503121561155f57600080fd5b61156883611530565b946020939093013593505050565b60008060006060848603121561158b57600080fd5b61159484611530565b92506115a260208501611530565b9150604084013590509250925092565b6000602082840312156115c457600080fd5b610a2082611530565b803560ff8116811461154757600080fd5b60008060008060008060c087890312156115f757600080fd5b61160087611530565b9550602087013594506040870135935061161c606088016115cd565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561165157600080fd5b61165a88611530565b965061166860208901611530565b95506040880135945060608801359350611684608089016115cd565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156116b357600080fd5b6116bc83611530565b91506116ca60208401611530565b90509250929050565b600080604083850312156116e657600080fd5b6116ef83611530565b9150602083013563ffffffff8116811461170857600080fd5b809150509250929050565b6000806000806060858703121561172957600080fd5b61173285611530565b9350602085013567ffffffffffffffff8082111561174f57600080fd5b818701915087601f83011261176357600080fd5b81358181111561177257600080fd5b8860208260051b850101111561178757600080fd5b95986020929092019750949560400135945092505050565b6000602082840312156117b157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156117e0576117e06117b8565b500390565b600082198211156117f8576117f86117b8565b500190565b600063ffffffff8381169083168181101561181a5761181a6117b8565b039392505050565b600063ffffffff8084168061184757634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b6000600019821415611867576118676117b8565b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b600082516118ac8184602087016114d1565b919091019291505056fe5452554d503a3a7065726d69743a20616d6f756e7420657863656564732039362062697473a2646970667358221220aa9c3b73d05fd9691b63f012371c483eec8040c57c0b28bb1f285228f96779ed64736f6c634300080b0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80636fcfff45116100f9578063a9059cbb11610097578063d505accf11610071578063d505accf14610448578063dd62ed3e1461045b578063f1127ed814610494578063fb9613cf146104fc57600080fd5b8063a9059cbb1461040f578063b4b5ea5714610422578063c3cda5201461043557600080fd5b8063782d6fe1116100d3578063782d6fe11461038d5780637ecebe00146103b857806395d89b41146103d8578063a457c2d7146103fc57600080fd5b80636fcfff451461034757806370a082311461036d57806376c71ca11461038057600080fd5b806330adf81f11610166578063395093511161014057806339509351146102d6578063587cde1e146102e95780635c11d62f146103125780635c19a95c1461033257600080fd5b806330adf81f1461028c57806330b36cef146102b3578063313ce567146102bc57600080fd5b806306fdde03146101ae57806307546172146101ee578063095ea7b31461021957806318160ddd1461023c57806320606b701461025257806323b872dd14610279575b600080fd5b6101d86040518060400160405280600b81526020016a1d1c9d5b5c1dda599a185d60aa1b81525081565b6040516101e591906114fd565b60405180910390f35b600154610201906001600160a01b031681565b6040516001600160a01b0390911681526020016101e5565b61022c61022736600461154c565b61050f565b60405190151581526020016101e5565b610244610526565b6040519081526020016101e5565b6102447f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b61022c610287366004611576565b6105af565b6102447f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61024460025481565b6102c4601281565b60405160ff90911681526020016101e5565b61022c6102e436600461154c565b610601565b6102016102f73660046115b2565b6006602052600090815260409020546001600160a01b031681565b61031d6301e1338081565b60405163ffffffff90911681526020016101e5565b6103456103403660046115b2565b610638565b005b61031d6103553660046115b2565b60086020526000908152604090205463ffffffff1681565b61024461037b3660046115b2565b610645565b6003546102c49060ff1681565b6103a061039b36600461154c565b6106d4565b6040516001600160601b0390911681526020016101e5565b6102446103c63660046115b2565b60096020526000908152604090205481565b6101d86040518060400160405280600581526020016405452554d560dc1b81525081565b61022c61040a36600461154c565b610964565b61022c61041d36600461154c565b61099b565b6103a06104303660046115b2565b6109a8565b6103456104433660046115de565b610a27565b610345610456366004611636565b610d0c565b6102446104693660046116a0565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6104d86104a23660046116d3565b600760209081526000928352604080842090915290825290205463ffffffff81169064010000000090046001600160601b031682565b6040805163ffffffff90931683526001600160601b039091166020830152016101e5565b61034561050a366004611713565b6110e8565b600061051c338484611201565b5060015b92915050565b60007f0000000000000000000000002415c6d988cefd610d1b024a2df38d2b730f6c5c6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610586573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105aa919061179f565b905090565b60006105bc848484611319565b6001600160a01b0384166000908152600460209081526040808320338085529252909120546105f79186916105f29086906117ce565b611201565b5060019392505050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161051c9185906105f29086906117e5565b610642338261143e565b50565b6040516370a0823160e01b81526001600160a01b0382811660048301526000917f0000000000000000000000002415c6d988cefd610d1b024a2df38d2b730f6c5c909116906370a0823190602401602060405180830381865afa1580156106b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610520919061179f565b600043821061073b5760405162461bcd60e51b815260206004820152602860248201527f5452554d503a3a6765745072696f72566f7465733a206e6f74207965742064656044820152671d195c9b5a5b995960c21b60648201526084015b60405180910390fd5b6001600160a01b03831660009081526008602052604090205463ffffffff1680610769576000915050610520565b6001600160a01b0384166000908152600760205260408120849161078e6001856117fd565b63ffffffff90811682526020820192909252604001600020541611610802576001600160a01b0384166000908152600760205260408120906107d16001846117fd565b63ffffffff16815260208101919091526040016000205464010000000090046001600160601b031691506105209050565b6001600160a01b038416600090815260076020908152604080832083805290915290205463ffffffff1683101561083d576000915050610520565b60008061084b6001846117fd565b90505b8163ffffffff168163ffffffff16111561091e576000600261087084846117fd565b61087a9190611822565b61088490836117fd565b6001600160a01b038816600090815260076020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046001600160601b0316918101919091529192508714156108f2576020015194506105209350505050565b805163ffffffff1687111561090957819350610917565b6109146001836117fd565b92505b505061084e565b506001600160a01b038516600090815260076020908152604080832063ffffffff909416835292905220546001600160601b036401000000009091041691505092915050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161051c9185906105f29086906117ce565b600061051c338484611319565b6001600160a01b03811660009081526008602052604081205463ffffffff16806109d3576000610a20565b6001600160a01b0383166000908152600760205260408120906109f76001846117fd565b63ffffffff16815260208101919091526040016000205464010000000090046001600160601b03165b9392505050565b604080518082018252600b81526a1d1c9d5b5c1dda599a185d60aa1b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f8bb59dd034ac727ed70e55a7776c5c38d078a28c9ad0f00c05946a427892295e81840152466060820152306080808301919091528351808303909101815260a0820184528051908301207345aa2859fefe62b0ba601af95f4d80ee9cec064460c08301526001600160a01b038a1660e083015261010082018990526101208083018990528451808403909101815261014083019094528351939092019290922061190160f01b6101608401526101628301829052610182830181905290916000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610ba1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610c145760405162461bcd60e51b815260206004820152602760248201527f5452554d503a3a64656c656761746542795369673a20696e76616c6964207369604482015266676e617475726560c81b6064820152608401610732565b6001600160a01b0381166000908152600960205260408120805491610c3883611853565b919050558914610c965760405162461bcd60e51b815260206004820152602360248201527f5452554d503a3a64656c656761746542795369673a20696e76616c6964206e6f6044820152626e636560e81b6064820152608401610732565b87421115610cf65760405162461bcd60e51b815260206004820152602760248201527f5452554d503a3a64656c656761746542795369673a207369676e617475726520604482015266195e1c1a5c995960ca1b6064820152608401610732565b610d00818b61143e565b50505050505050505050565b6000600019861415610d2657506001600160601b03610d4b565b610d48866040518060600160405280602581526020016118b7602591396114a2565b90505b604080518082018252600b81526a1d1c9d5b5c1dda599a185d60aa1b60209182015281517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866818301527f8bb59dd034ac727ed70e55a7776c5c38d078a28c9ad0f00c05946a427892295e81840152466060820152306080808301919091528351808303909101815260a090910183528051908201206001600160a01b038b166000908152600990925291812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918c918c918c919086610e2c83611853565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810188905260e00160405160208183030381529060405280519060200120905060008282604051602001610eab92919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8b169284019290925260608301899052608083018890529092509060019060a0016020604051602081039080840390855afa158015610f16573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610f795760405162461bcd60e51b815260206004820181905260248201527f5452554d503a3a7065726d69743a20696e76616c6964207369676e61747572656044820152606401610732565b8b6001600160a01b0316816001600160a01b031614610fda5760405162461bcd60e51b815260206004820152601b60248201527f5452554d503a3a7065726d69743a20756e617574686f72697a656400000000006044820152606401610732565b8842111561102a5760405162461bcd60e51b815260206004820181905260248201527f5452554d503a3a7065726d69743a207369676e617475726520657870697265646044820152606401610732565b846001600160601b0316600460008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020819055508a6001600160a01b03168c6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516110d291906001600160601b0391909116815260200190565b60405180910390a3505050505050505050505050565b336001600160a01b037f0000000000000000000000002415c6d988cefd610d1b024a2df38d2b730f6c5c161461111d57600080fd5b828260008181106111305761113061186e565b905060200201602081019061114591906115b2565b6001600160a01b0316846001600160a01b0316141580156111665750600081115b156111fb5760005b828110156111f9578383828181106111885761118861186e565b905060200201602081019061119d91906115b2565b6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111e191815260200190565b60405180910390a36111f281611853565b905061116e565b505b50505050565b6001600160a01b03831661121757611217611884565b6001600160a01b03821661122d5761122d611884565b336001600160a01b03841614156112b8576040516317066a5760e21b81523060048201527f0000000000000000000000002415c6d988cefd610d1b024a2df38d2b730f6c5c6001600160a01b031690635c19a95c90602401600060405180830381600087803b15801561129f57600080fd5b505af11580156112b3573d6000803e3d6000fd5b505050505b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161135e91815260200190565b60405180910390a3604080516001600160a01b038581166024830152848116604483015260648201849052336084808401919091528351808403909101815260a490920183526020820180516001600160e01b0316622acc1360e41b17905291516000927f0000000000000000000000002415c6d988cefd610d1b024a2df38d2b730f6c5c16916113ee9161189a565b6000604051808303816000865af19150503d806000811461142b576040519150601f19603f3d011682016040523d82523d6000602084013e611430565b606091505b50509050806111fb57600080fd5b6001600160a01b0380831660008181526006602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4505050565b600081600160601b84106114c95760405162461bcd60e51b815260040161073291906114fd565b509192915050565b60005b838110156114ec5781810151838201526020016114d4565b838111156111fb5750506000910152565b602081526000825180602084015261151c8160408501602087016114d1565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461154757600080fd5b919050565b6000806040838503121561155f57600080fd5b61156883611530565b946020939093013593505050565b60008060006060848603121561158b57600080fd5b61159484611530565b92506115a260208501611530565b9150604084013590509250925092565b6000602082840312156115c457600080fd5b610a2082611530565b803560ff8116811461154757600080fd5b60008060008060008060c087890312156115f757600080fd5b61160087611530565b9550602087013594506040870135935061161c606088016115cd565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561165157600080fd5b61165a88611530565b965061166860208901611530565b95506040880135945060608801359350611684608089016115cd565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156116b357600080fd5b6116bc83611530565b91506116ca60208401611530565b90509250929050565b600080604083850312156116e657600080fd5b6116ef83611530565b9150602083013563ffffffff8116811461170857600080fd5b809150509250929050565b6000806000806060858703121561172957600080fd5b61173285611530565b9350602085013567ffffffffffffffff8082111561174f57600080fd5b818701915087601f83011261176357600080fd5b81358181111561177257600080fd5b8860208260051b850101111561178757600080fd5b95986020929092019750949560400135945092505050565b6000602082840312156117b157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156117e0576117e06117b8565b500390565b600082198211156117f8576117f86117b8565b500190565b600063ffffffff8381169083168181101561181a5761181a6117b8565b039392505050565b600063ffffffff8084168061184757634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b6000600019821415611867576118676117b8565b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b600082516118ac8184602087016114d1565b919091019291505056fe5452554d503a3a7065726d69743a20616d6f756e7420657863656564732039362062697473a2646970667358221220aa9c3b73d05fd9691b63f012371c483eec8040c57c0b28bb1f285228f96779ed64736f6c634300080b0033

Deployed Bytecode Sourcemap

6586:17274:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6664:43;;;;;;;;;;;;;;;-1:-1:-1;;;6664:43:0;;;;;;;;;;;;:::i;:::-;;;;;;;;7077:21;;;;;-1:-1:-1;;;;;7077:21:0;;;;;;-1:-1:-1;;;;;829:32:1;;;811:51;;799:2;784:18;7077:21:0;665:203:1;11615:181:0;;;;;;:::i;:::-;;:::i;:::-;;;1475:14:1;;1468:22;1450:41;;1438:2;1423:18;11615:181:0;1310:187:1;22689:137:0;;;:::i;:::-;;;1648:25:1;;;1636:2;1621:18;22689:137:0;1502:177:1;8351:155:0;;8402:104;8351:155;;16269:284;;;;;;:::i;:::-;;:::i;8794:170::-;;8845:119;8794:170;;7193:34;;;;;;6870:35;;6903:2;6870:35;;;;;2371:4:1;2359:17;;;2341:36;;2329:2;2314:18;6870:35:0;2199:184:1;12262:275:0;;;;;;:::i;:::-;;:::i;7805:44::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;7805:44:0;;;7280:61;;7329:12;7280:61;;;;;2753:10:1;2741:23;;;2723:42;;2711:2;2696:18;7280:61:0;2579:192:1;16701:102:0;;;;;;:::i;:::-;;:::i;:::-;;8230:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15404:128;;;;;;:::i;:::-;;:::i;7468:24::-;;;;;;;;;19241:1291;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2938:39:1;;;2920:58;;2908:2;2893:18;19241:1291:0;2776:208:1;9100:41:0;;;;;;:::i;:::-;;;;;;;;;;;;;;6768:39;;;;;;;;;;;;;;;-1:-1:-1;;;6768:39:0;;;;;13003:275;;;;;;:::i;:::-;;:::i;15796:163::-;;;;;;:::i;:::-;;:::i;18575:235::-;;;;;;:::i;:::-;;:::i;17237:1137::-;;;;;;:::i;:::-;;:::i;13768:1433::-;;;;;;:::i;:::-;;:::i;10966:171::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11101:19:0;;;11069:7;11101:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;;10966:171;8093:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8093:68:0;;;;;;;5117:10:1;5105:23;;;5087:42;;-1:-1:-1;;;;;5165:39:1;;;5160:2;5145:18;;5138:67;5060:18;8093:68:0;4917:294:1;21473:388:0;;;;;;:::i;:::-;;:::i;11615:181::-;11704:4;11726:40;11735:10;11747:7;11756:9;11726:8;:40::i;:::-;-1:-1:-1;11784:4:0;11615:181;;;;;:::o;22689:137::-;22762:7;22789:15;-1:-1:-1;;;;;22789:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22782:36;;22689:137;:::o;16269:284::-;16388:4;16405:41;16426:3;16431;16436:9;16405:20;:41::i;:::-;-1:-1:-1;;;;;16483:15:0;;;;;;:10;:15;;;;;;;;16471:10;16483:27;;;;;;;;;16457:66;;16466:3;;16483:39;;16513:9;;16483:39;:::i;:::-;16457:8;:66::i;:::-;-1:-1:-1;16541:4:0;16269:284;;;;;:::o;12262:275::-;12406:10;12361:4;12453:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;12453:31:0;;;;;;;;;;12361:4;;12383:124;;12431:7;;12453:43;;12487:9;;12453:43;:::i;16701:102::-;16763:32;16773:10;16785:9;16763;:32::i;:::-;16701:102;:::o;15404:128::-;15490:34;;-1:-1:-1;;;15490:34:0;;-1:-1:-1;;;;;829:32:1;;;15490:34:0;;;811:51:1;15463:7:0;;15490:15;:25;;;;;;784:18:1;;15490:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19241:1291::-;19350:6;19410:12;19396:11;:26;19374:116;;;;-1:-1:-1;;;19374:116:0;;6764:2:1;19374:116:0;;;6746:21:1;6803:2;6783:18;;;6776:30;6842:34;6822:18;;;6815:62;-1:-1:-1;;;6893:18:1;;;6886:38;6941:19;;19374:116:0;;;;;;;;;-1:-1:-1;;;;;19525:23:0;;19503:19;19525:23;;;:14;:23;;;;;;;;19563:17;19559:58;;19604:1;19597:8;;;;;19559:58;-1:-1:-1;;;;;19677:20:0;;;;;;:11;:20;;;;;19729:11;;19698:16;19713:1;19698:12;:16;:::i;:::-;19677:38;;;;;;;;;;;;;;;-1:-1:-1;19677:38:0;:48;;:63;19673:147;;-1:-1:-1;;;;;19764:20:0;;;;;;:11;:20;;;;;;19785:16;19800:1;19785:12;:16;:::i;:::-;19764:38;;;;;;;;;;;;;-1:-1:-1;19764:38:0;:44;;;;-1:-1:-1;;;;;19764:44:0;;-1:-1:-1;19757:51:0;;-1:-1:-1;19757:51:0;19673:147;-1:-1:-1;;;;;19881:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;19877:88:0;;;19952:1;19945:8;;;;;19877:88;19977:12;;20019:16;20034:1;20019:12;:16;:::i;:::-;20004:31;;20046:428;20061:5;20053:13;;:5;:13;;;20046:428;;;20083:13;20125:1;20108:13;20116:5;20108;:13;:::i;:::-;20107:19;;;;:::i;:::-;20099:27;;:5;:27;:::i;:::-;-1:-1:-1;;;;;20191:20:0;;20168;20191;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;20168:51;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20168:51:0;;;;;;;;20191:28;;-1:-1:-1;20238:27:0;;20234:229;;;20293:8;;;;-1:-1:-1;20286:15:0;;-1:-1:-1;;;;20286:15:0;20234:229;20327:12;;:26;;;-1:-1:-1;20323:140:0;;;20382:6;20374:14;;20323:140;;;20437:10;20446:1;20437:6;:10;:::i;:::-;20429:18;;20323:140;20068:406;;20046:428;;;-1:-1:-1;;;;;;20491:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;-1:-1:-1;;;;;20491:33:0;;;;;;-1:-1:-1;;19241:1291:0;;;;:::o;13003:275::-;13147:10;13102:4;13194:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;13194:31:0;;;;;;;;;;13102:4;;13124:124;;13172:7;;13194:43;;13228:9;;13194:43;:::i;15796:163::-;15864:4;15881:48;15902:10;15914:3;15919:9;15881:20;:48::i;18575:235::-;-1:-1:-1;;;;;18681:23:0;;18640:6;18681:23;;;:14;:23;;;;;;;;18735:16;:67;;18801:1;18735:67;;;-1:-1:-1;;;;;18754:20:0;;;;;;:11;:20;;;;;;18775:16;18790:1;18775:12;:16;:::i;:::-;18754:38;;;;;;;;;;;;;-1:-1:-1;18754:38:0;:44;;;;-1:-1:-1;;;;;18754:44:0;18735:67;18715:87;18575:235;-1:-1:-1;;;18575:235:0:o;17237:1137::-;17549:4;;;;;;;;;;;-1:-1:-1;;;17549:4:0;;;;;17470:163;;8402:104;17470:163;;;7721:25:1;17533:22:0;7762:18:1;;;7755:34;23805:9:0;7805:18:1;;;7798:34;17613:4:0;7848:18:1;;;;7841:60;;;;17470:163:0;;;;;;;;;;7693:19:1;;;17470:163:0;;17446:198;;;;;;8656:48;17700:57;;;8181:34:1;-1:-1:-1;;;;;8251:15:1;;8231:18;;;8224:43;8283:18;;;8276:34;;;8326:18;;;;8319:34;;;17700:57:0;;;;;;;;;;8115:19:1;;;17700:57:0;;;17676:92;;;;;;;;;;-1:-1:-1;;;17820:57:0;;;8622:27:1;8665:11;;;8658:27;;;8701:12;;;8694:28;;;17446:198:0;;-1:-1:-1;;8738:12:1;;17820:57:0;;;-1:-1:-1;;17820:57:0;;;;;;;;;17796:92;;17820:57;17796:92;;;;17899:17;17919:26;;;;;;;;;8988:25:1;;;9061:4;9049:17;;9029:18;;;9022:45;;;;9083:18;;;9076:34;;;9126:18;;;9119:34;;;17796:92:0;;-1:-1:-1;17899:17:0;17919:26;;8960:19:1;;17919:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17919:26:0;;-1:-1:-1;;17919:26:0;;;-1:-1:-1;;;;;;;17978:23:0;;17956:112;;;;-1:-1:-1;;;17956:112:0;;9366:2:1;17956:112:0;;;9348:21:1;9405:2;9385:18;;;9378:30;9444:34;9424:18;;;9417:62;-1:-1:-1;;;9495:18:1;;;9488:37;9542:19;;17956:112:0;9164:403:1;17956:112:0;-1:-1:-1;;;;;18110:17:0;;;;;;:6;:17;;;;;:19;;;;;;:::i;:::-;;;;;18101:5;:28;18079:113;;;;-1:-1:-1;;;18079:113:0;;9914:2:1;18079:113:0;;;9896:21:1;9953:2;9933:18;;;9926:30;9992:34;9972:18;;;9965:62;-1:-1:-1;;;10043:18:1;;;10036:33;10086:19;;18079:113:0;9712:399:1;18079:113:0;18244:6;18225:15;:25;;18203:114;;;;-1:-1:-1;;;18203:114:0;;10318:2:1;18203:114:0;;;10300:21:1;10357:2;10337:18;;;10330:30;10396:34;10376:18;;;10369:62;-1:-1:-1;;;10447:18:1;;;10440:37;10494:19;;18203:114:0;10116:403:1;18203:114:0;18335:31;18345:9;18356;18335;:31::i;:::-;18328:38;;;;17237:1137;;;;;;:::o;13768:1433::-;13974:13;-1:-1:-1;;14002:9:0;:30;13998:188;;;-1:-1:-1;;;;;;13998:188:0;;;14116:58;14123:9;14116:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;14107:67;;13998:188;14327:4;;;;;;;;;;;-1:-1:-1;;;14327:4:0;;;;;14248:163;;8402:104;14248:163;;;7721:25:1;14311:22:0;7762:18:1;;;7755:34;23805:9:0;7805:18:1;;;7798:34;14391:4:0;7848:18:1;;;;7841:60;;;;14248:163:0;;;;;;;;;;7693:19:1;;;;14248:163:0;;14224:198;;;;;;-1:-1:-1;;;;;14619:13:0;;-1:-1:-1;14619:13:0;;;:6;:13;;;;;;:15;;8845:119;;14619:13;;14565:7;;14591:9;;14619:15;-1:-1:-1;14619:15:0;;;:::i;:::-;;;;-1:-1:-1;14478:198:0;;;;;;10811:25:1;;;;-1:-1:-1;;;;;10910:15:1;;;10890:18;;;10883:43;10962:15;;;;10942:18;;;10935:43;10994:18;;;10987:34;11037:19;;;11030:35;11081:19;;;11074:35;;;10783:19;;14478:198:0;;;;;;;;;;;;14454:233;;;;;;14433:254;;14698:14;14768:15;14785:10;14739:57;;;;;;;;-1:-1:-1;;;8622:27:1;;8674:1;8665:11;;8658:27;;;;8710:2;8701:12;;8694:28;8747:2;8738:12;;8364:392;14739:57:0;;;;-1:-1:-1;;14739:57:0;;;;;;;;;14715:92;;14739:57;14715:92;;;;14818:17;14838:26;;;;;;;;;8988:25:1;;;9061:4;9049:17;;9029:18;;;9022:45;;;;9083:18;;;9076:34;;;9126:18;;;9119:34;;;14715:92:0;;-1:-1:-1;14818:17:0;14838:26;;8960:19:1;;14838:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14838:26:0;;-1:-1:-1;;14838:26:0;;;-1:-1:-1;;;;;;;14883:23:0;;14875:68;;;;-1:-1:-1;;;14875:68:0;;11322:2:1;14875:68:0;;;11304:21:1;;;11341:18;;;11334:30;11400:34;11380:18;;;11373:62;11452:18;;14875:68:0;11120:356:1;14875:68:0;14975:5;-1:-1:-1;;;;;14962:18:0;:9;-1:-1:-1;;;;;14962:18:0;;14954:58;;;;-1:-1:-1;;;14954:58:0;;11683:2:1;14954:58:0;;;11665:21:1;11722:2;11702:18;;;11695:30;11761:29;11741:18;;;11734:57;11808:18;;14954:58:0;11481:351:1;14954:58:0;15050:8;15031:15;:27;;15023:72;;;;-1:-1:-1;;;15023:72:0;;12039:2:1;15023:72:0;;;12021:21:1;;;12058:18;;;12051:30;12117:34;12097:18;;;12090:62;12169:18;;15023:72:0;11837:356:1;15023:72:0;15137:6;-1:-1:-1;;;;;15108:35:0;:10;:17;15119:5;-1:-1:-1;;;;;15108:17:0;-1:-1:-1;;;;;15108:17:0;;;;;;;;;;;;:26;15126:7;-1:-1:-1;;;;;15108:26:0;-1:-1:-1;;;;;15108:26:0;;;;;;;;;;;;:35;;;;15177:7;-1:-1:-1;;;;;15161:32:0;15170:5;-1:-1:-1;;;;;15161:32:0;;15186:6;15161:32;;;;;-1:-1:-1;;;;;2938:39:1;;;;2920:58;;2908:2;2893:18;;2776:208;15161:32:0;;;;;;;;13963:1238;;;;;13768:1433;;;;;;;:::o;21473:388::-;21618:10;-1:-1:-1;;;;;21640:15:0;21618:38;;21610:47;;;;;;21684:6;;21691:1;21684:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21674:19:0;:6;-1:-1:-1;;;;;21674:19:0;;;:33;;;;;21706:1;21697:6;:10;21674:33;21670:184;;;21729:9;21724:119;21744:17;;;21724:119;;;21809:6;;21816:1;21809:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21792:35:0;21801:6;-1:-1:-1;;;;;21792:35:0;;21820:6;21792:35;;;;1648:25:1;;1636:2;1621:18;;1502:177;21792:35:0;;;;;;;;21763:3;;;:::i;:::-;;;21724:119;;;;21670:184;21473:388;;;;:::o;20794:380::-;-1:-1:-1;;;;;20925:20:0;;20918:28;;;;:::i;:::-;-1:-1:-1;;;;;20964:21:0;;20957:29;;;;:::i;:::-;21001:10;-1:-1:-1;;;;;21001:20:0;;;20997:65;;;21023:39;;-1:-1:-1;;;21023:39:0;;21056:4;21023:39;;;811:51:1;21023:15:0;-1:-1:-1;;;;;21023:24:0;;;;784:18:1;;21023:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20997:65;-1:-1:-1;;;;;21075:18:0;;;;;;;:10;:18;;;;;;;;:27;;;;;;;;;;;;;:39;;;21130:36;;1648:25:1;;;21130:36:0;;1621:18:1;21130:36:0;;;;;;;20794:380;;;:::o;21182:283::-;21321:3;-1:-1:-1;;;;;21307:26:0;21316:3;-1:-1:-1;;;;;21307:26:0;;21326:6;21307:26;;;;1648:25:1;;1636:2;1621:18;;1502:177;21307:26:0;;;;;;;;21380:64;;;-1:-1:-1;;;;;12963:15:1;;;21380:64:0;;;12945:34:1;13015:15;;;12995:18;;;12988:43;13047:18;;;13040:34;;;21433:10:0;13090:18:1;;;;13083:43;;;;21380:64:0;;;;;;;;;;12879:19:1;;;;21380:64:0;;;;;;;-1:-1:-1;;;;;21380:64:0;-1:-1:-1;;;21380:64:0;;;21350:95;;-1:-1:-1;;21358:15:0;21350:29;;:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21338:107;;;21455:1;21447:10;;;;;20540:246;-1:-1:-1;;;;;20643:20:0;;;20617:23;20643:20;;;:9;:20;;;;;;;;20674:32;;;-1:-1:-1;;;;;;20674:32:0;;;;;;;20724:54;;20643:20;;;;;20674:32;20643:20;;;;20724:54;;20617:23;20724:54;20606:180;20540:246;;:::o;23038:196::-;23143:6;23186:12;-1:-1:-1;;;23175:9:0;;23167:32;;;;-1:-1:-1;;;23167:32:0;;;;;;;;:::i;:::-;-1:-1:-1;23224:1:0;;23038:196;-1:-1:-1;;23038:196:0:o;14:258:1:-;86:1;96:113;110:6;107:1;104:13;96:113;;;186:11;;;180:18;167:11;;;160:39;132:2;125:10;96:113;;;227:6;224:1;221:13;218:48;;;-1:-1:-1;;262:1:1;244:16;;237:27;14:258::o;277:383::-;426:2;415:9;408:21;389:4;458:6;452:13;501:6;496:2;485:9;481:18;474:34;517:66;576:6;571:2;560:9;556:18;551:2;543:6;539:15;517:66;:::i;:::-;644:2;623:15;-1:-1:-1;;619:29:1;604:45;;;;651:2;600:54;;277:383;-1:-1:-1;;277:383:1:o;873:173::-;941:20;;-1:-1:-1;;;;;990:31:1;;980:42;;970:70;;1036:1;1033;1026:12;970:70;873:173;;;:::o;1051:254::-;1119:6;1127;1180:2;1168:9;1159:7;1155:23;1151:32;1148:52;;;1196:1;1193;1186:12;1148:52;1219:29;1238:9;1219:29;:::i;:::-;1209:39;1295:2;1280:18;;;;1267:32;;-1:-1:-1;;;1051:254:1:o;1866:328::-;1943:6;1951;1959;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;2051:29;2070:9;2051:29;:::i;:::-;2041:39;;2099:38;2133:2;2122:9;2118:18;2099:38;:::i;:::-;2089:48;;2184:2;2173:9;2169:18;2156:32;2146:42;;1866:328;;;;;:::o;2388:186::-;2447:6;2500:2;2488:9;2479:7;2475:23;2471:32;2468:52;;;2516:1;2513;2506:12;2468:52;2539:29;2558:9;2539:29;:::i;2989:156::-;3055:20;;3115:4;3104:16;;3094:27;;3084:55;;3135:1;3132;3125:12;3150:531;3252:6;3260;3268;3276;3284;3292;3345:3;3333:9;3324:7;3320:23;3316:33;3313:53;;;3362:1;3359;3352:12;3313:53;3385:29;3404:9;3385:29;:::i;:::-;3375:39;;3461:2;3450:9;3446:18;3433:32;3423:42;;3512:2;3501:9;3497:18;3484:32;3474:42;;3535:36;3567:2;3556:9;3552:18;3535:36;:::i;:::-;3525:46;;3618:3;3607:9;3603:19;3590:33;3580:43;;3670:3;3659:9;3655:19;3642:33;3632:43;;3150:531;;;;;;;;:::o;3686:606::-;3797:6;3805;3813;3821;3829;3837;3845;3898:3;3886:9;3877:7;3873:23;3869:33;3866:53;;;3915:1;3912;3905:12;3866:53;3938:29;3957:9;3938:29;:::i;:::-;3928:39;;3986:38;4020:2;4009:9;4005:18;3986:38;:::i;:::-;3976:48;;4071:2;4060:9;4056:18;4043:32;4033:42;;4122:2;4111:9;4107:18;4094:32;4084:42;;4145:37;4177:3;4166:9;4162:19;4145:37;:::i;:::-;4135:47;;4229:3;4218:9;4214:19;4201:33;4191:43;;4281:3;4270:9;4266:19;4253:33;4243:43;;3686:606;;;;;;;;;;:::o;4297:260::-;4365:6;4373;4426:2;4414:9;4405:7;4401:23;4397:32;4394:52;;;4442:1;4439;4432:12;4394:52;4465:29;4484:9;4465:29;:::i;:::-;4455:39;;4513:38;4547:2;4536:9;4532:18;4513:38;:::i;:::-;4503:48;;4297:260;;;;;:::o;4562:350::-;4629:6;4637;4690:2;4678:9;4669:7;4665:23;4661:32;4658:52;;;4706:1;4703;4696:12;4658:52;4729:29;4748:9;4729:29;:::i;:::-;4719:39;;4808:2;4797:9;4793:18;4780:32;4852:10;4845:5;4841:22;4834:5;4831:33;4821:61;;4878:1;4875;4868:12;4821:61;4901:5;4891:15;;;4562:350;;;;;:::o;5216:757::-;5320:6;5328;5336;5344;5397:2;5385:9;5376:7;5372:23;5368:32;5365:52;;;5413:1;5410;5403:12;5365:52;5436:29;5455:9;5436:29;:::i;:::-;5426:39;;5516:2;5505:9;5501:18;5488:32;5539:18;5580:2;5572:6;5569:14;5566:34;;;5596:1;5593;5586:12;5566:34;5634:6;5623:9;5619:22;5609:32;;5679:7;5672:4;5668:2;5664:13;5660:27;5650:55;;5701:1;5698;5691:12;5650:55;5741:2;5728:16;5767:2;5759:6;5756:14;5753:34;;;5783:1;5780;5773:12;5753:34;5836:7;5831:2;5821:6;5818:1;5814:14;5810:2;5806:23;5802:32;5799:45;5796:65;;;5857:1;5854;5847:12;5796:65;5216:757;;5888:2;5880:11;;;;;-1:-1:-1;5910:6:1;;5963:2;5948:18;5935:32;;-1:-1:-1;5216:757:1;-1:-1:-1;;;5216:757:1:o;5978:184::-;6048:6;6101:2;6089:9;6080:7;6076:23;6072:32;6069:52;;;6117:1;6114;6107:12;6069:52;-1:-1:-1;6140:16:1;;5978:184;-1:-1:-1;5978:184:1:o;6167:127::-;6228:10;6223:3;6219:20;6216:1;6209:31;6259:4;6256:1;6249:15;6283:4;6280:1;6273:15;6299:125;6339:4;6367:1;6364;6361:8;6358:34;;;6372:18;;:::i;:::-;-1:-1:-1;6409:9:1;;6299:125::o;6429:128::-;6469:3;6500:1;6496:6;6493:1;6490:13;6487:39;;;6506:18;;:::i;:::-;-1:-1:-1;6542:9:1;;6429:128::o;6971:221::-;7010:4;7039:10;7099;;;;7069;;7121:12;;;7118:38;;;7136:18;;:::i;:::-;7173:13;;6971:221;-1:-1:-1;;;6971:221:1:o;7197:288::-;7236:1;7262:10;7299:2;7296:1;7292:10;7321:3;7311:134;;7367:10;7362:3;7358:20;7355:1;7348:31;7402:4;7399:1;7392:15;7430:4;7427:1;7420:15;7311:134;7463:10;;7459:20;;;;;7197:288;-1:-1:-1;;7197:288:1:o;9572:135::-;9611:3;-1:-1:-1;;9632:17:1;;9629:43;;;9652:18;;:::i;:::-;-1:-1:-1;9699:1:1;9688:13;;9572:135::o;12412:127::-;12473:10;12468:3;12464:20;12461:1;12454:31;12504:4;12501:1;12494:15;12528:4;12525:1;12518:15;12544:127;12605:10;12600:3;12596:20;12593:1;12586:31;12636:4;12633:1;12626:15;12660:4;12657:1;12650:15;13137:274;13266:3;13304:6;13298:13;13320:53;13366:6;13361:3;13354:4;13346:6;13342:17;13320:53;:::i;:::-;13389:16;;;;;13137:274;-1:-1:-1;;13137:274:1:o

Swarm Source

ipfs://aa9c3b73d05fd9691b63f012371c483eec8040c57c0b28bb1f285228f96779ed
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.