ETH Price: $3,606.41 (+4.46%)
 

Overview

Max Total Supply

5,790,511.185997 YOU

Holders

198 (0.00%)

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

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

OVERVIEW

YouSwap is an All-Eco DEX project created by the blockchain geek team based in Singapore. It realizes multi-chain sharing of digital assets by constructing a multi-chain ecological deployment system.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TokenYou

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-03-15
*/

//SPDX-License-Identifier: SimPL-2.0
pragma solidity ^0.6.0;

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

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

contract Ownable {

    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == msg.sender, "YouSwap: 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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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), "YouSwap: NEW_OWNER_IS_THE_ZERO_ADDRESS");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface ITokenYou {
    /**
    * @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);

    event MaxSupplyChanged(uint256 oldValue, uint256 newValue);

    function resetMaxSupply(uint256 newValue) external;

    function mint(address recipient, uint256 amount) external;

    function burn(uint256 amount) external;

    function burnFrom(address account, uint256 amount) external;
}

contract TokenYou is Ownable, ITokenYou {
    using SafeMath for uint256;

    string private constant _name = 'YouSwap';
    string private constant _symbol = 'YOU';
    uint8 private constant _decimals = 6;
    uint256 private _totalSupply;
    uint256 private _transfers;
    uint256 private _holders;
    uint256 private _maxSupply;
    mapping(address => uint256) private _balanceOf;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => uint8) private _minters;

    constructor() public {
        _totalSupply = 0;
        _transfers = 0;
        _holders = 0;
        _maxSupply = 2 * 10 ** 14;
    }

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

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

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

    /**
   * @dev See {ITokenYou-maxSupply}.
   */
    function maxSupply() public view returns (uint256) {
        return _maxSupply;
    }

    function transfers() public view returns (uint256) {
        return _transfers;
    }

    function holders() public view returns (uint256) {
        return _holders;
    }

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

    /**
     * @dev See {ITokenYou-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(msg.sender, recipient, amount);
        return true;
    }

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

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

    /**
     * @dev See {ITokenYou-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 override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "YouSwap: 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 {ITokenYou-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][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 {ITokenYou-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 returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "YouSwap: 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 {
        require(sender != address(0), "YouSwap: TRANSFER_FROM_THE_ZERO_ADDRESS");
        require(recipient != address(0), "YouSwap: TRANSFER_TO_THE_ZERO_ADDRESS");
        require(amount > 0, "YouSwap: TRANSFER_ZERO_AMOUNT");

        if (_balanceOf[recipient] == 0) _holders++;

        _balanceOf[sender] = _balanceOf[sender].sub(amount, "YouSwap: TRANSFER_AMOUNT_EXCEEDS_BALANCE");
        _balanceOf[recipient] = _balanceOf[recipient].add(amount);

        _transfers ++;

        if (_balanceOf[sender] == 0) _holders--;

        emit Transfer(sender, recipient, 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 {
        require(account != address(0), "YouSwap: BURN_FROM_THE_ZERO_ADDRESS");
        require(_balanceOf[account] > 0, "YouSwap: INSUFFICIENT_FUNDS");

        _balanceOf[account] = _balanceOf[account].sub(amount, "YouSwap: BURN_AMOUNT_EXCEEDS_BALANCE");
        if (_balanceOf[account] == 0) _holders --;
        _totalSupply = _totalSupply.sub(amount);
        _transfers++;
        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 {
        require(owner != address(0), "YouSwap: APPROVE_FROM_THE_ZERO_ADDRESS");
        require(spender != address(0), "YouSwap: APPROVE_TO_THE_ZERO_ADDRESS");

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

    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {TokenYou-_burn}.
     */
    function burn(uint256 amount) external override {
        _burn(msg.sender, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {TokenYou-_burn} and {TokenYou-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) external override {
        uint256 decreasedAllowance = allowance(account, msg.sender).sub(amount, "YouSwap: BURN_AMOUNT_EXCEEDS_ALLOWANCE");

        _approve(account, msg.sender, decreasedAllowance);
        _burn(account, amount);
    }

    modifier isMinter() {
        require(_minters[msg.sender] == 1, "YouSwap: IS_NOT_A_MINTER");
        _;
    }

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {size := extcodesize(account)}
        return size > 0;
    }

    function mint(address recipient, uint256 amount) external override isMinter {
        require(_totalSupply.add(amount) <= _maxSupply, 'YouSwap: EXCEEDS_MAX_SUPPLY');
        _totalSupply = _totalSupply.add(amount);

        if (_balanceOf[recipient] == 0) _holders++;
        _balanceOf[recipient] = _balanceOf[recipient].add(amount);

        _transfers++;
        emit Transfer(address(0), recipient, amount);
    }

    function addMinter(address account) external onlyOwner {
        require(isContract(account), "YouSwap: MUST_BE_A_CONTRACT_ADDRESS");
        _minters[account] = 1;
    }

    function removeMinter(address account) external onlyOwner {
        _minters[account] = 0;
    }

    function resetMaxSupply(uint256 newValue) external override onlyOwner {
        require(newValue > _totalSupply && newValue < _maxSupply, 'YouSwap: NOT_ALLOWED');
        emit MaxSupplyChanged(_maxSupply, newValue);
        _maxSupply = newValue;
    }
}

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":false,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MaxSupplyChanged","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":"account","type":"address"}],"name":"addMinter","outputs":[],"stateMutability":"nonpayable","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":[{"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":"pure","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":[],"name":"holders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"resetMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"},{"inputs":[],"name":"transfers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360006001819055506000600281905550600060038190555065b5e620f48000600481905550612329806100e06000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806379cc6790116100c3578063a79331fb1161007c578063a79331fb1461064d578063a9059cbb1461067b578063ab5e28c5146106df578063d5abeb01146106fd578063dd62ed3e1461071b578063f2fde38b146107935761014d565b806379cc6790146104825780638188f71c146104d05780638da5cb5b146104ee57806395d89b4114610522578063983b2d56146105a5578063a457c2d7146105e95761014d565b8063313ce56711610115578063313ce5671461031f578063395093511461034057806340c10f19146103a457806342966c68146103f257806370a0823114610420578063715018a6146104785761014d565b806306fdde0314610152578063095ea7b3146101d557806318160ddd1461023957806323b872dd146102575780633092afd5146102db575b600080fd5b61015a6107d7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561019a57808201518184015260208101905061017f565b50505050905090810190601f1680156101c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610221600480360360408110156101eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610814565b60405180821515815260200191505060405180910390f35b61024161082b565b6040518082815260200191505060405180910390f35b6102c36004803603606081101561026d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610835565b60405180821515815260200191505060405180910390f35b61031d600480360360208110156102f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610900565b005b610327610a1d565b604051808260ff16815260200191505060405180910390f35b61038c6004803603604081101561035657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a26565b60405180821515815260200191505060405180910390f35b6103f0600480360360408110156103ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610acb565b005b61041e6004803603602081101561040857600080fd5b8101908080359060200190929190505050610da3565b005b6104626004803603602081101561043657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db0565b6040518082815260200191505060405180910390f35b610480610df9565b005b6104ce6004803603604081101561049857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f78565b005b6104d8610fcc565b6040518082815260200191505060405180910390f35b6104f6610fd6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61052a610fff565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561056a57808201518184015260208101905061054f565b50505050905090810190601f1680156105975780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105e7600480360360208110156105bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061103c565b005b610635600480360360408110156105ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111b7565b60405180821515815260200191505060405180910390f35b6106796004803603602081101561066357600080fd5b8101908080359060200190929190505050611276565b005b6106c76004803603604081101561069157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611406565b60405180821515815260200191505060405180910390f35b6106e761141d565b6040518082815260200191505060405180910390f35b610705611427565b6040518082815260200191505060405180910390f35b61077d6004803603604081101561073157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611431565b6040518082815260200191505060405180910390f35b6107d5600480360360208110156107a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114b8565b005b60606040518060400160405280600781526020017f596f755377617000000000000000000000000000000000000000000000000000815250905090565b60006108213384846116bc565b6001905092915050565b6000600154905090565b60006108428484846118b3565b6108f584336108f0856040518060600160405280602a8152602001612176602a9139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cac9092919063ffffffff16565b6116bc565b600190509392505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f596f75537761703a2043414c4c45525f49535f4e4f545f5448455f4f574e455281525060200191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555050565b60006006905090565b6000610ac13384610abc85600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6c90919063ffffffff16565b6116bc565b6001905092915050565b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614610b90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f596f75537761703a2049535f4e4f545f415f4d494e544552000000000000000081525060200191505060405180910390fd5b600454610ba882600154611d6c90919063ffffffff16565b1115610c1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f596f75537761703a20455843454544535f4d41585f535550504c59000000000081525060200191505060405180910390fd5b610c3181600154611d6c90919063ffffffff16565b6001819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610c92576003600081548092919060010191905055505b610ce481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6c90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600081548092919060010191905055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b610dad3382611df4565b50565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f596f75537761703a2043414c4c45525f49535f4e4f545f5448455f4f574e455281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610fb08260405180606001604052806026815260200161221160269139610fa18633611431565b611cac9092919063ffffffff16565b9050610fbd8333836116bc565b610fc78383611df4565b505050565b6000600354905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f594f550000000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f596f75537761703a2043414c4c45525f49535f4e4f545f5448455f4f574e455281525060200191505060405180910390fd5b611106816120d1565b61115b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806121ee6023913960400191505060405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555050565b600061126c33846112678560405180606001604052806027815260200161228360279139600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cac9092919063ffffffff16565b6116bc565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611337576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f596f75537761703a2043414c4c45525f49535f4e4f545f5448455f4f574e455281525060200191505060405180910390fd5b60015481118015611349575060045481105b6113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f596f75537761703a204e4f545f414c4c4f57454400000000000000000000000081525060200191505060405180910390fd5b7fa626f93317e2474b716846a09cf0e28aacb96052643b252fe97704208fecf9b560045482604051808381526020018281526020019250505060405180910390a18060048190555050565b60006114133384846118b3565b6001905092915050565b6000600254905090565b6000600454905090565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611579576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f596f75537761703a2043414c4c45525f49535f4e4f545f5448455f4f574e455281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121c86026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611742576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806122aa6026913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806122d06024913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061225c6027913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806122376025913960400191505060405180910390fd5b60008111611a35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f596f75537761703a205452414e534645525f5a45524f5f414d4f554e5400000081525060200191505060405180910390fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611a90576003600081548092919060010191905055505b611afc816040518060600160405280602881526020016121a060289139600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cac9092919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b9181600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6c90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600081548092919060010191905055506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611c4257600360008154809291906001900391905055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611d59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d1e578082015181840152602081019050611d03565b50505050905090810190601f168015611d4b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611dea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806121536023913960400191505060405180910390fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611f2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f596f75537761703a20494e53554646494349454e545f46554e4453000000000081525060200191505060405180910390fd5b611f9b8160405180606001604052806024815260200161212f60249139600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cac9092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561203a57600360008154809291906001900391905055505b61204f816001546120e490919063ffffffff16565b600181905550600260008154809291906001019190505550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080823b905060008111915050919050565b600061212683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cac565b90509291505056fe596f75537761703a204255524e5f414d4f554e545f455843454544535f42414c414e4345596f75537761703a204255524e5f46524f4d5f5448455f5a45524f5f41444452455353596f75537761703a205452414e534645525f414d4f554e545f455843454544535f414c4c4f57414e4345596f75537761703a205452414e534645525f414d4f554e545f455843454544535f42414c414e4345596f75537761703a204e45575f4f574e45525f49535f5448455f5a45524f5f41444452455353596f75537761703a204d5553545f42455f415f434f4e54524143545f41444452455353596f75537761703a204255524e5f414d4f554e545f455843454544535f414c4c4f57414e4345596f75537761703a205452414e534645525f544f5f5448455f5a45524f5f41444452455353596f75537761703a205452414e534645525f46524f4d5f5448455f5a45524f5f41444452455353596f75537761703a204445435245415345445f414c4c4f57414e43455f42454c4f575f5a45524f596f75537761703a20415050524f56455f46524f4d5f5448455f5a45524f5f41444452455353596f75537761703a20415050524f56455f544f5f5448455f5a45524f5f41444452455353a264697066735822122036809148cac1cc85cf63caebc4099c1bf7a08c4d8fd9e521e905a4684ff22fc064736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806379cc6790116100c3578063a79331fb1161007c578063a79331fb1461064d578063a9059cbb1461067b578063ab5e28c5146106df578063d5abeb01146106fd578063dd62ed3e1461071b578063f2fde38b146107935761014d565b806379cc6790146104825780638188f71c146104d05780638da5cb5b146104ee57806395d89b4114610522578063983b2d56146105a5578063a457c2d7146105e95761014d565b8063313ce56711610115578063313ce5671461031f578063395093511461034057806340c10f19146103a457806342966c68146103f257806370a0823114610420578063715018a6146104785761014d565b806306fdde0314610152578063095ea7b3146101d557806318160ddd1461023957806323b872dd146102575780633092afd5146102db575b600080fd5b61015a6107d7565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561019a57808201518184015260208101905061017f565b50505050905090810190601f1680156101c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610221600480360360408110156101eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610814565b60405180821515815260200191505060405180910390f35b61024161082b565b6040518082815260200191505060405180910390f35b6102c36004803603606081101561026d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610835565b60405180821515815260200191505060405180910390f35b61031d600480360360208110156102f157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610900565b005b610327610a1d565b604051808260ff16815260200191505060405180910390f35b61038c6004803603604081101561035657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a26565b60405180821515815260200191505060405180910390f35b6103f0600480360360408110156103ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610acb565b005b61041e6004803603602081101561040857600080fd5b8101908080359060200190929190505050610da3565b005b6104626004803603602081101561043657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db0565b6040518082815260200191505060405180910390f35b610480610df9565b005b6104ce6004803603604081101561049857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f78565b005b6104d8610fcc565b6040518082815260200191505060405180910390f35b6104f6610fd6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61052a610fff565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561056a57808201518184015260208101905061054f565b50505050905090810190601f1680156105975780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105e7600480360360208110156105bb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061103c565b005b610635600480360360408110156105ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111b7565b60405180821515815260200191505060405180910390f35b6106796004803603602081101561066357600080fd5b8101908080359060200190929190505050611276565b005b6106c76004803603604081101561069157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611406565b60405180821515815260200191505060405180910390f35b6106e761141d565b6040518082815260200191505060405180910390f35b610705611427565b6040518082815260200191505060405180910390f35b61077d6004803603604081101561073157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611431565b6040518082815260200191505060405180910390f35b6107d5600480360360208110156107a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114b8565b005b60606040518060400160405280600781526020017f596f755377617000000000000000000000000000000000000000000000000000815250905090565b60006108213384846116bc565b6001905092915050565b6000600154905090565b60006108428484846118b3565b6108f584336108f0856040518060600160405280602a8152602001612176602a9139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cac9092919063ffffffff16565b6116bc565b600190509392505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f596f75537761703a2043414c4c45525f49535f4e4f545f5448455f4f574e455281525060200191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555050565b60006006905090565b6000610ac13384610abc85600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6c90919063ffffffff16565b6116bc565b6001905092915050565b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614610b90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f596f75537761703a2049535f4e4f545f415f4d494e544552000000000000000081525060200191505060405180910390fd5b600454610ba882600154611d6c90919063ffffffff16565b1115610c1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f596f75537761703a20455843454544535f4d41585f535550504c59000000000081525060200191505060405180910390fd5b610c3181600154611d6c90919063ffffffff16565b6001819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610c92576003600081548092919060010191905055505b610ce481600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6c90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600081548092919060010191905055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b610dad3382611df4565b50565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f596f75537761703a2043414c4c45525f49535f4e4f545f5448455f4f574e455281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610fb08260405180606001604052806026815260200161221160269139610fa18633611431565b611cac9092919063ffffffff16565b9050610fbd8333836116bc565b610fc78383611df4565b505050565b6000600354905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f594f550000000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f596f75537761703a2043414c4c45525f49535f4e4f545f5448455f4f574e455281525060200191505060405180910390fd5b611106816120d1565b61115b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806121ee6023913960400191505060405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555050565b600061126c33846112678560405180606001604052806027815260200161228360279139600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cac9092919063ffffffff16565b6116bc565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611337576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f596f75537761703a2043414c4c45525f49535f4e4f545f5448455f4f574e455281525060200191505060405180910390fd5b60015481118015611349575060045481105b6113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f596f75537761703a204e4f545f414c4c4f57454400000000000000000000000081525060200191505060405180910390fd5b7fa626f93317e2474b716846a09cf0e28aacb96052643b252fe97704208fecf9b560045482604051808381526020018281526020019250505060405180910390a18060048190555050565b60006114133384846118b3565b6001905092915050565b6000600254905090565b6000600454905090565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611579576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f596f75537761703a2043414c4c45525f49535f4e4f545f5448455f4f574e455281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121c86026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611742576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806122aa6026913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806122d06024913960400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061225c6027913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806122376025913960400191505060405180910390fd5b60008111611a35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f596f75537761703a205452414e534645525f5a45524f5f414d4f554e5400000081525060200191505060405180910390fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611a90576003600081548092919060010191905055505b611afc816040518060600160405280602881526020016121a060289139600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cac9092919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b9181600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6c90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600081548092919060010191905055506000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611c4257600360008154809291906001900391905055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611d59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d1e578082015181840152602081019050611d03565b50505050905090810190601f168015611d4b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611dea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806121536023913960400191505060405180910390fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611f2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f596f75537761703a20494e53554646494349454e545f46554e4453000000000081525060200191505060405180910390fd5b611f9b8160405180606001604052806024815260200161212f60249139600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cac9092919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561203a57600360008154809291906001900391905055505b61204f816001546120e490919063ffffffff16565b600181905550600260008154809291906001019190505550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600080823b905060008111915050919050565b600061212683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cac565b90509291505056fe596f75537761703a204255524e5f414d4f554e545f455843454544535f42414c414e4345596f75537761703a204255524e5f46524f4d5f5448455f5a45524f5f41444452455353596f75537761703a205452414e534645525f414d4f554e545f455843454544535f414c4c4f57414e4345596f75537761703a205452414e534645525f414d4f554e545f455843454544535f42414c414e4345596f75537761703a204e45575f4f574e45525f49535f5448455f5a45524f5f41444452455353596f75537761703a204d5553545f42455f415f434f4e54524143545f41444452455353596f75537761703a204255524e5f414d4f554e545f455843454544535f414c4c4f57414e4345596f75537761703a205452414e534645525f544f5f5448455f5a45524f5f41444452455353596f75537761703a205452414e534645525f46524f4d5f5448455f5a45524f5f41444452455353596f75537761703a204445435245415345445f414c4c4f57414e43455f42454c4f575f5a45524f596f75537761703a20415050524f56455f46524f4d5f5448455f5a45524f5f41444452455353596f75537761703a20415050524f56455f544f5f5448455f5a45524f5f41444452455353a264697066735822122036809148cac1cc85cf63caebc4099c1bf7a08c4d8fd9e521e905a4684ff22fc064736f6c634300060c0033

Deployed Bytecode Sourcemap

9380:10448:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10123:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12584:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11207:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13228:311;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19463:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11056:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13951:206;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18848:426;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17826:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11708:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5879:148;;;:::i;:::-;;18243:296;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11559:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5239:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10325:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19282:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14663:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19569:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12044:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11464:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11369;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12283:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6182:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10123:83;10160:13;10193:5;;;;;;;;;;;;;;;;;10186:12;;10123:83;:::o;12584:159::-;12659:4;12676:37;12685:10;12697:7;12706:6;12676:8;:37::i;:::-;12731:4;12724:11;;12584:159;;;;:::o;11207:100::-;11260:7;11287:12;;11280:19;;11207:100;:::o;13228:311::-;13326:4;13343:36;13353:6;13361:9;13372:6;13343:9;:36::i;:::-;13390:119;13399:6;13407:10;13419:89;13455:6;13419:89;;;;;;;;;;;;;;;;;:11;:19;13431:6;13419:19;;;;;;;;;;;;;;;:31;13439:10;13419:31;;;;;;;;;;;;;;;;:35;;:89;;;;;:::i;:::-;13390:8;:119::i;:::-;13527:4;13520:11;;13228:311;;;;;:::o;19463:98::-;5461:10;5451:20;;:6;;;;;;;;;;:20;;;5443:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19552:1:::1;19532:8;:17;19541:7;19532:17;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;19463:98:::0;:::o;11056:83::-;11097:5;9591:1;11115:16;;11056:83;:::o;13951:206::-;14031:4;14048:79;14057:10;14069:7;14078:48;14115:10;14078:11;:23;14090:10;14078:23;;;;;;;;;;;;;;;:32;14102:7;14078:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;14048:8;:79::i;:::-;14145:4;14138:11;;13951:206;;;;:::o;18848:426::-;18610:1;18586:8;:20;18595:10;18586:20;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;18578:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18971:10:::1;;18943:24;18960:6;18943:12;;:16;;:24;;;;:::i;:::-;:38;;18935:78;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19039:24;19056:6;19039:12;;:16;;:24;;;;:::i;:::-;19024:12;:39;;;;19105:1;19080:10;:21;19091:9;19080:21;;;;;;;;;;;;;;;;:26;19076:42;;;19108:8;;:10;;;;;;;;;;;;;19076:42;19153:33;19179:6;19153:10;:21;19164:9;19153:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;19129:10;:21;19140:9;19129:21;;;;;;;;;;;;;;;:57;;;;19199:10;;:12;;;;;;;;;;;;;19248:9;19227:39;;19244:1;19227:39;;;19259:6;19227:39;;;;;;;;;;;;;;;;;;18848:426:::0;;:::o;17826:92::-;17885:25;17891:10;17903:6;17885:5;:25::i;:::-;17826:92;:::o;11708:120::-;11774:7;11801:10;:19;11812:7;11801:19;;;;;;;;;;;;;;;;11794:26;;11708:120;;;:::o;5879:148::-;5461:10;5451:20;;:6;;;;;;;;;;:20;;;5443:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5986:1:::1;5949:40;;5970:6;::::0;::::1;;;;;;;;5949:40;;;;;;;;;;;;6017:1;6000:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;5879:148::o:0;18243:296::-;18323:26;18352:84;18387:6;18352:84;;;;;;;;;;;;;;;;;:30;18362:7;18371:10;18352:9;:30::i;:::-;:34;;:84;;;;;:::i;:::-;18323:113;;18449:49;18458:7;18467:10;18479:18;18449:8;:49::i;:::-;18509:22;18515:7;18524:6;18509:5;:22::i;:::-;18243:296;;;:::o;11559:83::-;11599:7;11626:8;;11619:15;;11559:83;:::o;5239:79::-;5277:7;5304:6;;;;;;;;;;;5297:13;;5239:79;:::o;10325:87::-;10364:13;10397:7;;;;;;;;;;;;;;;;;10390:14;;10325:87;:::o;19282:173::-;5461:10;5451:20;;:6;;;;;;;;;;:20;;;5443:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19356:19:::1;19367:7;19356:10;:19::i;:::-;19348:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19446:1;19426:8;:17;19435:7;19426:17;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;19282:173:::0;:::o;14663:259::-;14748:4;14765:127;14774:10;14786:7;14795:96;14832:15;14795:96;;;;;;;;;;;;;;;;;:11;:23;14807:10;14795:23;;;;;;;;;;;;;;;:32;14819:7;14795:32;;;;;;;;;;;;;;;;:36;;:96;;;;;:::i;:::-;14765:8;:127::i;:::-;14910:4;14903:11;;14663:259;;;;:::o;19569:256::-;5461:10;5451:20;;:6;;;;;;;;;;:20;;;5443:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19669:12:::1;;19658:8;:23;:48;;;;;19696:10;;19685:8;:21;19658:48;19650:81;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;19747:38;19764:10;;19776:8;19747:38;;;;;;;;;;;;;;;;;;;;;;;;19809:8;19796:10;:21;;;;19569:256:::0;:::o;12044:173::-;12130:4;12147:40;12157:10;12169:9;12180:6;12147:9;:40::i;:::-;12205:4;12198:11;;12044:173;;;;:::o;11464:87::-;11506:7;11533:10;;11526:17;;11464:87;:::o;11369:::-;11411:7;11438:10;;11431:17;;11369:87;:::o;12283:151::-;12372:7;12399:11;:18;12411:5;12399:18;;;;;;;;;;;;;;;:27;12418:7;12399:27;;;;;;;;;;;;;;;;12392:34;;12283:151;;;;:::o;6182:244::-;5461:10;5451:20;;:6;;;;;;;;;;:20;;;5443:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6291:1:::1;6271:22;;:8;:22;;;;6263:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6381:8;6352:38;;6373:6;::::0;::::1;;;;;;;;6352:38;;;;;;;;;;;;6410:8;6401:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6182:244:::0;:::o;17365:342::-;17476:1;17459:19;;:5;:19;;;;17451:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17559:1;17540:21;;:7;:21;;;;17532:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17645:6;17615:11;:18;17627:5;17615:18;;;;;;;;;;;;;;;:27;17634:7;17615:27;;;;;;;;;;;;;;;:36;;;;17683:7;17667:32;;17676:5;17667:32;;;17692:6;17667:32;;;;;;;;;;;;;;;;;;17365:342;;;:::o;15412:679::-;15528:1;15510:20;;:6;:20;;;;15502:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15614:1;15593:23;;:9;:23;;;;15585:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15686:1;15677:6;:10;15669:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15763:1;15738:10;:21;15749:9;15738:21;;;;;;;;;;;;;;;;:26;15734:42;;;15766:8;;:10;;;;;;;;;;;;;15734:42;15810:74;15833:6;15810:74;;;;;;;;;;;;;;;;;:10;:18;15821:6;15810:18;;;;;;;;;;;;;;;;:22;;:74;;;;;:::i;:::-;15789:10;:18;15800:6;15789:18;;;;;;;;;;;;;;;:95;;;;15919:33;15945:6;15919:10;:21;15930:9;15919:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;15895:10;:21;15906:9;15895:21;;;;;;;;;;;;;;;:57;;;;15965:10;;:13;;;;;;;;;;;;;16017:1;15995:10;:18;16006:6;15995:18;;;;;;;;;;;;;;;;:23;15991:39;;;16020:8;;:10;;;;;;;;;;;;;;15991:39;16065:9;16048:35;;16057:6;16048:35;;;16076:6;16048:35;;;;;;;;;;;;;;;;;;15412:679;;;:::o;1231:192::-;1317:7;1350:1;1345;:6;;1353:12;1337:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1377:9;1393:1;1389;:5;1377:17;;1414:1;1407:8;;;1231:192;;;;;:::o;328:181::-;386:7;406:9;422:1;418;:5;406:17;;447:1;442;:6;;434:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:1;493:8;;;328:181;;;;:::o;16424:503::-;16519:1;16500:21;;:7;:21;;;;16492:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16602:1;16580:10;:19;16591:7;16580:19;;;;;;;;;;;;;;;;:23;16572:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16670:71;16694:6;16670:71;;;;;;;;;;;;;;;;;:10;:19;16681:7;16670:19;;;;;;;;;;;;;;;;:23;;:71;;;;;:::i;:::-;16648:10;:19;16659:7;16648:19;;;;;;;;;;;;;;;:93;;;;16779:1;16756:10;:19;16767:7;16756:19;;;;;;;;;;;;;;;;:24;16752:41;;;16782:8;;:11;;;;;;;;;;;;;;16752:41;16819:24;16836:6;16819:12;;:16;;:24;;;;:::i;:::-;16804:12;:39;;;;16854:10;;:12;;;;;;;;;;;;;16908:1;16882:37;;16891:7;16882:37;;;16912:6;16882:37;;;;;;;;;;;;;;;;;;16424:503;;:::o;18668:172::-;18728:4;18745:12;18798:7;18786:20;18778:28;;18831:1;18824:4;:8;18817:15;;;18668:172;;;:::o;792:136::-;850:7;877:43;881:1;884;877:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;870:50;;792:136;;;;:::o

Swarm Source

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