ETH Price: $3,607.98 (+9.29%)

Token

Phunk DAO (PHUNKY)
 

Overview

Max Total Supply

571,283.30952 PHUNKY

Holders

156

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
witt.eth
Balance
1,001.65086 PHUNKY

Value
$0.00
0xefdee53249ef08013d31aeac2a738912197b7b5e
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:
Phunky

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 2022-01-13
*/

// SPDX-License-Identifier: MIT
// 
// ██████╗░██╗░░██╗██╗░░░██╗███╗░░██╗██╗░░██╗  ██████╗░░█████╗░░█████╗░
// ██╔══██╗██║░░██║██║░░░██║████╗░██║██║░██╔╝  ██╔══██╗██╔══██╗██╔══██╗
// ██████╔╝███████║██║░░░██║██╔██╗██║█████═╝░  ██║░░██║███████║██║░░██║
// ██╔═══╝░██╔══██║██║░░░██║██║╚████║██╔═██╗░  ██║░░██║██╔══██║██║░░██║
// ██║░░░░░██║░░██║╚██████╔╝██║░╚███║██║░╚██╗  ██████╔╝██║░░██║╚█████╔╝
// ╚═╝░░░░░╚═╝░░╚═╝░╚═════╝░╚═╝░░╚══╝╚═╝░░╚═╝  ╚═════╝░╚═╝░░╚═╝░╚════╝░
// 
// All CryptoPhunk owners earn $PHUNKY that's used for governing Phunk DAO. 
// $PHUNKY is earned every block, and new supply is halved after every 
// year (approximately) with aim to be closer to 21 Million in lifetime.


pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: openzeppelin-solidity/contracts/token/ERC20/IERC20.sol



pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

// File: openzeppelin-solidity/contracts/token/ERC20/extensions/IERC20Metadata.sol



pragma solidity ^0.8.0;


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

// File: openzeppelin-solidity/contracts/token/ERC20/ERC20.sol



pragma solidity ^0.8.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

// File: contracts/Phunky.sol


// ██████╗░██╗░░██╗██╗░░░██╗███╗░░██╗██╗░░██╗██╗░░░██╗  
// ██╔══██╗██║░░██║██║░░░██║████╗░██║██║░██╔╝╚██╗░██╔╝  
// ██████╔╝███████║██║░░░██║██╔██╗██║█████═╝░░╚████╔╝░  
// ██╔═══╝░██╔══██║██║░░░██║██║╚████║██╔═██╗░░░╚██╔╝░░  
// ██║░░░░░██║░░██║╚██████╔╝██║░╚███║██║░╚██╗░░░██║░░░  
// ╚═╝░░░░░╚═╝░░╚═╝░╚═════╝░╚═╝░░╚══╝╚═╝░░╚═╝░░░╚═╝░░░  
// ███████╗██████╗░░█████╗░██████╗░░█████╗░
// ██╔════╝██╔══██╗██╔══██╗╚════██╗██╔══██╗
// █████╗░░██████╔╝██║░░╚═╝░░███╔═╝██║░░██║
// ██╔══╝░░██╔══██╗██║░░██╗██╔══╝░░██║░░██║
// ███████╗██║░░██║╚█████╔╝███████╗╚█████╔╝
// ╚══════╝╚═╝░░╚═╝░╚════╝░╚══════╝░╚════╝░
// All CryptoPhunk owners earn $PHUNKY that's used for governing Phunk DAO. 
// $PHUNKY is earned every block, and new supply is halved after every 
// year (approximately) with aim to be closer to 21 Million in lifetime.

pragma solidity ^0.8.0;


contract CryptoPhunk {
    function ownerOf(uint256 phunkId) public view virtual returns (address) {}
}

contract Phunky is ERC20 {
    
    event ClaimedPhunky(
        uint256 indexed phunkId, 
        address indexed holder, 
        uint256 indexed phunky
    );

    address public daoTreasury = 0x455885859eBE71296D2d977af956cC30C6485773;
    address public creators = 0x2c13DB72Af1932c5E6EC6a217f40E633daE14709;

    address private immutable phunkContract = 0xf07468eAd8cf26c752C676E43C814FEe9c8CF402;

    uint256 private immutable initialBlock = 12674389;
    uint256 private immutable halfAfterBlock = 2400000;
    uint256 private immutable perBlockGrant = 420000000000000;

    mapping(uint256 => uint256) private claimedPhunky;

    constructor() ERC20(
        "Phunk DAO", 
        "PHUNKY"
    ){}
    
    function claimed(
        uint256 phunkId
    ) public view returns (
        uint256
    ) {
        return claimedPhunky[phunkId];
    }
    
    function claimable(
        uint256 phunkId
    ) public view returns (
        uint256
    ) {
        uint256 currentBlock = block.number;
        uint256 claimableTokens;
        
        if (initialBlock + halfAfterBlock > currentBlock) {
            // claimable tokens before first split
            claimableTokens = (currentBlock - initialBlock) * perBlockGrant;
        } else {
            // number of half splits till current block
            uint256 splits = (currentBlock - initialBlock) / halfAfterBlock;
            // number of blocks after last split
            uint256 extraBlocks = currentBlock - initialBlock - (halfAfterBlock * splits);
            // claimable tokens as a GP
            // note: overflow will not be an issue for more than 100 years of claiming
            claimableTokens = (halfAfterBlock * perBlockGrant * 2 * (2**splits - 1)) / 2**splits;
            // claimable tokens after the last split
            claimableTokens += (extraBlocks * perBlockGrant) / (2**splits);
        }
        return claimableTokens - claimedPhunky[phunkId];
    }

    function claim(
        uint256 phunkId
    ) external {
        CryptoPhunk cryptoPhunk = CryptoPhunk(phunkContract);
        require(
            cryptoPhunk.ownerOf(phunkId) == _msgSender(),
            "You aren't owner"
        );
        uint256 amount = claimable(phunkId);
        require(
            amount > 0, 
            "nothing to claim"
        );
        claimedPhunky[phunkId] += amount;

        mintClaim(amount);

        emit ClaimedPhunky(
            phunkId, 
            _msgSender(), 
            amount
        );
    }

    function claimBatch(
        uint256[] memory phunkIds
    ) external {
        uint256 amount;
        CryptoPhunk cryptoPhunk = CryptoPhunk(phunkContract);
        for (uint256 i = 0; i < phunkIds.length; i++) {
            require(
                cryptoPhunk.ownerOf(phunkIds[i]) == _msgSender(),
                "You aren't owner"
            );
        }
        for (uint256 i = 0; i < phunkIds.length; i++) {
            uint256 claimAmount = claimable(phunkIds[i]);
            if (claimAmount > 0){
                claimedPhunky[phunkIds[i]] += claimAmount;
                amount += claimAmount;

                emit ClaimedPhunky(
                    phunkIds[i], 
                    _msgSender(), 
                    claimAmount
                );
            }
        }
        mintClaim(amount);
    }

    function mintClaim(
        uint256 amount
    ) internal {
        // 90% to Phunk holder
        _mint(_msgSender(), amount * 90 / 100);
        // 9% to DAO Treasury
        _mint(daoTreasury, amount * 9 / 100);
        // 1% to Creators
        _mint(creators, amount / 100);
    }
}

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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"phunkId","type":"uint256"},{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"uint256","name":"phunky","type":"uint256"}],"name":"ClaimedPhunky","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"phunkId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"phunkIds","type":"uint256[]"}],"name":"claimBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"phunkId","type":"uint256"}],"name":"claimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"phunkId","type":"uint256"}],"name":"claimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"creators","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"daoTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

610100604052600580546001600160a01b031990811673455885859ebe71296d2d977af956cc30c64857731790915560068054909116732c13db72af1932c5e6ec6a217f40e633dae1470917905573f07468ead8cf26c752c676e43c814fee9c8cf40260805262c1655560a05262249f0060c05266017dfcdece400060e0523480156200008b57600080fd5b5060408051808201825260098152685068756e6b2044414f60b81b6020808301918252835180850190945260068452655048554e4b5960d01b908401528151919291620000db91600391620000fa565b508051620000f1906004906020840190620000fa565b505050620001dd565b8280546200010890620001a0565b90600052602060002090601f0160209004810192826200012c576000855562000177565b82601f106200014757805160ff191683800117855562000177565b8280016001018555821562000177579182015b82811115620001775782518255916020019190600101906200015a565b506200018592915062000189565b5090565b5b808211156200018557600081556001016200018a565b600181811c90821680620001b557607f821691505b60208210811415620001d757634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161139262000256600039600081816108fe01528181610a3a0152610ab00152600081816108b10152818161095c015281816109b90152610a5b0152600081816108d2015281816109220152818161098001526109e201526000818161041b01526105e101526113926000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806362abebce116100a2578063a457c2d711610071578063a457c2d71461022f578063a9059cbb14610242578063d1d58b2514610255578063dbe7e3bd14610268578063dd62ed3e1461028857600080fd5b806362abebce146101d857806370a08231146101eb57806379022a9f1461021457806395d89b411461022757600080fd5b80632f2fc416116100de5780632f2fc41614610176578063313ce567146101a1578063379607f5146101b057806339509351146101c557600080fd5b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015157806323b872dd14610163575b600080fd5b6101186102c1565b6040516101259190610f3c565b60405180910390f35b61014161013c366004610fa6565b610353565b6040519015158152602001610125565b6002545b604051908152602001610125565b610141610171366004610fd2565b61036a565b600654610189906001600160a01b031681565b6040516001600160a01b039091168152602001610125565b60405160128152602001610125565b6101c36101be366004611013565b610419565b005b6101416101d3366004610fa6565b6105a1565b6101c36101e6366004611042565b6105dd565b6101556101f9366004611100565b6001600160a01b031660009081526020819052604090205490565b600554610189906001600160a01b031681565b6101186107f2565b61014161023d366004610fa6565b610801565b610141610250366004610fa6565b61089a565b610155610263366004611013565b6108a7565b610155610276366004611013565b60009081526007602052604090205490565b610155610296366004611124565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102d09061115d565b80601f01602080910402602001604051908101604052809291908181526020018280546102fc9061115d565b80156103495780601f1061031e57610100808354040283529160200191610349565b820191906000526020600020905b81548152906001019060200180831161032c57829003601f168201915b5050505050905090565b6000610360338484610b0f565b5060015b92915050565b6000610377848484610c33565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156104015760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61040e8533858403610b0f565b506001949350505050565b7f0000000000000000000000000000000000000000000000000000000000000000336040516331a9108f60e11b8152600481018490526001600160a01b0391821691831690636352211e90602401602060405180830381865afa158015610484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a89190611198565b6001600160a01b0316146104f15760405162461bcd60e51b815260206004820152601060248201526f2cb7ba9030b932b713ba1037bbb732b960811b60448201526064016103f8565b60006104fc836108a7565b9050600081116105415760405162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b60448201526064016103f8565b6000838152600760205260408120805483929061055f9084906111cb565b9091555061056e905081610e02565b6040518190339085907e67032f444ccdb21f6dd4905f11c9793a986942424a8525a737c5a7e34500dd90600090a4505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103609185906105d89086906111cb565b610b0f565b60007f0000000000000000000000000000000000000000000000000000000000000000815b83518110156106f857336001600160a01b0316826001600160a01b0316636352211e868481518110610636576106366111e3565b60200260200101516040518263ffffffff1660e01b815260040161065c91815260200190565b602060405180830381865afa158015610679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069d9190611198565b6001600160a01b0316146106e65760405162461bcd60e51b815260206004820152601060248201526f2cb7ba9030b932b713ba1037bbb732b960811b60448201526064016103f8565b806106f0816111f9565b915050610602565b5060005b83518110156107e357600061072985838151811061071c5761071c6111e3565b60200260200101516108a7565b905080156107d0578060076000878581518110610748576107486111e3565b60200260200101518152602001908152602001600020600082825461076d91906111cb565b9091555061077d905081856111cb565b935080336001600160a01b031686848151811061079c5761079c6111e3565b60200260200101517e67032f444ccdb21f6dd4905f11c9793a986942424a8525a737c5a7e34500dd60405160405180910390a45b50806107db816111f9565b9150506106fc565b506107ed82610e02565b505050565b6060600480546102d09061115d565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156108835760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103f8565b6108903385858403610b0f565b5060019392505050565b6000610360338484610c33565b60004381816108f67f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006111cb565b1115610958577f00000000000000000000000000000000000000000000000000000000000000006109477f000000000000000000000000000000000000000000000000000000000000000084611214565b610951919061122b565b9050610aee565b60007f00000000000000000000000000000000000000000000000000000000000000006109a57f000000000000000000000000000000000000000000000000000000000000000085611214565b6109af919061124a565b905060006109dd827f000000000000000000000000000000000000000000000000000000000000000061122b565b610a077f000000000000000000000000000000000000000000000000000000000000000086611214565b610a119190611214565b9050610a1e826002611350565b6001610a2b846002611350565b610a359190611214565b610a7f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061122b565b610a8a90600261122b565b610a94919061122b565b610a9e919061124a565b9250610aab826002611350565b610ad57f00000000000000000000000000000000000000000000000000000000000000008361122b565b610adf919061124a565b610ae990846111cb565b925050505b600084815260076020526040902054610b079082611214565b949350505050565b6001600160a01b038316610b715760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103f8565b6001600160a01b038216610bd25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103f8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c975760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103f8565b6001600160a01b038216610cf95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103f8565b6001600160a01b03831660009081526020819052604090205481811015610d715760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103f8565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610da89084906111cb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610df491815260200190565b60405180910390a350505050565b610e22336064610e1384605a61122b565b610e1d919061124a565b610e5d565b600554610e3f906001600160a01b03166064610e1384600961122b565b600654610e5a906001600160a01b0316610e1d60648461124a565b50565b6001600160a01b038216610eb35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103f8565b8060026000828254610ec591906111cb565b90915550506001600160a01b03821660009081526020819052604081208054839290610ef29084906111cb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b81811015610f6957858101830151858201604001528201610f4d565b81811115610f7b576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610e5a57600080fd5b60008060408385031215610fb957600080fd5b8235610fc481610f91565b946020939093013593505050565b600080600060608486031215610fe757600080fd5b8335610ff281610f91565b9250602084013561100281610f91565b929592945050506040919091013590565b60006020828403121561102557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561105557600080fd5b823567ffffffffffffffff8082111561106d57600080fd5b818501915085601f83011261108157600080fd5b8135818111156110935761109361102c565b8060051b604051601f19603f830116810181811085821117156110b8576110b861102c565b6040529182528482019250838101850191888311156110d657600080fd5b938501935b828510156110f4578435845293850193928501926110db565b98975050505050505050565b60006020828403121561111257600080fd5b813561111d81610f91565b9392505050565b6000806040838503121561113757600080fd5b823561114281610f91565b9150602083013561115281610f91565b809150509250929050565b600181811c9082168061117157607f821691505b6020821081141561119257634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156111aa57600080fd5b815161111d81610f91565b634e487b7160e01b600052601160045260246000fd5b600082198211156111de576111de6111b5565b500190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561120d5761120d6111b5565b5060010190565b600082821015611226576112266111b5565b500390565b6000816000190483118215151615611245576112456111b5565b500290565b60008261126757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156112a757816000190482111561128d5761128d6111b5565b8085161561129a57918102915b93841c9390800290611271565b509250929050565b6000826112be57506001610364565b816112cb57506000610364565b81600181146112e157600281146112eb57611307565b6001915050610364565b60ff8411156112fc576112fc6111b5565b50506001821b610364565b5060208310610133831016604e8410600b841016171561132a575081810a610364565b611334838361126c565b8060001904821115611348576113486111b5565b029392505050565b600061111d83836112af56fea26469706673582212205f41fa3a6f4c010d00147cc30026068ca1b07a156581fc26b6b9e59ca922213a64736f6c634300080b0033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806362abebce116100a2578063a457c2d711610071578063a457c2d71461022f578063a9059cbb14610242578063d1d58b2514610255578063dbe7e3bd14610268578063dd62ed3e1461028857600080fd5b806362abebce146101d857806370a08231146101eb57806379022a9f1461021457806395d89b411461022757600080fd5b80632f2fc416116100de5780632f2fc41614610176578063313ce567146101a1578063379607f5146101b057806339509351146101c557600080fd5b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015157806323b872dd14610163575b600080fd5b6101186102c1565b6040516101259190610f3c565b60405180910390f35b61014161013c366004610fa6565b610353565b6040519015158152602001610125565b6002545b604051908152602001610125565b610141610171366004610fd2565b61036a565b600654610189906001600160a01b031681565b6040516001600160a01b039091168152602001610125565b60405160128152602001610125565b6101c36101be366004611013565b610419565b005b6101416101d3366004610fa6565b6105a1565b6101c36101e6366004611042565b6105dd565b6101556101f9366004611100565b6001600160a01b031660009081526020819052604090205490565b600554610189906001600160a01b031681565b6101186107f2565b61014161023d366004610fa6565b610801565b610141610250366004610fa6565b61089a565b610155610263366004611013565b6108a7565b610155610276366004611013565b60009081526007602052604090205490565b610155610296366004611124565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546102d09061115d565b80601f01602080910402602001604051908101604052809291908181526020018280546102fc9061115d565b80156103495780601f1061031e57610100808354040283529160200191610349565b820191906000526020600020905b81548152906001019060200180831161032c57829003601f168201915b5050505050905090565b6000610360338484610b0f565b5060015b92915050565b6000610377848484610c33565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156104015760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61040e8533858403610b0f565b506001949350505050565b7f000000000000000000000000f07468ead8cf26c752c676e43c814fee9c8cf402336040516331a9108f60e11b8152600481018490526001600160a01b0391821691831690636352211e90602401602060405180830381865afa158015610484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a89190611198565b6001600160a01b0316146104f15760405162461bcd60e51b815260206004820152601060248201526f2cb7ba9030b932b713ba1037bbb732b960811b60448201526064016103f8565b60006104fc836108a7565b9050600081116105415760405162461bcd60e51b815260206004820152601060248201526f6e6f7468696e6720746f20636c61696d60801b60448201526064016103f8565b6000838152600760205260408120805483929061055f9084906111cb565b9091555061056e905081610e02565b6040518190339085907e67032f444ccdb21f6dd4905f11c9793a986942424a8525a737c5a7e34500dd90600090a4505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103609185906105d89086906111cb565b610b0f565b60007f000000000000000000000000f07468ead8cf26c752c676e43c814fee9c8cf402815b83518110156106f857336001600160a01b0316826001600160a01b0316636352211e868481518110610636576106366111e3565b60200260200101516040518263ffffffff1660e01b815260040161065c91815260200190565b602060405180830381865afa158015610679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069d9190611198565b6001600160a01b0316146106e65760405162461bcd60e51b815260206004820152601060248201526f2cb7ba9030b932b713ba1037bbb732b960811b60448201526064016103f8565b806106f0816111f9565b915050610602565b5060005b83518110156107e357600061072985838151811061071c5761071c6111e3565b60200260200101516108a7565b905080156107d0578060076000878581518110610748576107486111e3565b60200260200101518152602001908152602001600020600082825461076d91906111cb565b9091555061077d905081856111cb565b935080336001600160a01b031686848151811061079c5761079c6111e3565b60200260200101517e67032f444ccdb21f6dd4905f11c9793a986942424a8525a737c5a7e34500dd60405160405180910390a45b50806107db816111f9565b9150506106fc565b506107ed82610e02565b505050565b6060600480546102d09061115d565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156108835760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103f8565b6108903385858403610b0f565b5060019392505050565b6000610360338484610c33565b60004381816108f67f0000000000000000000000000000000000000000000000000000000000249f007f0000000000000000000000000000000000000000000000000000000000c165556111cb565b1115610958577f00000000000000000000000000000000000000000000000000017dfcdece40006109477f0000000000000000000000000000000000000000000000000000000000c1655584611214565b610951919061122b565b9050610aee565b60007f0000000000000000000000000000000000000000000000000000000000249f006109a57f0000000000000000000000000000000000000000000000000000000000c1655585611214565b6109af919061124a565b905060006109dd827f0000000000000000000000000000000000000000000000000000000000249f0061122b565b610a077f0000000000000000000000000000000000000000000000000000000000c1655586611214565b610a119190611214565b9050610a1e826002611350565b6001610a2b846002611350565b610a359190611214565b610a7f7f00000000000000000000000000000000000000000000000000017dfcdece40007f0000000000000000000000000000000000000000000000000000000000249f0061122b565b610a8a90600261122b565b610a94919061122b565b610a9e919061124a565b9250610aab826002611350565b610ad57f00000000000000000000000000000000000000000000000000017dfcdece40008361122b565b610adf919061124a565b610ae990846111cb565b925050505b600084815260076020526040902054610b079082611214565b949350505050565b6001600160a01b038316610b715760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103f8565b6001600160a01b038216610bd25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103f8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c975760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103f8565b6001600160a01b038216610cf95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103f8565b6001600160a01b03831660009081526020819052604090205481811015610d715760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103f8565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610da89084906111cb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610df491815260200190565b60405180910390a350505050565b610e22336064610e1384605a61122b565b610e1d919061124a565b610e5d565b600554610e3f906001600160a01b03166064610e1384600961122b565b600654610e5a906001600160a01b0316610e1d60648461124a565b50565b6001600160a01b038216610eb35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103f8565b8060026000828254610ec591906111cb565b90915550506001600160a01b03821660009081526020819052604081208054839290610ef29084906111cb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b81811015610f6957858101830151858201604001528201610f4d565b81811115610f7b576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610e5a57600080fd5b60008060408385031215610fb957600080fd5b8235610fc481610f91565b946020939093013593505050565b600080600060608486031215610fe757600080fd5b8335610ff281610f91565b9250602084013561100281610f91565b929592945050506040919091013590565b60006020828403121561102557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561105557600080fd5b823567ffffffffffffffff8082111561106d57600080fd5b818501915085601f83011261108157600080fd5b8135818111156110935761109361102c565b8060051b604051601f19603f830116810181811085821117156110b8576110b861102c565b6040529182528482019250838101850191888311156110d657600080fd5b938501935b828510156110f4578435845293850193928501926110db565b98975050505050505050565b60006020828403121561111257600080fd5b813561111d81610f91565b9392505050565b6000806040838503121561113757600080fd5b823561114281610f91565b9150602083013561115281610f91565b809150509250929050565b600181811c9082168061117157607f821691505b6020821081141561119257634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156111aa57600080fd5b815161111d81610f91565b634e487b7160e01b600052601160045260246000fd5b600082198211156111de576111de6111b5565b500190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561120d5761120d6111b5565b5060010190565b600082821015611226576112266111b5565b500390565b6000816000190483118215151615611245576112456111b5565b500290565b60008261126757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156112a757816000190482111561128d5761128d6111b5565b8085161561129a57918102915b93841c9390800290611271565b509250929050565b6000826112be57506001610364565b816112cb57506000610364565b81600181146112e157600281146112eb57611307565b6001915050610364565b60ff8411156112fc576112fc6111b5565b50506001821b610364565b5060208310610133831016604e8410600b841016171561132a575081810a610364565b611334838361126c565b8060001904821115611348576113486111b5565b029392505050565b600061111d83836112af56fea26469706673582212205f41fa3a6f4c010d00147cc30026068ca1b07a156581fc26b6b9e59ca922213a64736f6c634300080b0033

Deployed Bytecode Sourcemap

19993:3744:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7898:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10065:169;;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;10065:169:0;1072:187:1;9018:108:0;9106:12;;9018:108;;;1410:25:1;;;1398:2;1383:18;9018:108:0;1264:177:1;10716:492:0;;;;;;:::i;:::-;;:::i;20246:68::-;;;;;-1:-1:-1;;;;;20246:68:0;;;;;;-1:-1:-1;;;;;2071:32:1;;;2053:51;;2041:2;2026:18;20246:68:0;1907:203:1;8860:93:0;;;8943:2;2257:36:1;;2245:2;2230:18;8860:93:0;2115:184:1;22009:570:0;;;;;;:::i;:::-;;:::i;:::-;;11617:215;;;;;;:::i;:::-;;:::i;22587:845::-;;;;;;:::i;:::-;;:::i;9189:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;9290:18:0;9263:7;9290:18;;;;;;;;;;;;9189:127;20168:71;;;;;-1:-1:-1;;;;;20168:71:0;;;8117:104;;;:::i;12335:413::-;;;;;;:::i;:::-;;:::i;9529:175::-;;;;;;:::i;:::-;;:::i;20891:1110::-;;;;;;:::i;:::-;;:::i;20735:144::-;;;;;;:::i;:::-;20816:7;20849:22;;;:13;:22;;;;;;;20735:144;9767:151;;;;;;:::i;:::-;-1:-1:-1;;;;;9883:18:0;;;9856:7;9883:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9767:151;7898:100;7952:13;7985:5;7978:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7898:100;:::o;10065:169::-;10148:4;10165:39;2173:10;10188:7;10197:6;10165:8;:39::i;:::-;-1:-1:-1;10222:4:0;10065:169;;;;;:::o;10716:492::-;10856:4;10873:36;10883:6;10891:9;10902:6;10873:9;:36::i;:::-;-1:-1:-1;;;;;10949:19:0;;10922:24;10949:19;;;:11;:19;;;;;;;;2173:10;10949:33;;;;;;;;11001:26;;;;10993:79;;;;-1:-1:-1;;;10993:79:0;;4973:2:1;10993:79:0;;;4955:21:1;5012:2;4992:18;;;4985:30;5051:34;5031:18;;;5024:62;-1:-1:-1;;;5102:18:1;;;5095:38;5150:19;;10993:79:0;;;;;;;;;11108:57;11117:6;2173:10;11158:6;11139:16;:25;11108:8;:57::i;:::-;-1:-1:-1;11196:4:0;;10716:492;-1:-1:-1;;;;10716:492:0:o;22009:570::-;22115:13;2173:10;22162:28;;-1:-1:-1;;;22162:28:0;;;;;1410:25:1;;;-1:-1:-1;;;;;22162:44:0;;;;:19;;;;;1383:18:1;;22162:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22162:44:0;;22140:110;;;;-1:-1:-1;;;22140:110:0;;5638:2:1;22140:110:0;;;5620:21:1;5677:2;5657:18;;;5650:30;-1:-1:-1;;;5696:18:1;;;5689:46;5752:18;;22140:110:0;5436:340:1;22140:110:0;22261:14;22278:18;22288:7;22278:9;:18::i;:::-;22261:35;;22338:1;22329:6;:10;22307:77;;;;-1:-1:-1;;;22307:77:0;;5983:2:1;22307:77:0;;;5965:21:1;6022:2;6002:18;;;5995:30;-1:-1:-1;;;6041:18:1;;;6034:46;6097:18;;22307:77:0;5781:340:1;22307:77:0;22395:22;;;;:13;:22;;;;;:32;;22421:6;;22395:22;:32;;22421:6;;22395:32;:::i;:::-;;;;-1:-1:-1;22440:17:0;;-1:-1:-1;22450:6:0;22440:9;:17::i;:::-;22475:96;;22554:6;;2173:10;;22503:7;;22475:96;;;;;22066:513;;22009:570;:::o;11617:215::-;2173:10;11705:4;11754:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11754:34:0;;;;;;;;;;11705:4;;11722:80;;11745:7;;11754:47;;11791:10;;11754:47;:::i;:::-;11722:8;:80::i;22587:845::-;22670:14;22733:13;22670:14;22758:199;22782:8;:15;22778:1;:19;22758:199;;;2173:10;-1:-1:-1;;;;;22845:48:0;:11;-1:-1:-1;;;;;22845:19:0;;22865:8;22874:1;22865:11;;;;;;;;:::i;:::-;;;;;;;22845:32;;;;;;;;;;;;;1410:25:1;;1398:2;1383:18;;1264:177;22845:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22845:48:0;;22819:126;;;;-1:-1:-1;;;22819:126:0;;5638:2:1;22819:126:0;;;5620:21:1;5677:2;5657:18;;;5650:30;-1:-1:-1;;;5696:18:1;;;5689:46;5752:18;;22819:126:0;5436:340:1;22819:126:0;22799:3;;;;:::i;:::-;;;;22758:199;;;;22972:9;22967:430;22991:8;:15;22987:1;:19;22967:430;;;23028:19;23050:22;23060:8;23069:1;23060:11;;;;;;;;:::i;:::-;;;;;;;23050:9;:22::i;:::-;23028:44;-1:-1:-1;23091:15:0;;23087:299;;23156:11;23126:13;:26;23140:8;23149:1;23140:11;;;;;;;;:::i;:::-;;;;;;;23126:26;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;-1:-1:-1;23186:21:0;;-1:-1:-1;23196:11:0;23186:21;;:::i;:::-;;-1:-1:-1;23340:11:0;2173:10;-1:-1:-1;;;;;23233:137:0;23269:8;23278:1;23269:11;;;;;;;;:::i;:::-;;;;;;;23233:137;;;;;;;;;;23087:299;-1:-1:-1;23008:3:0;;;;:::i;:::-;;;;22967:430;;;;23407:17;23417:6;23407:9;:17::i;:::-;22659:773;;22587:845;:::o;8117:104::-;8173:13;8206:7;8199:14;;;;;:::i;12335:413::-;2173:10;12428:4;12472:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12472:34:0;;;;;;;;;;12525:35;;;;12517:85;;;;-1:-1:-1;;;12517:85:0;;6865:2:1;12517:85:0;;;6847:21:1;6904:2;6884:18;;;6877:30;6943:34;6923:18;;;6916:62;-1:-1:-1;;;6994:18:1;;;6987:35;7039:19;;12517:85:0;6663:401:1;12517:85:0;12638:67;2173:10;12661:7;12689:15;12670:16;:34;12638:8;:67::i;:::-;-1:-1:-1;12736:4:0;;12335:413;-1:-1:-1;;;12335:413:0:o;9529:175::-;9615:4;9632:42;2173:10;9656:9;9667:6;9632:9;:42::i;20891:1110::-;20974:7;21023:12;20974:7;21023:12;21094:29;21109:14;21094:12;:29;:::i;:::-;:44;21090:846;;;21257:13;21226:27;21241:12;21226;:27;:::i;:::-;21225:45;;;;:::i;:::-;21207:63;;21090:846;;;21360:14;21409;21378:27;21393:12;21378;:27;:::i;:::-;21377:46;;;;:::i;:::-;21360:63;-1:-1:-1;21488:19:0;21541:23;21360:63;21541:14;:23;:::i;:::-;21510:27;21525:12;21510;:27;:::i;:::-;:55;;;;:::i;:::-;21488:77;-1:-1:-1;21784:9:0;21787:6;21784:1;:9;:::i;:::-;21778:1;21766:9;21769:6;21766:1;:9;:::i;:::-;:13;;;;:::i;:::-;21728:30;21745:13;21728:14;:30;:::i;:::-;:34;;21761:1;21728:34;:::i;:::-;:52;;;;:::i;:::-;21727:66;;;;:::i;:::-;21709:84;-1:-1:-1;21914:9:0;21917:6;21914:1;:9;:::i;:::-;21882:27;21896:13;21882:11;:27;:::i;:::-;21881:43;;;;:::i;:::-;21862:62;;;;:::i;:::-;;;21288:648;;21090:846;21971:22;;;;:13;:22;;;;;;21953:40;;:15;:40;:::i;:::-;21946:47;20891:1110;-1:-1:-1;;;;20891:1110:0:o;16019:380::-;-1:-1:-1;;;;;16155:19:0;;16147:68;;;;-1:-1:-1;;;16147:68:0;;9170:2:1;16147:68:0;;;9152:21:1;9209:2;9189:18;;;9182:30;9248:34;9228:18;;;9221:62;-1:-1:-1;;;9299:18:1;;;9292:34;9343:19;;16147:68:0;8968:400:1;16147:68:0;-1:-1:-1;;;;;16234:21:0;;16226:68;;;;-1:-1:-1;;;16226:68:0;;9575:2:1;16226:68:0;;;9557:21:1;9614:2;9594:18;;;9587:30;9653:34;9633:18;;;9626:62;-1:-1:-1;;;9704:18:1;;;9697:32;9746:19;;16226:68:0;9373:398:1;16226:68:0;-1:-1:-1;;;;;16307:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16359:32;;1410:25:1;;;16359:32:0;;1383:18:1;16359:32:0;;;;;;;16019:380;;;:::o;13238:733::-;-1:-1:-1;;;;;13378:20:0;;13370:70;;;;-1:-1:-1;;;13370:70:0;;9978:2:1;13370:70:0;;;9960:21:1;10017:2;9997:18;;;9990:30;10056:34;10036:18;;;10029:62;-1:-1:-1;;;10107:18:1;;;10100:35;10152:19;;13370:70:0;9776:401:1;13370:70:0;-1:-1:-1;;;;;13459:23:0;;13451:71;;;;-1:-1:-1;;;13451:71:0;;10384:2:1;13451:71:0;;;10366:21:1;10423:2;10403:18;;;10396:30;10462:34;10442:18;;;10435:62;-1:-1:-1;;;10513:18:1;;;10506:33;10556:19;;13451:71:0;10182:399:1;13451:71:0;-1:-1:-1;;;;;13619:17:0;;13595:21;13619:17;;;;;;;;;;;13655:23;;;;13647:74;;;;-1:-1:-1;;;13647:74:0;;10788:2:1;13647:74:0;;;10770:21:1;10827:2;10807:18;;;10800:30;10866:34;10846:18;;;10839:62;-1:-1:-1;;;10917:18:1;;;10910:36;10963:19;;13647:74:0;10586:402:1;13647:74:0;-1:-1:-1;;;;;13757:17:0;;;:9;:17;;;;;;;;;;;13777:22;;;13757:42;;13821:20;;;;;;;;:30;;13793:6;;13757:9;13821:30;;13793:6;;13821:30;:::i;:::-;;;;;;;;13886:9;-1:-1:-1;;;;;13869:35:0;13878:6;-1:-1:-1;;;;;13869:35:0;;13897:6;13869:35;;;;1410:25:1;;1398:2;1383:18;;1264:177;13869:35:0;;;;;;;;13359:612;13238:733;;;:::o;23440:294::-;23543:38;2173:10;23577:3;23563:11;:6;23572:2;23563:11;:::i;:::-;:17;;;;:::i;:::-;23543:5;:38::i;:::-;23629:11;;23623:36;;-1:-1:-1;;;;;23629:11:0;23655:3;23642:10;:6;23651:1;23642:10;:::i;23623:36::-;23703:8;;23697:29;;-1:-1:-1;;;;;23703:8:0;23713:12;23722:3;23713:6;:12;:::i;23697:29::-;23440:294;:::o;14258:399::-;-1:-1:-1;;;;;14342:21:0;;14334:65;;;;-1:-1:-1;;;14334:65:0;;11195:2:1;14334:65:0;;;11177:21:1;11234:2;11214:18;;;11207:30;11273:33;11253:18;;;11246:61;11324:18;;14334:65:0;10993:355:1;14334:65:0;14490:6;14474:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;14507:18:0;;:9;:18;;;;;;;;;;:28;;14529:6;;14507:9;:28;;14529:6;;14507:28;:::i;:::-;;;;-1:-1:-1;;14551:37:0;;1410:25:1;;;-1:-1:-1;;;;;14551:37:0;;;14568:1;;14551:37;;1398:2:1;1383:18;14551:37:0;;;;;;;14258:399;;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:456::-;1523:6;1531;1539;1592:2;1580:9;1571:7;1567:23;1563:32;1560:52;;;1608:1;1605;1598:12;1560:52;1647:9;1634:23;1666:31;1691:5;1666:31;:::i;:::-;1716:5;-1:-1:-1;1773:2:1;1758:18;;1745:32;1786:33;1745:32;1786:33;:::i;:::-;1446:456;;1838:7;;-1:-1:-1;;;1892:2:1;1877:18;;;;1864:32;;1446:456::o;2304:180::-;2363:6;2416:2;2404:9;2395:7;2391:23;2387:32;2384:52;;;2432:1;2429;2422:12;2384:52;-1:-1:-1;2455:23:1;;2304:180;-1:-1:-1;2304:180:1:o;2489:127::-;2550:10;2545:3;2541:20;2538:1;2531:31;2581:4;2578:1;2571:15;2605:4;2602:1;2595:15;2621:1115;2705:6;2736:2;2779;2767:9;2758:7;2754:23;2750:32;2747:52;;;2795:1;2792;2785:12;2747:52;2835:9;2822:23;2864:18;2905:2;2897:6;2894:14;2891:34;;;2921:1;2918;2911:12;2891:34;2959:6;2948:9;2944:22;2934:32;;3004:7;2997:4;2993:2;2989:13;2985:27;2975:55;;3026:1;3023;3016:12;2975:55;3062:2;3049:16;3084:2;3080;3077:10;3074:36;;;3090:18;;:::i;:::-;3136:2;3133:1;3129:10;3168:2;3162:9;3231:2;3227:7;3222:2;3218;3214:11;3210:25;3202:6;3198:38;3286:6;3274:10;3271:22;3266:2;3254:10;3251:18;3248:46;3245:72;;;3297:18;;:::i;:::-;3333:2;3326:22;3383:18;;;3417:15;;;;-1:-1:-1;3459:11:1;;;3455:20;;;3487:19;;;3484:39;;;3519:1;3516;3509:12;3484:39;3543:11;;;;3563:142;3579:6;3574:3;3571:15;3563:142;;;3645:17;;3633:30;;3596:12;;;;3683;;;;3563:142;;;3724:6;2621:1115;-1:-1:-1;;;;;;;;2621:1115:1:o;3741:247::-;3800:6;3853:2;3841:9;3832:7;3828:23;3824:32;3821:52;;;3869:1;3866;3859:12;3821:52;3908:9;3895:23;3927:31;3952:5;3927:31;:::i;:::-;3977:5;3741:247;-1:-1:-1;;;3741:247:1:o;3993:388::-;4061:6;4069;4122:2;4110:9;4101:7;4097:23;4093:32;4090:52;;;4138:1;4135;4128:12;4090:52;4177:9;4164:23;4196:31;4221:5;4196:31;:::i;:::-;4246:5;-1:-1:-1;4303:2:1;4288:18;;4275:32;4316:33;4275:32;4316:33;:::i;:::-;4368:7;4358:17;;;3993:388;;;;;:::o;4386:380::-;4465:1;4461:12;;;;4508;;;4529:61;;4583:4;4575:6;4571:17;4561:27;;4529:61;4636:2;4628:6;4625:14;4605:18;4602:38;4599:161;;;4682:10;4677:3;4673:20;4670:1;4663:31;4717:4;4714:1;4707:15;4745:4;4742:1;4735:15;4599:161;;4386:380;;;:::o;5180:251::-;5250:6;5303:2;5291:9;5282:7;5278:23;5274:32;5271:52;;;5319:1;5316;5309:12;5271:52;5351:9;5345:16;5370:31;5395:5;5370:31;:::i;6126:127::-;6187:10;6182:3;6178:20;6175:1;6168:31;6218:4;6215:1;6208:15;6242:4;6239:1;6232:15;6258:128;6298:3;6329:1;6325:6;6322:1;6319:13;6316:39;;;6335:18;;:::i;:::-;-1:-1:-1;6371:9:1;;6258:128::o;6391:127::-;6452:10;6447:3;6443:20;6440:1;6433:31;6483:4;6480:1;6473:15;6507:4;6504:1;6497:15;6523:135;6562:3;-1:-1:-1;;6583:17:1;;6580:43;;;6603:18;;:::i;:::-;-1:-1:-1;6650:1:1;6639:13;;6523:135::o;7069:125::-;7109:4;7137:1;7134;7131:8;7128:34;;;7142:18;;:::i;:::-;-1:-1:-1;7179:9:1;;7069:125::o;7199:168::-;7239:7;7305:1;7301;7297:6;7293:14;7290:1;7287:21;7282:1;7275:9;7268:17;7264:45;7261:71;;;7312:18;;:::i;:::-;-1:-1:-1;7352:9:1;;7199:168::o;7372:217::-;7412:1;7438;7428:132;;7482:10;7477:3;7473:20;7470:1;7463:31;7517:4;7514:1;7507:15;7545:4;7542:1;7535:15;7428:132;-1:-1:-1;7574:9:1;;7372:217::o;7594:422::-;7683:1;7726:5;7683:1;7740:270;7761:7;7751:8;7748:21;7740:270;;;7820:4;7816:1;7812:6;7808:17;7802:4;7799:27;7796:53;;;7829:18;;:::i;:::-;7879:7;7869:8;7865:22;7862:55;;;7899:16;;;;7862:55;7978:22;;;;7938:15;;;;7740:270;;;7744:3;7594:422;;;;;:::o;8021:806::-;8070:5;8100:8;8090:80;;-1:-1:-1;8141:1:1;8155:5;;8090:80;8189:4;8179:76;;-1:-1:-1;8226:1:1;8240:5;;8179:76;8271:4;8289:1;8284:59;;;;8357:1;8352:130;;;;8264:218;;8284:59;8314:1;8305:10;;8328:5;;;8352:130;8389:3;8379:8;8376:17;8373:43;;;8396:18;;:::i;:::-;-1:-1:-1;;8452:1:1;8438:16;;8467:5;;8264:218;;8566:2;8556:8;8553:16;8547:3;8541:4;8538:13;8534:36;8528:2;8518:8;8515:16;8510:2;8504:4;8501:12;8497:35;8494:77;8491:159;;;-1:-1:-1;8603:19:1;;;8635:5;;8491:159;8682:34;8707:8;8701:4;8682:34;:::i;:::-;8752:6;8748:1;8744:6;8740:19;8731:7;8728:32;8725:58;;;8763:18;;:::i;:::-;8801:20;;8021:806;-1:-1:-1;;;8021:806:1:o;8832:131::-;8892:5;8921:36;8948:8;8942:4;8921:36;:::i

Swarm Source

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