ETH Price: $2,253.93 (-1.15%)
 

Overview

Max Total Supply

888,000,000,000 GLITCH

Holders

42

Transfers

-
0

Market

Onchain Market Cap

-

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:
Glitch

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-07-13
*/

// SPDX-License-Identifier: MIT
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);
}

/**
 * @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;
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

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

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

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

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

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

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

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

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

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

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

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

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

enum TokenType {
    standard,
    antiBotStandard,
    liquidityGenerator,
    antiBotLiquidityGenerator,
    baby,
    antiBotBaby,
    buybackBaby,
    antiBotBuybackBaby
}

abstract contract BaseToken {
    event TokenCreated(
        address indexed owner,
        address indexed token,
        TokenType tokenType,
        uint256 version
    );
}

contract Glitch is IERC20, Ownable, BaseToken {
    using SafeMath for uint256;

    uint256 public constant VERSION = 1;

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

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 private _totalSupply;

    constructor(
    ) payable {
        _name = "Glitch";
        _symbol = "GLITCH";
        _decimals = 18;
        _mint(owner(), 888000000000 * 10 ** _decimals);
    }

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

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

    /**
     * @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);
        _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 virtual {
        _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 {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"payable","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":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"version","type":"uint256"}],"name":"TokenCreated","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":[],"name":"VERSION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[],"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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"}]

608060405262000024620000186200013260201b60201c565b6200013a60201b60201c565b6040518060400160405280600681526020017f476c6974636800000000000000000000000000000000000000000000000000008152506003908051906020019062000071929190620003f5565b506040518060400160405280600681526020017f474c49544348000000000000000000000000000000000000000000000000000081525060049080519060200190620000bf929190620003f5565b506012600560006101000a81548160ff021916908360ff1602179055506200012c620000f0620001fe60201b60201c565b600560009054906101000a900460ff16600a6200010e919062000600565b64cec0ecb0006200012091906200073d565b6200022760201b60201c565b62000856565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200029a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200029190620004f8565b60405180910390fd5b620002ae60008383620003d860201b60201c565b620002ca81600654620003dd60201b6200097c1790919060201c565b6006819055506200032981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620003dd60201b6200097c1790919060201c565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003cc91906200051a565b60405180910390a35050565b505050565b60008183620003ed919062000548565b905092915050565b8280546200040390620007b5565b90600052602060002090601f01602090048101928262000427576000855562000473565b82601f106200044257805160ff191683800117855562000473565b8280016001018555821562000473579182015b828111156200047257825182559160200191906001019062000455565b5b50905062000482919062000486565b5090565b5b80821115620004a157600081600090555060010162000487565b5090565b6000620004b4601f8362000537565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b620004f2816200079e565b82525050565b600060208201905081810360008301526200051381620004a5565b9050919050565b6000602082019050620005316000830184620004e7565b92915050565b600082825260208201905092915050565b600062000555826200079e565b915062000562836200079e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200059a5762000599620007eb565b5b828201905092915050565b6000808291508390505b6001851115620005f757808604811115620005cf57620005ce620007eb565b5b6001851615620005df5780820291505b8081029050620005ef8562000849565b9450620005af565b94509492505050565b60006200060d826200079e565b91506200061a83620007a8565b9250620006497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000651565b905092915050565b60008262000663576001905062000736565b8162000673576000905062000736565b81600181146200068c57600281146200069757620006cd565b600191505062000736565b60ff841115620006ac57620006ab620007eb565b5b8360020a915084821115620006c657620006c5620007eb565b5b5062000736565b5060208310610133831016604e8410600b8410161715620007075782820a905083811115620007015762000700620007eb565b5b62000736565b620007168484846001620005a5565b9250905081840481111562000730576200072f620007eb565b5b81810290505b9392505050565b60006200074a826200079e565b915062000757836200079e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007935762000792620007eb565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b60006002820490506001821680620007ce57607f821691505b60208210811415620007e557620007e46200081a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b6116a980620008666000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063715018a611610097578063a9059cbb11610066578063a9059cbb1461028a578063dd62ed3e146102ba578063f2fde38b146102ea578063ffa1ad7414610306576100f5565b8063715018a6146102145780638da5cb5b1461021e57806395d89b411461023c578063a457c2d71461025a576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b457806370a08231146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610324565b60405161010f919061131f565b60405180910390f35b610132600480360381019061012d9190610ffa565b6103b6565b60405161013f9190611304565b60405180910390f35b6101506103d4565b60405161015d9190611401565b60405180910390f35b610180600480360381019061017b9190610fab565b6103de565b60405161018d9190611304565b60405180910390f35b61019e6104b7565b6040516101ab919061141c565b60405180910390f35b6101ce60048036038101906101c99190610ffa565b6104ce565b6040516101db9190611304565b60405180910390f35b6101fe60048036038101906101f99190610f46565b610581565b60405161020b9190611401565b60405180910390f35b61021c6105ca565b005b610226610652565b60405161023391906112e9565b60405180910390f35b61024461067b565b604051610251919061131f565b60405180910390f35b610274600480360381019061026f9190610ffa565b61070d565b6040516102819190611304565b60405180910390f35b6102a4600480360381019061029f9190610ffa565b6107da565b6040516102b19190611304565b60405180910390f35b6102d460048036038101906102cf9190610f6f565b6107f8565b6040516102e19190611401565b60405180910390f35b61030460048036038101906102ff9190610f46565b61087f565b005b61030e610977565b60405161031b9190611401565b60405180910390f35b60606003805461033390611531565b80601f016020809104026020016040519081016040528092919081815260200182805461035f90611531565b80156103ac5780601f10610381576101008083540402835291602001916103ac565b820191906000526020600020905b81548152906001019060200180831161038f57829003601f168201915b5050505050905090565b60006103ca6103c3610992565b848461099a565b6001905092915050565b6000600654905090565b60006103eb848484610b65565b6104ac846103f7610992565b6104a78560405180606001604052806028815260200161162760289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061045d610992565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dfe9092919063ffffffff16565b61099a565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006105776104db610992565b8461057285600260006104ec610992565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461097c90919063ffffffff16565b61099a565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105d2610992565b73ffffffffffffffffffffffffffffffffffffffff166105f0610652565b73ffffffffffffffffffffffffffffffffffffffff1614610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063d906113a1565b60405180910390fd5b6106506000610e53565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461068a90611531565b80601f01602080910402602001604051908101604052809291908181526020018280546106b690611531565b80156107035780601f106106d857610100808354040283529160200191610703565b820191906000526020600020905b8154815290600101906020018083116106e657829003601f168201915b5050505050905090565b60006107d061071a610992565b846107cb8560405180606001604052806025815260200161164f6025913960026000610744610992565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dfe9092919063ffffffff16565b61099a565b6001905092915050565b60006107ee6107e7610992565b8484610b65565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610887610992565b73ffffffffffffffffffffffffffffffffffffffff166108a5610652565b73ffffffffffffffffffffffffffffffffffffffff16146108fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f2906113a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096290611361565b60405180910390fd5b61097481610e53565b50565b600181565b6000818361098a9190611453565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a01906113e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7190611381565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b589190611401565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc906113c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c90611341565b60405180910390fd5b610c50838383610f17565b610cbc8160405180606001604052806026815260200161160160269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dfe9092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d5181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461097c90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610df19190611401565b60405180910390a3505050565b6000838311158290610e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3d919061131f565b60405180910390fd5b5082840390509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b600081359050610f2b816115d2565b92915050565b600081359050610f40816115e9565b92915050565b600060208284031215610f5857600080fd5b6000610f6684828501610f1c565b91505092915050565b60008060408385031215610f8257600080fd5b6000610f9085828601610f1c565b9250506020610fa185828601610f1c565b9150509250929050565b600080600060608486031215610fc057600080fd5b6000610fce86828701610f1c565b9350506020610fdf86828701610f1c565b9250506040610ff086828701610f31565b9150509250925092565b6000806040838503121561100d57600080fd5b600061101b85828601610f1c565b925050602061102c85828601610f31565b9150509250929050565b61103f816114a9565b82525050565b61104e816114bb565b82525050565b600061105f82611437565b6110698185611442565b93506110798185602086016114fe565b611082816115c1565b840191505092915050565b600061109a602383611442565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611100602683611442565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611166602283611442565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006111cc602083611442565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061120c602583611442565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611272602483611442565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6112d4816114e7565b82525050565b6112e3816114f1565b82525050565b60006020820190506112fe6000830184611036565b92915050565b60006020820190506113196000830184611045565b92915050565b600060208201905081810360008301526113398184611054565b905092915050565b6000602082019050818103600083015261135a8161108d565b9050919050565b6000602082019050818103600083015261137a816110f3565b9050919050565b6000602082019050818103600083015261139a81611159565b9050919050565b600060208201905081810360008301526113ba816111bf565b9050919050565b600060208201905081810360008301526113da816111ff565b9050919050565b600060208201905081810360008301526113fa81611265565b9050919050565b600060208201905061141660008301846112cb565b92915050565b600060208201905061143160008301846112da565b92915050565b600081519050919050565b600082825260208201905092915050565b600061145e826114e7565b9150611469836114e7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561149e5761149d611563565b5b828201905092915050565b60006114b4826114c7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561151c578082015181840152602081019050611501565b8381111561152b576000848401525b50505050565b6000600282049050600182168061154957607f821691505b6020821081141561155d5761155c611592565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6115db816114a9565b81146115e657600080fd5b50565b6115f2816114e7565b81146115fd57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220eb7f9cbf0edece0cb37f38722e6783b61d5a2836b07978236c09836bcbb2a72964736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063715018a611610097578063a9059cbb11610066578063a9059cbb1461028a578063dd62ed3e146102ba578063f2fde38b146102ea578063ffa1ad7414610306576100f5565b8063715018a6146102145780638da5cb5b1461021e57806395d89b411461023c578063a457c2d71461025a576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806339509351146101b457806370a08231146101e4576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b610102610324565b60405161010f919061131f565b60405180910390f35b610132600480360381019061012d9190610ffa565b6103b6565b60405161013f9190611304565b60405180910390f35b6101506103d4565b60405161015d9190611401565b60405180910390f35b610180600480360381019061017b9190610fab565b6103de565b60405161018d9190611304565b60405180910390f35b61019e6104b7565b6040516101ab919061141c565b60405180910390f35b6101ce60048036038101906101c99190610ffa565b6104ce565b6040516101db9190611304565b60405180910390f35b6101fe60048036038101906101f99190610f46565b610581565b60405161020b9190611401565b60405180910390f35b61021c6105ca565b005b610226610652565b60405161023391906112e9565b60405180910390f35b61024461067b565b604051610251919061131f565b60405180910390f35b610274600480360381019061026f9190610ffa565b61070d565b6040516102819190611304565b60405180910390f35b6102a4600480360381019061029f9190610ffa565b6107da565b6040516102b19190611304565b60405180910390f35b6102d460048036038101906102cf9190610f6f565b6107f8565b6040516102e19190611401565b60405180910390f35b61030460048036038101906102ff9190610f46565b61087f565b005b61030e610977565b60405161031b9190611401565b60405180910390f35b60606003805461033390611531565b80601f016020809104026020016040519081016040528092919081815260200182805461035f90611531565b80156103ac5780601f10610381576101008083540402835291602001916103ac565b820191906000526020600020905b81548152906001019060200180831161038f57829003601f168201915b5050505050905090565b60006103ca6103c3610992565b848461099a565b6001905092915050565b6000600654905090565b60006103eb848484610b65565b6104ac846103f7610992565b6104a78560405180606001604052806028815260200161162760289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061045d610992565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dfe9092919063ffffffff16565b61099a565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006105776104db610992565b8461057285600260006104ec610992565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461097c90919063ffffffff16565b61099a565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105d2610992565b73ffffffffffffffffffffffffffffffffffffffff166105f0610652565b73ffffffffffffffffffffffffffffffffffffffff1614610646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063d906113a1565b60405180910390fd5b6106506000610e53565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461068a90611531565b80601f01602080910402602001604051908101604052809291908181526020018280546106b690611531565b80156107035780601f106106d857610100808354040283529160200191610703565b820191906000526020600020905b8154815290600101906020018083116106e657829003601f168201915b5050505050905090565b60006107d061071a610992565b846107cb8560405180606001604052806025815260200161164f6025913960026000610744610992565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dfe9092919063ffffffff16565b61099a565b6001905092915050565b60006107ee6107e7610992565b8484610b65565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610887610992565b73ffffffffffffffffffffffffffffffffffffffff166108a5610652565b73ffffffffffffffffffffffffffffffffffffffff16146108fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f2906113a1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096290611361565b60405180910390fd5b61097481610e53565b50565b600181565b6000818361098a9190611453565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a01906113e1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7190611381565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b589190611401565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc906113c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c90611341565b60405180910390fd5b610c50838383610f17565b610cbc8160405180606001604052806026815260200161160160269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dfe9092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d5181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461097c90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610df19190611401565b60405180910390a3505050565b6000838311158290610e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3d919061131f565b60405180910390fd5b5082840390509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b600081359050610f2b816115d2565b92915050565b600081359050610f40816115e9565b92915050565b600060208284031215610f5857600080fd5b6000610f6684828501610f1c565b91505092915050565b60008060408385031215610f8257600080fd5b6000610f9085828601610f1c565b9250506020610fa185828601610f1c565b9150509250929050565b600080600060608486031215610fc057600080fd5b6000610fce86828701610f1c565b9350506020610fdf86828701610f1c565b9250506040610ff086828701610f31565b9150509250925092565b6000806040838503121561100d57600080fd5b600061101b85828601610f1c565b925050602061102c85828601610f31565b9150509250929050565b61103f816114a9565b82525050565b61104e816114bb565b82525050565b600061105f82611437565b6110698185611442565b93506110798185602086016114fe565b611082816115c1565b840191505092915050565b600061109a602383611442565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611100602683611442565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611166602283611442565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006111cc602083611442565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061120c602583611442565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611272602483611442565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6112d4816114e7565b82525050565b6112e3816114f1565b82525050565b60006020820190506112fe6000830184611036565b92915050565b60006020820190506113196000830184611045565b92915050565b600060208201905081810360008301526113398184611054565b905092915050565b6000602082019050818103600083015261135a8161108d565b9050919050565b6000602082019050818103600083015261137a816110f3565b9050919050565b6000602082019050818103600083015261139a81611159565b9050919050565b600060208201905081810360008301526113ba816111bf565b9050919050565b600060208201905081810360008301526113da816111ff565b9050919050565b600060208201905081810360008301526113fa81611265565b9050919050565b600060208201905061141660008301846112cb565b92915050565b600060208201905061143160008301846112da565b92915050565b600081519050919050565b600082825260208201905092915050565b600061145e826114e7565b9150611469836114e7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561149e5761149d611563565b5b828201905092915050565b60006114b4826114c7565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561151c578082015181840152602081019050611501565b8381111561152b576000848401525b50505050565b6000600282049050600182168061154957607f821691505b6020821081141561155d5761155c611592565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6115db816114a9565b81146115e657600080fd5b50565b6115f2816114e7565b81146115fd57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220eb7f9cbf0edece0cb37f38722e6783b61d5a2836b07978236c09836bcbb2a72964736f6c63430008000033

Deployed Bytecode Sourcemap

12993:10199:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13620:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15907:210;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14719:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16599:454;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14563:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17462:300;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14890:177;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5122:94;;;:::i;:::-;;4471:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13830:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18265:400;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15280:216;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15559:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5371:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13081:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13620:91;13665:13;13698:5;13691:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13620:91;:::o;15907:210::-;16026:4;16048:39;16057:12;:10;:12::i;:::-;16071:7;16080:6;16048:8;:39::i;:::-;16105:4;16098:11;;15907:210;;;;:::o;14719:108::-;14780:7;14807:12;;14800:19;;14719:108;:::o;16599:454::-;16739:4;16756:36;16766:6;16774:9;16785:6;16756:9;:36::i;:::-;16803:220;16826:6;16847:12;:10;:12::i;:::-;16874:138;16930:6;16874:138;;;;;;;;;;;;;;;;;:11;:19;16886:6;16874:19;;;;;;;;;;;;;;;:33;16894:12;:10;:12::i;:::-;16874:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;16803:8;:220::i;:::-;17041:4;17034:11;;16599:454;;;;;:::o;14563:91::-;14612:5;14637:9;;;;;;;;;;;14630:16;;14563:91;:::o;17462:300::-;17577:4;17599:133;17622:12;:10;:12::i;:::-;17649:7;17671:50;17710:10;17671:11;:25;17683:12;:10;:12::i;:::-;17671:25;;;;;;;;;;;;;;;:34;17697:7;17671:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17599:8;:133::i;:::-;17750:4;17743:11;;17462:300;;;;:::o;14890:177::-;15009:7;15041:9;:18;15051:7;15041:18;;;;;;;;;;;;;;;;15034:25;;14890:177;;;:::o;5122:94::-;4702:12;:10;:12::i;:::-;4691:23;;:7;:5;:7::i;:::-;:23;;;4683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5187:21:::1;5205:1;5187:9;:21::i;:::-;5122:94::o:0;4471:87::-;4517:7;4544:6;;;;;;;;;;;4537:13;;4471:87;:::o;13830:95::-;13877:13;13910:7;13903:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13830:95;:::o;18265:400::-;18385:4;18407:228;18430:12;:10;:12::i;:::-;18457:7;18479:145;18536:15;18479:145;;;;;;;;;;;;;;;;;:11;:25;18491:12;:10;:12::i;:::-;18479:25;;;;;;;;;;;;;;;:34;18505:7;18479:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;18407:8;:228::i;:::-;18653:4;18646:11;;18265:400;;;;:::o;15280:216::-;15402:4;15424:42;15434:12;:10;:12::i;:::-;15448:9;15459:6;15424:9;:42::i;:::-;15484:4;15477:11;;15280:216;;;;:::o;15559:201::-;15693:7;15725:11;:18;15737:5;15725:18;;;;;;;;;;;;;;;:27;15744:7;15725:27;;;;;;;;;;;;;;;;15718:34;;15559:201;;;;:::o;5371:192::-;4702:12;:10;:12::i;:::-;4691:23;;:7;:5;:7::i;:::-;:23;;;4683:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5480:1:::1;5460:22;;:8;:22;;;;5452:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5536:19;5546:8;5536:9;:19::i;:::-;5371:192:::0;:::o;13081:35::-;13115:1;13081:35;:::o;8452:98::-;8510:7;8541:1;8537;:5;;;;:::i;:::-;8530:12;;8452:98;;;;:::o;3347:::-;3400:7;3427:10;3420:17;;3347:98;:::o;21651:380::-;21804:1;21787:19;;:5;:19;;;;21779:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21885:1;21866:21;;:7;:21;;;;21858:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21969:6;21939:11;:18;21951:5;21939:18;;;;;;;;;;;;;;;:27;21958:7;21939:27;;;;;;;;;;;;;;;:36;;;;22007:7;21991:32;;22000:5;21991:32;;;22016:6;21991:32;;;;;;:::i;:::-;;;;;;;;21651:380;;;:::o;19155:610::-;19313:1;19295:20;;:6;:20;;;;19287:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19397:1;19376:23;;:9;:23;;;;19368:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19452:47;19473:6;19481:9;19492:6;19452:20;:47::i;:::-;19532:108;19568:6;19532:108;;;;;;;;;;;;;;;;;:9;:17;19542:6;19532:17;;;;;;;;;;;;;;;;:21;;:108;;;;;:::i;:::-;19512:9;:17;19522:6;19512:17;;;;;;;;;;;;;;;:128;;;;19674:32;19699:6;19674:9;:20;19684:9;19674:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;19651:9;:20;19661:9;19651:20;;;;;;;;;;;;;;;:55;;;;19739:9;19722:35;;19731:6;19722:35;;;19750:6;19722:35;;;;;;:::i;:::-;;;;;;;;19155:610;;;:::o;10731:240::-;10851:7;10909:1;10904;:6;;10912:12;10896:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10951:1;10947;:5;10940:12;;10731:240;;;;;:::o;5571:173::-;5627:16;5646:6;;;;;;;;;;;5627:25;;5672:8;5663:6;;:17;;;;;;;;;;;;;;;;;;5727:8;5696:40;;5717:8;5696:40;;;;;;;;;;;;5571:173;;:::o;23064:125::-;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;;;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;;;;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;;;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:118::-;2036:24;2054:5;2036:24;:::i;:::-;2031:3;2024:37;2014:53;;:::o;2073:109::-;2154:21;2169:5;2154:21;:::i;:::-;2149:3;2142:34;2132:50;;:::o;2188:364::-;;2304:39;2337:5;2304:39;:::i;:::-;2359:71;2423:6;2418:3;2359:71;:::i;:::-;2352:78;;2439:52;2484:6;2479:3;2472:4;2465:5;2461:16;2439:52;:::i;:::-;2516:29;2538:6;2516:29;:::i;:::-;2511:3;2507:39;2500:46;;2280:272;;;;;:::o;2558:367::-;;2721:67;2785:2;2780:3;2721:67;:::i;:::-;2714:74;;2818:34;2814:1;2809:3;2805:11;2798:55;2884:5;2879:2;2874:3;2870:12;2863:27;2916:2;2911:3;2907:12;2900:19;;2704:221;;;:::o;2931:370::-;;3094:67;3158:2;3153:3;3094:67;:::i;:::-;3087:74;;3191:34;3187:1;3182:3;3178:11;3171:55;3257:8;3252:2;3247:3;3243:12;3236:30;3292:2;3287:3;3283:12;3276:19;;3077:224;;;:::o;3307:366::-;;3470:67;3534:2;3529:3;3470:67;:::i;:::-;3463:74;;3567:34;3563:1;3558:3;3554:11;3547:55;3633:4;3628:2;3623:3;3619:12;3612:26;3664:2;3659:3;3655:12;3648:19;;3453:220;;;:::o;3679:330::-;;3842:67;3906:2;3901:3;3842:67;:::i;:::-;3835:74;;3939:34;3935:1;3930:3;3926:11;3919:55;4000:2;3995:3;3991:12;3984:19;;3825:184;;;:::o;4015:369::-;;4178:67;4242:2;4237:3;4178:67;:::i;:::-;4171:74;;4275:34;4271:1;4266:3;4262:11;4255:55;4341:7;4336:2;4331:3;4327:12;4320:29;4375:2;4370:3;4366:12;4359:19;;4161:223;;;:::o;4390:368::-;;4553:67;4617:2;4612:3;4553:67;:::i;:::-;4546:74;;4650:34;4646:1;4641:3;4637:11;4630:55;4716:6;4711:2;4706:3;4702:12;4695:28;4749:2;4744:3;4740:12;4733:19;;4536:222;;;:::o;4764:118::-;4851:24;4869:5;4851:24;:::i;:::-;4846:3;4839:37;4829:53;;:::o;4888:112::-;4971:22;4987:5;4971:22;:::i;:::-;4966:3;4959:35;4949:51;;:::o;5006:222::-;;5137:2;5126:9;5122:18;5114:26;;5150:71;5218:1;5207:9;5203:17;5194:6;5150:71;:::i;:::-;5104:124;;;;:::o;5234:210::-;;5359:2;5348:9;5344:18;5336:26;;5372:65;5434:1;5423:9;5419:17;5410:6;5372:65;:::i;:::-;5326:118;;;;:::o;5450:313::-;;5601:2;5590:9;5586:18;5578:26;;5650:9;5644:4;5640:20;5636:1;5625:9;5621:17;5614:47;5678:78;5751:4;5742:6;5678:78;:::i;:::-;5670:86;;5568:195;;;;:::o;5769:419::-;;5973:2;5962:9;5958:18;5950:26;;6022:9;6016:4;6012:20;6008:1;5997:9;5993:17;5986:47;6050:131;6176:4;6050:131;:::i;:::-;6042:139;;5940:248;;;:::o;6194:419::-;;6398:2;6387:9;6383:18;6375:26;;6447:9;6441:4;6437:20;6433:1;6422:9;6418:17;6411:47;6475:131;6601:4;6475:131;:::i;:::-;6467:139;;6365:248;;;:::o;6619:419::-;;6823:2;6812:9;6808:18;6800:26;;6872:9;6866:4;6862:20;6858:1;6847:9;6843:17;6836:47;6900:131;7026:4;6900:131;:::i;:::-;6892:139;;6790:248;;;:::o;7044:419::-;;7248:2;7237:9;7233:18;7225:26;;7297:9;7291:4;7287:20;7283:1;7272:9;7268:17;7261:47;7325:131;7451:4;7325:131;:::i;:::-;7317:139;;7215:248;;;:::o;7469:419::-;;7673:2;7662:9;7658:18;7650:26;;7722:9;7716:4;7712:20;7708:1;7697:9;7693:17;7686:47;7750:131;7876:4;7750:131;:::i;:::-;7742:139;;7640:248;;;:::o;7894:419::-;;8098:2;8087:9;8083:18;8075:26;;8147:9;8141:4;8137:20;8133:1;8122:9;8118:17;8111:47;8175:131;8301:4;8175:131;:::i;:::-;8167:139;;8065:248;;;:::o;8319:222::-;;8450:2;8439:9;8435:18;8427:26;;8463:71;8531:1;8520:9;8516:17;8507:6;8463:71;:::i;:::-;8417:124;;;;:::o;8547:214::-;;8674:2;8663:9;8659:18;8651:26;;8687:67;8751:1;8740:9;8736:17;8727:6;8687:67;:::i;:::-;8641:120;;;;:::o;8767:99::-;;8853:5;8847:12;8837:22;;8826:40;;;:::o;8872:169::-;;8990:6;8985:3;8978:19;9030:4;9025:3;9021:14;9006:29;;8968:73;;;;:::o;9047:305::-;;9106:20;9124:1;9106:20;:::i;:::-;9101:25;;9140:20;9158:1;9140:20;:::i;:::-;9135:25;;9294:1;9226:66;9222:74;9219:1;9216:81;9213:2;;;9300:18;;:::i;:::-;9213:2;9344:1;9341;9337:9;9330:16;;9091:261;;;;:::o;9358:96::-;;9424:24;9442:5;9424:24;:::i;:::-;9413:35;;9403:51;;;:::o;9460:90::-;;9537:5;9530:13;9523:21;9512:32;;9502:48;;;:::o;9556:126::-;;9633:42;9626:5;9622:54;9611:65;;9601:81;;;:::o;9688:77::-;;9754:5;9743:16;;9733:32;;;:::o;9771:86::-;;9846:4;9839:5;9835:16;9824:27;;9814:43;;;:::o;9863:307::-;9931:1;9941:113;9955:6;9952:1;9949:13;9941:113;;;10040:1;10035:3;10031:11;10025:18;10021:1;10016:3;10012:11;10005:39;9977:2;9974:1;9970:10;9965:15;;9941:113;;;10072:6;10069:1;10066:13;10063:2;;;10152:1;10143:6;10138:3;10134:16;10127:27;10063:2;9912:258;;;;:::o;10176:320::-;;10257:1;10251:4;10247:12;10237:22;;10304:1;10298:4;10294:12;10325:18;10315:2;;10381:4;10373:6;10369:17;10359:27;;10315:2;10443;10435:6;10432:14;10412:18;10409:38;10406:2;;;10462:18;;:::i;:::-;10406:2;10227:269;;;;:::o;10502:180::-;10550:77;10547:1;10540:88;10647:4;10644:1;10637:15;10671:4;10668:1;10661:15;10688:180;10736:77;10733:1;10726:88;10833:4;10830:1;10823:15;10857:4;10854:1;10847:15;10874:102;;10966:2;10962:7;10957:2;10950:5;10946:14;10942:28;10932:38;;10922:54;;;:::o;10982:122::-;11055:24;11073:5;11055:24;:::i;:::-;11048:5;11045:35;11035:2;;11094:1;11091;11084:12;11035:2;11025:79;:::o;11110:122::-;11183:24;11201:5;11183:24;:::i;:::-;11176:5;11173:35;11163:2;;11222:1;11219;11212:12;11163:2;11153:79;:::o

Swarm Source

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