POL Price: $0.688377 (-3.64%)
 

Overview

Max Total Supply

43,175,846.949047 MEN

Holders

35,684 (0.00%)

Total Transfers

-

Market

Price

$0.0851 @ 0.123557 POL (+6.44%)

Onchain Market Cap

$3,672,278.49

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 6 Decimals)

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

OVERVIEW

MetaHub Global- A Decentralized Affiliate Consuming.

Market

Volume (24H):$97,222.00
Market Capitalization:$0.00
Circulating Supply:0.00 MEN
Market Data Source: Coinmarketcap

Contract Source Code Verified (Exact Match)

Contract Name:
METAHUBToken

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 9 : METAHUBToken.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.9;

import "./libs/zeppelin/token/BEP20/IBEP20.sol";
import "./libs/app/TokenAuth.sol";
import "./interfaces/IAddressBook.sol";
import "./interfaces/ITaxManager.sol";
import "./interfaces/ILSD.sol";
import "./interfaces/IMENToken.sol";

contract METAHUBToken is IBEP20, TokenAuth {
  string public constant name = "MetaHub Finance";
  string public constant symbol = "MEN";
  uint public constant decimals = 6;

  uint public constant MINTING_ALLOCATION = 630e12;
  uint public constant CLS_ALLOCATION = 63e12;
  uint public constant DEVELOPMENT_ALLOCATION = 7e12;
  uint public constant MAX_SUPPLY = 700e12;
  uint public constant BLOCK_IN_ONE_MONTH = 1296000; // 30 * 24 * 60 * 30
  uint private constant DEVELOPMENT_VESTING_MONTH = 12;

  mapping (address => uint) internal _balances;
  mapping (address => mapping (address => uint)) private _allowed;
  mapping (address => bool) public waitingList;
  mapping (address => mapping (IMENToken.TaxType => WhitelistTax)) public whitelistTax;
  mapping (IMENToken.TaxType => uint) public lsdDiscountTaxPercentages; // decimal 3
  struct Config {
    uint secondsInADay;
    uint hardCapCashOut;
    uint cashOutTaxPercentage;
    bool wait;
    bool waitingFunctionEnabled;
    uint[] sharkCheckpoints;
    uint[] sharkTaxPercentages;
    mapping (address => uint) lastCashOut;
    mapping (address => uint) softCap;
  }

  struct WhitelistTax {
    uint percentage;
    bool status;
  }

  uint public totalSupply;
  uint public startVestingDevelopmentBlock;
  uint public lastReleaseDevelopmentBlock;
  uint public startVestingAdvisorAndTeamBlock;
  uint public maxMintingBeMinted;
  uint public developmentReleased;
  uint public maxCLSBeMinted;
  uint public clsReleased;
  IAddressBook public addressBook;
  ITaxManager public taxManager;
  ILSD public lsd;
  Config public config;
  uint private constant DECIMAL3 = 1000;
  uint private constant DECIMAL9 = 1000000000;
  uint constant oneHundredPercentageDecimal3 = 100000;
  mapping (address => bool) public twoWayTaxWhitelist;

  event ConfigUpdated(
    uint secondsInADay,
    uint hardCapCashOut,
    uint cashOutTaxPercentage,
    uint[] sharkCheckpoints,
    uint[] sharkTaxPercentages,
    uint timestamp
  );
  event WaitStatusUpdated(bool status, uint timestamp);
  event WaitingStatusUpdated(address user, bool status, uint timestamp);
  event TwoWayTaxWhitelistUpdated(address user, bool status, uint timestamp);

  constructor() TokenAuth() {
    config.hardCapCashOut = 100e6;
    config.cashOutTaxPercentage = 20;
    config.sharkCheckpoints = [0, 20000e6, 30000e6];
    config.sharkTaxPercentages = [0, 15000, 20000];
    config.waitingFunctionEnabled = true;
    maxMintingBeMinted = MINTING_ALLOCATION;
    maxCLSBeMinted = CLS_ALLOCATION;
  }

  function releaseMintingAllocation(uint _amount) external onlyVault returns (bool) {
    require(developmentReleased + _amount <= maxMintingBeMinted, "Max staking allocation had released");
    developmentReleased += _amount;
    _mint(msg.sender, _amount);
    return true;
  }

  function releaseCLSAllocation(uint _amount) external onlyCLS returns (bool) {
    require(clsReleased + _amount <= maxCLSBeMinted, "Max CLS allocation had reached");
    clsReleased += _amount;
    _mint(msg.sender, _amount);
    return true;
  }

  function startVestingDevelopment() external onlyMn {
    require(startVestingDevelopmentBlock == 0, "VestingDevelopment had started already");
    require(developmentAddress != address(0), "Please setup development address first");
    startVestingDevelopmentBlock = block.number + BLOCK_IN_ONE_MONTH * 1;
    lastReleaseDevelopmentBlock = startVestingDevelopmentBlock;
    _mint(developmentAddress, DEVELOPMENT_ALLOCATION * 20 / 100);
  }

  function releaseDevelopment() external onlyDevelopment {
    require(startVestingDevelopmentBlock > 0 && block.number > startVestingDevelopmentBlock, "Please wait more time");
    uint maxBlockNumber = startVestingDevelopmentBlock + BLOCK_IN_ONE_MONTH * DEVELOPMENT_VESTING_MONTH;
    require(maxBlockNumber > lastReleaseDevelopmentBlock, "Development allocation had released");
    uint blockPass;
    if (block.number < maxBlockNumber) {
      blockPass = block.number - lastReleaseDevelopmentBlock;
      lastReleaseDevelopmentBlock = block.number;
    } else {
      blockPass = maxBlockNumber - lastReleaseDevelopmentBlock;
      lastReleaseDevelopmentBlock = maxBlockNumber;
    }
    uint releaseAmount = DEVELOPMENT_ALLOCATION * 8 * blockPass / (BLOCK_IN_ONE_MONTH * DEVELOPMENT_VESTING_MONTH) / 10;
    _mint(msg.sender, releaseAmount);
  }

  function updateTwoWayTaxWhitelist(address _address, bool _status) external onlyMn {
    twoWayTaxWhitelist[_address] = _status;
    emit TwoWayTaxWhitelistUpdated(_address, _status, block.timestamp);
  }

  function balanceOf(address _owner) override external view returns (uint) {
    return _balances[_owner];
  }

  function getUserCap(address _owner) external view returns (uint, uint) {
    return (config.softCap[_owner], config.lastCashOut[_owner]);
  }

  function getSharkInfo() external view returns (uint[] memory, uint[] memory) {
    return (config.sharkCheckpoints, config.sharkTaxPercentages);
  }

  function allowance(address _owner, address _spender) override external view returns (uint) {
    return _allowed[_owner][_spender];
  }

  function transfer(address _to, uint _value) override external returns (bool) {
    _transfer(msg.sender, _to, _value);
    return true;
  }

  function approve(address _spender, uint _value) override external returns (bool) {
    _approve(msg.sender, _spender, _value);
    return true;
  }

  function transferFrom(address _from, address _to, uint _value) override external returns (bool) {
    _transfer(_from, _to, _value);
    _approve(_from, msg.sender, _allowed[_from][msg.sender] - _value);
    return true;
  }

  function increaseAllowance(address _spender, uint _addedValue) external returns (bool) {
    _approve(msg.sender, _spender, _allowed[msg.sender][_spender] + _addedValue);
    return true;
  }

  function decreaseAllowance(address _spender, uint _subtractedValue) external returns (bool) {
    _approve(msg.sender, _spender, _allowed[msg.sender][_spender] - _subtractedValue);
    return true;
  }

  function burn(uint _amount) external {
    _balances[msg.sender] = _balances[msg.sender] - _amount;
    totalSupply = totalSupply - _amount;
    emit Transfer(msg.sender, address(0), _amount);
  }

  function updateWaitStatus(bool _wait) external onlyMn {
    config.wait = _wait;
    emit WaitStatusUpdated(_wait, block.timestamp);
  }

  function updateWaitingStatus(address _address, bool _waited) external onlyMn {
    require(config.waitingFunctionEnabled, "Waiting function is disabled");
    waitingList[_address] = _waited;
  }

  function disableWaitingFunction() external onlyMn {
    config.waitingFunctionEnabled = false;
  }

  function updateMaxContractMinting(uint _maxMintingBeMinted, uint _maxCLSBeMinted) external onlyMn {
    require(maxMintingBeMinted <= MINTING_ALLOCATION, "Staking data invalid");
    require(maxCLSBeMinted <= CLS_ALLOCATION, "CLS data invalid");
    maxMintingBeMinted = _maxMintingBeMinted;
    maxCLSBeMinted = _maxCLSBeMinted;
  }

  function setAddressBook(address _addressBook) external onlyMn {
    addressBook = IAddressBook(_addressBook);
    _initDependentContracts();
  }

  function updateConfig(uint _secondsInDay, uint _hardCapCashOut, uint _cashOutTaxPercentage, uint[] calldata _sharkCheckpoints, uint[] calldata _sharkTaxPercentages) external onlyMn {
    require(_cashOutTaxPercentage <= 100, "Data invalid");
    require(_sharkCheckpoints.length == _sharkTaxPercentages.length, "Shark data invalid");
    config.secondsInADay = _secondsInDay;
    config.hardCapCashOut = _hardCapCashOut;
    config.cashOutTaxPercentage = _cashOutTaxPercentage;
    config.sharkCheckpoints = _sharkCheckpoints;
    config.sharkTaxPercentages = _sharkTaxPercentages;
    emit ConfigUpdated(_secondsInDay, _hardCapCashOut, _cashOutTaxPercentage, _sharkCheckpoints, _sharkTaxPercentages, block.timestamp);
  }

  function updateSoftCap(address _user, uint _softCap) external onlyMn {
    config.softCap[_user] = _softCap;
  }

  function updateTaxWhitelist(address _user, IMENToken.TaxType _type, uint _percentage, bool _whitelisted) external onlyMn {
    require(_percentage <= oneHundredPercentageDecimal3, "percentage invalid");
    whitelistTax[_user][_type] = WhitelistTax(_percentage, _whitelisted);
  }

  function updateLSDTaxDiscount(IMENToken.TaxType  _type, uint _percentage) external onlyMn {
    require(_percentage <= oneHundredPercentageDecimal3, "Data invalid");
    lsdDiscountTaxPercentages[_type] = _percentage;
  }

  function getWhitelistTax(address _to, IMENToken.TaxType _type) external view returns (uint, bool) {
    WhitelistTax memory userWhitelist = whitelistTax[_to][_type];
    return (userWhitelist.percentage, userWhitelist.status);
  }

  function _transfer(address _from, address _to, uint _value) private {
    _validateAbility(_from);
    _balances[_from] -= _value;

    uint tax = _calculateTax(_from, _to, _value);
    if (tax > 0) {
      _balances[_to] += _value - tax;
      _balances[address(taxManager)] += tax;
      emit Transfer(_from, address(taxManager), tax);
    } else {
      _balances[_to] += _value;
    }
    if (_to == address(0)) {
      totalSupply = totalSupply - _value;
    }

    if (_from == address(vault)) {
      vault.updateUserTotalClaimedInUSD(_to, _value * vault.getTokenPrice() / DECIMAL9);
    }

    emit Transfer(_from, _to, _value - tax);
  }

  function _approve(address _owner, address _spender, uint _value) private {
    require(_spender != address(0), "Can not approve for zero address");
    require(_owner != address(0));

    _allowed[_owner][_spender] = _value;
    emit Approval(_owner, _spender, _value);
  }

  function _mint(address _owner, uint _amount) private {
    _validateAbility(_owner);
    require(totalSupply + _amount <= MAX_SUPPLY, "Amount invalid");
    _balances[_owner] += _amount;
    totalSupply += _amount;
    emit Transfer(address(0), _owner, _amount);
  }

  function _validateAbility(address _owner) private view {
    if (config.waitingFunctionEnabled) {
      require(!waitingList[_owner] && !config.wait, "You can not do this at the moment");
    } else {
      require(!config.wait, "You can not do this at the moment");
    }
  }

  function _calculateTax(address _from, address _to, uint _value) private returns (uint) {
    if (
      twoWayTaxWhitelist[_from] || twoWayTaxWhitelist[_to] ||
      _to == addressBook.get("vault") ||
      _from == addressBook.get("cls") || _to == addressBook.get("cls") ||
      _from == addressBook.get("lsd") || _to == addressBook.get("lsd") ||
      _from == addressBook.get("shareManager") || _to == addressBook.get("shareManager") ||
      (_from == addressBook.get("swap") && _to == addressBook.get("lpToken")) ||
      (_from == addressBook.get("lpToken") && _to == addressBook.get("swap"))
    ) {
      return 0;
    }
    WhitelistTax storage userWhitelistTax;
    uint baseTax = _value * 1000 / taxManager.totalTaxPercentage();
    bool isBuyingToken = _from == addressBook.get("swap") || _from == addressBook.get("lpToken");
    if (isBuyingToken) {
      userWhitelistTax = whitelistTax[_to][IMENToken.TaxType.Buy];
      if (userWhitelistTax.status) {
        return userWhitelistTax.percentage > 0 ? _value * userWhitelistTax.percentage / oneHundredPercentageDecimal3 : 0;
      }
      if(lsd.isQualifiedForTaxDiscount(_to) && lsdDiscountTaxPercentages[IMENToken.TaxType.Buy] > 0) {
        return baseTax * (oneHundredPercentageDecimal3 - lsdDiscountTaxPercentages[IMENToken.TaxType.Buy]) / oneHundredPercentageDecimal3;
      }
    }
    if (_from == address(vault)) {
      userWhitelistTax = whitelistTax[_to][IMENToken.TaxType.Claim];
      if (userWhitelistTax.status) {
        return userWhitelistTax.percentage > 0 ? _value * userWhitelistTax.percentage / oneHundredPercentageDecimal3 : 0;
      }
      if (config.sharkCheckpoints.length > 0) {
        (, uint totalClaimed) = vault.getUserInfo(_to);
        uint checkpointIndex;
        for(uint i = 0; i < config.sharkCheckpoints.length; i++) {
          if (totalClaimed >= config.sharkCheckpoints[i]) {
            checkpointIndex = i;
          }
        }
        if (checkpointIndex > 0) {
          return _value * config.sharkTaxPercentages[checkpointIndex] / oneHundredPercentageDecimal3;
        }
      }

      if(lsd.isQualifiedForTaxDiscount(_to) && lsdDiscountTaxPercentages[IMENToken.TaxType.Claim] > 0) {
        return baseTax * (oneHundredPercentageDecimal3 - lsdDiscountTaxPercentages[IMENToken.TaxType.Claim]) / oneHundredPercentageDecimal3;
      }
    }
    bool isSellingToken = _to == addressBook.get("lpToken") || _to == addressBook.get("swap");
    if (isSellingToken) {
      userWhitelistTax = whitelistTax[_from][IMENToken.TaxType.Sell];
      if (userWhitelistTax.status) {
        return userWhitelistTax.percentage > 0 ? _value * userWhitelistTax.percentage / oneHundredPercentageDecimal3 : 0;
      }
      if (_from != address(taxManager)) {
        _validateSelling(_from, _value * vault.getTokenPrice() / DECIMAL9);
      }
      if(lsd.isQualifiedForTaxDiscount(_from) && lsdDiscountTaxPercentages[IMENToken.TaxType.Sell] > 0) {
        baseTax = baseTax * (oneHundredPercentageDecimal3 - lsdDiscountTaxPercentages[IMENToken.TaxType.Sell]) / oneHundredPercentageDecimal3;
      }
      (uint deposited,) = vault.getUserInfo(_from);
      if (_value >= deposited * config.cashOutTaxPercentage / 100) {
        baseTax = _value / 2;
      }
    } else if (_from != address(vault) && lsd.isQualifiedForTaxDiscount(_from) && lsdDiscountTaxPercentages[IMENToken.TaxType.Transfer] > 0) {
      baseTax = baseTax * (oneHundredPercentageDecimal3 - lsdDiscountTaxPercentages[IMENToken.TaxType.Transfer]) / oneHundredPercentageDecimal3;
    }

    userWhitelistTax = whitelistTax[_from][IMENToken.TaxType.Transfer];
    if (userWhitelistTax.status) {
      return userWhitelistTax.percentage > 0 ? _value * userWhitelistTax.percentage / oneHundredPercentageDecimal3 : 0;
    }

    return baseTax;
  }

  function _validateSelling(address _from, uint _valueInUsd) private {
    if (config.softCap[msg.sender] > 0) {
      require(_valueInUsd <= config.softCap[msg.sender], "MEN: amount reach soft cap");
    } else {
      require(_valueInUsd <= config.hardCapCashOut, "MEN: amount reach hard cap");
    }
    if (config.lastCashOut[_from] > 0) {
      require(block.timestamp - config.lastCashOut[_from] >= config.secondsInADay, "MEN: please wait more time");
    }
    config.lastCashOut[_from] = block.timestamp;
  }

  function _initDependentContracts() private {
    vault = IVault(addressBook.get("vault"));
    taxManager = ITaxManager(addressBook.get("taxManager"));
    lsd = ILSD(addressBook.get("lsd"));
    clsAddress = addressBook.get("cls");
    developmentAddress = addressBook.get("development");
  }
}

File 2 of 9 : IBEP20.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.9;

/**
 * @title ERC20 interface
 * @dev see https://eips.ethereum.org/EIPS/eip-20
 */
interface IBEP20 {

    function transfer(address to, uint256 value) external returns (bool);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function balanceOf(address who) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 3 of 9 : TokenAuth.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.9;

import "@openzeppelin/contracts/utils/Context.sol";
import "../../interfaces/IVault.sol";

contract TokenAuth is Context {
  address internal bk;
  address internal mn;
  address internal developmentAddress;
  address internal clsAddress;
  IVault public vault;

  constructor() {
    mn = msg.sender;
    bk = msg.sender;
  }

  modifier onlyMn() {
    require(isOwner(), "onlyMn");
    _;
  }

  modifier onlyBk() {
    require(isBk(), "onlyBk");
    _;
  }

  modifier onlyDevelopment() {
    require(_msgSender() == developmentAddress || isOwner(), "TokenAuth: invalid caller");
    _;
  }

  modifier onlyCLS() {
    require(msg.sender == clsAddress, "TokenAuth: invalid caller");
    _;
  }

  modifier onlyVault() {
    require(msg.sender == address(vault), "TokenAuth: invalid caller");
    _;
  }

  function updateBk(address _newBk) external onlyBk {
    require(_newBk != address(0), "TokenAuth: invalid new bk");
    bk = _newBk;
  }

  function updateMn(address _newMn) external onlyBk {
    require(_newMn != address(0), "TokenAuth: invalid new mn");
    mn = _newMn;
  }

  function isOwner() public view returns (bool) {
    return _msgSender() == mn;
  }

  function isBk() public view returns (bool) {
    return _msgSender() == bk;
  }
}

File 4 of 9 : IAddressBook.sol
// SPDX-License-Identifier: BSD 3-Clause

pragma solidity 0.8.9;

interface IAddressBook {
  function get(string calldata _name) external view returns (address);
}

File 5 of 9 : ITaxManager.sol
// SPDX-License-Identifier: BSD 3-Clause

pragma solidity 0.8.9;

interface ITaxManager {
  function totalTaxPercentage() external view returns (uint);
}

File 6 of 9 : ILSD.sol
// SPDX-License-Identifier: BSD 3-Clause

pragma solidity 0.8.9;

interface ILSD {
  function isQualifiedForTaxDiscount(address _user) external view returns (bool);
  function transfer(address _from, address _to, uint _stAmount) external;
  function mint(uint _tokenAmount, uint _duration) external;
  function burn(uint _stAmount) external;
}

File 7 of 9 : IMENToken.sol
// SPDX-License-Identifier: BSD 3-Clause

pragma solidity 0.8.9;

import "../libs/zeppelin/token/BEP20/IBEP20.sol";

interface IMENToken is IBEP20 {
  enum TaxType {
    Buy,
    Sell,
    Transfer,
    Claim
  }
  function releaseMintingAllocation(uint _amount) external returns (bool);
  function releaseCLSAllocation(uint _amount) external returns (bool);
  function burn(uint _amount) external;
  function mint(uint _amount) external returns (bool);
  function lsdDiscountTaxPercentages(TaxType _type) external returns (uint);
  function getWhitelistTax(address _to, TaxType _type) external returns (uint, bool);
}

File 8 of 9 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 9 of 9 : IVault.sol
// SPDX-License-Identifier: BSD 3-Clause

pragma solidity 0.8.9;

interface IVault {
  enum DepositType {
    vaultDeposit,
    swapUSDForToken,
    swapBuyDNO
  }

  function updateQualifiedLevel(address _user1Address, address _user2Address) external;
  function depositFor(address _userAddress, uint _amount, DepositType _depositType) external;
  function getUserInfo(address _user) external view returns (uint, uint);
  function getTokenPrice() external view returns (uint);
  function updateUserTotalClaimedInUSD(address _user, uint _usd) external;
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"secondsInADay","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"hardCapCashOut","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"cashOutTaxPercentage","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"sharkCheckpoints","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"sharkTaxPercentages","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ConfigUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TwoWayTaxWhitelistUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"WaitStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"WaitingStatusUpdated","type":"event"},{"inputs":[],"name":"BLOCK_IN_ONE_MONTH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CLS_ALLOCATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEVELOPMENT_ALLOCATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTING_ALLOCATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addressBook","outputs":[{"internalType":"contract IAddressBook","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clsReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"config","outputs":[{"internalType":"uint256","name":"secondsInADay","type":"uint256"},{"internalType":"uint256","name":"hardCapCashOut","type":"uint256"},{"internalType":"uint256","name":"cashOutTaxPercentage","type":"uint256"},{"internalType":"bool","name":"wait","type":"bool"},{"internalType":"bool","name":"waitingFunctionEnabled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"developmentReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableWaitingFunction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getSharkInfo","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getUserCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"enum IMENToken.TaxType","name":"_type","type":"uint8"}],"name":"getWhitelistTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isBk","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastReleaseDevelopmentBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lsd","outputs":[{"internalType":"contract ILSD","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum IMENToken.TaxType","name":"","type":"uint8"}],"name":"lsdDiscountTaxPercentages","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxCLSBeMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintingBeMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"releaseCLSAllocation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"releaseDevelopment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"releaseMintingAllocation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addressBook","type":"address"}],"name":"setAddressBook","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startVestingAdvisorAndTeamBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startVestingDevelopment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startVestingDevelopmentBlock","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":"taxManager","outputs":[{"internalType":"contract ITaxManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"twoWayTaxWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newBk","type":"address"}],"name":"updateBk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_secondsInDay","type":"uint256"},{"internalType":"uint256","name":"_hardCapCashOut","type":"uint256"},{"internalType":"uint256","name":"_cashOutTaxPercentage","type":"uint256"},{"internalType":"uint256[]","name":"_sharkCheckpoints","type":"uint256[]"},{"internalType":"uint256[]","name":"_sharkTaxPercentages","type":"uint256[]"}],"name":"updateConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IMENToken.TaxType","name":"_type","type":"uint8"},{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"updateLSDTaxDiscount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxMintingBeMinted","type":"uint256"},{"internalType":"uint256","name":"_maxCLSBeMinted","type":"uint256"}],"name":"updateMaxContractMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMn","type":"address"}],"name":"updateMn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_softCap","type":"uint256"}],"name":"updateSoftCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"enum IMENToken.TaxType","name":"_type","type":"uint8"},{"internalType":"uint256","name":"_percentage","type":"uint256"},{"internalType":"bool","name":"_whitelisted","type":"bool"}],"name":"updateTaxWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"updateTwoWayTaxWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_wait","type":"bool"}],"name":"updateWaitStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_waited","type":"bool"}],"name":"updateWaitingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"waitingList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"enum IMENToken.TaxType","name":"","type":"uint8"}],"name":"whitelistTax","outputs":[{"internalType":"uint256","name":"percentage","type":"uint256"},{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b5060018054336001600160a01b031991821681179092556000805490911690911781556305f5e1006016556014601755604080516060810182529182526404a817c80060208301526406fc23ac009082015262000073906019906003620000cf565b506040805160608101825260008152613a986020820152614e2091810191909152620000a490601a90600362000128565b506018805461ff00191661010017905566023cfb4e356000600e5565394c549ef00060105562000183565b82805482825590600052602060002090810192821562000116579160200282015b8281111562000116578251829064ffffffffff16905591602001919060010190620000f0565b50620001249291506200016c565b5090565b82805482825590600052602060002090810192821562000116579160200282015b8281111562000116578251829061ffff1690559160200191906001019062000149565b5b808211156200012457600081556001016200016d565b61394880620001936000396000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c806373b82fb0116101b8578063b4b511b511610104578063e0583e3b116100a2578063f5887cdd1161007c578063f5887cdd146107bd578063f8956bfe146107d0578063fa049973146107f0578063fbfa77cf1461081357600080fd5b8063e0583e3b14610795578063e1807b271461079d578063f167bffe146107aa57600080fd5b8063c390ef83116100de578063c390ef8314610723578063c64db93714610736578063dd62ed3e14610749578063de026dc71461078257600080fd5b8063b4b511b5146106f4578063b534863d14610707578063b705b9381461071057600080fd5b806390f5e8b611610171578063a457c2d71161014b578063a457c2d714610686578063a9059cbb14610699578063ab9a6171146106ac578063b2ed3e75146106e157600080fd5b806390f5e8b61461064757806395d89b411461065a578063967a29fd1461067c57600080fd5b806373b82fb014610577578063760721ff1461058a57806376b10b141461059357806379502c55146105a65780638b58c64c146105f45780638f32d59b1461063f57600080fd5b806324d34b30116102925780633a0ee33811610230578063531df5b51161020a578063531df5b51461050b57806359ed359c1461051e5780635dd857711461052657806370a082311461054e57600080fd5b80633a0ee338146104dc57806342966c68146104e55780634d237730146104f857600080fd5b8063313ce5671161026c578063313ce5671461049057806332cb6b0c1461049857806339509351146104a6578063397148d3146104b957600080fd5b806324d34b30146104715780632d47eda7146104795780632fa9b2991461048257600080fd5b806310fd272e116102ff5780631f587868116102d95780631f5878681461043a57806322e1f32b1461044d57806323b872dd14610456578063247fc62e1461046957600080fd5b806310fd272e1461040e57806313581aa31461041b57806318160ddd1461043157600080fd5b806306fdde0314610347578063077aa7e31461038b578063095ea7b3146103a2578063096844a6146103c55780630b3448a8146103ce5780630fe6c2a9146103e3575b600080fd5b6103756040518060400160405280600f81526020016e4d6574614875622046696e616e636560881b81525081565b6040516103829190613250565b60405180910390f35b610394600c5481565b604051908152602001610382565b6103b56103b03660046132ba565b610826565b6040519015158152602001610382565b610394600e5481565b6103e16103dc3660046132e6565b61083c565b005b6014546103f6906001600160a01b031681565b6040516001600160a01b039091168152602001610382565b61039465394c549ef00081565b61042361088f565b60405161038292919061333e565b610394600a5481565b6103b561044836600461336c565b610948565b610394600d5481565b6103b5610464366004613385565b610a0b565b6103e1610a5e565b6103e1610bfc565b61039460115481565b61039466023cfb4e35600081565b610394600681565b61039466027ca57357c00081565b6103b56104b43660046132ba565b610c2d565b6103b56104c73660046132e6565b60076020526000908152604090205460ff1681565b61039460105481565b6103e16104f336600461336c565b610c64565b6013546103f6906001600160a01b031681565b6103e16105193660046133d5565b610cc9565b6103b5610d6c565b6105396105343660046133f1565b610d8a565b60408051928352901515602083015201610382565b61039461055c3660046132e6565b6001600160a01b031660009081526005602052604090205490565b6103e1610585366004613434565b610e0a565b610394600f5481565b6103e16105a13660046134b2565b610e98565b6015546016546017546018546105c89392919060ff8082169161010090041685565b60408051958652602086019490945292840191909152151560608301521515608082015260a001610382565b61062a6106023660046132e6565b6001600160a01b03166000908152601c6020908152604080832054601b909252909120549091565b60408051928352602083019190915201610382565b6103b5610fb7565b6103e16106553660046132e6565b610fcc565b6103756040518060400160405280600381526020016226a2a760e91b81525081565b6103946213c68081565b6103b56106943660046132ba565b611081565b6103b56106a73660046132ba565b6110b8565b6105396106ba3660046133f1565b60086020908152600092835260408084209091529082529020805460019091015460ff1682565b6103e16106ef366004613434565b6110c5565b6103e161070236600461353f565b61116b565b610394600b5481565b6103e161071e3660046132ba565b61126a565b6103e1610731366004613590565b6112aa565b6103e16107443660046132e6565b61131a565b6103946107573660046135ad565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6103b561079036600461336c565b6113cf565b6103e161146d565b61039465065dd083700081565b6103e16107b83660046135db565b6115ab565b6012546103f6906001600160a01b031681565b6103946107de3660046135fd565b60096020526000908152604090205481565b6103b56107fe3660046132e6565b601d6020526000908152604090205460ff1681565b6004546103f6906001600160a01b031681565b6000610833338484611675565b50600192915050565b610844610fb7565b6108695760405162461bcd60e51b815260040161086090613618565b60405180910390fd5b601280546001600160a01b0319166001600160a01b03831617905561088c61173f565b50565b60608060156004016015600501818054806020026020016040519081016040528092919081815260200182805480156108e757602002820191906000526020600020905b8154815260200190600101908083116108d3575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561093957602002820191906000526020600020905b815481526020019060010190808311610925575b50505050509050915091509091565b6004546000906001600160a01b031633146109755760405162461bcd60e51b815260040161086090613638565b600e5482600f546109869190613685565b11156109e05760405162461bcd60e51b815260206004820152602360248201527f4d6178207374616b696e6720616c6c6f636174696f6e206861642072656c65616044820152621cd95960ea1b6064820152608401610860565b81600f60008282546109f29190613685565b90915550610a0290503383611a6e565b5060015b919050565b6000610a18848484611b45565b6001600160a01b038416600090815260066020908152604080832033808552925290912054610a53918691610a4e90869061369d565b611675565b5060015b9392505050565b6002546001600160a01b0316336001600160a01b03161480610a835750610a83610fb7565b610a9f5760405162461bcd60e51b815260040161086090613638565b6000600b54118015610ab25750600b5443115b610af65760405162461bcd60e51b8152602060048201526015602482015274506c656173652077616974206d6f72652074696d6560581b6044820152606401610860565b6000610b06600c6213c6806136b4565b600b54610b139190613685565b9050600c548111610b725760405162461bcd60e51b815260206004820152602360248201527f446576656c6f706d656e7420616c6c6f636174696f6e206861642072656c65616044820152621cd95960ea1b6064820152608401610860565b600081431015610b9457600c54610b89904361369d565b43600c559050610ba9565b600c54610ba1908361369d565b600c83905590505b6000600a610bbb600c6213c6806136b4565b83610bcd65065dd083700060086136b4565b610bd791906136b4565b610be191906136d3565b610beb91906136d3565b9050610bf73382611a6e565b505050565b610c04610fb7565b610c205760405162461bcd60e51b815260040161086090613618565b6018805461ff0019169055565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610833918590610a4e908690613685565b33600090815260056020526040902054610c7f90829061369d565b33600090815260056020526040902055600a54610c9d90829061369d565b600a5560405181815260009033906000805160206138f38339815191529060200160405180910390a350565b610cd1610fb7565b610ced5760405162461bcd60e51b815260040161086090613618565b620186a0811115610d2f5760405162461bcd60e51b815260206004820152600c60248201526b11185d18481a5b9d985b1a5960a21b6044820152606401610860565b8060096000846003811115610d4657610d466136f5565b6003811115610d5757610d576136f5565b81526020810191909152604001600020555050565b600080546001600160a01b0316335b6001600160a01b031614905090565b6001600160a01b03821660009081526008602052604081208190819081856003811115610db957610db96136f5565b6003811115610dca57610dca6136f5565b815260208082019290925260409081016000208151808301909252805480835260019091015460ff161515919092018190529093509150505b9250929050565b610e12610fb7565b610e2e5760405162461bcd60e51b815260040161086090613618565b6001600160a01b0382166000818152601d6020908152604091829020805460ff191685151590811790915582519384529083015242908201527feee8fef4362fd10f32dff2866711b0d994609b21908388f341b56ed959d72f139060600160405180910390a15050565b610ea0610fb7565b610ebc5760405162461bcd60e51b815260040161086090613618565b6064851115610efc5760405162461bcd60e51b815260206004820152600c60248201526b11185d18481a5b9d985b1a5960a21b6044820152606401610860565b828114610f405760405162461bcd60e51b815260206004820152601260248201527114da185c9ac819185d18481a5b9d985b1a5960721b6044820152606401610860565b601587905560168690556017859055610f5b601985856131f0565b50610f68601a83836131f0565b507f2e85128c73c4d09fa6895cb2c37f1de464fe07688108f4a95e17f29e2f5d77728787878787878742604051610fa6989796959493929190613741565b60405180910390a150505050505050565b6001546000906001600160a01b031633610d7b565b610fd4610d6c565b6110095760405162461bcd60e51b81526020600482015260066024820152656f6e6c79426b60d01b6044820152606401610860565b6001600160a01b03811661105f5760405162461bcd60e51b815260206004820152601960248201527f546f6b656e417574683a20696e76616c6964206e6577206d6e000000000000006044820152606401610860565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610833918590610a4e90869061369d565b6000610833338484611b45565b6110cd610fb7565b6110e95760405162461bcd60e51b815260040161086090613618565b601854610100900460ff166111405760405162461bcd60e51b815260206004820152601c60248201527f57616974696e672066756e6374696f6e2069732064697361626c6564000000006044820152606401610860565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b611173610fb7565b61118f5760405162461bcd60e51b815260040161086090613618565b620186a08211156111d75760405162461bcd60e51b81526020600482015260126024820152711c195c98d95b9d1859d9481a5b9d985b1a5960721b6044820152606401610860565b604051806040016040528083815260200182151581525060086000866001600160a01b03166001600160a01b031681526020019081526020016000206000856003811115611227576112276136f5565b6003811115611238576112386136f5565b8152602080820192909252604001600020825181559101516001909101805460ff191691151591909117905550505050565b611272610fb7565b61128e5760405162461bcd60e51b815260040161086090613618565b6001600160a01b039091166000908152601c6020526040902055565b6112b2610fb7565b6112ce5760405162461bcd60e51b815260040161086090613618565b6018805460ff1916821515908117909155604080519182524260208301527f16ee87eb79321397c0527468f5396e8233c7575357c435efb18a33edcf7d8189910160405180910390a150565b611322610d6c565b6113575760405162461bcd60e51b81526020600482015260066024820152656f6e6c79426b60d01b6044820152606401610860565b6001600160a01b0381166113ad5760405162461bcd60e51b815260206004820152601960248201527f546f6b656e417574683a20696e76616c6964206e657720626b000000000000006044820152606401610860565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6003546000906001600160a01b031633146113fc5760405162461bcd60e51b815260040161086090613638565b6010548260115461140d9190613685565b111561145b5760405162461bcd60e51b815260206004820152601e60248201527f4d617820434c5320616c6c6f636174696f6e20686164207265616368656400006044820152606401610860565b81601160008282546109f29190613685565b611475610fb7565b6114915760405162461bcd60e51b815260040161086090613618565b600b54156114f05760405162461bcd60e51b815260206004820152602660248201527f56657374696e67446576656c6f706d656e7420686164207374617274656420616044820152656c726561647960d01b6064820152608401610860565b6002546001600160a01b03166115575760405162461bcd60e51b815260206004820152602660248201527f506c6561736520736574757020646576656c6f706d656e74206164647265737360448201526508199a5c9cdd60d21b6064820152608401610860565b6115656213c68060016136b4565b61156f9043613685565b600b819055600c556002546115a9906001600160a01b0316606461159a65065dd083700060146136b4565b6115a491906136d3565b611a6e565b565b6115b3610fb7565b6115cf5760405162461bcd60e51b815260040161086090613618565b66023cfb4e356000600e54111561161f5760405162461bcd60e51b815260206004820152601460248201527314dd185ada5b99c819185d18481a5b9d985b1a5960621b6044820152606401610860565b65394c549ef000601054111561166a5760405162461bcd60e51b815260206004820152601060248201526f10d314c819185d18481a5b9d985b1a5960821b6044820152606401610860565b600e91909155601055565b6001600160a01b0382166116cb5760405162461bcd60e51b815260206004820181905260248201527f43616e206e6f7420617070726f766520666f72207a65726f20616464726573736044820152606401610860565b6001600160a01b0383166116de57600080fd5b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60125460405163349f642f60e11b81526020600482015260056024820152641d985d5b1d60da1b60448201526001600160a01b039091169063693ec85e9060640160206040518083038186803b15801561179857600080fd5b505afa1580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d09190613790565b600480546001600160a01b039283166001600160a01b031990911617815560125460405163349f642f60e11b815292169163693ec85e9161183091016020808252600a90820152693a30bc26b0b730b3b2b960b11b604082015260600190565b60206040518083038186803b15801561184857600080fd5b505afa15801561185c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118809190613790565b601380546001600160a01b0319166001600160a01b0392831617905560125460405163349f642f60e11b815291169063693ec85e906118c1906004016137ad565b60206040518083038186803b1580156118d957600080fd5b505afa1580156118ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119119190613790565b601480546001600160a01b0319166001600160a01b0392831617905560125460405163349f642f60e11b815291169063693ec85e90611952906004016137ca565b60206040518083038186803b15801561196a57600080fd5b505afa15801561197e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a29190613790565b600380546001600160a01b0319166001600160a01b0392831617905560125460405163349f642f60e11b815260206004820152600b60248201526a19195d995b1bdc1b595b9d60aa1b604482015291169063693ec85e9060640160206040518083038186803b158015611a1457600080fd5b505afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613790565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b611a7782611dce565b66027ca57357c00081600a54611a8d9190613685565b1115611acc5760405162461bcd60e51b815260206004820152600e60248201526d105b5bdd5b9d081a5b9d985b1a5960921b6044820152606401610860565b6001600160a01b03821660009081526005602052604081208054839290611af4908490613685565b9250508190555080600a6000828254611b0d9190613685565b90915550506040518181526001600160a01b038316906000906000805160206138f38339815191529060200160405180910390a35050565b611b4e83611dce565b6001600160a01b03831660009081526005602052604081208054839290611b7690849061369d565b9091555060009050611b89848484611e49565b90508015611c2f57611b9b818361369d565b6001600160a01b03841660009081526005602052604081208054909190611bc3908490613685565b90915550506013546001600160a01b031660009081526005602052604081208054839290611bf2908490613685565b90915550506013546040518281526001600160a01b03918216918616906000805160206138f38339815191529060200160405180910390a3611c5d565b6001600160a01b03831660009081526005602052604081208054849290611c57908490613685565b90915550505b6001600160a01b038316611c7d5781600a54611c79919061369d565b600a555b6004546001600160a01b0385811691161415611d905760048054604080516325ca7a8760e11b815290516001600160a01b0390921692633202699d928792633b9aca00928692634b94f50e928083019260209291829003018186803b158015611ce557600080fd5b505afa158015611cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1d91906137e7565b611d2790876136b4565b611d3191906136d3565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611d7757600080fd5b505af1158015611d8b573d6000803e3d6000fd5b505050505b6001600160a01b038084169085166000805160206138f3833981519152611db7848661369d565b60405190815260200160405180910390a350505050565b601854610100900460ff1615611e26576001600160a01b03811660009081526007602052604090205460ff16158015611e0a575060185460ff16155b61088c5760405162461bcd60e51b815260040161086090613800565b60185460ff161561088c5760405162461bcd60e51b815260040161086090613800565b6001600160a01b0383166000908152601d602052604081205460ff1680611e8857506001600160a01b0383166000908152601d602052604090205460ff165b80611f34575060125460405163349f642f60e11b81526020600482015260056024820152641d985d5b1d60da1b60448201526001600160a01b039091169063693ec85e9060640160206040518083038186803b158015611ee757600080fd5b505afa158015611efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1f9190613790565b6001600160a01b0316836001600160a01b0316145b80611fcd575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e90611f68906004016137ca565b60206040518083038186803b158015611f8057600080fd5b505afa158015611f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb89190613790565b6001600160a01b0316846001600160a01b0316145b80612066575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e90612001906004016137ca565b60206040518083038186803b15801561201957600080fd5b505afa15801561202d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120519190613790565b6001600160a01b0316836001600160a01b0316145b806120ff575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e9061209a906004016137ad565b60206040518083038186803b1580156120b257600080fd5b505afa1580156120c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ea9190613790565b6001600160a01b0316846001600160a01b0316145b80612198575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e90612133906004016137ad565b60206040518083038186803b15801561214b57600080fd5b505afa15801561215f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121839190613790565b6001600160a01b0316836001600160a01b0316145b8061224b575060125460405163349f642f60e11b815260206004820152600c60248201526b39b430b932a6b0b730b3b2b960a11b60448201526001600160a01b039091169063693ec85e9060640160206040518083038186803b1580156121fe57600080fd5b505afa158015612212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122369190613790565b6001600160a01b0316846001600160a01b0316145b806122fe575060125460405163349f642f60e11b815260206004820152600c60248201526b39b430b932a6b0b730b3b2b960a11b60448201526001600160a01b039091169063693ec85e9060640160206040518083038186803b1580156122b157600080fd5b505afa1580156122c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e99190613790565b6001600160a01b0316836001600160a01b0316145b80612430575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e9061233290600401613841565b60206040518083038186803b15801561234a57600080fd5b505afa15801561235e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123829190613790565b6001600160a01b0316846001600160a01b0316148015612430575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e906123cb9060040161385f565b60206040518083038186803b1580156123e357600080fd5b505afa1580156123f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241b9190613790565b6001600160a01b0316836001600160a01b0316145b80612562575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e906124649060040161385f565b60206040518083038186803b15801561247c57600080fd5b505afa158015612490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b49190613790565b6001600160a01b0316846001600160a01b0316148015612562575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e906124fd90600401613841565b60206040518083038186803b15801561251557600080fd5b505afa158015612529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254d9190613790565b6001600160a01b0316836001600160a01b0316145b1561256f57506000610a57565b600080601360009054906101000a90046001600160a01b03166001600160a01b031663fff5a9fb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c057600080fd5b505afa1580156125d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f891906137e7565b612604856103e86136b4565b61260e91906136d3565b60125460405163349f642f60e11b81529192506000916001600160a01b039091169063693ec85e9061264290600401613841565b60206040518083038186803b15801561265a57600080fd5b505afa15801561266e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126929190613790565b6001600160a01b0316876001600160a01b0316148061273f575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e906126da9060040161385f565b60206040518083038186803b1580156126f257600080fd5b505afa158015612706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272a9190613790565b6001600160a01b0316876001600160a01b0316145b905080156128a5576001600160a01b03861660009081526008602090815260408083208380529091529020600181015490935060ff16156127ac5782546127875760006127a2565b8254620186a09061279890876136b4565b6127a291906136d3565b9350505050610a57565b60145460405163b941bf9f60e01b81526001600160a01b0388811660048301529091169063b941bf9f9060240160206040518083038186803b1580156127f157600080fd5b505afa158015612805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128299190613880565b801561285e57506000805260096020527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b5415155b156128a557620186a060096000805b600381111561287e5761287e6136f5565b815260200190815260200160002054620186a061289b919061369d565b61279890846136b4565b6004546001600160a01b0388811691161415612aea576001600160a01b0386166000908152600860209081526040808320600384529091529020600181015490935060ff16156128fc5782546127875760006127a2565b60195415612a235760048054604051636386c1c760e01b81526001600160a01b038981169382019390935260009290911690636386c1c790602401604080518083038186803b15801561294e57600080fd5b505afa158015612962573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612986919061389d565b915060009050805b6019548110156129d35760198054829081106129ac576129ac6138c1565b906000526020600020015483106129c1578091505b806129cb816138d7565b91505061298e565b508015612a2057620186a0601560050182815481106129f4576129f46138c1565b906000526020600020015488612a0a91906136b4565b612a1491906136d3565b95505050505050610a57565b50505b60145460405163b941bf9f60e01b81526001600160a01b0388811660048301529091169063b941bf9f9060240160206040518083038186803b158015612a6857600080fd5b505afa158015612a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa09190613880565b8015612ad65750600360005260096020527fc575c31fea594a6eb97c8e9d3f9caee4c16218c6ef37e923234c0fe9014a61e75415155b15612aea57620186a060096000600361286d565b60125460405163349f642f60e11b81526000916001600160a01b03169063693ec85e90612b199060040161385f565b60206040518083038186803b158015612b3157600080fd5b505afa158015612b45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b699190613790565b6001600160a01b0316876001600160a01b03161480612c16575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e90612bb190600401613841565b60206040518083038186803b158015612bc957600080fd5b505afa158015612bdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c019190613790565b6001600160a01b0316876001600160a01b0316145b90508015612f06576001600160a01b0388166000908152600860209081526040808320600180855292529091209081015490945060ff1615612c85578354612c5f576000612c7a565b8354620186a090612c7090886136b4565b612c7a91906136d3565b945050505050610a57565b6013546001600160a01b03898116911614612d4257612d4288633b9aca00600460009054906101000a90046001600160a01b03166001600160a01b0316634b94f50e6040518163ffffffff1660e01b815260040160206040518083038186803b158015612cf157600080fd5b505afa158015612d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2991906137e7565b612d33908a6136b4565b612d3d91906136d3565b613076565b60145460405163b941bf9f60e01b81526001600160a01b038a811660048301529091169063b941bf9f9060240160206040518083038186803b158015612d8757600080fd5b505afa158015612d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dbf9190613880565b8015612df55750600160005260096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a365415155b15612e4c57600160005260096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a3654620186a090612e35908261369d565b612e3f90856136b4565b612e4991906136d3565b92505b60048054604051636386c1c760e01b81526001600160a01b038b81169382019390935260009290911690636386c1c790602401604080518083038186803b158015612e9657600080fd5b505afa158015612eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ece919061389d565b50601754909150606490612ee290836136b4565b612eec91906136d3565b8710612f0057612efd6002886136d3565b93505b50613029565b6004546001600160a01b03898116911614801590612f9c575060145460405163b941bf9f60e01b81526001600160a01b038a811660048301529091169063b941bf9f9060240160206040518083038186803b158015612f6457600080fd5b505afa158015612f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9c9190613880565b8015612fd25750600260005260096020527f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c35415155b1561302957600260005260096020527f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c354620186a090613012908261369d565b61301c90856136b4565b61302691906136d3565b92505b6001600160a01b0388166000908152600860209081526040808320600284529091529020600181015490945060ff161561306a578354612c5f576000612c7a565b50909695505050505050565b336000908152601c6020526040902054156130ef57336000908152601c60205260409020548111156130ea5760405162461bcd60e51b815260206004820152601a60248201527f4d454e3a20616d6f756e7420726561636820736f6674206361700000000000006044820152606401610860565b613141565b6016548111156131415760405162461bcd60e51b815260206004820152601a60248201527f4d454e3a20616d6f756e742072656163682068617264206361700000000000006044820152606401610860565b6001600160a01b0382166000908152601b6020526040902054156131d3576015546001600160a01b0383166000908152601b6020526040902054613185904261369d565b10156131d35760405162461bcd60e51b815260206004820152601a60248201527f4d454e3a20706c656173652077616974206d6f72652074696d650000000000006044820152606401610860565b506001600160a01b03166000908152601b60205260409020429055565b82805482825590600052602060002090810192821561322b579160200282015b8281111561322b578235825591602001919060010190613210565b5061323792915061323b565b5090565b5b80821115613237576000815560010161323c565b600060208083528351808285015260005b8181101561327d57858101830151858201604001528201613261565b8181111561328f576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461088c57600080fd5b600080604083850312156132cd57600080fd5b82356132d8816132a5565b946020939093013593505050565b6000602082840312156132f857600080fd5b8135610a57816132a5565b600081518084526020808501945080840160005b8381101561333357815187529582019590820190600101613317565b509495945050505050565b6040815260006133516040830185613303565b82810360208401526133638185613303565b95945050505050565b60006020828403121561337e57600080fd5b5035919050565b60008060006060848603121561339a57600080fd5b83356133a5816132a5565b925060208401356133b5816132a5565b929592945050506040919091013590565b803560048110610a0657600080fd5b600080604083850312156133e857600080fd5b6132d8836133c6565b6000806040838503121561340457600080fd5b823561340f816132a5565b915061341d602084016133c6565b90509250929050565b801515811461088c57600080fd5b6000806040838503121561344757600080fd5b8235613452816132a5565b9150602083013561346281613426565b809150509250929050565b60008083601f84011261347f57600080fd5b50813567ffffffffffffffff81111561349757600080fd5b6020830191508360208260051b8501011115610e0357600080fd5b600080600080600080600060a0888a0312156134cd57600080fd5b873596506020880135955060408801359450606088013567ffffffffffffffff808211156134fa57600080fd5b6135068b838c0161346d565b909650945060808a013591508082111561351f57600080fd5b5061352c8a828b0161346d565b989b979a50959850939692959293505050565b6000806000806080858703121561355557600080fd5b8435613560816132a5565b935061356e602086016133c6565b925060408501359150606085013561358581613426565b939692955090935050565b6000602082840312156135a257600080fd5b8135610a5781613426565b600080604083850312156135c057600080fd5b82356135cb816132a5565b91506020830135613462816132a5565b600080604083850312156135ee57600080fd5b50508035926020909101359150565b60006020828403121561360f57600080fd5b610a57826133c6565b60208082526006908201526537b7363ca6b760d11b604082015260600190565b60208082526019908201527f546f6b656e417574683a20696e76616c69642063616c6c657200000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156136985761369861366f565b500190565b6000828210156136af576136af61366f565b500390565b60008160001904831182151516156136ce576136ce61366f565b500290565b6000826136f057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fd5b81835260006001600160fb1b0383111561372457600080fd5b8260051b8083602087013760009401602001938452509192915050565b88815287602082015286604082015260c06060820152600061376760c08301878961370b565b828103608084015261377a81868861370b565b9150508260a08301529998505050505050505050565b6000602082840312156137a257600080fd5b8151610a57816132a5565b6020808252600390820152621b1cd960ea1b604082015260600190565b602080825260039082015262636c7360e81b604082015260600190565b6000602082840312156137f957600080fd5b5051919050565b60208082526021908201527f596f752063616e206e6f7420646f207468697320617420746865206d6f6d656e6040820152601d60fa1b606082015260800190565b6020808252600490820152630737761760e41b604082015260600190565b60208082526007908201526636382a37b5b2b760c91b604082015260600190565b60006020828403121561389257600080fd5b8151610a5781613426565b600080604083850312156138b057600080fd5b505080516020909101519092909150565b634e487b7160e01b600052603260045260246000fd5b60006000198214156138eb576138eb61366f565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a2e0961bd11270be85118c47a56b8459c8cde204e4c8ab8b26ad5447ce70d1a064736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106103425760003560e01c806373b82fb0116101b8578063b4b511b511610104578063e0583e3b116100a2578063f5887cdd1161007c578063f5887cdd146107bd578063f8956bfe146107d0578063fa049973146107f0578063fbfa77cf1461081357600080fd5b8063e0583e3b14610795578063e1807b271461079d578063f167bffe146107aa57600080fd5b8063c390ef83116100de578063c390ef8314610723578063c64db93714610736578063dd62ed3e14610749578063de026dc71461078257600080fd5b8063b4b511b5146106f4578063b534863d14610707578063b705b9381461071057600080fd5b806390f5e8b611610171578063a457c2d71161014b578063a457c2d714610686578063a9059cbb14610699578063ab9a6171146106ac578063b2ed3e75146106e157600080fd5b806390f5e8b61461064757806395d89b411461065a578063967a29fd1461067c57600080fd5b806373b82fb014610577578063760721ff1461058a57806376b10b141461059357806379502c55146105a65780638b58c64c146105f45780638f32d59b1461063f57600080fd5b806324d34b30116102925780633a0ee33811610230578063531df5b51161020a578063531df5b51461050b57806359ed359c1461051e5780635dd857711461052657806370a082311461054e57600080fd5b80633a0ee338146104dc57806342966c68146104e55780634d237730146104f857600080fd5b8063313ce5671161026c578063313ce5671461049057806332cb6b0c1461049857806339509351146104a6578063397148d3146104b957600080fd5b806324d34b30146104715780632d47eda7146104795780632fa9b2991461048257600080fd5b806310fd272e116102ff5780631f587868116102d95780631f5878681461043a57806322e1f32b1461044d57806323b872dd14610456578063247fc62e1461046957600080fd5b806310fd272e1461040e57806313581aa31461041b57806318160ddd1461043157600080fd5b806306fdde0314610347578063077aa7e31461038b578063095ea7b3146103a2578063096844a6146103c55780630b3448a8146103ce5780630fe6c2a9146103e3575b600080fd5b6103756040518060400160405280600f81526020016e4d6574614875622046696e616e636560881b81525081565b6040516103829190613250565b60405180910390f35b610394600c5481565b604051908152602001610382565b6103b56103b03660046132ba565b610826565b6040519015158152602001610382565b610394600e5481565b6103e16103dc3660046132e6565b61083c565b005b6014546103f6906001600160a01b031681565b6040516001600160a01b039091168152602001610382565b61039465394c549ef00081565b61042361088f565b60405161038292919061333e565b610394600a5481565b6103b561044836600461336c565b610948565b610394600d5481565b6103b5610464366004613385565b610a0b565b6103e1610a5e565b6103e1610bfc565b61039460115481565b61039466023cfb4e35600081565b610394600681565b61039466027ca57357c00081565b6103b56104b43660046132ba565b610c2d565b6103b56104c73660046132e6565b60076020526000908152604090205460ff1681565b61039460105481565b6103e16104f336600461336c565b610c64565b6013546103f6906001600160a01b031681565b6103e16105193660046133d5565b610cc9565b6103b5610d6c565b6105396105343660046133f1565b610d8a565b60408051928352901515602083015201610382565b61039461055c3660046132e6565b6001600160a01b031660009081526005602052604090205490565b6103e1610585366004613434565b610e0a565b610394600f5481565b6103e16105a13660046134b2565b610e98565b6015546016546017546018546105c89392919060ff8082169161010090041685565b60408051958652602086019490945292840191909152151560608301521515608082015260a001610382565b61062a6106023660046132e6565b6001600160a01b03166000908152601c6020908152604080832054601b909252909120549091565b60408051928352602083019190915201610382565b6103b5610fb7565b6103e16106553660046132e6565b610fcc565b6103756040518060400160405280600381526020016226a2a760e91b81525081565b6103946213c68081565b6103b56106943660046132ba565b611081565b6103b56106a73660046132ba565b6110b8565b6105396106ba3660046133f1565b60086020908152600092835260408084209091529082529020805460019091015460ff1682565b6103e16106ef366004613434565b6110c5565b6103e161070236600461353f565b61116b565b610394600b5481565b6103e161071e3660046132ba565b61126a565b6103e1610731366004613590565b6112aa565b6103e16107443660046132e6565b61131a565b6103946107573660046135ad565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6103b561079036600461336c565b6113cf565b6103e161146d565b61039465065dd083700081565b6103e16107b83660046135db565b6115ab565b6012546103f6906001600160a01b031681565b6103946107de3660046135fd565b60096020526000908152604090205481565b6103b56107fe3660046132e6565b601d6020526000908152604090205460ff1681565b6004546103f6906001600160a01b031681565b6000610833338484611675565b50600192915050565b610844610fb7565b6108695760405162461bcd60e51b815260040161086090613618565b60405180910390fd5b601280546001600160a01b0319166001600160a01b03831617905561088c61173f565b50565b60608060156004016015600501818054806020026020016040519081016040528092919081815260200182805480156108e757602002820191906000526020600020905b8154815260200190600101908083116108d3575b505050505091508080548060200260200160405190810160405280929190818152602001828054801561093957602002820191906000526020600020905b815481526020019060010190808311610925575b50505050509050915091509091565b6004546000906001600160a01b031633146109755760405162461bcd60e51b815260040161086090613638565b600e5482600f546109869190613685565b11156109e05760405162461bcd60e51b815260206004820152602360248201527f4d6178207374616b696e6720616c6c6f636174696f6e206861642072656c65616044820152621cd95960ea1b6064820152608401610860565b81600f60008282546109f29190613685565b90915550610a0290503383611a6e565b5060015b919050565b6000610a18848484611b45565b6001600160a01b038416600090815260066020908152604080832033808552925290912054610a53918691610a4e90869061369d565b611675565b5060015b9392505050565b6002546001600160a01b0316336001600160a01b03161480610a835750610a83610fb7565b610a9f5760405162461bcd60e51b815260040161086090613638565b6000600b54118015610ab25750600b5443115b610af65760405162461bcd60e51b8152602060048201526015602482015274506c656173652077616974206d6f72652074696d6560581b6044820152606401610860565b6000610b06600c6213c6806136b4565b600b54610b139190613685565b9050600c548111610b725760405162461bcd60e51b815260206004820152602360248201527f446576656c6f706d656e7420616c6c6f636174696f6e206861642072656c65616044820152621cd95960ea1b6064820152608401610860565b600081431015610b9457600c54610b89904361369d565b43600c559050610ba9565b600c54610ba1908361369d565b600c83905590505b6000600a610bbb600c6213c6806136b4565b83610bcd65065dd083700060086136b4565b610bd791906136b4565b610be191906136d3565b610beb91906136d3565b9050610bf73382611a6e565b505050565b610c04610fb7565b610c205760405162461bcd60e51b815260040161086090613618565b6018805461ff0019169055565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610833918590610a4e908690613685565b33600090815260056020526040902054610c7f90829061369d565b33600090815260056020526040902055600a54610c9d90829061369d565b600a5560405181815260009033906000805160206138f38339815191529060200160405180910390a350565b610cd1610fb7565b610ced5760405162461bcd60e51b815260040161086090613618565b620186a0811115610d2f5760405162461bcd60e51b815260206004820152600c60248201526b11185d18481a5b9d985b1a5960a21b6044820152606401610860565b8060096000846003811115610d4657610d466136f5565b6003811115610d5757610d576136f5565b81526020810191909152604001600020555050565b600080546001600160a01b0316335b6001600160a01b031614905090565b6001600160a01b03821660009081526008602052604081208190819081856003811115610db957610db96136f5565b6003811115610dca57610dca6136f5565b815260208082019290925260409081016000208151808301909252805480835260019091015460ff161515919092018190529093509150505b9250929050565b610e12610fb7565b610e2e5760405162461bcd60e51b815260040161086090613618565b6001600160a01b0382166000818152601d6020908152604091829020805460ff191685151590811790915582519384529083015242908201527feee8fef4362fd10f32dff2866711b0d994609b21908388f341b56ed959d72f139060600160405180910390a15050565b610ea0610fb7565b610ebc5760405162461bcd60e51b815260040161086090613618565b6064851115610efc5760405162461bcd60e51b815260206004820152600c60248201526b11185d18481a5b9d985b1a5960a21b6044820152606401610860565b828114610f405760405162461bcd60e51b815260206004820152601260248201527114da185c9ac819185d18481a5b9d985b1a5960721b6044820152606401610860565b601587905560168690556017859055610f5b601985856131f0565b50610f68601a83836131f0565b507f2e85128c73c4d09fa6895cb2c37f1de464fe07688108f4a95e17f29e2f5d77728787878787878742604051610fa6989796959493929190613741565b60405180910390a150505050505050565b6001546000906001600160a01b031633610d7b565b610fd4610d6c565b6110095760405162461bcd60e51b81526020600482015260066024820152656f6e6c79426b60d01b6044820152606401610860565b6001600160a01b03811661105f5760405162461bcd60e51b815260206004820152601960248201527f546f6b656e417574683a20696e76616c6964206e6577206d6e000000000000006044820152606401610860565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610833918590610a4e90869061369d565b6000610833338484611b45565b6110cd610fb7565b6110e95760405162461bcd60e51b815260040161086090613618565b601854610100900460ff166111405760405162461bcd60e51b815260206004820152601c60248201527f57616974696e672066756e6374696f6e2069732064697361626c6564000000006044820152606401610860565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b611173610fb7565b61118f5760405162461bcd60e51b815260040161086090613618565b620186a08211156111d75760405162461bcd60e51b81526020600482015260126024820152711c195c98d95b9d1859d9481a5b9d985b1a5960721b6044820152606401610860565b604051806040016040528083815260200182151581525060086000866001600160a01b03166001600160a01b031681526020019081526020016000206000856003811115611227576112276136f5565b6003811115611238576112386136f5565b8152602080820192909252604001600020825181559101516001909101805460ff191691151591909117905550505050565b611272610fb7565b61128e5760405162461bcd60e51b815260040161086090613618565b6001600160a01b039091166000908152601c6020526040902055565b6112b2610fb7565b6112ce5760405162461bcd60e51b815260040161086090613618565b6018805460ff1916821515908117909155604080519182524260208301527f16ee87eb79321397c0527468f5396e8233c7575357c435efb18a33edcf7d8189910160405180910390a150565b611322610d6c565b6113575760405162461bcd60e51b81526020600482015260066024820152656f6e6c79426b60d01b6044820152606401610860565b6001600160a01b0381166113ad5760405162461bcd60e51b815260206004820152601960248201527f546f6b656e417574683a20696e76616c6964206e657720626b000000000000006044820152606401610860565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6003546000906001600160a01b031633146113fc5760405162461bcd60e51b815260040161086090613638565b6010548260115461140d9190613685565b111561145b5760405162461bcd60e51b815260206004820152601e60248201527f4d617820434c5320616c6c6f636174696f6e20686164207265616368656400006044820152606401610860565b81601160008282546109f29190613685565b611475610fb7565b6114915760405162461bcd60e51b815260040161086090613618565b600b54156114f05760405162461bcd60e51b815260206004820152602660248201527f56657374696e67446576656c6f706d656e7420686164207374617274656420616044820152656c726561647960d01b6064820152608401610860565b6002546001600160a01b03166115575760405162461bcd60e51b815260206004820152602660248201527f506c6561736520736574757020646576656c6f706d656e74206164647265737360448201526508199a5c9cdd60d21b6064820152608401610860565b6115656213c68060016136b4565b61156f9043613685565b600b819055600c556002546115a9906001600160a01b0316606461159a65065dd083700060146136b4565b6115a491906136d3565b611a6e565b565b6115b3610fb7565b6115cf5760405162461bcd60e51b815260040161086090613618565b66023cfb4e356000600e54111561161f5760405162461bcd60e51b815260206004820152601460248201527314dd185ada5b99c819185d18481a5b9d985b1a5960621b6044820152606401610860565b65394c549ef000601054111561166a5760405162461bcd60e51b815260206004820152601060248201526f10d314c819185d18481a5b9d985b1a5960821b6044820152606401610860565b600e91909155601055565b6001600160a01b0382166116cb5760405162461bcd60e51b815260206004820181905260248201527f43616e206e6f7420617070726f766520666f72207a65726f20616464726573736044820152606401610860565b6001600160a01b0383166116de57600080fd5b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60125460405163349f642f60e11b81526020600482015260056024820152641d985d5b1d60da1b60448201526001600160a01b039091169063693ec85e9060640160206040518083038186803b15801561179857600080fd5b505afa1580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d09190613790565b600480546001600160a01b039283166001600160a01b031990911617815560125460405163349f642f60e11b815292169163693ec85e9161183091016020808252600a90820152693a30bc26b0b730b3b2b960b11b604082015260600190565b60206040518083038186803b15801561184857600080fd5b505afa15801561185c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118809190613790565b601380546001600160a01b0319166001600160a01b0392831617905560125460405163349f642f60e11b815291169063693ec85e906118c1906004016137ad565b60206040518083038186803b1580156118d957600080fd5b505afa1580156118ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119119190613790565b601480546001600160a01b0319166001600160a01b0392831617905560125460405163349f642f60e11b815291169063693ec85e90611952906004016137ca565b60206040518083038186803b15801561196a57600080fd5b505afa15801561197e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a29190613790565b600380546001600160a01b0319166001600160a01b0392831617905560125460405163349f642f60e11b815260206004820152600b60248201526a19195d995b1bdc1b595b9d60aa1b604482015291169063693ec85e9060640160206040518083038186803b158015611a1457600080fd5b505afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613790565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b611a7782611dce565b66027ca57357c00081600a54611a8d9190613685565b1115611acc5760405162461bcd60e51b815260206004820152600e60248201526d105b5bdd5b9d081a5b9d985b1a5960921b6044820152606401610860565b6001600160a01b03821660009081526005602052604081208054839290611af4908490613685565b9250508190555080600a6000828254611b0d9190613685565b90915550506040518181526001600160a01b038316906000906000805160206138f38339815191529060200160405180910390a35050565b611b4e83611dce565b6001600160a01b03831660009081526005602052604081208054839290611b7690849061369d565b9091555060009050611b89848484611e49565b90508015611c2f57611b9b818361369d565b6001600160a01b03841660009081526005602052604081208054909190611bc3908490613685565b90915550506013546001600160a01b031660009081526005602052604081208054839290611bf2908490613685565b90915550506013546040518281526001600160a01b03918216918616906000805160206138f38339815191529060200160405180910390a3611c5d565b6001600160a01b03831660009081526005602052604081208054849290611c57908490613685565b90915550505b6001600160a01b038316611c7d5781600a54611c79919061369d565b600a555b6004546001600160a01b0385811691161415611d905760048054604080516325ca7a8760e11b815290516001600160a01b0390921692633202699d928792633b9aca00928692634b94f50e928083019260209291829003018186803b158015611ce557600080fd5b505afa158015611cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1d91906137e7565b611d2790876136b4565b611d3191906136d3565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015611d7757600080fd5b505af1158015611d8b573d6000803e3d6000fd5b505050505b6001600160a01b038084169085166000805160206138f3833981519152611db7848661369d565b60405190815260200160405180910390a350505050565b601854610100900460ff1615611e26576001600160a01b03811660009081526007602052604090205460ff16158015611e0a575060185460ff16155b61088c5760405162461bcd60e51b815260040161086090613800565b60185460ff161561088c5760405162461bcd60e51b815260040161086090613800565b6001600160a01b0383166000908152601d602052604081205460ff1680611e8857506001600160a01b0383166000908152601d602052604090205460ff165b80611f34575060125460405163349f642f60e11b81526020600482015260056024820152641d985d5b1d60da1b60448201526001600160a01b039091169063693ec85e9060640160206040518083038186803b158015611ee757600080fd5b505afa158015611efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1f9190613790565b6001600160a01b0316836001600160a01b0316145b80611fcd575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e90611f68906004016137ca565b60206040518083038186803b158015611f8057600080fd5b505afa158015611f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb89190613790565b6001600160a01b0316846001600160a01b0316145b80612066575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e90612001906004016137ca565b60206040518083038186803b15801561201957600080fd5b505afa15801561202d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120519190613790565b6001600160a01b0316836001600160a01b0316145b806120ff575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e9061209a906004016137ad565b60206040518083038186803b1580156120b257600080fd5b505afa1580156120c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ea9190613790565b6001600160a01b0316846001600160a01b0316145b80612198575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e90612133906004016137ad565b60206040518083038186803b15801561214b57600080fd5b505afa15801561215f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121839190613790565b6001600160a01b0316836001600160a01b0316145b8061224b575060125460405163349f642f60e11b815260206004820152600c60248201526b39b430b932a6b0b730b3b2b960a11b60448201526001600160a01b039091169063693ec85e9060640160206040518083038186803b1580156121fe57600080fd5b505afa158015612212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122369190613790565b6001600160a01b0316846001600160a01b0316145b806122fe575060125460405163349f642f60e11b815260206004820152600c60248201526b39b430b932a6b0b730b3b2b960a11b60448201526001600160a01b039091169063693ec85e9060640160206040518083038186803b1580156122b157600080fd5b505afa1580156122c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e99190613790565b6001600160a01b0316836001600160a01b0316145b80612430575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e9061233290600401613841565b60206040518083038186803b15801561234a57600080fd5b505afa15801561235e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123829190613790565b6001600160a01b0316846001600160a01b0316148015612430575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e906123cb9060040161385f565b60206040518083038186803b1580156123e357600080fd5b505afa1580156123f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241b9190613790565b6001600160a01b0316836001600160a01b0316145b80612562575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e906124649060040161385f565b60206040518083038186803b15801561247c57600080fd5b505afa158015612490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b49190613790565b6001600160a01b0316846001600160a01b0316148015612562575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e906124fd90600401613841565b60206040518083038186803b15801561251557600080fd5b505afa158015612529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254d9190613790565b6001600160a01b0316836001600160a01b0316145b1561256f57506000610a57565b600080601360009054906101000a90046001600160a01b03166001600160a01b031663fff5a9fb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c057600080fd5b505afa1580156125d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f891906137e7565b612604856103e86136b4565b61260e91906136d3565b60125460405163349f642f60e11b81529192506000916001600160a01b039091169063693ec85e9061264290600401613841565b60206040518083038186803b15801561265a57600080fd5b505afa15801561266e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126929190613790565b6001600160a01b0316876001600160a01b0316148061273f575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e906126da9060040161385f565b60206040518083038186803b1580156126f257600080fd5b505afa158015612706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272a9190613790565b6001600160a01b0316876001600160a01b0316145b905080156128a5576001600160a01b03861660009081526008602090815260408083208380529091529020600181015490935060ff16156127ac5782546127875760006127a2565b8254620186a09061279890876136b4565b6127a291906136d3565b9350505050610a57565b60145460405163b941bf9f60e01b81526001600160a01b0388811660048301529091169063b941bf9f9060240160206040518083038186803b1580156127f157600080fd5b505afa158015612805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128299190613880565b801561285e57506000805260096020527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b5415155b156128a557620186a060096000805b600381111561287e5761287e6136f5565b815260200190815260200160002054620186a061289b919061369d565b61279890846136b4565b6004546001600160a01b0388811691161415612aea576001600160a01b0386166000908152600860209081526040808320600384529091529020600181015490935060ff16156128fc5782546127875760006127a2565b60195415612a235760048054604051636386c1c760e01b81526001600160a01b038981169382019390935260009290911690636386c1c790602401604080518083038186803b15801561294e57600080fd5b505afa158015612962573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612986919061389d565b915060009050805b6019548110156129d35760198054829081106129ac576129ac6138c1565b906000526020600020015483106129c1578091505b806129cb816138d7565b91505061298e565b508015612a2057620186a0601560050182815481106129f4576129f46138c1565b906000526020600020015488612a0a91906136b4565b612a1491906136d3565b95505050505050610a57565b50505b60145460405163b941bf9f60e01b81526001600160a01b0388811660048301529091169063b941bf9f9060240160206040518083038186803b158015612a6857600080fd5b505afa158015612a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa09190613880565b8015612ad65750600360005260096020527fc575c31fea594a6eb97c8e9d3f9caee4c16218c6ef37e923234c0fe9014a61e75415155b15612aea57620186a060096000600361286d565b60125460405163349f642f60e11b81526000916001600160a01b03169063693ec85e90612b199060040161385f565b60206040518083038186803b158015612b3157600080fd5b505afa158015612b45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b699190613790565b6001600160a01b0316876001600160a01b03161480612c16575060125460405163349f642f60e11b81526001600160a01b039091169063693ec85e90612bb190600401613841565b60206040518083038186803b158015612bc957600080fd5b505afa158015612bdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c019190613790565b6001600160a01b0316876001600160a01b0316145b90508015612f06576001600160a01b0388166000908152600860209081526040808320600180855292529091209081015490945060ff1615612c85578354612c5f576000612c7a565b8354620186a090612c7090886136b4565b612c7a91906136d3565b945050505050610a57565b6013546001600160a01b03898116911614612d4257612d4288633b9aca00600460009054906101000a90046001600160a01b03166001600160a01b0316634b94f50e6040518163ffffffff1660e01b815260040160206040518083038186803b158015612cf157600080fd5b505afa158015612d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2991906137e7565b612d33908a6136b4565b612d3d91906136d3565b613076565b60145460405163b941bf9f60e01b81526001600160a01b038a811660048301529091169063b941bf9f9060240160206040518083038186803b158015612d8757600080fd5b505afa158015612d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dbf9190613880565b8015612df55750600160005260096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a365415155b15612e4c57600160005260096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a3654620186a090612e35908261369d565b612e3f90856136b4565b612e4991906136d3565b92505b60048054604051636386c1c760e01b81526001600160a01b038b81169382019390935260009290911690636386c1c790602401604080518083038186803b158015612e9657600080fd5b505afa158015612eaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ece919061389d565b50601754909150606490612ee290836136b4565b612eec91906136d3565b8710612f0057612efd6002886136d3565b93505b50613029565b6004546001600160a01b03898116911614801590612f9c575060145460405163b941bf9f60e01b81526001600160a01b038a811660048301529091169063b941bf9f9060240160206040518083038186803b158015612f6457600080fd5b505afa158015612f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9c9190613880565b8015612fd25750600260005260096020527f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c35415155b1561302957600260005260096020527f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c354620186a090613012908261369d565b61301c90856136b4565b61302691906136d3565b92505b6001600160a01b0388166000908152600860209081526040808320600284529091529020600181015490945060ff161561306a578354612c5f576000612c7a565b50909695505050505050565b336000908152601c6020526040902054156130ef57336000908152601c60205260409020548111156130ea5760405162461bcd60e51b815260206004820152601a60248201527f4d454e3a20616d6f756e7420726561636820736f6674206361700000000000006044820152606401610860565b613141565b6016548111156131415760405162461bcd60e51b815260206004820152601a60248201527f4d454e3a20616d6f756e742072656163682068617264206361700000000000006044820152606401610860565b6001600160a01b0382166000908152601b6020526040902054156131d3576015546001600160a01b0383166000908152601b6020526040902054613185904261369d565b10156131d35760405162461bcd60e51b815260206004820152601a60248201527f4d454e3a20706c656173652077616974206d6f72652074696d650000000000006044820152606401610860565b506001600160a01b03166000908152601b60205260409020429055565b82805482825590600052602060002090810192821561322b579160200282015b8281111561322b578235825591602001919060010190613210565b5061323792915061323b565b5090565b5b80821115613237576000815560010161323c565b600060208083528351808285015260005b8181101561327d57858101830151858201604001528201613261565b8181111561328f576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461088c57600080fd5b600080604083850312156132cd57600080fd5b82356132d8816132a5565b946020939093013593505050565b6000602082840312156132f857600080fd5b8135610a57816132a5565b600081518084526020808501945080840160005b8381101561333357815187529582019590820190600101613317565b509495945050505050565b6040815260006133516040830185613303565b82810360208401526133638185613303565b95945050505050565b60006020828403121561337e57600080fd5b5035919050565b60008060006060848603121561339a57600080fd5b83356133a5816132a5565b925060208401356133b5816132a5565b929592945050506040919091013590565b803560048110610a0657600080fd5b600080604083850312156133e857600080fd5b6132d8836133c6565b6000806040838503121561340457600080fd5b823561340f816132a5565b915061341d602084016133c6565b90509250929050565b801515811461088c57600080fd5b6000806040838503121561344757600080fd5b8235613452816132a5565b9150602083013561346281613426565b809150509250929050565b60008083601f84011261347f57600080fd5b50813567ffffffffffffffff81111561349757600080fd5b6020830191508360208260051b8501011115610e0357600080fd5b600080600080600080600060a0888a0312156134cd57600080fd5b873596506020880135955060408801359450606088013567ffffffffffffffff808211156134fa57600080fd5b6135068b838c0161346d565b909650945060808a013591508082111561351f57600080fd5b5061352c8a828b0161346d565b989b979a50959850939692959293505050565b6000806000806080858703121561355557600080fd5b8435613560816132a5565b935061356e602086016133c6565b925060408501359150606085013561358581613426565b939692955090935050565b6000602082840312156135a257600080fd5b8135610a5781613426565b600080604083850312156135c057600080fd5b82356135cb816132a5565b91506020830135613462816132a5565b600080604083850312156135ee57600080fd5b50508035926020909101359150565b60006020828403121561360f57600080fd5b610a57826133c6565b60208082526006908201526537b7363ca6b760d11b604082015260600190565b60208082526019908201527f546f6b656e417574683a20696e76616c69642063616c6c657200000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156136985761369861366f565b500190565b6000828210156136af576136af61366f565b500390565b60008160001904831182151516156136ce576136ce61366f565b500290565b6000826136f057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fd5b81835260006001600160fb1b0383111561372457600080fd5b8260051b8083602087013760009401602001938452509192915050565b88815287602082015286604082015260c06060820152600061376760c08301878961370b565b828103608084015261377a81868861370b565b9150508260a08301529998505050505050505050565b6000602082840312156137a257600080fd5b8151610a57816132a5565b6020808252600390820152621b1cd960ea1b604082015260600190565b602080825260039082015262636c7360e81b604082015260600190565b6000602082840312156137f957600080fd5b5051919050565b60208082526021908201527f596f752063616e206e6f7420646f207468697320617420746865206d6f6d656e6040820152601d60fa1b606082015260800190565b6020808252600490820152630737761760e41b604082015260600190565b60208082526007908201526636382a37b5b2b760c91b604082015260600190565b60006020828403121561389257600080fd5b8151610a5781613426565b600080604083850312156138b057600080fd5b505080516020909101519092909150565b634e487b7160e01b600052603260045260246000fd5b60006000198214156138eb576138eb61366f565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a2e0961bd11270be85118c47a56b8459c8cde204e4c8ab8b26ad5447ce70d1a064736f6c63430008090033

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.