ETH Price: $3,465.57 (+1.38%)

Token

G33K.Finance (G33K)
 

Overview

Max Total Supply

9,000 G33K

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
feelsrare.eth
Balance
0 G33K

Value
$0.00
0x28b37d7f235fe68cf073beb87e78978bc38eecba
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:
G33K

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 2020-12-18
*/

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

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

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 = 5000*10**18;           //---------| Tokens for Presale |---------
    uint256 public basePrice = 100*10**18;      //-----| 1 ETH = 100 Tokens |---------
    uint256 public tokensSold = 0;
    uint256 public tokenReserve = 9000*10**18; //-----------| 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 > 0 && msg.value <= 1e18, "You cannot send 0 Ether or more than 1 Ether");
        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)] <= 50e18, "Target amount of 50 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);
        }

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

        
        emit Transfer(address(this), _msgSender(), tokens);

        _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 G33K is CrowdsaleToken {
    string public name = "G33K.Finance";
    string public symbol = "G33K";
    uint32 public decimals = 18;
}

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":"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":"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"}]

608060405242600455600060055569010f0cf064dd5920000060085568056bc75e2d631000006009556000600a556901e7e4171bf4d3a00000600b556000600c556040518060400160405280600c81526020017f4733334b2e46696e616e63650000000000000000000000000000000000000000815250600e90805190602001906200008d92919062000407565b506040518060400160405280600481526020017f4733334b00000000000000000000000000000000000000000000000000000000815250600f9080519060200190620000db92919062000407565b506012601060006101000a81548163ffffffff021916908363ffffffff1602179055503480156200010b57600080fd5b5033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600d60006101000a81548160ff02191690836002811115620001ea57fe5b021790555062000259600b54600160006200020a6200035460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200037e60201b6200154c1790919060201c565b600160006200026d6200035460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002c9600b546000546200037e60201b6200154c1790919060201c565b600081905550600854600c81905550620002e86200035460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040518082815260200191505060405180910390a3620004bd565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828401905083811015620003fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200043f57600085556200048b565b82601f106200045a57805160ff19168380011785556200048b565b828001600101855582156200048b579182015b828111156200048a5782518255916020019190600101906200046d565b5b5090506200049a91906200049e565b5090565b5b80821115620004b95760008160009055506001016200049f565b5090565b612ccc80620004cd6000396000f3fe6080604052600436106101d15760003560e01c806378e97925116100f7578063bf58390311610095578063dcd9d7b111610064578063dcd9d7b11461126c578063dd62ed3e14611283578063ee39190e14611308578063f2fde38b146113cd57610a5b565b8063bf5839031461119a578063c7876ea4146111c5578063cbcb3171146111f0578063d89f17ef1461121b57610a5b565b80638f32d59b116100d15780638f32d59b14610ffb57806395d89b4114611028578063a457c2d7146110b8578063a9059cbb1461112957610a5b565b806378e9792514610f645780638a1fcd6014610f8f5780638da5cb5b14610fba57610a5b565b8063395093511161016f5780634e8ee2e51161013e5780634e8ee2e514610ea6578063518ab2a814610ebd57806370a0823114610ee8578063715018a614610f4d57610a5b565b80633950935114610d3e5780633af32abf14610daf5780633c4badb014610e165780633eaaf86b14610e7b57610a5b565b806318160ddd116101ab57806318160ddd14610c2657806323b872dd14610c51578063313ce56714610ce2578063355274ea14610d1357610a5b565b806306fdde0314610a60578063095ea7b314610af0578063128c127e14610b6157610a5b565b36610a5b57600115156101ea6101e561141e565b611426565b15151461025f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f546869732061646472657373206973206e6f742077686974656c69737465640081525060200191505060405180910390fd5b6001600281111561026c57fe5b600d60009054906101000a900460ff16600281111561028757fe5b146102dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b6e6025913960400191505060405180910390fd5b6000341180156102f55750670de0b6b3a76400003411155b61034a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c46602c913960400191505060405180910390fd5b6000600c54116103c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f50726573616c6520746f6b656e206c696d69742072656163686564000000000081525060200191505060405180910390fd5b600034905060006103f8670de0b6b3a76400006103ea6009548561147c90919063ffffffff16565b61150290919063ffffffff16565b90506000610455836002600061040c61141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461154c90919063ffffffff16565b6002600061046161141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506104f183600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461154c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550670de0b6b3a76400006002600061054961141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156105f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616e6e6f742073656e64206d6f7265207468616e203120455448000000000081525060200191505060405180910390fd5b6802b5e3af16b1880000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156106b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f54617267657420616d6f756e74206f662035302045544820726561636865640081525060200191505060405180910390fd5b6008546106ce83600a5461154c90919063ffffffff16565b1115610725576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b4d6021913960400191505060405180910390fd5b61073a82600a5461154c90919063ffffffff16565b600a81905550610757600a546008546115d490919063ffffffff16565b600c8190555060008111156108215761076e61141e565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156107b3573d6000803e3d6000fd5b506107bc61141e565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b61089482604051806060016040528060268152602001612b27602691396001600061084a61161e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116489092919063ffffffff16565b600160006108a061161e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061093782600160006108ee61141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461154c90919063ffffffff16565b6001600061094361141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061098961141e565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015610a55573d6000803e3d6000fd5b50505050005b600080fd5b348015610a6c57600080fd5b50610a75611708565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ab5578082015181840152602081019050610a9a565b50505050905090810190601f168015610ae25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610afc57600080fd5b50610b4960048036036040811015610b1357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117a6565b60405180821515815260200191505060405180910390f35b348015610b6d57600080fd5b50610c2460048036036020811015610b8457600080fd5b8101908080359060200190640100000000811115610ba157600080fd5b820183602082011115610bb357600080fd5b80359060200191846020830284011164010000000083111715610bd557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506117c4565b005b348015610c3257600080fd5b50610c3b6118af565b6040518082815260200191505060405180910390f35b348015610c5d57600080fd5b50610cca60048036036060811015610c7457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506118b8565b60405180821515815260200191505060405180910390f35b348015610cee57600080fd5b50610cf7611991565b604051808263ffffffff16815260200191505060405180910390f35b348015610d1f57600080fd5b50610d286119a7565b6040518082815260200191505060405180910390f35b348015610d4a57600080fd5b50610d9760048036036040811015610d6157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119ad565b60405180821515815260200191505060405180910390f35b348015610dbb57600080fd5b50610dfe60048036036020811015610dd257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611426565b60405180821515815260200191505060405180910390f35b348015610e2257600080fd5b50610e6560048036036020811015610e3957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a60565b6040518082815260200191505060405180910390f35b348015610e8757600080fd5b50610e90611aa9565b6040518082815260200191505060405180910390f35b348015610eb257600080fd5b50610ebb611aaf565b005b348015610ec957600080fd5b50610ed2611bcd565b6040518082815260200191505060405180910390f35b348015610ef457600080fd5b50610f3760048036036020811015610f0b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bd3565b6040518082815260200191505060405180910390f35b348015610f5957600080fd5b50610f62611c1c565b005b348015610f7057600080fd5b50610f79611d3a565b6040518082815260200191505060405180910390f35b348015610f9b57600080fd5b50610fa4611d40565b6040518082815260200191505060405180910390f35b348015610fc657600080fd5b50610fcf61161e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561100757600080fd5b50611010611d46565b60405180821515815260200191505060405180910390f35b34801561103457600080fd5b5061103d611d9e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561107d578082015181840152602081019050611062565b50505050905090810190601f1680156110aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156110c457600080fd5b50611111600480360360408110156110db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e3c565b60405180821515815260200191505060405180910390f35b34801561113557600080fd5b506111826004803603604081101561114c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f09565b60405180821515815260200191505060405180910390f35b3480156111a657600080fd5b506111af611f27565b6040518082815260200191505060405180910390f35b3480156111d157600080fd5b506111da611f2d565b6040518082815260200191505060405180910390f35b3480156111fc57600080fd5b50611205611f33565b6040518082815260200191505060405180910390f35b34801561122757600080fd5b5061126a6004803603602081101561123e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f39565b005b34801561127857600080fd5b50611281612034565b005b34801561128f57600080fd5b506112f2600480360360408110156112a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612136565b6040518082815260200191505060405180910390f35b34801561131457600080fd5b506113cb6004803603602081101561132b57600080fd5b810190808035906020019064010000000081111561134857600080fd5b82018360208201111561135a57600080fd5b8035906020019184602083028401116401000000008311171561137c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506121bd565b005b3480156113d957600080fd5b5061141c600480360360208110156113f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122a8565b005b600033905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008083141561148f57600090506114fc565b60008284029050828482816114a057fe5b04146114f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b936021913960400191505060405180910390fd5b809150505b92915050565b600061154483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612311565b905092915050565b6000808284019050838110156115ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061161683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611648565b905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008383111582906116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156116ba57808201518184015260208101905061169f565b50505050905090810190601f1680156116e75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600e8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561179e5780601f106117735761010080835404028352916020019161179e565b820191906000526020600020905b81548152906001019060200180831161178157829003601f168201915b505050505081565b60006117ba6117b361141e565b84846123d7565b6001905092915050565b6117cc611d46565b611821576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612c016021913960400191505060405180910390fd5b60005b81518160ff1610156118ab57600060076000848460ff168151811061184557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611824565b5050565b60008054905090565b60006118c58484846125ce565b611986846118d161141e565b61198185604051806060016040528060288152602001612bb460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061193761141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116489092919063ffffffff16565b6123d7565b600190509392505050565b601060009054906101000a900463ffffffff1681565b60085481565b6000611a566119ba61141e565b84611a5185600360006119cb61141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461154c90919063ffffffff16565b6123d7565b6001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60005481565b611ab7611d46565b611b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612c016021913960400191505060405180910390fd5b600280811115611b1857fe5b600d60009054906101000a900460ff166002811115611b3357fe5b1415611ba7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686520636f696e206f66666572696e672068617320656e646564000000000081525060200191505060405180910390fd5b6001600d60006101000a81548160ff02191690836002811115611bc657fe5b0217905550565b600a5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611c24611d46565b611c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612c016021913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60045481565b60055481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600f8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e345780601f10611e0957610100808354040283529160200191611e34565b820191906000526020600020905b815481529060010190602001808311611e1757829003601f168201915b505050505081565b6000611eff611e4961141e565b84611efa85604051806060016040528060258152602001612c726025913960036000611e7361141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116489092919063ffffffff16565b6123d7565b6001905092915050565b6000611f1d611f1661141e565b84846125ce565b6001905092915050565b600c5481565b60095481565b600b5481565b611f41611d46565b611f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612c016021913960400191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df75760405160405180910390a250565b61203c611d46565b612091576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612c016021913960400191505060405180910390fd5b60028081111561209d57fe5b600d60009054906101000a900460ff1660028111156120b857fe5b141561212c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686520636f696e206f66666572696e672068617320656e646564000000000081525060200191505060405180910390fd5b612134612958565b565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6121c5611d46565b61221a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612c016021913960400191505060405180910390fd5b60005b81518160ff1610156122a457600160076000848460ff168151811061223e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505061221d565b5050565b6122b0611d46565b612305576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612c016021913960400191505060405180910390fd5b61230e816129e7565b50565b600080831182906123bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612382578082015181840152602081019050612367565b50505050905090810190601f1680156123af5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816123c957fe5b049050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561245d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612c226024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612b056022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612654576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612bdc6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612ae26023913960400191505060405180910390fd5b6126f160055460045461154c90919063ffffffff16565b42101580612738575061270261161e565b73ffffffffffffffffffffffffffffffffffffffff1661272061141e565b73ffffffffffffffffffffffffffffffffffffffff16145b6127aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f546f6b656e73206e6f7420756e6c6f636b65642079657400000000000000000081525060200191505060405180910390fd5b61281681604051806060016040528060268152602001612b2760269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116489092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128ab81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461154c90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6002600d60006101000a81548160ff0219169083600281111561297757fe5b0217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156129e4573d6000803e3d6000fd5b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a2157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365457863656564696e67206c696d6974206f662070726573616c6520746f6b656e7354686520636f696e206f66666572696e6720686173206e6f74207374617274656420796574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734e6f7420617574686f726973656420666f722074686973206f7065726174696f6e45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373596f752063616e6e6f742073656e642030204574686572206f72206d6f7265207468616e203120457468657245524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122035a52998427b5e1441faf1636f5bedc8f243cd7b1f1b9c5a79cdbc201b1f58c064736f6c63430007040033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c806378e97925116100f7578063bf58390311610095578063dcd9d7b111610064578063dcd9d7b11461126c578063dd62ed3e14611283578063ee39190e14611308578063f2fde38b146113cd57610a5b565b8063bf5839031461119a578063c7876ea4146111c5578063cbcb3171146111f0578063d89f17ef1461121b57610a5b565b80638f32d59b116100d15780638f32d59b14610ffb57806395d89b4114611028578063a457c2d7146110b8578063a9059cbb1461112957610a5b565b806378e9792514610f645780638a1fcd6014610f8f5780638da5cb5b14610fba57610a5b565b8063395093511161016f5780634e8ee2e51161013e5780634e8ee2e514610ea6578063518ab2a814610ebd57806370a0823114610ee8578063715018a614610f4d57610a5b565b80633950935114610d3e5780633af32abf14610daf5780633c4badb014610e165780633eaaf86b14610e7b57610a5b565b806318160ddd116101ab57806318160ddd14610c2657806323b872dd14610c51578063313ce56714610ce2578063355274ea14610d1357610a5b565b806306fdde0314610a60578063095ea7b314610af0578063128c127e14610b6157610a5b565b36610a5b57600115156101ea6101e561141e565b611426565b15151461025f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f546869732061646472657373206973206e6f742077686974656c69737465640081525060200191505060405180910390fd5b6001600281111561026c57fe5b600d60009054906101000a900460ff16600281111561028757fe5b146102dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b6e6025913960400191505060405180910390fd5b6000341180156102f55750670de0b6b3a76400003411155b61034a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180612c46602c913960400191505060405180910390fd5b6000600c54116103c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f50726573616c6520746f6b656e206c696d69742072656163686564000000000081525060200191505060405180910390fd5b600034905060006103f8670de0b6b3a76400006103ea6009548561147c90919063ffffffff16565b61150290919063ffffffff16565b90506000610455836002600061040c61141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461154c90919063ffffffff16565b6002600061046161141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506104f183600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461154c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550670de0b6b3a76400006002600061054961141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156105f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43616e6e6f742073656e64206d6f7265207468616e203120455448000000000081525060200191505060405180910390fd5b6802b5e3af16b1880000600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156106b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f54617267657420616d6f756e74206f662035302045544820726561636865640081525060200191505060405180910390fd5b6008546106ce83600a5461154c90919063ffffffff16565b1115610725576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b4d6021913960400191505060405180910390fd5b61073a82600a5461154c90919063ffffffff16565b600a81905550610757600a546008546115d490919063ffffffff16565b600c8190555060008111156108215761076e61141e565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156107b3573d6000803e3d6000fd5b506107bc61141e565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b61089482604051806060016040528060268152602001612b27602691396001600061084a61161e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116489092919063ffffffff16565b600160006108a061161e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061093782600160006108ee61141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461154c90919063ffffffff16565b6001600061094361141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061098961141e565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015610a55573d6000803e3d6000fd5b50505050005b600080fd5b348015610a6c57600080fd5b50610a75611708565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ab5578082015181840152602081019050610a9a565b50505050905090810190601f168015610ae25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610afc57600080fd5b50610b4960048036036040811015610b1357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117a6565b60405180821515815260200191505060405180910390f35b348015610b6d57600080fd5b50610c2460048036036020811015610b8457600080fd5b8101908080359060200190640100000000811115610ba157600080fd5b820183602082011115610bb357600080fd5b80359060200191846020830284011164010000000083111715610bd557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506117c4565b005b348015610c3257600080fd5b50610c3b6118af565b6040518082815260200191505060405180910390f35b348015610c5d57600080fd5b50610cca60048036036060811015610c7457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506118b8565b60405180821515815260200191505060405180910390f35b348015610cee57600080fd5b50610cf7611991565b604051808263ffffffff16815260200191505060405180910390f35b348015610d1f57600080fd5b50610d286119a7565b6040518082815260200191505060405180910390f35b348015610d4a57600080fd5b50610d9760048036036040811015610d6157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119ad565b60405180821515815260200191505060405180910390f35b348015610dbb57600080fd5b50610dfe60048036036020811015610dd257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611426565b60405180821515815260200191505060405180910390f35b348015610e2257600080fd5b50610e6560048036036020811015610e3957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a60565b6040518082815260200191505060405180910390f35b348015610e8757600080fd5b50610e90611aa9565b6040518082815260200191505060405180910390f35b348015610eb257600080fd5b50610ebb611aaf565b005b348015610ec957600080fd5b50610ed2611bcd565b6040518082815260200191505060405180910390f35b348015610ef457600080fd5b50610f3760048036036020811015610f0b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bd3565b6040518082815260200191505060405180910390f35b348015610f5957600080fd5b50610f62611c1c565b005b348015610f7057600080fd5b50610f79611d3a565b6040518082815260200191505060405180910390f35b348015610f9b57600080fd5b50610fa4611d40565b6040518082815260200191505060405180910390f35b348015610fc657600080fd5b50610fcf61161e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561100757600080fd5b50611010611d46565b60405180821515815260200191505060405180910390f35b34801561103457600080fd5b5061103d611d9e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561107d578082015181840152602081019050611062565b50505050905090810190601f1680156110aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156110c457600080fd5b50611111600480360360408110156110db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e3c565b60405180821515815260200191505060405180910390f35b34801561113557600080fd5b506111826004803603604081101561114c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f09565b60405180821515815260200191505060405180910390f35b3480156111a657600080fd5b506111af611f27565b6040518082815260200191505060405180910390f35b3480156111d157600080fd5b506111da611f2d565b6040518082815260200191505060405180910390f35b3480156111fc57600080fd5b50611205611f33565b6040518082815260200191505060405180910390f35b34801561122757600080fd5b5061126a6004803603602081101561123e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f39565b005b34801561127857600080fd5b50611281612034565b005b34801561128f57600080fd5b506112f2600480360360408110156112a657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612136565b6040518082815260200191505060405180910390f35b34801561131457600080fd5b506113cb6004803603602081101561132b57600080fd5b810190808035906020019064010000000081111561134857600080fd5b82018360208201111561135a57600080fd5b8035906020019184602083028401116401000000008311171561137c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506121bd565b005b3480156113d957600080fd5b5061141c600480360360208110156113f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122a8565b005b600033905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008083141561148f57600090506114fc565b60008284029050828482816114a057fe5b04146114f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b936021913960400191505060405180910390fd5b809150505b92915050565b600061154483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612311565b905092915050565b6000808284019050838110156115ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061161683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611648565b905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008383111582906116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156116ba57808201518184015260208101905061169f565b50505050905090810190601f1680156116e75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600e8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561179e5780601f106117735761010080835404028352916020019161179e565b820191906000526020600020905b81548152906001019060200180831161178157829003601f168201915b505050505081565b60006117ba6117b361141e565b84846123d7565b6001905092915050565b6117cc611d46565b611821576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612c016021913960400191505060405180910390fd5b60005b81518160ff1610156118ab57600060076000848460ff168151811061184557fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611824565b5050565b60008054905090565b60006118c58484846125ce565b611986846118d161141e565b61198185604051806060016040528060288152602001612bb460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061193761141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116489092919063ffffffff16565b6123d7565b600190509392505050565b601060009054906101000a900463ffffffff1681565b60085481565b6000611a566119ba61141e565b84611a5185600360006119cb61141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461154c90919063ffffffff16565b6123d7565b6001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60005481565b611ab7611d46565b611b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612c016021913960400191505060405180910390fd5b600280811115611b1857fe5b600d60009054906101000a900460ff166002811115611b3357fe5b1415611ba7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686520636f696e206f66666572696e672068617320656e646564000000000081525060200191505060405180910390fd5b6001600d60006101000a81548160ff02191690836002811115611bc657fe5b0217905550565b600a5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611c24611d46565b611c79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612c016021913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60045481565b60055481565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600f8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611e345780601f10611e0957610100808354040283529160200191611e34565b820191906000526020600020905b815481529060010190602001808311611e1757829003601f168201915b505050505081565b6000611eff611e4961141e565b84611efa85604051806060016040528060258152602001612c726025913960036000611e7361141e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116489092919063ffffffff16565b6123d7565b6001905092915050565b6000611f1d611f1661141e565b84846125ce565b6001905092915050565b600c5481565b60095481565b600b5481565b611f41611d46565b611f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612c016021913960400191505060405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df75760405160405180910390a250565b61203c611d46565b612091576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612c016021913960400191505060405180910390fd5b60028081111561209d57fe5b600d60009054906101000a900460ff1660028111156120b857fe5b141561212c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686520636f696e206f66666572696e672068617320656e646564000000000081525060200191505060405180910390fd5b612134612958565b565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6121c5611d46565b61221a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612c016021913960400191505060405180910390fd5b60005b81518160ff1610156122a457600160076000848460ff168151811061223e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505061221d565b5050565b6122b0611d46565b612305576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612c016021913960400191505060405180910390fd5b61230e816129e7565b50565b600080831182906123bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612382578082015181840152602081019050612367565b50505050905090810190601f1680156123af5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816123c957fe5b049050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561245d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612c226024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612b056022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612654576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612bdc6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612ae26023913960400191505060405180910390fd5b6126f160055460045461154c90919063ffffffff16565b42101580612738575061270261161e565b73ffffffffffffffffffffffffffffffffffffffff1661272061141e565b73ffffffffffffffffffffffffffffffffffffffff16145b6127aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f546f6b656e73206e6f7420756e6c6f636b65642079657400000000000000000081525060200191505060405180910390fd5b61281681604051806060016040528060268152602001612b2760269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116489092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128ab81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461154c90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6002600d60006101000a81548160ff0219169083600281111561297757fe5b0217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156129e4573d6000803e3d6000fd5b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a2157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365457863656564696e67206c696d6974206f662070726573616c6520746f6b656e7354686520636f696e206f66666572696e6720686173206e6f74207374617274656420796574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734e6f7420617574686f726973656420666f722074686973206f7065726174696f6e45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373596f752063616e6e6f742073656e642030204574686572206f72206d6f7265207468616e203120457468657245524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122035a52998427b5e1441faf1636f5bedc8f243cd7b1f1b9c5a79cdbc201b1f58c064736f6c63430007040033

Deployed Bytecode Sourcemap

16317:148:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14319:4;14288:35;;:27;14302:12;:10;:12::i;:::-;14288:13;:27::i;:::-;:35;;;14280:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14395:12;14379:28;;;;;;;;:12;;;;;;;;;;;:28;;;;;;;;;14371:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14480:1;14468:9;:13;:34;;;;;14498:4;14485:9;:17;;14468:34;14460:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14588:1;14570:15;;:19;14562:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14641:17;14661:9;14641:29;;14681:14;14698:37;14727:7;14698:24;14712:9;;14698;:13;;:24;;;;:::i;:::-;:28;;:37;;;;:::i;:::-;14681:54;;14746:17;14816:40;14846:9;14816:11;:25;14828:12;:10;:12::i;:::-;14816:25;;;;;;;;;;;;;;;;:29;;:40;;;;:::i;:::-;14788:11;:25;14800:12;:10;:12::i;:::-;14788:25;;;;;;;;;;;;;;;:68;;;;14896:41;14927:9;14896:11;:26;14916:4;14896:26;;;;;;;;;;;;;;;;:30;;:41;;;;:::i;:::-;14867:11;:26;14887:4;14867:26;;;;;;;;;;;;;;;:70;;;;14989:4;14960:11;:25;14972:12;:10;:12::i;:::-;14960:25;;;;;;;;;;;;;;;;:33;;14952:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15074:5;15044:11;:26;15064:4;15044:26;;;;;;;;;;;;;;;;:35;;15036:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15166:3;;15141:22;15156:6;15141:10;;:14;;:22;;;;:::i;:::-;:28;15138:101;;;15184:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15138:101;15264:22;15279:6;15264:10;;:14;;:22;;;;:::i;:::-;15251:10;:35;;;;15339:19;15347:10;;15339:3;;:7;;:19;;;;:::i;:::-;15321:15;:37;;;;15394:1;15382:9;:13;15379:144;;;15411:12;:10;:12::i;:::-;:21;;:32;15433:9;15411:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15487:12;:10;:12::i;:::-;15463:48;;15480:4;15463:48;;;15501:9;15463:48;;;;;;;;;;;;;;;;;;15379:144;15556:72;15579:6;15556:72;;;;;;;;;;;;;;;;;:9;:18;15566:7;:5;:7::i;:::-;15556:18;;;;;;;;;;;;;;;;:22;;:72;;;;;:::i;:::-;15535:9;:18;15545:7;:5;:7::i;:::-;15535:18;;;;;;;;;;;;;;;:93;;;;15665:35;15693:6;15665:9;:23;15675:12;:10;:12::i;:::-;15665:23;;;;;;;;;;;;;;;;:27;;:35;;;;:::i;:::-;15639:9;:23;15649:12;:10;:12::i;:::-;15639:23;;;;;;;;;;;;;;;:61;;;;15752:12;:10;:12::i;:::-;15728:45;;15745:4;15728:45;;;15766:6;15728:45;;;;;;;;;;;;;;;;;;15786:6;;;;;;;;;;;:15;;:26;15802:9;15786:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14240:1580;;;16317:148;;;;;16356:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9319:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13036:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9655:100;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11143:321;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16434:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13457:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10248:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13309:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10751:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8919:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15828:169;;;;;;;;;;;;;:::i;:::-;;13637:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9763:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3662:130;;;;;;;;;;;;;:::i;:::-;;9126:42;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9216:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3384:72;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3569:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16398:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10474:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10960:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13758:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13549:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13673:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12803:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16142;;;;;;;;;;;;;:::i;:::-;;9496:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12539:205;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3800:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;101:106;154:15;189:10;182:17;;101:106;:::o;13309:112::-;13370:4;13394:9;:19;13404:8;13394:19;;;;;;;;;;;;;;;;;;;;;;;;;13387:26;;13309:112;;;:::o;5724:471::-;5782:7;6032:1;6027;:6;6023:47;;;6057:1;6050:8;;;;6023:47;6082:9;6098:1;6094;:5;6082:17;;6127:1;6122;6118;:5;;;;;;:10;6110:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6186:1;6179:8;;;5724:471;;;;;:::o;6671:132::-;6729:7;6756:39;6760:1;6763;6756:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6749:46;;6671:132;;;;:::o;4370:181::-;4428:7;4448:9;4464:1;4460;:5;4448:17;;4489:1;4484;:6;;4476:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:1;4535:8;;;4370:181;;;;:::o;4834:136::-;4892:7;4919:43;4923:1;4926;4919:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4912:50;;4834:136;;;;:::o;3384:72::-;3421:7;3444:6;;;;;;;;;;;3437:13;;3384:72;:::o;5273:192::-;5359:7;5392:1;5387;:6;;5395:12;5379:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5419:9;5435:1;5431;:5;5419:17;;5456:1;5449:8;;;5273:192;;;;;:::o;16356:35::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9319:169::-;9402:4;9419:39;9428:12;:10;:12::i;:::-;9442:7;9451:6;9419:8;:39::i;:::-;9476:4;9469:11;;9319:169;;;;:::o;13036:212::-;3500:9;:7;:9::i;:::-;3492:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13131:10:::1;13126:113;13154:8;:15;13147:4;:22;;;13126:113;;;13222:5;13194:9;:25;13204:8;13213:4;13204:14;;;;;;;;;;;;;;;;13194:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;13171:6;;;;;;;13126:113;;;;13036:212:::0;:::o;9655:100::-;9708:7;9735:12;;9728:19;;9655:100;:::o;11143:321::-;11249:4;11266:36;11276:6;11284:9;11295:6;11266:9;:36::i;:::-;11313:121;11322:6;11330:12;:10;:12::i;:::-;11344:89;11382:6;11344:89;;;;;;;;;;;;;;;;;:11;:19;11356:6;11344:19;;;;;;;;;;;;;;;:33;11364:12;:10;:12::i;:::-;11344:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11313:8;:121::i;:::-;11452:4;11445:11;;11143:321;;;;;:::o;16434:27::-;;;;;;;;;;;;;:::o;13457:32::-;;;;:::o;10248:218::-;10336:4;10353:83;10362:12;:10;:12::i;:::-;10376:7;10385:50;10424:10;10385:11;:25;10397:12;:10;:12::i;:::-;10385:25;;;;;;;;;;;;;;;:34;10411:7;10385:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;10353:8;:83::i;:::-;10454:4;10447:11;;10248:218;;;;:::o;10751:111::-;10811:7;10838:11;:16;10850:3;10838:16;;;;;;;;;;;;;;;;10831:23;;10751:111;;;:::o;8919:27::-;;;;:::o;15828:169::-;3500:9;:7;:9::i;:::-;3492:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15909:10:::1;15893:26:::0;::::1;;;;;;;:12;;;;;;;;;;;:26;;;;;;;;;;15885:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;15977:12;15962;;:27;;;;;;;;;;;;;;;;;;;;;;;;15828:169::o:0;13637:29::-;;;;:::o;9763:119::-;9829:7;9856:9;:18;9866:7;9856:18;;;;;;;;;;;;;;;;9849:25;;9763:119;;;:::o;3662:130::-;3500:9;:7;:9::i;:::-;3492:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1:::1;3720:40;;3741:6;;;;;;;;;;;3720:40;;;;;;;;;;;;3784:1;3767:6;;:19;;;;;;;;;;;;;;;;;;3662:130::o:0;9126:42::-;;;;:::o;9216:41::-;;;;:::o;3569:85::-;3608:4;3642:6;;;;;;;;;;;3628:20;;:10;:20;;;3621:27;;3569:85;:::o;16398:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10474:269::-;10567:4;10584:129;10593:12;:10;:12::i;:::-;10607:7;10616:96;10655:15;10616:96;;;;;;;;;;;;;;;;;:11;:25;10628:12;:10;:12::i;:::-;10616:25;;;;;;;;;;;;;;;:34;10642:7;10616:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;10584:8;:129::i;:::-;10731:4;10724:11;;10474:269;;;;:::o;10960:175::-;11046:4;11063:42;11073:12;:10;:12::i;:::-;11087:9;11098:6;11063:9;:42::i;:::-;11123:4;11116:11;;10960:175;;;;:::o;13758:34::-;;;;:::o;13549:37::-;;;;:::o;13673:41::-;;;;:::o;12803:162::-;3500:9;:7;:9::i;:::-;3492:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12906:5:::1;12884:9;:19;12894:8;12884:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12948:8;12927:30;;;;;;;;;;;;12803:162:::0;:::o;16142:::-;3500:9;:7;:9::i;:::-;3492:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16226:10:::1;16210:26:::0;::::1;;;;;;;:12;;;;;;;;;;;:26;;;;;;;;;;16202:66;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;16279:17;:15;:17::i;:::-;16142:162::o:0;9496:151::-;9585:7;9612:11;:18;9624:5;9612:18;;;;;;;;;;;;;;;:27;9631:7;9612:27;;;;;;;;;;;;;;;;9605:34;;9496:151;;;;:::o;12539:205::-;3500:9;:7;:9::i;:::-;3492:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12630:10:::1;12625:112;12653:8;:15;12646:4;:22;;;12625:112;;;12721:4;12693:9;:25;12703:8;12712:4;12703:14;;;;;;;;;;;;;;;;12693:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12670:6;;;;;;;12625:112;;;;12539:205:::0;:::o;3800:111::-;3500:9;:7;:9::i;:::-;3492:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3877:28:::1;3896:8;3877:18;:28::i;:::-;3800:111:::0;:::o;7299:278::-;7385:7;7417:1;7413;:5;7420:12;7405:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7444:9;7460:1;7456;:5;;;;;;7444:17;;7568:1;7561:8;;;7299:278;;;;;:::o;9894:346::-;10013:1;9996:19;;:5;:19;;;;9988:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10094:1;10075:21;;:7;:21;;;;10067:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10178:6;10148:11;:18;10160:5;10148:18;;;;;;;;;;;;;;;:27;10167:7;10148:27;;;;;;;;;;;;;;;:36;;;;10216:7;10200:32;;10209:5;10200:32;;;10225:6;10200:32;;;;;;;;;;;;;;;;;;9894:346;;;:::o;11472:609::-;11596:1;11578:20;;:6;:20;;;;11570:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11680:1;11659:23;;:9;:23;;;;11651:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11760:29;11774:14;;11760:9;;:13;;:29;;;;:::i;:::-;11741:15;:48;;:75;;;;11809:7;:5;:7::i;:::-;11793:23;;:12;:10;:12::i;:::-;:23;;;11741:75;11733:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11885:71;11907:6;11885:71;;;;;;;;;;;;;;;;;:9;:17;11895:6;11885:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;11865:9;:17;11875:6;11865:17;;;;;;;;;;;;;;;:91;;;;11990:32;12015:6;11990:9;:20;12000:9;11990:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11967:9;:20;11977:9;11967:20;;;;;;;;;;;;;;;:55;;;;12055:9;12038:35;;12047:6;12038:35;;;12066:6;12038:35;;;;;;;;;;;;;;;;;;11472:609;;;:::o;16005:129::-;16067:10;16052:12;;:25;;;;;;;;;;;;;;;;;;;;;;;;16088:6;;;;;;;;;;;:15;;:38;16104:21;16088:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16005:129::o;3919:181::-;4017:1;3997:22;;:8;:22;;;;3989:31;;;;;;4061:8;4032:38;;4053:6;;;;;;;;;;;4032:38;;;;;;;;;;;;4086:8;4077:6;;:17;;;;;;;;;;;;;;;;;;3919:181;:::o

Swarm Source

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