ETH Price: $3,113.91 (-4.69%)
 

Overview

Max Total Supply

10,000,000,000 CRS

Holders

141

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
CRSToken

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-28
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }
  
    /**
    * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
    * reverts when dividing by zero.
    */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }

    function pow(uint256 base, uint256 exponent) internal pure returns (uint256) {
        if (exponent == 0) {
            return 1;
        }
        else if (exponent == 1) {
            return base;
        }
        else if (base == 0 && exponent != 0) {
            return 0;
        }
        else {
            uint256 z = base;
            for (uint256 i = 1; i < exponent; i++)
                z = mul(z, base);
            return z;
        }
    }
}
/**
 * @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);
}


/**
 * @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 guidelines: functions revert instead
 * of 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 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view 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 {_setupDecimals} is
     * called.
     *
     * 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 returns (uint8) {
        return _decimals;
    }

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

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view 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);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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].add(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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is 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);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(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:
     *
     * - `to` 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 = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(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);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(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 Sets {decimals} to a value other than the default one of 18.
     *
     * WARNING: This function should only be called from the constructor. Most
     * applications that interact with token contracts will not expect
     * {decimals} to ever change, and may work incorrectly if it does.
     */
    function _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

    /**
     * @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 to 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 Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    using SafeMath for uint256;

    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, "ERC20: burn amount exceeds allowance");

        _approve(account, _msgSender(), decreasedAllowance);
        _burn(account, amount);
    }
}

/// @title Ownable
/// @dev The Ownable contract has an owner address, and provides basic authorization control
/// functions, this simplifies the implementation of "user permissions".
contract Ownable {
    address _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /// @dev Set the original `_owner` of the contract to the sender account.
    constructor() {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

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

    /// @dev Allows the current owner to transfer control of the contract to a newOwner.
    /// @param newOwner The address to transfer ownership to.
    function transferOwnership(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Don't assign ownership to null address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

/// @title Crypsure Token
/// @author Crypsure DeFi
/// @notice Crypsure ERC20 token (CRS)
contract CRSToken is Ownable, ERC20Burnable {
	
	constructor() ERC20("Crypsure", "CRS") {
        uint256 totalSupply = SafeMath.mul(SafeMath.pow(10, decimals()), 10000000000);
        _mint(msg.sender, totalSupply);

        transfer(0x105D9165b120B7d4d01979f35D290babC2E5fbD3, SafeMath.mul(SafeMath.pow(10, decimals()), 4000000000));
        transfer(0x68B689eE9EfBB918307C6F6EA186B1652828EE84, SafeMath.mul(SafeMath.pow(10, decimals()), 2000000000));
        transfer(0xf3b224d90BF2C0295c23dc376B4bAC9c1bddE321, SafeMath.mul(SafeMath.pow(10, decimals()), 1500000000));
        transfer(0xF2fE528b583EECBA10436BC01B5e085F7F6816F0, SafeMath.mul(SafeMath.pow(10, decimals()), 1000000000));
        transfer(0x8b04555ebb1B101C2fFA94a897ee660AC729Ac66, SafeMath.mul(SafeMath.pow(10, decimals()), 500000000));
        transfer(0x8e322626Bd18b8EEB8794eC9674885da7C8565e9, SafeMath.mul(SafeMath.pow(10, decimals()), 500000000));
        transfer(0xd2559b42cc43435D346d211aD437f1cf97f67714, SafeMath.mul(SafeMath.pow(10, decimals()), 500000000));
    }
	
}

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":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561000f575f80fd5b506040518060400160405280600881526020017f43727970737572650000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4352530000000000000000000000000000000000000000000000000000000000815250335f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600490816101439190610c82565b5080600590816101539190610c82565b50601260065f6101000a81548160ff021916908360ff16021790555050505f6101a7610196600a61018861042760201b60201c565b60ff1661043c60201b60201c565b6402540be4006104b660201b60201c565b90506101b9338261052d60201b60201c565b61021073105d9165b120b7d4d01979f35d290babc2e5fbd36102056101f5600a6101e761042760201b60201c565b60ff1661043c60201b60201c565b63ee6b28006104b660201b60201c565b6106c160201b60201c565b506102687368b689ee9efbb918307c6f6ea186b1652828ee8461025d61024d600a61023f61042760201b60201c565b60ff1661043c60201b60201c565b63773594006104b660201b60201c565b6106c160201b60201c565b506102c073f3b224d90bf2c0295c23dc376b4bac9c1bdde3216102b56102a5600a61029761042760201b60201c565b60ff1661043c60201b60201c565b6359682f006104b660201b60201c565b6106c160201b60201c565b5061031873f2fe528b583eecba10436bc01b5e085f7f6816f061030d6102fd600a6102ef61042760201b60201c565b60ff1661043c60201b60201c565b633b9aca006104b660201b60201c565b6106c160201b60201c565b50610370738b04555ebb1b101c2ffa94a897ee660ac729ac66610365610355600a61034761042760201b60201c565b60ff1661043c60201b60201c565b631dcd65006104b660201b60201c565b6106c160201b60201c565b506103c8738e322626bd18b8eeb8794ec9674885da7c8565e96103bd6103ad600a61039f61042760201b60201c565b60ff1661043c60201b60201c565b631dcd65006104b660201b60201c565b6106c160201b60201c565b5061042073d2559b42cc43435d346d211ad437f1cf97f67714610415610405600a6103f761042760201b60201c565b60ff1661043c60201b60201c565b631dcd65006104b660201b60201c565b6106c160201b60201c565b50506111aa565b5f60065f9054906101000a900460ff16905090565b5f80820361044d57600190506104b0565b6001820361045d578290506104b0565b5f8314801561046c57505f8214155b15610479575f90506104b0565b5f8390505f600190505b838110156104aa5761049b82866104b660201b60201c565b91508080600101915050610483565b50809150505b92915050565b5f8083036104c6575f9050610527565b5f82846104d39190610d7e565b90508284826104e29190610dec565b14610522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161051990610e9c565b60405180910390fd5b809150505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361059b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059290610f04565b60405180910390fd5b6105ac5f83836106ea60201b60201c565b6105c1816003546106ef60201b90919060201c565b6003819055506106178160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106ef60201b90919060201c565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516106b59190610f31565b60405180910390a35050565b5f6106e06106d361074c60201b60201c565b848461075360201b60201c565b6001905092915050565b505050565b5f8082846106fd9190610f4a565b905083811015610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990610fc7565b60405180910390fd5b8091505092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b890611055565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361082f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610826906110e3565b60405180910390fd5b6108408383836106ea60201b60201c565b6108aa81604051806060016040528060268152602001612b556026913960015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546109e660201b9092919060201c565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061093b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106ef60201b90919060201c565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109d99190610f31565b60405180910390a3505050565b5f838311158290610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a249190611157565b60405180910390fd5b505f8385610a3b9190611177565b9050809150509392505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610ac357607f821691505b602082108103610ad657610ad5610a7f565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610b387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610afd565b610b428683610afd565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610b86610b81610b7c84610b5a565b610b63565b610b5a565b9050919050565b5f819050919050565b610b9f83610b6c565b610bb3610bab82610b8d565b848454610b09565b825550505050565b5f90565b610bc7610bbb565b610bd2818484610b96565b505050565b5b81811015610bf557610bea5f82610bbf565b600181019050610bd8565b5050565b601f821115610c3a57610c0b81610adc565b610c1484610aee565b81016020851015610c23578190505b610c37610c2f85610aee565b830182610bd7565b50505b505050565b5f82821c905092915050565b5f610c5a5f1984600802610c3f565b1980831691505092915050565b5f610c728383610c4b565b9150826002028217905092915050565b610c8b82610a48565b67ffffffffffffffff811115610ca457610ca3610a52565b5b610cae8254610aac565b610cb9828285610bf9565b5f60209050601f831160018114610cea575f8415610cd8578287015190505b610ce28582610c67565b865550610d49565b601f198416610cf886610adc565b5f5b82811015610d1f57848901518255600182019150602085019450602081019050610cfa565b86831015610d3c5784890151610d38601f891682610c4b565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610d8882610b5a565b9150610d9383610b5a565b9250828202610da181610b5a565b91508282048414831517610db857610db7610d51565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610df682610b5a565b9150610e0183610b5a565b925082610e1157610e10610dbf565b5b828204905092915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f610e86602183610e1c565b9150610e9182610e2c565b604082019050919050565b5f6020820190508181035f830152610eb381610e7a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610eee601f83610e1c565b9150610ef982610eba565b602082019050919050565b5f6020820190508181035f830152610f1b81610ee2565b9050919050565b610f2b81610b5a565b82525050565b5f602082019050610f445f830184610f22565b92915050565b5f610f5482610b5a565b9150610f5f83610b5a565b9250828201905080821115610f7757610f76610d51565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f610fb1601b83610e1c565b9150610fbc82610f7d565b602082019050919050565b5f6020820190508181035f830152610fde81610fa5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61103f602583610e1c565b915061104a82610fe5565b604082019050919050565b5f6020820190508181035f83015261106c81611033565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6110cd602383610e1c565b91506110d882611073565b604082019050919050565b5f6020820190508181035f8301526110fa816110c1565b9050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61112982610a48565b6111338185610e1c565b9350611143818560208601611101565b61114c8161110f565b840191505092915050565b5f6020820190508181035f83015261116f818461111f565b905092915050565b5f61118182610b5a565b915061118c83610b5a565b92508282039050818111156111a4576111a3610d51565b5b92915050565b61199e806111b75f395ff3fe608060405234801561000f575f80fd5b50600436106100e8575f3560e01c806370a082311161008a578063a457c2d711610064578063a457c2d71461025c578063a9059cbb1461028c578063dd62ed3e146102bc578063f2fde38b146102ec576100e8565b806370a08231146101f257806379cc67901461022257806395d89b411461023e576100e8565b806323b872dd116100c657806323b872dd14610158578063313ce5671461018857806339509351146101a657806342966c68146101d6576100e8565b806306fdde03146100ec578063095ea7b31461010a57806318160ddd1461013a575b5f80fd5b6100f4610308565b6040516101019190611139565b60405180910390f35b610124600480360381019061011f91906111ea565b610398565b6040516101319190611242565b60405180910390f35b6101426103b5565b60405161014f919061126a565b60405180910390f35b610172600480360381019061016d9190611283565b6103be565b60405161017f9190611242565b60405180910390f35b610190610492565b60405161019d91906112ee565b60405180910390f35b6101c060048036038101906101bb91906111ea565b6104a7565b6040516101cd9190611242565b60405180910390f35b6101f060048036038101906101eb9190611307565b610555565b005b61020c60048036038101906102079190611332565b610569565b604051610219919061126a565b60405180910390f35b61023c600480360381019061023791906111ea565b6105af565b005b610246610610565b6040516102539190611139565b60405180910390f35b610276600480360381019061027191906111ea565b6106a0565b6040516102839190611242565b60405180910390f35b6102a660048036038101906102a191906111ea565b610768565b6040516102b39190611242565b60405180910390f35b6102d660048036038101906102d1919061135d565b610785565b6040516102e3919061126a565b60405180910390f35b61030660048036038101906103019190611332565b610807565b005b606060048054610317906113c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610343906113c8565b801561038e5780601f106103655761010080835404028352916020019161038e565b820191905f5260205f20905b81548152906001019060200180831161037157829003601f168201915b5050505050905090565b5f6103ab6103a46109bd565b84846109c4565b6001905092915050565b5f600354905090565b5f6103ca848484610b87565b610487846103d66109bd565b610482856040518060600160405280602881526020016118f86028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6104396109bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e149092919063ffffffff16565b6109c4565b600190509392505050565b5f60065f9054906101000a900460ff16905090565b5f61054b6104b36109bd565b846105468560025f6104c36109bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e7690919063ffffffff16565b6109c4565b6001905092915050565b6105666105606109bd565b82610ed3565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f6105ed82604051806060016040528060248152602001611920602491396105de866105d96109bd565b610785565b610e149092919063ffffffff16565b9050610601836105fb6109bd565b836109c4565b61060b8383610ed3565b505050565b60606005805461061f906113c8565b80601f016020809104026020016040519081016040528092919081815260200182805461064b906113c8565b80156106965780601f1061066d57610100808354040283529160200191610696565b820191905f5260205f20905b81548152906001019060200180831161067957829003601f168201915b5050505050905090565b5f61075e6106ac6109bd565b84610759856040518060600160405280602581526020016119446025913960025f6106d56109bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e149092919063ffffffff16565b6109c4565b6001905092915050565b5f61077b6107746109bd565b8484610b87565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088b90611442565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f9906114d0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a299061155e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a97906115ec565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b7a919061126a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061167a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5a90611708565b60405180910390fd5b610c6e83838361107b565b610cd8816040518060600160405280602681526020016118d26026913960015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e149092919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610d698160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e7690919063ffffffff16565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e07919061126a565b60405180910390a3505050565b5f838311158290610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e529190611139565b60405180910390fd5b505f8385610e699190611753565b9050809150509392505050565b5f808284610e849190611786565b905083811015610ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec090611803565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3890611891565b60405180910390fd5b610f4c825f8361107b565b610fb6816040518060600160405280602281526020016118b06022913960015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e149092919063ffffffff16565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061100c8160035461108090919063ffffffff16565b6003819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161106f919061126a565b60405180910390a35050565b505050565b5f6110c183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e14565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61110b826110c9565b61111581856110d3565b93506111258185602086016110e3565b61112e816110f1565b840191505092915050565b5f6020820190508181035f8301526111518184611101565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6111868261115d565b9050919050565b6111968161117c565b81146111a0575f80fd5b50565b5f813590506111b18161118d565b92915050565b5f819050919050565b6111c9816111b7565b81146111d3575f80fd5b50565b5f813590506111e4816111c0565b92915050565b5f8060408385031215611200576111ff611159565b5b5f61120d858286016111a3565b925050602061121e858286016111d6565b9150509250929050565b5f8115159050919050565b61123c81611228565b82525050565b5f6020820190506112555f830184611233565b92915050565b611264816111b7565b82525050565b5f60208201905061127d5f83018461125b565b92915050565b5f805f6060848603121561129a57611299611159565b5b5f6112a7868287016111a3565b93505060206112b8868287016111a3565b92505060406112c9868287016111d6565b9150509250925092565b5f60ff82169050919050565b6112e8816112d3565b82525050565b5f6020820190506113015f8301846112df565b92915050565b5f6020828403121561131c5761131b611159565b5b5f611329848285016111d6565b91505092915050565b5f6020828403121561134757611346611159565b5b5f611354848285016111a3565b91505092915050565b5f806040838503121561137357611372611159565b5b5f611380858286016111a3565b9250506020611391858286016111a3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806113df57607f821691505b6020821081036113f2576113f161139b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61142c6020836110d3565b9150611437826113f8565b602082019050919050565b5f6020820190508181035f83015261145981611420565b9050919050565b7f446f6e27742061737369676e206f776e65727368697020746f206e756c6c20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6114ba6026836110d3565b91506114c582611460565b604082019050919050565b5f6020820190508181035f8301526114e7816114ae565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6115486024836110d3565b9150611553826114ee565b604082019050919050565b5f6020820190508181035f8301526115758161153c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6115d66022836110d3565b91506115e18261157c565b604082019050919050565b5f6020820190508181035f830152611603816115ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6116646025836110d3565b915061166f8261160a565b604082019050919050565b5f6020820190508181035f83015261169181611658565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6116f26023836110d3565b91506116fd82611698565b604082019050919050565b5f6020820190508181035f83015261171f816116e6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61175d826111b7565b9150611768836111b7565b92508282039050818111156117805761177f611726565b5b92915050565b5f611790826111b7565b915061179b836111b7565b92508282019050808211156117b3576117b2611726565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6117ed601b836110d3565b91506117f8826117b9565b602082019050919050565b5f6020820190508181035f83015261181a816117e1565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f61187b6021836110d3565b915061188682611821565b604082019050919050565b5f6020820190508181035f8301526118a88161186f565b905091905056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220878b4afbf04a989f3e7754d705e7454fa3b4590e8effe3eb8789103440f0bce864736f6c634300081a003345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100e8575f3560e01c806370a082311161008a578063a457c2d711610064578063a457c2d71461025c578063a9059cbb1461028c578063dd62ed3e146102bc578063f2fde38b146102ec576100e8565b806370a08231146101f257806379cc67901461022257806395d89b411461023e576100e8565b806323b872dd116100c657806323b872dd14610158578063313ce5671461018857806339509351146101a657806342966c68146101d6576100e8565b806306fdde03146100ec578063095ea7b31461010a57806318160ddd1461013a575b5f80fd5b6100f4610308565b6040516101019190611139565b60405180910390f35b610124600480360381019061011f91906111ea565b610398565b6040516101319190611242565b60405180910390f35b6101426103b5565b60405161014f919061126a565b60405180910390f35b610172600480360381019061016d9190611283565b6103be565b60405161017f9190611242565b60405180910390f35b610190610492565b60405161019d91906112ee565b60405180910390f35b6101c060048036038101906101bb91906111ea565b6104a7565b6040516101cd9190611242565b60405180910390f35b6101f060048036038101906101eb9190611307565b610555565b005b61020c60048036038101906102079190611332565b610569565b604051610219919061126a565b60405180910390f35b61023c600480360381019061023791906111ea565b6105af565b005b610246610610565b6040516102539190611139565b60405180910390f35b610276600480360381019061027191906111ea565b6106a0565b6040516102839190611242565b60405180910390f35b6102a660048036038101906102a191906111ea565b610768565b6040516102b39190611242565b60405180910390f35b6102d660048036038101906102d1919061135d565b610785565b6040516102e3919061126a565b60405180910390f35b61030660048036038101906103019190611332565b610807565b005b606060048054610317906113c8565b80601f0160208091040260200160405190810160405280929190818152602001828054610343906113c8565b801561038e5780601f106103655761010080835404028352916020019161038e565b820191905f5260205f20905b81548152906001019060200180831161037157829003601f168201915b5050505050905090565b5f6103ab6103a46109bd565b84846109c4565b6001905092915050565b5f600354905090565b5f6103ca848484610b87565b610487846103d66109bd565b610482856040518060600160405280602881526020016118f86028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6104396109bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e149092919063ffffffff16565b6109c4565b600190509392505050565b5f60065f9054906101000a900460ff16905090565b5f61054b6104b36109bd565b846105468560025f6104c36109bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e7690919063ffffffff16565b6109c4565b6001905092915050565b6105666105606109bd565b82610ed3565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f6105ed82604051806060016040528060248152602001611920602491396105de866105d96109bd565b610785565b610e149092919063ffffffff16565b9050610601836105fb6109bd565b836109c4565b61060b8383610ed3565b505050565b60606005805461061f906113c8565b80601f016020809104026020016040519081016040528092919081815260200182805461064b906113c8565b80156106965780601f1061066d57610100808354040283529160200191610696565b820191905f5260205f20905b81548152906001019060200180831161067957829003601f168201915b5050505050905090565b5f61075e6106ac6109bd565b84610759856040518060600160405280602581526020016119446025913960025f6106d56109bd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e149092919063ffffffff16565b6109c4565b6001905092915050565b5f61077b6107746109bd565b8484610b87565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088b90611442565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f9906114d0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a299061155e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a97906115ec565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b7a919061126a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061167a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5a90611708565b60405180910390fd5b610c6e83838361107b565b610cd8816040518060600160405280602681526020016118d26026913960015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e149092919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610d698160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e7690919063ffffffff16565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e07919061126a565b60405180910390a3505050565b5f838311158290610e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e529190611139565b60405180910390fd5b505f8385610e699190611753565b9050809150509392505050565b5f808284610e849190611786565b905083811015610ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec090611803565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3890611891565b60405180910390fd5b610f4c825f8361107b565b610fb6816040518060600160405280602281526020016118b06022913960015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e149092919063ffffffff16565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061100c8160035461108090919063ffffffff16565b6003819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161106f919061126a565b60405180910390a35050565b505050565b5f6110c183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e14565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61110b826110c9565b61111581856110d3565b93506111258185602086016110e3565b61112e816110f1565b840191505092915050565b5f6020820190508181035f8301526111518184611101565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6111868261115d565b9050919050565b6111968161117c565b81146111a0575f80fd5b50565b5f813590506111b18161118d565b92915050565b5f819050919050565b6111c9816111b7565b81146111d3575f80fd5b50565b5f813590506111e4816111c0565b92915050565b5f8060408385031215611200576111ff611159565b5b5f61120d858286016111a3565b925050602061121e858286016111d6565b9150509250929050565b5f8115159050919050565b61123c81611228565b82525050565b5f6020820190506112555f830184611233565b92915050565b611264816111b7565b82525050565b5f60208201905061127d5f83018461125b565b92915050565b5f805f6060848603121561129a57611299611159565b5b5f6112a7868287016111a3565b93505060206112b8868287016111a3565b92505060406112c9868287016111d6565b9150509250925092565b5f60ff82169050919050565b6112e8816112d3565b82525050565b5f6020820190506113015f8301846112df565b92915050565b5f6020828403121561131c5761131b611159565b5b5f611329848285016111d6565b91505092915050565b5f6020828403121561134757611346611159565b5b5f611354848285016111a3565b91505092915050565b5f806040838503121561137357611372611159565b5b5f611380858286016111a3565b9250506020611391858286016111a3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806113df57607f821691505b6020821081036113f2576113f161139b565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61142c6020836110d3565b9150611437826113f8565b602082019050919050565b5f6020820190508181035f83015261145981611420565b9050919050565b7f446f6e27742061737369676e206f776e65727368697020746f206e756c6c20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6114ba6026836110d3565b91506114c582611460565b604082019050919050565b5f6020820190508181035f8301526114e7816114ae565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6115486024836110d3565b9150611553826114ee565b604082019050919050565b5f6020820190508181035f8301526115758161153c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6115d66022836110d3565b91506115e18261157c565b604082019050919050565b5f6020820190508181035f830152611603816115ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6116646025836110d3565b915061166f8261160a565b604082019050919050565b5f6020820190508181035f83015261169181611658565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6116f26023836110d3565b91506116fd82611698565b604082019050919050565b5f6020820190508181035f83015261171f816116e6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61175d826111b7565b9150611768836111b7565b92508282039050818111156117805761177f611726565b5b92915050565b5f611790826111b7565b915061179b836111b7565b92508282019050808211156117b3576117b2611726565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6117ed601b836110d3565b91506117f8826117b9565b602082019050919050565b5f6020820190508181035f83015261181a816117e1565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f61187b6021836110d3565b915061188682611821565b604082019050919050565b5f6020820190508181035f8301526118a88161186f565b905091905056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220878b4afbf04a989f3e7754d705e7454fa3b4590e8effe3eb8789103440f0bce864736f6c634300081a0033

Deployed Bytecode Sourcemap

21194:1065:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10034:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12140:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11109:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12791:321;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10961:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13521:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19273:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11272:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19683:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10236:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14242:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11604:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11842:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20853:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10034:83;10071:13;10104:5;10097:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10034:83;:::o;12140:169::-;12223:4;12240:39;12249:12;:10;:12::i;:::-;12263:7;12272:6;12240:8;:39::i;:::-;12297:4;12290:11;;12140:169;;;;:::o;11109:100::-;11162:7;11189:12;;11182:19;;11109:100;:::o;12791:321::-;12897:4;12914:36;12924:6;12932:9;12943:6;12914:9;:36::i;:::-;12961:121;12970:6;12978:12;:10;:12::i;:::-;12992:89;13030:6;12992:89;;;;;;;;;;;;;;;;;:11;:19;13004:6;12992:19;;;;;;;;;;;;;;;:33;13012:12;:10;:12::i;:::-;12992:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;12961:8;:121::i;:::-;13100:4;13093:11;;12791:321;;;;;:::o;10961:83::-;11002:5;11027:9;;;;;;;;;;;11020:16;;10961:83;:::o;13521:218::-;13609:4;13626:83;13635:12;:10;:12::i;:::-;13649:7;13658:50;13697:10;13658:11;:25;13670:12;:10;:12::i;:::-;13658:25;;;;;;;;;;;;;;;:34;13684:7;13658:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;13626:8;:83::i;:::-;13727:4;13720:11;;13521:218;;;;:::o;19273:91::-;19329:27;19335:12;:10;:12::i;:::-;19349:6;19329:5;:27::i;:::-;19273:91;:::o;11272:119::-;11338:7;11365:9;:18;11375:7;11365:18;;;;;;;;;;;;;;;;11358:25;;11272:119;;;:::o;19683:295::-;19760:26;19789:84;19826:6;19789:84;;;;;;;;;;;;;;;;;:32;19799:7;19808:12;:10;:12::i;:::-;19789:9;:32::i;:::-;:36;;:84;;;;;:::i;:::-;19760:113;;19886:51;19895:7;19904:12;:10;:12::i;:::-;19918:18;19886:8;:51::i;:::-;19948:22;19954:7;19963:6;19948:5;:22::i;:::-;19749:229;19683:295;;:::o;10236:87::-;10275:13;10308:7;10301:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10236:87;:::o;14242:269::-;14335:4;14352:129;14361:12;:10;:12::i;:::-;14375:7;14384:96;14423:15;14384:96;;;;;;;;;;;;;;;;;:11;:25;14396:12;:10;:12::i;:::-;14384:25;;;;;;;;;;;;;;;:34;14410:7;14384:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;14352:8;:129::i;:::-;14499:4;14492:11;;14242:269;;;;:::o;11604:175::-;11690:4;11707:42;11717:12;:10;:12::i;:::-;11731:9;11742:6;11707:9;:42::i;:::-;11767:4;11760:11;;11604:175;;;;:::o;11842:151::-;11931:7;11958:11;:18;11970:5;11958:18;;;;;;;;;;;;;;;:27;11977:7;11958:27;;;;;;;;;;;;;;;;11951:34;;11842:151;;;;:::o;20853:238::-;20629:6;;;;;;;;;;20615:20;;:10;:20;;;20607:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20956:1:::1;20936:22;;:8;:22;;::::0;20928:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21046:8;21017:38;;21038:6;::::0;::::1;;;;;;;;21017:38;;;;;;;;;;;;21075:8;21066:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;20853:238:::0;:::o;93:115::-;146:15;189:10;174:26;;93:115;:::o;17389:346::-;17508:1;17491:19;;:5;:19;;;17483:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17589:1;17570:21;;:7;:21;;;17562:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17673:6;17643:11;:18;17655:5;17643:18;;;;;;;;;;;;;;;:27;17662:7;17643:27;;;;;;;;;;;;;;;:36;;;;17711:7;17695:32;;17704:5;17695:32;;;17720:6;17695:32;;;;;;:::i;:::-;;;;;;;;17389:346;;;:::o;15001:539::-;15125:1;15107:20;;:6;:20;;;15099:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15209:1;15188:23;;:9;:23;;;15180:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15264:47;15285:6;15293:9;15304:6;15264:20;:47::i;:::-;15344:71;15366:6;15344:71;;;;;;;;;;;;;;;;;:9;:17;15354:6;15344:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;15324:9;:17;15334:6;15324:17;;;;;;;;;;;;;;;:91;;;;15449:32;15474:6;15449:9;:20;15459:9;15449:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15426:9;:20;15436:9;15426:20;;;;;;;;;;;;;;;:55;;;;15514:9;15497:35;;15506:6;15497:35;;;15525:6;15497:35;;;;;;:::i;:::-;;;;;;;;15001:539;;;:::o;2199:192::-;2285:7;2318:1;2313;:6;;2321:12;2305:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2345:9;2361:1;2357;:5;;;;:::i;:::-;2345:17;;2382:1;2375:8;;;2199:192;;;;;:::o;1296:181::-;1354:7;1374:9;1390:1;1386;:5;;;;:::i;:::-;1374:17;;1415:1;1410;:6;;1402:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1468:1;1461:8;;;1296:181;;;;:::o;16533:418::-;16636:1;16617:21;;:7;:21;;;16609:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16689:49;16710:7;16727:1;16731:6;16689:20;:49::i;:::-;16772:68;16795:6;16772:68;;;;;;;;;;;;;;;;;:9;:18;16782:7;16772:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;16751:9;:18;16761:7;16751:18;;;;;;;;;;;;;;;:89;;;;16866:24;16883:6;16866:12;;:16;;:24;;;;:::i;:::-;16851:12;:39;;;;16932:1;16906:37;;16915:7;16906:37;;;16936:6;16906:37;;;;;;:::i;:::-;;;;;;;;16533:418;;:::o;18760:92::-;;;;:::o;1760:136::-;1818:7;1845:43;1849:1;1852;1845:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1838:50;;1760:136;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:::-;5140:6;5189:2;5177:9;5168:7;5164:23;5160:32;5157:119;;;5195:79;;:::i;:::-;5157:119;5315:1;5340:53;5385:7;5376:6;5365:9;5361:22;5340:53;:::i;:::-;5330:63;;5286:117;5081:329;;;;:::o;5416:474::-;5484:6;5492;5541:2;5529:9;5520:7;5516:23;5512:32;5509:119;;;5547:79;;:::i;:::-;5509:119;5667:1;5692:53;5737:7;5728:6;5717:9;5713:22;5692:53;:::i;:::-;5682:63;;5638:117;5794:2;5820:53;5865:7;5856:6;5845:9;5841:22;5820:53;:::i;:::-;5810:63;;5765:118;5416:474;;;;;:::o;5896:180::-;5944:77;5941:1;5934:88;6041:4;6038:1;6031:15;6065:4;6062:1;6055:15;6082:320;6126:6;6163:1;6157:4;6153:12;6143:22;;6210:1;6204:4;6200:12;6231:18;6221:81;;6287:4;6279:6;6275:17;6265:27;;6221:81;6349:2;6341:6;6338:14;6318:18;6315:38;6312:84;;6368:18;;:::i;:::-;6312:84;6133:269;6082:320;;;:::o;6408:182::-;6548:34;6544:1;6536:6;6532:14;6525:58;6408:182;:::o;6596:366::-;6738:3;6759:67;6823:2;6818:3;6759:67;:::i;:::-;6752:74;;6835:93;6924:3;6835:93;:::i;:::-;6953:2;6948:3;6944:12;6937:19;;6596:366;;;:::o;6968:419::-;7134:4;7172:2;7161:9;7157:18;7149:26;;7221:9;7215:4;7211:20;7207:1;7196:9;7192:17;7185:47;7249:131;7375:4;7249:131;:::i;:::-;7241:139;;6968:419;;;:::o;7393:225::-;7533:34;7529:1;7521:6;7517:14;7510:58;7602:8;7597:2;7589:6;7585:15;7578:33;7393:225;:::o;7624:366::-;7766:3;7787:67;7851:2;7846:3;7787:67;:::i;:::-;7780:74;;7863:93;7952:3;7863:93;:::i;:::-;7981:2;7976:3;7972:12;7965:19;;7624:366;;;:::o;7996:419::-;8162:4;8200:2;8189:9;8185:18;8177:26;;8249:9;8243:4;8239:20;8235:1;8224:9;8220:17;8213:47;8277:131;8403:4;8277:131;:::i;:::-;8269:139;;7996:419;;;:::o;8421:223::-;8561:34;8557:1;8549:6;8545:14;8538:58;8630:6;8625:2;8617:6;8613:15;8606:31;8421:223;:::o;8650:366::-;8792:3;8813:67;8877:2;8872:3;8813:67;:::i;:::-;8806:74;;8889:93;8978:3;8889:93;:::i;:::-;9007:2;9002:3;8998:12;8991:19;;8650:366;;;:::o;9022:419::-;9188:4;9226:2;9215:9;9211:18;9203:26;;9275:9;9269:4;9265:20;9261:1;9250:9;9246:17;9239:47;9303:131;9429:4;9303:131;:::i;:::-;9295:139;;9022:419;;;:::o;9447:221::-;9587:34;9583:1;9575:6;9571:14;9564:58;9656:4;9651:2;9643:6;9639:15;9632:29;9447:221;:::o;9674:366::-;9816:3;9837:67;9901:2;9896:3;9837:67;:::i;:::-;9830:74;;9913:93;10002:3;9913:93;:::i;:::-;10031:2;10026:3;10022:12;10015:19;;9674:366;;;:::o;10046:419::-;10212:4;10250:2;10239:9;10235:18;10227:26;;10299:9;10293:4;10289:20;10285:1;10274:9;10270:17;10263:47;10327:131;10453:4;10327:131;:::i;:::-;10319:139;;10046:419;;;:::o;10471:224::-;10611:34;10607:1;10599:6;10595:14;10588:58;10680:7;10675:2;10667:6;10663:15;10656:32;10471:224;:::o;10701:366::-;10843:3;10864:67;10928:2;10923:3;10864:67;:::i;:::-;10857:74;;10940:93;11029:3;10940:93;:::i;:::-;11058:2;11053:3;11049:12;11042:19;;10701:366;;;:::o;11073:419::-;11239:4;11277:2;11266:9;11262:18;11254:26;;11326:9;11320:4;11316:20;11312:1;11301:9;11297:17;11290:47;11354:131;11480:4;11354:131;:::i;:::-;11346:139;;11073:419;;;:::o;11498:222::-;11638:34;11634:1;11626:6;11622:14;11615:58;11707:5;11702:2;11694:6;11690:15;11683:30;11498:222;:::o;11726:366::-;11868:3;11889:67;11953:2;11948:3;11889:67;:::i;:::-;11882:74;;11965:93;12054:3;11965:93;:::i;:::-;12083:2;12078:3;12074:12;12067:19;;11726:366;;;:::o;12098:419::-;12264:4;12302:2;12291:9;12287:18;12279:26;;12351:9;12345:4;12341:20;12337:1;12326:9;12322:17;12315:47;12379:131;12505:4;12379:131;:::i;:::-;12371:139;;12098:419;;;:::o;12523:180::-;12571:77;12568:1;12561:88;12668:4;12665:1;12658:15;12692:4;12689:1;12682:15;12709:194;12749:4;12769:20;12787:1;12769:20;:::i;:::-;12764:25;;12803:20;12821:1;12803:20;:::i;:::-;12798:25;;12847:1;12844;12840:9;12832:17;;12871:1;12865:4;12862:11;12859:37;;;12876:18;;:::i;:::-;12859:37;12709:194;;;;:::o;12909:191::-;12949:3;12968:20;12986:1;12968:20;:::i;:::-;12963:25;;13002:20;13020:1;13002:20;:::i;:::-;12997:25;;13045:1;13042;13038:9;13031:16;;13066:3;13063:1;13060:10;13057:36;;;13073:18;;:::i;:::-;13057:36;12909:191;;;;:::o;13106:177::-;13246:29;13242:1;13234:6;13230:14;13223:53;13106:177;:::o;13289:366::-;13431:3;13452:67;13516:2;13511:3;13452:67;:::i;:::-;13445:74;;13528:93;13617:3;13528:93;:::i;:::-;13646:2;13641:3;13637:12;13630:19;;13289:366;;;:::o;13661:419::-;13827:4;13865:2;13854:9;13850:18;13842:26;;13914:9;13908:4;13904:20;13900:1;13889:9;13885:17;13878:47;13942:131;14068:4;13942:131;:::i;:::-;13934:139;;13661:419;;;:::o;14086:220::-;14226:34;14222:1;14214:6;14210:14;14203:58;14295:3;14290:2;14282:6;14278:15;14271:28;14086:220;:::o;14312:366::-;14454:3;14475:67;14539:2;14534:3;14475:67;:::i;:::-;14468:74;;14551:93;14640:3;14551:93;:::i;:::-;14669:2;14664:3;14660:12;14653:19;;14312:366;;;:::o;14684:419::-;14850:4;14888:2;14877:9;14873:18;14865:26;;14937:9;14931:4;14927:20;14923:1;14912:9;14908:17;14901:47;14965:131;15091:4;14965:131;:::i;:::-;14957:139;;14684:419;;;:::o

Swarm Source

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