ETH Price: $3,669.46 (+0.81%)

Token

ERC-20: SynthTPU (STPU)
 

Overview

Max Total Supply

100,000,000 STPU

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
900,000 STPU

Value
$0.00
0x469032221d49d5566bddf631da4cfd7ba1251429
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SynthTPU

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-12
*/

/** 
Website: http://synthtpu.cloud
Telegram: https://t.me/SynthTPU
Twitter: https://twitter.com/SynthTPU
**/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

library Address {
  function isContract(address account) internal view returns (bool) {
    return account.code.length > 0;
  }

  function sendValue(address payable recipient, uint256 amount) internal {
    require(address(this).balance >= amount, "Address: insufficient balance");

    (bool success, ) = recipient.call{value: amount}("");
    require(
      success,
      "Address: unable to send value, recipient may have reverted"
    );
  }

  function functionCall(
    address target,
    bytes memory data
  ) internal returns (bytes memory) {
    return
      functionCallWithValue(target, data, 0, "Address: low-level call failed");
  }

  function functionCall(
    address target,
    bytes memory data,
    string memory errorMessage
  ) internal returns (bytes memory) {
    return functionCallWithValue(target, data, 0, errorMessage);
  }

  function functionCallWithValue(
    address target,
    bytes memory data,
    uint256 value
  ) internal returns (bytes memory) {
    return
      functionCallWithValue(
        target,
        data,
        value,
        "Address: low-level call with value failed"
      );
  }

  function functionCallWithValue(
    address target,
    bytes memory data,
    uint256 value,
    string memory errorMessage
  ) internal returns (bytes memory) {
    require(
      address(this).balance >= value,
      "Address: insufficient balance for call"
    );
    (bool success, bytes memory returndata) = target.call{value: value}(data);
    return
      verifyCallResultFromTarget(target, success, returndata, errorMessage);
  }

  function functionStaticCall(
    address target,
    bytes memory data
  ) internal view returns (bytes memory) {
    return
      functionStaticCall(target, data, "Address: low-level static call failed");
  }

  function functionStaticCall(
    address target,
    bytes memory data,
    string memory errorMessage
  ) internal view returns (bytes memory) {
    (bool success, bytes memory returndata) = target.staticcall(data);
    return
      verifyCallResultFromTarget(target, success, returndata, errorMessage);
  }

  function functionDelegateCall(
    address target,
    bytes memory data
  ) internal returns (bytes memory) {
    return
      functionDelegateCall(
        target,
        data,
        "Address: low-level delegate call failed"
      );
  }

  function functionDelegateCall(
    address target,
    bytes memory data,
    string memory errorMessage
  ) internal returns (bytes memory) {
    (bool success, bytes memory returndata) = target.delegatecall(data);
    return
      verifyCallResultFromTarget(target, success, returndata, errorMessage);
  }

  function verifyCallResultFromTarget(
    address target,
    bool success,
    bytes memory returndata,
    string memory errorMessage
  ) internal view returns (bytes memory) {
    if (success) {
      if (returndata.length == 0) {
        // only check isContract if the call was successful and the return data is empty
        // otherwise we already know that it was a contract
        require(isContract(target), "Address: call to non-contract");
      }
      return returndata;
    } else {
      _revert(returndata, errorMessage);
    }
  }

  function verifyCallResult(
    bool success,
    bytes memory returndata,
    string memory errorMessage
  ) internal pure returns (bytes memory) {
    if (success) {
      return returndata;
    } else {
      _revert(returndata, errorMessage);
    }
  }

  function _revert(
    bytes memory returndata,
    string memory errorMessage
  ) private pure {
    // Look for revert reason and bubble it up if present
    if (returndata.length > 0) {
      // The easiest way to bubble the revert reason is using memory via assembly
      /// @solidity memory-safe-assembly
      assembly {
        let returndata_size := mload(returndata)
        revert(add(32, returndata), returndata_size)
      }
    } else {
      revert(errorMessage);
    }
  }
}

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

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

interface IERC20 {
  function totalSupply() external view returns (uint256);

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

  function transfer(address recipient, uint256 amount) external returns (bool);

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

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

  function transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) external returns (bool);

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

interface IDEXFactory {
  function createPair(
    address tokenA,
    address tokenB
  ) external returns (address pair);
}

interface IDEXRouter {
  function factory() external pure returns (address);

  function WETH() external pure returns (address);

  function addLiquidityETH(
    address token,
    uint amountTokenDesired,
    uint amountTokenMin,
    uint amountETHMin,
    address to,
    uint deadline
  ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

  function swapExactTokensForETHSupportingFeeOnTransferTokens(
    uint amountIn,
    uint amountOutMin,
    address[] calldata path,
    address to,
    uint deadline
  ) external;
}

abstract contract Ownable is Context {
  address private _owner;

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

  constructor() {
    _transferOwnership(_msgSender());
  }

  modifier onlyOwner() {
    _checkOwner();
    _;
  }

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

  function _checkOwner() internal view virtual {
    require(owner() == _msgSender(), "Ownable: caller is not the owner");
  }

  function renounceOwnership() public virtual onlyOwner {
    _transferOwnership(address(0));
  }

  function transferOwnership(address newOwner) public virtual onlyOwner {
    require(newOwner != address(0), "Ownable: new owner is the zero address");
    _transferOwnership(newOwner);
  }

  function _transferOwnership(address newOwner) internal virtual {
    address oldOwner = _owner;
    _owner = newOwner;
    emit OwnershipTransferred(oldOwner, newOwner);
  }
}

contract SynthTPU is IERC20, Ownable {
  using Address for address;

  address DEAD = 0x000000000000000000000000000000000000dEaD;
  address ZERO = 0x0000000000000000000000000000000000000000;

  string constant _name = "SynthTPU";
  string constant _symbol = "STPU";
  uint8 constant _decimals = 18;

  uint256 _totalSupply = 100_000_000 * (10 ** _decimals);
  uint256 _maxBuyTxAmount = (_totalSupply * 1) / 100;
  uint256 _maxSellTxAmount = (_totalSupply * 1) / 100;
  uint256 _maxWalletSize = (_totalSupply * 1) / 100;

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

  mapping(uint256 => uint256) public swapBackCounter;
  uint256 public swapBackRateLimit = 3;

  mapping(address => bool) public isFeeExempt;
  mapping(address => bool) public isTxLimitExempt;
  mapping(address => bool) public isLiquidityCreator;

  uint256 marketingBuyFee = 1000;
  uint256 marketingSellFee = 6000;
  uint256 liquidityBuyFee = 0;
  uint256 liquiditySellFee = 0;
  uint256 totalBuyFee = marketingBuyFee + liquidityBuyFee;
  uint256 totalSellFee = marketingSellFee + liquiditySellFee;
  uint256 feeDenominator = 10000;

  bool public transferTax = false;

  address payable public liquidityFeeReceiver = payable(0x895E3541dE993590E101028d7720Eb67315C46A5);
  address payable public marketingFeeReceiver = payable(0x895E3541dE993590E101028d7720Eb67315C46A5);

  IDEXRouter public router;
  address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
  mapping(address => bool) liquidityPools;
  address public pair;

  mapping(address => uint256) public blacklist;
  uint256 public blacklistCount;

  uint256 public launchBlock;
  uint256 public launchTimestamp;
  bool isTradingEnabled = false;

  bool public swapEnabled = false;
  uint256 public swapThreshold = _totalSupply / 1000;
  uint256 public swapAtMinimum = _totalSupply / 10000;
  bool inSwap;

  modifier swapping() {
    inSwap = true;
    _;
    inSwap = false;
  }

  mapping(address => bool) teamMembers;

  modifier onlyTeam() {
    require(
      teamMembers[_msgSender()] || msg.sender == owner(),
      "Caller is not a team member"
    );
    _;
  }

  event WalletBlacklisted(address, address, uint256);

  constructor() {
    router = IDEXRouter(routerAddress);
    pair = IDEXFactory(router.factory()).createPair(
      router.WETH(),
      address(this)
    );
    liquidityPools[pair] = true;
    _allowances[owner()][routerAddress] = type(uint256).max;
    _allowances[address(this)][routerAddress] = type(uint256).max;

    isFeeExempt[owner()] = true;
    isLiquidityCreator[owner()] = true;

    isTxLimitExempt[address(this)] = true;
    isTxLimitExempt[owner()] = true;
    isTxLimitExempt[routerAddress] = true;
    isTxLimitExempt[DEAD] = true;

    _balances[owner()] = _totalSupply;

    emit Transfer(address(0), owner(), _totalSupply);
  }

  receive() external payable {}

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

  function decimals() external pure returns (uint8) {
    return _decimals;
  }

  function symbol() external pure returns (string memory) {
    return _symbol;
  }

  function name() external pure returns (string memory) {
    return _name;
  }

  function getOwner() external view returns (address) {
    return owner();
  }

  function maxBuyTxTokens() external view returns (uint256) {
    return _maxBuyTxAmount / (10 ** _decimals);
  }

  function maxSellTxTokens() external view returns (uint256) {
    return _maxSellTxAmount / (10 ** _decimals);
  }

  function maxWalletTokens() external view returns (uint256) {
    return _maxWalletSize / (10 ** _decimals);
  }

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

  function allowance(
    address holder,
    address spender
  ) external view override returns (uint256) {
    return _allowances[holder][spender];
  }

  function approve(
    address spender,
    uint256 amount
  ) public override returns (bool) {
    _allowances[msg.sender][spender] = amount;
    emit Approval(msg.sender, spender, amount);
    return true;
  }

  function approveMaxAmount(address spender) external returns (bool) {
    return approve(spender, type(uint256).max);
  }

  function setTeamMember(address _team, bool _enabled) external onlyOwner {
    teamMembers[_team] = _enabled;
  }

  function airdrop(
    address[] calldata addresses,
    uint256[] calldata amounts
  ) external onlyOwner {
    require(addresses.length > 0 && amounts.length == addresses.length);
    address from = msg.sender;

    for (uint i = 0; i < addresses.length; i++) {
      if (!liquidityPools[addresses[i]] && !isLiquidityCreator[addresses[i]]) {
        _basicTransfer(from, addresses[i], amounts[i] * (10 ** _decimals));
      }
    }
  }

  function clearStuckBalance(
    uint256 amountPercentage,
    address adr
  ) external onlyTeam {
    uint256 amountETH = address(this).balance;

    if (amountETH > 0) {
      (bool sent, ) = adr.call{value: (amountETH * amountPercentage) / 100}("");
      require(sent, "Failed to transfer funds");
    }
  }

  function blacklistWallets(
    address[] calldata _wallets,
    bool _blacklist
  ) external onlyTeam {
    for (uint i = 0; i < _wallets.length; i++) {
      if (_blacklist) {
        blacklistCount++;
        emit WalletBlacklisted(tx.origin, _wallets[i], block.number);
      } else {
        if (blacklist[_wallets[i]] != 0) blacklistCount--;
      }
      blacklist[_wallets[i]] = _blacklist ? block.number : 0;
    }
  }

  function transfer(
    address recipient,
    uint256 amount
  ) external override returns (bool) {
    return _transferFrom(msg.sender, recipient, amount);
  }

  function transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) external override returns (bool) {
    if (_allowances[sender][msg.sender] != type(uint256).max) {
      _allowances[sender][msg.sender] =
        _allowances[sender][msg.sender] -
        amount;
    }

    return _transferFrom(sender, recipient, amount);
  }

  function _transferFrom(
    address sender,
    address recipient,
    uint256 amount
  ) internal returns (bool) {
    require(sender != address(0), "ERC20: transfer from 0x0");
    require(recipient != address(0), "ERC20: transfer to 0x0");
    require(amount > 0, "Amount must be > zero");
    require(_balances[sender] >= amount, "Insufficient balance");
    if (!launched() && liquidityPools[recipient]) {
      require(isLiquidityCreator[sender], "Liquidity not added yet.");
      launch();
    }
    if (!isTradingEnabled) {
      require(
        isLiquidityCreator[sender] || isLiquidityCreator[recipient],
        "Trading is not launched yet."
      );
    }

    checkTxLimit(sender, recipient, amount);

    if (!liquidityPools[recipient] && recipient != DEAD) {
      if (!isTxLimitExempt[recipient]) {
        checkWalletLimit(recipient, amount);
      }
    }

    if (inSwap) {
      return _basicTransfer(sender, recipient, amount);
    }

    _balances[sender] = _balances[sender] - amount;

    uint256 amountReceived = amount;

    if (shouldTakeFee(sender, recipient)) {
      amountReceived = takeFee(recipient, amount);
      if (shouldSwapBack(recipient) && amount > 0) swapBack(amount);
    }

    _balances[recipient] = _balances[recipient] + amountReceived;

    emit Transfer(sender, recipient, amountReceived);
    return true;
  }

  function launched() internal view returns (bool) {
    return launchBlock != 0;
  }

  function launch() internal {
    launchBlock = block.number;
    launchTimestamp = block.timestamp;
  }

  function openTrading() external onlyTeam {
    require(!isTradingEnabled, "Can't re-open trading");
    isTradingEnabled = true;
    swapEnabled = true;
  }

  function _basicTransfer(
    address sender,
    address recipient,
    uint256 amount
  ) internal returns (bool) {
    _balances[sender] = _balances[sender] - amount;
    _balances[recipient] = _balances[recipient] + amount;
    emit Transfer(sender, recipient, amount);
    return true;
  }

  function checkWalletLimit(address recipient, uint256 amount) internal view {
    uint256 walletLimit = _maxWalletSize;
    require(
      _balances[recipient] + amount <= walletLimit,
      "Amount exceeds the max wallet size."
    );
  }

  function checkTxLimit(
    address sender,
    address recipient,
    uint256 amount
  ) internal view {
    if (isTxLimitExempt[sender] || isTxLimitExempt[recipient]) return;

    require(
      amount <= (liquidityPools[sender] ? _maxBuyTxAmount : _maxSellTxAmount),
      "Amount exceeds the tx limit."
    );

    require(blacklist[sender] == 0, "Wallet blacklisted!");
  }

  function shouldTakeFee(
    address sender,
    address recipient
  ) public view returns (bool) {
    if (!transferTax && !liquidityPools[recipient] && !liquidityPools[sender])
      return false;
    return !isFeeExempt[sender] && !isFeeExempt[recipient];
  }

  function getTotalFee(bool selling) public view returns (uint256) {
    if (selling) return totalSellFee;
    return totalBuyFee;
  }

  function takeFee(
    address recipient,
    uint256 amount
  ) internal returns (uint256) {
    bool selling = liquidityPools[recipient];
    uint256 feeAmount = (amount * getTotalFee(selling)) / feeDenominator;

    _balances[address(this)] += feeAmount;

    return amount - feeAmount;
  }

  function shouldSwapBack(address recipient) internal view returns (bool) {
    return
      !liquidityPools[msg.sender] &&
      !inSwap &&
      swapEnabled &&
      swapBackCounter[block.number] < swapBackRateLimit &&
      liquidityPools[recipient] &&
      _balances[address(this)] >= swapAtMinimum &&
      totalBuyFee + totalSellFee > 0;
  }

  function swapBack(uint256 amount) internal swapping {
    uint256 totalFee = totalBuyFee + totalSellFee;
    uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold;
    if (_balances[address(this)] < amountToSwap)
      amountToSwap = _balances[address(this)];

    uint256 totalLiquidityFee = liquidityBuyFee + liquiditySellFee;
    uint256 amountToLiquify = ((amountToSwap * totalLiquidityFee) / 2) /
      totalFee;
    amountToSwap -= amountToLiquify;

    address[] memory path = new address[](2);
    path[0] = address(this);
    path[1] = router.WETH();

    uint256 balanceBefore = address(this).balance;

    router.swapExactTokensForETHSupportingFeeOnTransferTokens(
      amountToSwap,
      0,
      path,
      address(this),
      block.timestamp
    );

    uint256 amountETH = address(this).balance - balanceBefore;
    uint256 totalETHFee = totalFee - (totalLiquidityFee / 2);

    uint256 amountETHLiquidity = ((amountETH * totalLiquidityFee) / 2) /
      totalETHFee;
    uint256 amountETHMarketing = amountETH - amountETHLiquidity;

    if (amountETHMarketing > 0) {
      (bool sentMarketing, ) = marketingFeeReceiver.call{
        value: amountETHMarketing
      }("");
      if (!sentMarketing) {
        //Failed to transfer to marketing wallet
      }
    }

    if (amountToLiquify > 0) {
      router.addLiquidityETH{value: amountETHLiquidity}(
        address(this),
        amountToLiquify,
        0,
        0,
        liquidityFeeReceiver,
        block.timestamp
      );
    }
    swapBackCounter[block.number] = swapBackCounter[block.number] + 1;
    emit FundsDistributed(
      amountETHMarketing,
      amountETHLiquidity,
      amountToLiquify
    );
  }

  function addLiquidityPool(address lp, bool isPool) external onlyOwner {
    require(lp != pair, "Can't alter current liquidity pair");
    liquidityPools[lp] = isPool;
  }

  function setSwapBackRateLimit(uint256 rate) external onlyOwner {
    swapBackRateLimit = rate;
  }

  function setTxLimit(
    uint256 buyNumerator,
    uint256 sellNumerator,
    uint256 divisor
  ) external onlyOwner {
    require(
      buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000
    );
    _maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
    _maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
  }

  function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner {
    require(numerator > 0 && divisor > 0 && divisor <= 10000);
    _maxWalletSize = (_totalSupply * numerator) / divisor;
  }

  function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
    isFeeExempt[holder] = exempt;
  }

  function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
    isTxLimitExempt[holder] = exempt;
  }

  function setFees(
    uint256 _liquidityBuyFee,
    uint256 _liquiditySellFee,
    uint256 _marketingBuyFee,
    uint256 _marketingSellFee,
    uint256 _feeDenominator
  ) external onlyOwner {
    require(
      ((_liquidityBuyFee + _liquiditySellFee) / 2) * 2 ==
        (_liquidityBuyFee + _liquiditySellFee),
      "Liquidity fee must be an even number for rounding compatibility."
    );
    liquidityBuyFee = _liquidityBuyFee;
    liquiditySellFee = _liquiditySellFee;
    marketingBuyFee = _marketingBuyFee;
    marketingSellFee = _marketingSellFee;
    totalBuyFee = _liquidityBuyFee + _marketingBuyFee;
    totalSellFee = _liquiditySellFee + _marketingSellFee;
    feeDenominator = _feeDenominator;
    emit FeesSet(totalBuyFee, totalSellFee, feeDenominator);
  }

  function toggleTransferTax() external onlyOwner {
    transferTax = !transferTax;
  }

  function setFeeReceivers(
    address _liquidityFeeReceiver,
    address _marketingFeeReceiver
  ) external onlyOwner {
    liquidityFeeReceiver = payable(_liquidityFeeReceiver);
    marketingFeeReceiver = payable(_marketingFeeReceiver);
  }

  function setSwapBackSettings(
    bool _enabled,
    uint256 _denominator,
    uint256 _swapAtMinimum
  ) external onlyOwner {
    require(_denominator > 0);
    swapEnabled = _enabled;
    swapThreshold = _totalSupply / _denominator;
    swapAtMinimum = _swapAtMinimum * (10 ** _decimals);
  }

  function getCirculatingSupply() public view returns (uint256) {
    return _totalSupply - (balanceOf(DEAD) + balanceOf(ZERO));
  }

  event FundsDistributed(
    uint256 marketingETH,
    uint256 liquidityETH,
    uint256 liquidityTokens
  );
  event FeesSet(
    uint256 totalBuyFees,
    uint256 totalSellFees,
    uint256 denominator
  );
}

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":"totalBuyFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSellFees","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"FeesSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"}],"name":"FundsDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"WalletBlacklisted","type":"event"},{"inputs":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMaxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_blacklist","type":"bool"}],"name":"blacklistWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"adr","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLiquidityCreator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityFeeReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityBuyFee","type":"uint256"},{"internalType":"uint256","name":"_liquiditySellFee","type":"uint256"},{"internalType":"uint256","name":"_marketingBuyFee","type":"uint256"},{"internalType":"uint256","name":"_marketingSellFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setSwapBackRateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_swapAtMinimum","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyNumerator","type":"uint256"},{"internalType":"uint256","name":"sellNumerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"name":"shouldTakeFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"swapBackCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapBackRateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toggleTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b031990811661dead17909155600280549091169055620000326012600a620005ff565b62000042906305f5e10062000617565b6003556064600354600162000058919062000617565b62000064919062000631565b600455606460035460016200007a919062000617565b62000086919062000631565b600555606460035460016200009c919062000617565b620000a8919062000631565b6006556003600a556103e8600e55611770600f5560006010556000601155601054600e54620000d8919062000654565b601255601154600f54620000ed919062000654565b6013556127106014556015805474895e3541de993590e101028d7720eb67315c46a5006001600160a81b0319909116179055601680546001600160a01b031990811673895e3541de993590e101028d7720eb67315c46a51790915560188054909116737a250d5630b4cf539739df2c5dacb4c659f2488d179055601f805461ffff1916905560035462000184906103e89062000631565b60205561271060035462000199919062000631565b602155348015620001a957600080fd5b50620001b5336200049a565b601854601780546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023891906200066a565b6001600160a01b031663c9c65396601760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c091906200066a565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200030d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033391906200066a565b601a80546001600160a01b0319166001600160a01b039290921691821790556000908152601960205260408120805460ff1916600117905560001990600890620003856000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601880548416835290855283822095909555308082526008855283822086548416835285528382206000199055815483168252600b85528382208054600160ff199182168117909255835485168452600d87528584208054821683179055918352600c865284832080548316821790558254841683528483208054831682179055955483168252838220805482168717905585548316825283822080549091169095179094556003548454821685526007845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000695565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000541578160001904821115620005255762000525620004ea565b808516156200053357918102915b93841c939080029062000505565b509250929050565b6000826200055a57506001620005f9565b816200056957506000620005f9565b81600181146200058257600281146200058d57620005ad565b6001915050620005f9565b60ff841115620005a157620005a1620004ea565b50506001821b620005f9565b5060208310610133831016604e8410600b8410161715620005d2575081810a620005f9565b620005de838362000500565b8060001904821115620005f557620005f5620004ea565b0290505b92915050565b60006200061060ff84168362000549565b9392505050565b8082028115828204841417620005f957620005f9620004ea565b6000826200064f57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620005f957620005f9620004ea565b6000602082840312156200067d57600080fd5b81516001600160a01b03811681146200061057600080fd5b6127dc80620006a56000396000f3fe6080604052600436106103035760003560e01c8063893d20e811610190578063c9567bf9116100dc578063e8b574f211610095578063f2fde38b1161006f578063f2fde38b1461094a578063f84ba65d1461096a578063f887ea401461098a578063f9f92be4146109aa57600080fd5b8063e8b574f2146108dd578063e96fada21461090a578063f1f3bca31461092a57600080fd5b8063c9567bf914610817578063d00efb2f1461082c578063d088935814610842578063d58d850c14610862578063d912b2ce14610882578063dd62ed3e1461089757600080fd5b8063a845bd8611610149578063abe57e7011610123578063abe57e701461079d578063bafe446b146107bd578063bb2188b4146107d2578063bfa21d6a146107f257600080fd5b8063a845bd8614610747578063a8aa1b311461075d578063a9059cbb1461077d57600080fd5b8063893d20e81461065a5780638b42507f1461068c5780638da5cb5b146106bc57806395d89b41146106da5780639fdc800514610707578063a4b45c001461072757600080fd5b8063492a937b1161024f578063658d4b7f116102085780636ddd1713116101e25780636ddd1713146105d657806370a08231146105f5578063715018a61461062b5780638124f7ac1461064057600080fd5b8063658d4b7f1461058057806365cf7c9b146105a057806367243482146105b657600080fd5b8063492a937b146104bb57806350713935146104db57806356a227f2146104fb57806360bba03d1461051b57806360eef7411461053b57806363a803e11461056b57600080fd5b8063188d1644116102bc5780632b112e49116102965780632b112e491461043a578063313ce5671461044f578063332402f81461046b5780633f4218e01461048b57600080fd5b8063188d1644146103ef578063234e94941461040557806323b872dd1461041a57600080fd5b80630445b6671461030f57806304a66b481461033857806306fdde031461035a578063095ea7b314610394578063178a18ce146103c457806318160ddd146103da57600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032560205481565b6040519081526020015b60405180910390f35b34801561034457600080fd5b50610358610353366004612174565b6109d7565b005b34801561036657600080fd5b5060408051808201909152600881526753796e746854505560c01b60208201525b60405161032f91906121af565b3480156103a057600080fd5b506103b46103af366004612212565b610b05565b604051901515815260200161032f565b3480156103d057600080fd5b50610325600a5481565b3480156103e657600080fd5b50600354610325565b3480156103fb57600080fd5b50610325601c5481565b34801561041157600080fd5b50610325610b72565b34801561042657600080fd5b506103b461043536600461223e565b610b92565b34801561044657600080fd5b50610325610c27565b34801561045b57600080fd5b506040516012815260200161032f565b34801561047757600080fd5b506103b461048636600461227f565b610c68565b34801561049757600080fd5b506103b46104a63660046122b8565b600b6020526000908152604090205460ff1681565b3480156104c757600080fd5b506103586104d63660046122ea565b610d0f565b3480156104e757600080fd5b506103586104f636600461231f565b610dab565b34801561050757600080fd5b5061035861051636600461234b565b610e24565b34801561052757600080fd5b506103586105363660046122ea565b610f2a565b34801561054757600080fd5b506103b46105563660046122b8565b600d6020526000908152604090205460ff1681565b34801561057757600080fd5b50610325610f5d565b34801561058c57600080fd5b5061035861059b3660046122ea565b610f78565b3480156105ac57600080fd5b50610325601e5481565b3480156105c257600080fd5b506103586105d13660046123bc565b610fab565b3480156105e257600080fd5b50601f546103b490610100900460ff1681565b34801561060157600080fd5b506103256106103660046122b8565b6001600160a01b031660009081526007602052604090205490565b34801561063757600080fd5b506103586110f0565b34801561064c57600080fd5b506015546103b49060ff1681565b34801561066657600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161032f565b34801561069857600080fd5b506103b46106a73660046122b8565b600c6020526000908152604090205460ff1681565b3480156106c857600080fd5b506000546001600160a01b0316610674565b3480156106e657600080fd5b506040805180820190915260048152635354505560e01b6020820152610387565b34801561071357600080fd5b506103b46107223660046122b8565b611104565b34801561073357600080fd5b5061035861074236600461227f565b611112565b34801561075357600080fd5b5061032560215481565b34801561076957600080fd5b50601a54610674906001600160a01b031681565b34801561078957600080fd5b506103b4610798366004612212565b611152565b3480156107a957600080fd5b506103586107b8366004612428565b61115f565b3480156107c957600080fd5b506103256111ae565b3480156107de57600080fd5b506103586107ed36600461244a565b6111c9565b3480156107fe57600080fd5b506015546106749061010090046001600160a01b031681565b34801561082357600080fd5b50610358611370565b34801561083857600080fd5b50610325601d5481565b34801561084e57600080fd5b5061035861085d36600461249e565b611410565b34801561086e57600080fd5b5061035861087d3660046124d1565b611467565b34801561088e57600080fd5b50610358611474565b3480156108a357600080fd5b506103256108b236600461227f565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156108e957600080fd5b506103256108f83660046124d1565b60096020526000908152604090205481565b34801561091657600080fd5b50601654610674906001600160a01b031681565b34801561093657600080fd5b506103256109453660046124ea565b611490565b34801561095657600080fd5b506103586109653660046122b8565b6114a8565b34801561097657600080fd5b506103586109853660046122ea565b611521565b34801561099657600080fd5b50601754610674906001600160a01b031681565b3480156109b657600080fd5b506103256109c53660046122b8565b601b6020526000908152604090205481565b6109df611554565b6109e9848661251b565b60026109f5868861251b565b6109ff919061252e565b610a0a906002612550565b14610a84576040805162461bcd60e51b81526020600482015260248101919091527f4c697175696469747920666565206d75737420626520616e206576656e206e7560448201527f6d62657220666f7220726f756e64696e6720636f6d7061746962696c6974792e60648201526084015b60405180910390fd5b60108590556011849055600e839055600f829055610aa2838661251b565b601255610aaf828561251b565b601381905560148290556012546040805191825260208201929092529081018290527f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459060600160405180910390a15050505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b609086815260200190565b60405180910390a35060015b92915050565b6000610b806012600a61264b565b600554610b8d919061252e565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610c12576001600160a01b0384166000908152600860209081526040808320338452909152902054610bed90839061265a565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610c1d8484846115ae565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610c5b9161251b565b600354610b8d919061265a565b60155460009060ff16158015610c9757506001600160a01b03821660009081526019602052604090205460ff16155b8015610cbc57506001600160a01b03831660009081526019602052604090205460ff16155b15610cc957506000610b6c565b6001600160a01b0383166000908152600b602052604090205460ff16158015610c205750506001600160a01b03166000908152600b602052604090205460ff1615919050565b610d17611554565b601a546001600160a01b0390811690831603610d805760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610a7b565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b610db3611554565b600083118015610dc35750600082115b8015610dcf5750600081115b8015610ddd57506127108111155b610de657600080fd5b8083600354610df59190612550565b610dff919061252e565b6004556003548190610e12908490612550565b610e1c919061252e565b600555505050565b3360009081526023602052604090205460ff1680610e4c57506000546001600160a01b031633145b610e685760405162461bcd60e51b8152600401610a7b9061266d565b478015610f255760006001600160a01b0383166064610e878685612550565b610e91919061252e565b604051600081818185875af1925050503d8060008114610ecd576040519150601f19603f3d011682016040523d82523d6000602084013e610ed2565b606091505b5050905080610f235760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f207472616e736665722066756e647300000000000000006044820152606401610a7b565b505b505050565b610f32611554565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000610f6b6012600a61264b565b600654610b8d919061252e565b610f80611554565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b610fb3611554565b8215801590610fc157508083145b610fca57600080fd5b3360005b848110156110e85760196000878784818110610fec57610fec6126a4565b905060200201602081019061100191906122b8565b6001600160a01b0316815260208101919091526040016000205460ff161580156110705750600d600087878481811061103c5761103c6126a4565b905060200201602081019061105191906122b8565b6001600160a01b0316815260208101919091526040016000205460ff16155b156110d6576110d48287878481811061108b5761108b6126a4565b90506020020160208101906110a091906122b8565b6110ac6012600a61264b565b8787868181106110be576110be6126a4565b905060200201356110cf9190612550565b6119c8565b505b806110e0816126ba565b915050610fce565b505050505050565b6110f8611554565b6111026000611a82565b565b6000610b6c82600019610b05565b61111a611554565b60158054610100600160a81b0319166101006001600160a01b0394851602179055601680546001600160a01b03191691909216179055565b6000610c203384846115ae565b611167611554565b6000821180156111775750600081115b801561118557506127108111155b61118e57600080fd5b808260035461119d9190612550565b6111a7919061252e565b6006555050565b60006111bc6012600a61264b565b600454610b8d919061252e565b3360009081526023602052604090205460ff16806111f157506000546001600160a01b031633145b61120d5760405162461bcd60e51b8152600401610a7b9061266d565b60005b82811015610f235781156112ab57601c805490600061122e836126ba565b91905055507f80e51449b76c50e375a3b72e31ca76d6ed586f0a7ff8fa6f310da7dbbcc3386332858584818110611267576112676126a4565b905060200201602081019061127c91906122b8565b604080516001600160a01b039384168152929091166020830152439082015260600160405180910390a161130b565b601b60008585848181106112c1576112c16126a4565b90506020020160208101906112d691906122b8565b6001600160a01b031681526020810191909152604001600020541561130b57601c8054906000611305836126d3565b91905055505b81611317576000611319565b435b601b600086868581811061132f5761132f6126a4565b905060200201602081019061134491906122b8565b6001600160a01b0316815260208101919091526040016000205580611368816126ba565b915050611210565b3360009081526023602052604090205460ff168061139857506000546001600160a01b031633145b6113b45760405162461bcd60e51b8152600401610a7b9061266d565b601f5460ff16156113ff5760405162461bcd60e51b815260206004820152601560248201527443616e27742072652d6f70656e2074726164696e6760581b6044820152606401610a7b565b601f805461ffff1916610101179055565b611418611554565b6000821161142557600080fd5b601f805461ff0019166101008515150217905560035461144690839061252e565b6020556114556012600a61264b565b61145f9082612550565b602155505050565b61146f611554565b600a55565b61147c611554565b6015805460ff19811660ff90911615179055565b600081156114a057505060135490565b505060125490565b6114b0611554565b6001600160a01b0381166115155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7b565b61151e81611a82565b50565b611529611554565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a7b565b60006001600160a01b0384166116065760405162461bcd60e51b815260206004820152601860248201527f45524332303a207472616e736665722066726f6d2030783000000000000000006044820152606401610a7b565b6001600160a01b0383166116555760405162461bcd60e51b8152602060048201526016602482015275045524332303a207472616e7366657220746f203078360541b6044820152606401610a7b565b6000821161169d5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610a7b565b6001600160a01b0384166000908152600760205260409020548211156116fc5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610a7b565b601d5415801561172457506001600160a01b03831660009081526019602052604090205460ff165b1561179e576001600160a01b0384166000908152600d602052604090205460ff166117915760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610a7b565b61179e43601d5542601e55565b601f5460ff16611833576001600160a01b0384166000908152600d602052604090205460ff16806117e757506001600160a01b0383166000908152600d602052604090205460ff165b6118335760405162461bcd60e51b815260206004820152601c60248201527f54726164696e67206973206e6f74206c61756e63686564207965742e000000006044820152606401610a7b565b61183e848484611ad2565b6001600160a01b03831660009081526019602052604090205460ff1615801561187557506001546001600160a01b03848116911614155b156118a4576001600160a01b0383166000908152600c602052604090205460ff166118a4576118a48383611bf2565b60225460ff16156118c1576118ba8484846119c8565b9050610c20565b6001600160a01b0384166000908152600760205260409020546118e590839061265a565b6001600160a01b038516600090815260076020526040902055816119098585610c68565b1561193d576119188484611c75565b905061192384611cf3565b801561192f5750600083115b1561193d5761193d83611da6565b6001600160a01b03841660009081526007602052604090205461196190829061251b565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119b59085815260200190565b60405180910390a3506001949350505050565b6001600160a01b0383166000908152600760205260408120546119ec90839061265a565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611a1c90839061251b565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a709086815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600c602052604090205460ff1680611b1157506001600160a01b0382166000908152600c602052604090205460ff165b15611b1b57505050565b6001600160a01b03831660009081526019602052604090205460ff16611b4357600554611b47565b6004545b811115611b965760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e74206578636565647320746865207478206c696d69742e000000006044820152606401610a7b565b6001600160a01b0383166000908152601b602052604090205415610f255760405162461bcd60e51b815260206004820152601360248201527257616c6c657420626c61636b6c69737465642160681b6044820152606401610a7b565b6006546001600160a01b0383166000908152600760205260409020548190611c1b90849061251b565b1115610f255760405162461bcd60e51b815260206004820152602360248201527f416d6f756e74206578636565647320746865206d61782077616c6c65742073696044820152623d329760e91b6064820152608401610a7b565b6001600160a01b03821660009081526019602052604081205460145460ff909116908290611ca283611490565b611cac9086612550565b611cb6919061252e565b30600090815260076020526040812080549293508392909190611cda90849061251b565b90915550611cea9050818561265a565b95945050505050565b3360009081526019602052604081205460ff16158015611d16575060225460ff16155b8015611d295750601f54610100900460ff165b8015611d455750600a5443600090815260096020526040902054105b8015611d6957506001600160a01b03821660009081526019602052604090205460ff165b8015611d8657506021543060009081526007602052604090205410155b8015610b6c57506000601354601254611d9f919061251b565b1192915050565b6022805460ff19166001179055601354601254600091611dc59161251b565b905060006020548310611dda57602054611ddc565b825b30600090815260076020526040902054909150811115611e085750306000908152600760205260409020545b6000601154601054611e1a919061251b565b90506000836002611e2b8486612550565b611e35919061252e565b611e3f919061252e565b9050611e4b818461265a565b60408051600280825260608201835292955060009290916020830190803683370190505090503081600081518110611e8557611e856126a4565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0291906126ea565b81600181518110611f1557611f156126a4565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b81524792919091169063791ac94790611f5f908890600090879030904290600401612707565b600060405180830381600087803b158015611f7957600080fd5b505af1158015611f8d573d6000803e3d6000fd5b5050505060008147611f9f919061265a565b90506000611fae60028761252e565b611fb8908961265a565b90506000816002611fc98986612550565b611fd3919061252e565b611fdd919061252e565b90506000611feb828561265a565b9050801561204a576016546040516000916001600160a01b03169083908381818185875af1925050503d8060008114612040576040519150601f19603f3d011682016040523d82523d6000602084013e612045565b606091505b505050505b86156120ee5760175460155460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af11580156120c5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120ea9190612778565b5050505b4360009081526009602052604090205461210990600161251b565b4360009081526009602090815260409182902092909255805183815291820184905281018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506022805460ff19169055505050505050505050565b600080600080600060a0868803121561218c57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b818110156121dc578581018301518582016040015282016121c0565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461151e57600080fd5b6000806040838503121561222557600080fd5b8235612230816121fd565b946020939093013593505050565b60008060006060848603121561225357600080fd5b833561225e816121fd565b9250602084013561226e816121fd565b929592945050506040919091013590565b6000806040838503121561229257600080fd5b823561229d816121fd565b915060208301356122ad816121fd565b809150509250929050565b6000602082840312156122ca57600080fd5b8135610c20816121fd565b803580151581146122e557600080fd5b919050565b600080604083850312156122fd57600080fd5b8235612308816121fd565b9150612316602084016122d5565b90509250929050565b60008060006060848603121561233457600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561235e57600080fd5b8235915060208301356122ad816121fd565b60008083601f84011261238257600080fd5b50813567ffffffffffffffff81111561239a57600080fd5b6020830191508360208260051b85010111156123b557600080fd5b9250929050565b600080600080604085870312156123d257600080fd5b843567ffffffffffffffff808211156123ea57600080fd5b6123f688838901612370565b9096509450602087013591508082111561240f57600080fd5b5061241c87828801612370565b95989497509550505050565b6000806040838503121561243b57600080fd5b50508035926020909101359150565b60008060006040848603121561245f57600080fd5b833567ffffffffffffffff81111561247657600080fd5b61248286828701612370565b90945092506124959050602085016122d5565b90509250925092565b6000806000606084860312156124b357600080fd5b6124bc846122d5565b95602085013595506040909401359392505050565b6000602082840312156124e357600080fd5b5035919050565b6000602082840312156124fc57600080fd5b610c20826122d5565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b6c57610b6c612505565b60008261254b57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610b6c57610b6c612505565b600181815b808511156125a257816000190482111561258857612588612505565b8085161561259557918102915b93841c939080029061256c565b509250929050565b6000826125b957506001610b6c565b816125c657506000610b6c565b81600181146125dc57600281146125e657612602565b6001915050610b6c565b60ff8411156125f7576125f7612505565b50506001821b610b6c565b5060208310610133831016604e8410600b8410161715612625575081810a610b6c565b61262f8383612567565b806000190482111561264357612643612505565b029392505050565b6000610c2060ff8416836125aa565b81810381811115610b6c57610b6c612505565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016126cc576126cc612505565b5060010190565b6000816126e2576126e2612505565b506000190190565b6000602082840312156126fc57600080fd5b8151610c20816121fd565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127575784516001600160a01b031683529383019391830191600101612732565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561278d57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208e6ef83661081e1116c69bab48aac7980a5a49b52f088c96aa8afa64e1d0877b64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103035760003560e01c8063893d20e811610190578063c9567bf9116100dc578063e8b574f211610095578063f2fde38b1161006f578063f2fde38b1461094a578063f84ba65d1461096a578063f887ea401461098a578063f9f92be4146109aa57600080fd5b8063e8b574f2146108dd578063e96fada21461090a578063f1f3bca31461092a57600080fd5b8063c9567bf914610817578063d00efb2f1461082c578063d088935814610842578063d58d850c14610862578063d912b2ce14610882578063dd62ed3e1461089757600080fd5b8063a845bd8611610149578063abe57e7011610123578063abe57e701461079d578063bafe446b146107bd578063bb2188b4146107d2578063bfa21d6a146107f257600080fd5b8063a845bd8614610747578063a8aa1b311461075d578063a9059cbb1461077d57600080fd5b8063893d20e81461065a5780638b42507f1461068c5780638da5cb5b146106bc57806395d89b41146106da5780639fdc800514610707578063a4b45c001461072757600080fd5b8063492a937b1161024f578063658d4b7f116102085780636ddd1713116101e25780636ddd1713146105d657806370a08231146105f5578063715018a61461062b5780638124f7ac1461064057600080fd5b8063658d4b7f1461058057806365cf7c9b146105a057806367243482146105b657600080fd5b8063492a937b146104bb57806350713935146104db57806356a227f2146104fb57806360bba03d1461051b57806360eef7411461053b57806363a803e11461056b57600080fd5b8063188d1644116102bc5780632b112e49116102965780632b112e491461043a578063313ce5671461044f578063332402f81461046b5780633f4218e01461048b57600080fd5b8063188d1644146103ef578063234e94941461040557806323b872dd1461041a57600080fd5b80630445b6671461030f57806304a66b481461033857806306fdde031461035a578063095ea7b314610394578063178a18ce146103c457806318160ddd146103da57600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032560205481565b6040519081526020015b60405180910390f35b34801561034457600080fd5b50610358610353366004612174565b6109d7565b005b34801561036657600080fd5b5060408051808201909152600881526753796e746854505560c01b60208201525b60405161032f91906121af565b3480156103a057600080fd5b506103b46103af366004612212565b610b05565b604051901515815260200161032f565b3480156103d057600080fd5b50610325600a5481565b3480156103e657600080fd5b50600354610325565b3480156103fb57600080fd5b50610325601c5481565b34801561041157600080fd5b50610325610b72565b34801561042657600080fd5b506103b461043536600461223e565b610b92565b34801561044657600080fd5b50610325610c27565b34801561045b57600080fd5b506040516012815260200161032f565b34801561047757600080fd5b506103b461048636600461227f565b610c68565b34801561049757600080fd5b506103b46104a63660046122b8565b600b6020526000908152604090205460ff1681565b3480156104c757600080fd5b506103586104d63660046122ea565b610d0f565b3480156104e757600080fd5b506103586104f636600461231f565b610dab565b34801561050757600080fd5b5061035861051636600461234b565b610e24565b34801561052757600080fd5b506103586105363660046122ea565b610f2a565b34801561054757600080fd5b506103b46105563660046122b8565b600d6020526000908152604090205460ff1681565b34801561057757600080fd5b50610325610f5d565b34801561058c57600080fd5b5061035861059b3660046122ea565b610f78565b3480156105ac57600080fd5b50610325601e5481565b3480156105c257600080fd5b506103586105d13660046123bc565b610fab565b3480156105e257600080fd5b50601f546103b490610100900460ff1681565b34801561060157600080fd5b506103256106103660046122b8565b6001600160a01b031660009081526007602052604090205490565b34801561063757600080fd5b506103586110f0565b34801561064c57600080fd5b506015546103b49060ff1681565b34801561066657600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161032f565b34801561069857600080fd5b506103b46106a73660046122b8565b600c6020526000908152604090205460ff1681565b3480156106c857600080fd5b506000546001600160a01b0316610674565b3480156106e657600080fd5b506040805180820190915260048152635354505560e01b6020820152610387565b34801561071357600080fd5b506103b46107223660046122b8565b611104565b34801561073357600080fd5b5061035861074236600461227f565b611112565b34801561075357600080fd5b5061032560215481565b34801561076957600080fd5b50601a54610674906001600160a01b031681565b34801561078957600080fd5b506103b4610798366004612212565b611152565b3480156107a957600080fd5b506103586107b8366004612428565b61115f565b3480156107c957600080fd5b506103256111ae565b3480156107de57600080fd5b506103586107ed36600461244a565b6111c9565b3480156107fe57600080fd5b506015546106749061010090046001600160a01b031681565b34801561082357600080fd5b50610358611370565b34801561083857600080fd5b50610325601d5481565b34801561084e57600080fd5b5061035861085d36600461249e565b611410565b34801561086e57600080fd5b5061035861087d3660046124d1565b611467565b34801561088e57600080fd5b50610358611474565b3480156108a357600080fd5b506103256108b236600461227f565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156108e957600080fd5b506103256108f83660046124d1565b60096020526000908152604090205481565b34801561091657600080fd5b50601654610674906001600160a01b031681565b34801561093657600080fd5b506103256109453660046124ea565b611490565b34801561095657600080fd5b506103586109653660046122b8565b6114a8565b34801561097657600080fd5b506103586109853660046122ea565b611521565b34801561099657600080fd5b50601754610674906001600160a01b031681565b3480156109b657600080fd5b506103256109c53660046122b8565b601b6020526000908152604090205481565b6109df611554565b6109e9848661251b565b60026109f5868861251b565b6109ff919061252e565b610a0a906002612550565b14610a84576040805162461bcd60e51b81526020600482015260248101919091527f4c697175696469747920666565206d75737420626520616e206576656e206e7560448201527f6d62657220666f7220726f756e64696e6720636f6d7061746962696c6974792e60648201526084015b60405180910390fd5b60108590556011849055600e839055600f829055610aa2838661251b565b601255610aaf828561251b565b601381905560148290556012546040805191825260208201929092529081018290527f01bae858246c904512695a3f6d48ab88abb7a0192fdd7c53b043e60317795f459060600160405180910390a15050505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b609086815260200190565b60405180910390a35060015b92915050565b6000610b806012600a61264b565b600554610b8d919061252e565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610c12576001600160a01b0384166000908152600860209081526040808320338452909152902054610bed90839061265a565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610c1d8484846115ae565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610c5b9161251b565b600354610b8d919061265a565b60155460009060ff16158015610c9757506001600160a01b03821660009081526019602052604090205460ff16155b8015610cbc57506001600160a01b03831660009081526019602052604090205460ff16155b15610cc957506000610b6c565b6001600160a01b0383166000908152600b602052604090205460ff16158015610c205750506001600160a01b03166000908152600b602052604090205460ff1615919050565b610d17611554565b601a546001600160a01b0390811690831603610d805760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610a7b565b6001600160a01b03919091166000908152601960205260409020805460ff1916911515919091179055565b610db3611554565b600083118015610dc35750600082115b8015610dcf5750600081115b8015610ddd57506127108111155b610de657600080fd5b8083600354610df59190612550565b610dff919061252e565b6004556003548190610e12908490612550565b610e1c919061252e565b600555505050565b3360009081526023602052604090205460ff1680610e4c57506000546001600160a01b031633145b610e685760405162461bcd60e51b8152600401610a7b9061266d565b478015610f255760006001600160a01b0383166064610e878685612550565b610e91919061252e565b604051600081818185875af1925050503d8060008114610ecd576040519150601f19603f3d011682016040523d82523d6000602084013e610ed2565b606091505b5050905080610f235760405162461bcd60e51b815260206004820152601860248201527f4661696c656420746f207472616e736665722066756e647300000000000000006044820152606401610a7b565b505b505050565b610f32611554565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000610f6b6012600a61264b565b600654610b8d919061252e565b610f80611554565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b610fb3611554565b8215801590610fc157508083145b610fca57600080fd5b3360005b848110156110e85760196000878784818110610fec57610fec6126a4565b905060200201602081019061100191906122b8565b6001600160a01b0316815260208101919091526040016000205460ff161580156110705750600d600087878481811061103c5761103c6126a4565b905060200201602081019061105191906122b8565b6001600160a01b0316815260208101919091526040016000205460ff16155b156110d6576110d48287878481811061108b5761108b6126a4565b90506020020160208101906110a091906122b8565b6110ac6012600a61264b565b8787868181106110be576110be6126a4565b905060200201356110cf9190612550565b6119c8565b505b806110e0816126ba565b915050610fce565b505050505050565b6110f8611554565b6111026000611a82565b565b6000610b6c82600019610b05565b61111a611554565b60158054610100600160a81b0319166101006001600160a01b0394851602179055601680546001600160a01b03191691909216179055565b6000610c203384846115ae565b611167611554565b6000821180156111775750600081115b801561118557506127108111155b61118e57600080fd5b808260035461119d9190612550565b6111a7919061252e565b6006555050565b60006111bc6012600a61264b565b600454610b8d919061252e565b3360009081526023602052604090205460ff16806111f157506000546001600160a01b031633145b61120d5760405162461bcd60e51b8152600401610a7b9061266d565b60005b82811015610f235781156112ab57601c805490600061122e836126ba565b91905055507f80e51449b76c50e375a3b72e31ca76d6ed586f0a7ff8fa6f310da7dbbcc3386332858584818110611267576112676126a4565b905060200201602081019061127c91906122b8565b604080516001600160a01b039384168152929091166020830152439082015260600160405180910390a161130b565b601b60008585848181106112c1576112c16126a4565b90506020020160208101906112d691906122b8565b6001600160a01b031681526020810191909152604001600020541561130b57601c8054906000611305836126d3565b91905055505b81611317576000611319565b435b601b600086868581811061132f5761132f6126a4565b905060200201602081019061134491906122b8565b6001600160a01b0316815260208101919091526040016000205580611368816126ba565b915050611210565b3360009081526023602052604090205460ff168061139857506000546001600160a01b031633145b6113b45760405162461bcd60e51b8152600401610a7b9061266d565b601f5460ff16156113ff5760405162461bcd60e51b815260206004820152601560248201527443616e27742072652d6f70656e2074726164696e6760581b6044820152606401610a7b565b601f805461ffff1916610101179055565b611418611554565b6000821161142557600080fd5b601f805461ff0019166101008515150217905560035461144690839061252e565b6020556114556012600a61264b565b61145f9082612550565b602155505050565b61146f611554565b600a55565b61147c611554565b6015805460ff19811660ff90911615179055565b600081156114a057505060135490565b505060125490565b6114b0611554565b6001600160a01b0381166115155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a7b565b61151e81611a82565b50565b611529611554565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111025760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a7b565b60006001600160a01b0384166116065760405162461bcd60e51b815260206004820152601860248201527f45524332303a207472616e736665722066726f6d2030783000000000000000006044820152606401610a7b565b6001600160a01b0383166116555760405162461bcd60e51b8152602060048201526016602482015275045524332303a207472616e7366657220746f203078360541b6044820152606401610a7b565b6000821161169d5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610a7b565b6001600160a01b0384166000908152600760205260409020548211156116fc5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610a7b565b601d5415801561172457506001600160a01b03831660009081526019602052604090205460ff165b1561179e576001600160a01b0384166000908152600d602052604090205460ff166117915760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610a7b565b61179e43601d5542601e55565b601f5460ff16611833576001600160a01b0384166000908152600d602052604090205460ff16806117e757506001600160a01b0383166000908152600d602052604090205460ff165b6118335760405162461bcd60e51b815260206004820152601c60248201527f54726164696e67206973206e6f74206c61756e63686564207965742e000000006044820152606401610a7b565b61183e848484611ad2565b6001600160a01b03831660009081526019602052604090205460ff1615801561187557506001546001600160a01b03848116911614155b156118a4576001600160a01b0383166000908152600c602052604090205460ff166118a4576118a48383611bf2565b60225460ff16156118c1576118ba8484846119c8565b9050610c20565b6001600160a01b0384166000908152600760205260409020546118e590839061265a565b6001600160a01b038516600090815260076020526040902055816119098585610c68565b1561193d576119188484611c75565b905061192384611cf3565b801561192f5750600083115b1561193d5761193d83611da6565b6001600160a01b03841660009081526007602052604090205461196190829061251b565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119b59085815260200190565b60405180910390a3506001949350505050565b6001600160a01b0383166000908152600760205260408120546119ec90839061265a565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611a1c90839061251b565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a709086815260200190565b60405180910390a35060019392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600c602052604090205460ff1680611b1157506001600160a01b0382166000908152600c602052604090205460ff165b15611b1b57505050565b6001600160a01b03831660009081526019602052604090205460ff16611b4357600554611b47565b6004545b811115611b965760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e74206578636565647320746865207478206c696d69742e000000006044820152606401610a7b565b6001600160a01b0383166000908152601b602052604090205415610f255760405162461bcd60e51b815260206004820152601360248201527257616c6c657420626c61636b6c69737465642160681b6044820152606401610a7b565b6006546001600160a01b0383166000908152600760205260409020548190611c1b90849061251b565b1115610f255760405162461bcd60e51b815260206004820152602360248201527f416d6f756e74206578636565647320746865206d61782077616c6c65742073696044820152623d329760e91b6064820152608401610a7b565b6001600160a01b03821660009081526019602052604081205460145460ff909116908290611ca283611490565b611cac9086612550565b611cb6919061252e565b30600090815260076020526040812080549293508392909190611cda90849061251b565b90915550611cea9050818561265a565b95945050505050565b3360009081526019602052604081205460ff16158015611d16575060225460ff16155b8015611d295750601f54610100900460ff165b8015611d455750600a5443600090815260096020526040902054105b8015611d6957506001600160a01b03821660009081526019602052604090205460ff165b8015611d8657506021543060009081526007602052604090205410155b8015610b6c57506000601354601254611d9f919061251b565b1192915050565b6022805460ff19166001179055601354601254600091611dc59161251b565b905060006020548310611dda57602054611ddc565b825b30600090815260076020526040902054909150811115611e085750306000908152600760205260409020545b6000601154601054611e1a919061251b565b90506000836002611e2b8486612550565b611e35919061252e565b611e3f919061252e565b9050611e4b818461265a565b60408051600280825260608201835292955060009290916020830190803683370190505090503081600081518110611e8557611e856126a4565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0291906126ea565b81600181518110611f1557611f156126a4565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b81524792919091169063791ac94790611f5f908890600090879030904290600401612707565b600060405180830381600087803b158015611f7957600080fd5b505af1158015611f8d573d6000803e3d6000fd5b5050505060008147611f9f919061265a565b90506000611fae60028761252e565b611fb8908961265a565b90506000816002611fc98986612550565b611fd3919061252e565b611fdd919061252e565b90506000611feb828561265a565b9050801561204a576016546040516000916001600160a01b03169083908381818185875af1925050503d8060008114612040576040519150601f19603f3d011682016040523d82523d6000602084013e612045565b606091505b505050505b86156120ee5760175460155460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b03610100909204821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af11580156120c5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906120ea9190612778565b5050505b4360009081526009602052604090205461210990600161251b565b4360009081526009602090815260409182902092909255805183815291820184905281018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506022805460ff19169055505050505050505050565b600080600080600060a0868803121561218c57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b818110156121dc578581018301518582016040015282016121c0565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461151e57600080fd5b6000806040838503121561222557600080fd5b8235612230816121fd565b946020939093013593505050565b60008060006060848603121561225357600080fd5b833561225e816121fd565b9250602084013561226e816121fd565b929592945050506040919091013590565b6000806040838503121561229257600080fd5b823561229d816121fd565b915060208301356122ad816121fd565b809150509250929050565b6000602082840312156122ca57600080fd5b8135610c20816121fd565b803580151581146122e557600080fd5b919050565b600080604083850312156122fd57600080fd5b8235612308816121fd565b9150612316602084016122d5565b90509250929050565b60008060006060848603121561233457600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561235e57600080fd5b8235915060208301356122ad816121fd565b60008083601f84011261238257600080fd5b50813567ffffffffffffffff81111561239a57600080fd5b6020830191508360208260051b85010111156123b557600080fd5b9250929050565b600080600080604085870312156123d257600080fd5b843567ffffffffffffffff808211156123ea57600080fd5b6123f688838901612370565b9096509450602087013591508082111561240f57600080fd5b5061241c87828801612370565b95989497509550505050565b6000806040838503121561243b57600080fd5b50508035926020909101359150565b60008060006040848603121561245f57600080fd5b833567ffffffffffffffff81111561247657600080fd5b61248286828701612370565b90945092506124959050602085016122d5565b90509250925092565b6000806000606084860312156124b357600080fd5b6124bc846122d5565b95602085013595506040909401359392505050565b6000602082840312156124e357600080fd5b5035919050565b6000602082840312156124fc57600080fd5b610c20826122d5565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b6c57610b6c612505565b60008261254b57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610b6c57610b6c612505565b600181815b808511156125a257816000190482111561258857612588612505565b8085161561259557918102915b93841c939080029061256c565b509250929050565b6000826125b957506001610b6c565b816125c657506000610b6c565b81600181146125dc57600281146125e657612602565b6001915050610b6c565b60ff8411156125f7576125f7612505565b50506001821b610b6c565b5060208310610133831016604e8410600b8410161715612625575081810a610b6c565b61262f8383612567565b806000190482111561264357612643612505565b029392505050565b6000610c2060ff8416836125aa565b81810381811115610b6c57610b6c612505565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b6000600182016126cc576126cc612505565b5060010190565b6000816126e2576126e2612505565b506000190190565b6000602082840312156126fc57600080fd5b8151610c20816121fd565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127575784516001600160a01b031683529383019391830191600101612732565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561278d57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208e6ef83661081e1116c69bab48aac7980a5a49b52f088c96aa8afa64e1d0877b64736f6c63430008110033

Deployed Bytecode Sourcemap

6952:14843:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8786:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8786:50:0;;;;;;;;19986:791;;;;;;;;;;-1:-1:-1;19986:791:0;;;;;:::i;:::-;;:::i;:::-;;10240:79;;;;;;;;;;-1:-1:-1;10308:5:0;;;;;;;;;;;;-1:-1:-1;;;10308:5:0;;;;10240:79;;;;;;;:::i;11050:217::-;;;;;;;;;;-1:-1:-1;11050:217:0;;;;;:::i;:::-;;:::i;:::-;;;1829:14:1;;1822:22;1804:41;;1792:2;1777:18;11050:217:0;1664:187:1;7653:36:0;;;;;;;;;;;;;;;;9964:96;;;;;;;;;;-1:-1:-1;10042:12:0;;9964:96;;8612:29;;;;;;;;;;;;;;;;10529:115;;;;;;;;;;;;;:::i;12917:361::-;;;;;;;;;;-1:-1:-1;12917:361:0;;;;;:::i;:::-;;:::i;21438:132::-;;;;;;;;;;;;;:::i;10066:79::-;;;;;;;;;;-1:-1:-1;10066:79:0;;7255:2;2459:36:1;;2447:2;2432:18;10066:79:0;2317:184:1;16020:268:0;;;;;;;;;;-1:-1:-1;16020:268:0;;;;;:::i;:::-;;:::i;7696:43::-;;;;;;;;;;-1:-1:-1;7696:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18876:174;;;;;;;;;;-1:-1:-1;18876:174:0;;;;;:::i;:::-;;:::i;19162:359::-;;;;;;;;;;-1:-1:-1;19162:359:0;;;;;:::i;:::-;;:::i;11975:320::-;;;;;;;;;;-1:-1:-1;11975:320:0;;;;;:::i;:::-;;:::i;11401:114::-;;;;;;;;;;-1:-1:-1;11401:114:0;;;;;:::i;:::-;;:::i;7796:50::-;;;;;;;;;;-1:-1:-1;7796:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10650:113;;;;;;;;;;;;;:::i;19740:::-;;;;;;;;;;-1:-1:-1;19740:113:0;;;;;:::i;:::-;;:::i;8679:30::-;;;;;;;;;;;;;;;;11521:448;;;;;;;;;;-1:-1:-1;11521:448:0;;;;;:::i;:::-;;:::i;8750:31::-;;;;;;;;;;-1:-1:-1;8750:31:0;;;;;;;;;;;10769:113;;;;;;;;;;-1:-1:-1;10769:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;10858:18:0;10835:7;10858:18;;;:9;:18;;;;;;;10769:113;6468:97;;;;;;;;;;;;;:::i;8149:31::-;;;;;;;;;;-1:-1:-1;8149:31:0;;;;;;;;10325:79;;;;;;;;;;-1:-1:-1;10368:7:0;6318:6;-1:-1:-1;;;;;6318:6:0;10325:79;;;-1:-1:-1;;;;;5591:32:1;;;5573:51;;5561:2;5546:18;10325:79:0;5427:203:1;7744:47:0;;;;;;;;;;-1:-1:-1;7744:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6249:81;;;;;;;;;;-1:-1:-1;6295:7:0;6318:6;-1:-1:-1;;;;;6318:6:0;6249:81;;10151:83;;;;;;;;;;-1:-1:-1;10221:7:0;;;;;;;;;;;;-1:-1:-1;;;10221:7:0;;;;10151:83;;11273:122;;;;;;;;;;-1:-1:-1;11273:122:0;;;;;:::i;:::-;;:::i;20876:247::-;;;;;;;;;;-1:-1:-1;20876:247:0;;;;;:::i;:::-;;:::i;8841:51::-;;;;;;;;;;;;;;;;8537:19;;;;;;;;;;-1:-1:-1;8537:19:0;;;;-1:-1:-1;;;;;8537:19:0;;;12746:165;;;;;;;;;;-1:-1:-1;12746:165:0;;;;;:::i;:::-;;:::i;19527:207::-;;;;;;;;;;-1:-1:-1;19527:207:0;;;;;:::i;:::-;;:::i;10410:113::-;;;;;;;;;;;;;:::i;12301:439::-;;;;;;;;;;-1:-1:-1;12301:439:0;;;;;:::i;:::-;;:::i;8187:97::-;;;;;;;;;;-1:-1:-1;8187:97:0;;;;;;;-1:-1:-1;;;;;8187:97:0;;;14900:160;;;;;;;;;;;;;:::i;8648:26::-;;;;;;;;;;;;;;;;21129:303;;;;;;;;;;-1:-1:-1;21129:303:0;;;;;:::i;:::-;;:::i;19056:100::-;;;;;;;;;;-1:-1:-1;19056:100:0;;;;;:::i;:::-;;:::i;20783:87::-;;;;;;;;;;;;;:::i;10888:156::-;;;;;;;;;;-1:-1:-1;10888:156:0;;;;;:::i;:::-;-1:-1:-1;;;;;11010:19:0;;;10987:7;11010:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10888:156;7598:50;;;;;;;;;;-1:-1:-1;7598:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;8289:97;;;;;;;;;;-1:-1:-1;8289:97:0;;;;-1:-1:-1;;;;;8289:97:0;;;16294:135;;;;;;;;;;-1:-1:-1;16294:135:0;;;;;:::i;:::-;;:::i;6571:191::-;;;;;;;;;;-1:-1:-1;6571:191:0;;;;;:::i;:::-;;:::i;19859:121::-;;;;;;;;;;-1:-1:-1;19859:121:0;;;;;:::i;:::-;;:::i;8393:24::-;;;;;;;;;;-1:-1:-1;8393:24:0;;;;-1:-1:-1;;;;;8393:24:0;;;8563:44;;;;;;;;;;-1:-1:-1;8563:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;19986:791;6216:13;:11;:13::i;:::-;20268:36:::1;20287:17:::0;20268:16;:36:::1;:::i;:::-;20248:1;20208:36;20227:17:::0;20208:16;:36:::1;:::i;:::-;20207:42;;;;:::i;:::-;20206:48;::::0;20253:1:::1;20206:48;:::i;:::-;:99;20190:197;;;::::0;;-1:-1:-1;;;20190:197:0;;8398:2:1;20190:197:0::1;::::0;::::1;8380:21:1::0;8417:18;;;8410:30;;;;8476:34;8456:18;;;8449:62;8547:34;8527:18;;;8520:62;8599:19;;20190:197:0::1;;;;;;;;;20394:15;:34:::0;;;20435:16:::1;:36:::0;;;20478:15:::1;:34:::0;;;20519:16:::1;:36:::0;;;20576:35:::1;20496:16:::0;20412;20576:35:::1;:::i;:::-;20562:11;:49:::0;20633:37:::1;20653:17:::0;20633;:37:::1;:::i;:::-;20618:12;:52:::0;;;20677:14:::1;:32:::0;;;20729:11:::1;::::0;20721:50:::1;::::0;;8831:25:1;;;8887:2;8872:18;;8865:34;;;;8915:18;;;8908:34;;;20721:50:0::1;::::0;8819:2:1;8804:18;20721:50:0::1;;;;;;;19986:791:::0;;;;;:::o;11050:217::-;11165:10;11140:4;11153:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11153:32:0;;;;;;;;;;:41;;;11206:37;11140:4;;11153:32;;11206:37;;;;11188:6;160:25:1;;148:2;133:18;;14:177;11206:37:0;;;;;;;;-1:-1:-1;11257:4:0;11050:217;;;;;:::o;10529:115::-;10579:7;10622:15;7255:2;10622;:15;:::i;:::-;10602:16;;:36;;;;:::i;:::-;10595:43;;10529:115;:::o;12917:361::-;-1:-1:-1;;;;;13054:19:0;;13037:4;13054:19;;;:11;:19;;;;;;;;13074:10;13054:31;;;;;;;;-1:-1:-1;;13054:52:0;13050:167;;-1:-1:-1;;;;;13160:19:0;;;;;;:11;:19;;;;;;;;13180:10;13160:31;;;;;;;;:49;;13203:6;;13160:49;:::i;:::-;-1:-1:-1;;;;;13117:19:0;;;;;;:11;:19;;;;;;;;13137:10;13117:31;;;;;;;:92;13050:167;13232:40;13246:6;13254:9;13265:6;13232:13;:40::i;:::-;13225:47;;12917:361;;;;;;:::o;21438:132::-;21558:4;;-1:-1:-1;;;;;21558:4:0;;;21491:7;10858:18;;;:9;:18;;;;;;;21540:4;;;;;10858:18;;;;;21491:7;;21530:33;;;:::i;:::-;21514:12;;:50;;;;:::i;16020:268::-;16132:11;;16114:4;;16132:11;;16131:12;:42;;;;-1:-1:-1;;;;;;16148:25:0;;;;;;:14;:25;;;;;;;;16147:26;16131:42;:69;;;;-1:-1:-1;;;;;;16178:22:0;;;;;;:14;:22;;;;;;;;16177:23;16131:69;16127:94;;;-1:-1:-1;16216:5:0;16209:12;;16127:94;-1:-1:-1;;;;;16236:19:0;;;;;;:11;:19;;;;;;;;16235:20;:47;;;;-1:-1:-1;;;;;;;16260:22:0;;;;;:11;:22;;;;;;;;16259:23;;16228:54;-1:-1:-1;16020:268:0:o;18876:174::-;6216:13;:11;:13::i;:::-;18967:4:::1;::::0;-1:-1:-1;;;;;18967:4:0;;::::1;18961:10:::0;;::::1;::::0;18953:57:::1;;;::::0;-1:-1:-1;;;18953:57:0;;10671:2:1;18953:57:0::1;::::0;::::1;10653:21:1::0;10710:2;10690:18;;;10683:30;10749:34;10729:18;;;10722:62;-1:-1:-1;;;10800:18:1;;;10793:32;10842:19;;18953:57:0::1;10469:398:1::0;18953:57:0::1;-1:-1:-1::0;;;;;19017:18:0;;;::::1;;::::0;;;:14:::1;:18;::::0;;;;:27;;-1:-1:-1;;19017:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18876:174::o;19162:359::-;6216:13;:11;:13::i;:::-;19321:1:::1;19306:12;:16;:37;;;;;19342:1;19326:13;:17;19306:37;:52;;;;;19357:1;19347:7;:11;19306:52;:72;;;;;19373:5;19362:7;:16;;19306:72;19290:95;;;::::0;::::1;;19442:7;19426:12;19411;;:27;;;;:::i;:::-;19410:39;;;;:::i;:::-;19392:15;:57:::0;19476:12:::1;::::0;19508:7;;19476:28:::1;::::0;19491:13;;19476:28:::1;:::i;:::-;19475:40;;;;:::i;:::-;19456:16;:59:::0;-1:-1:-1;;;19162:359:0:o;11975:320::-;4404:10;9082:25;;;;:11;:25;;;;;;;;;:50;;-1:-1:-1;6295:7:0;6318:6;-1:-1:-1;;;;;6318:6:0;9111:10;:21;9082:50;9066:111;;;;-1:-1:-1;;;9066:111:0;;;;;;;:::i;:::-;12101:21:::1;12135:13:::0;;12131:159:::1;;12160:9;-1:-1:-1::0;;;;;12175:8:0;::::1;12224:3;12192:28;12204:16:::0;12192:9;:28:::1;:::i;:::-;12191:36;;;;:::i;:::-;12175:57;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12159:73;;;12249:4;12241:41;;;::::0;-1:-1:-1;;;12241:41:0;;11640:2:1;12241:41:0::1;::::0;::::1;11622:21:1::0;11679:2;11659:18;;;11652:30;11718:26;11698:18;;;11691:54;11762:18;;12241:41:0::1;11438:348:1::0;12241:41:0::1;12150:140;12131:159;12074:221;11975:320:::0;;:::o;11401:114::-;6216:13;:11;:13::i;:::-;-1:-1:-1;;;;;11480:18:0;;;::::1;;::::0;;;:11:::1;:18;::::0;;;;:29;;-1:-1:-1;;11480:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11401:114::o;10650:113::-;10700:7;10741:15;7255:2;10741;:15;:::i;:::-;10723:14;;:34;;;;:::i;19740:113::-;6216:13;:11;:13::i;:::-;-1:-1:-1;;;;;19819:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;19819:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19740:113::o;11521:448::-;6216:13;:11;:13::i;:::-;11645:20;;;;;:58:::1;;-1:-1:-1::0;11669:34:0;;::::1;11645:58;11637:67;;;::::0;::::1;;11726:10;11711:12;11745:219;11762:20:::0;;::::1;11745:219;;;11803:14;:28;11818:9;;11828:1;11818:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11803:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11803:28:0;;::::1;;11802:29;:66:::0;::::1;;;;11836:18;:32;11855:9;;11865:1;11855:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11836:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11836:32:0;;::::1;;11835:33;11802:66;11798:159;;;11881:66;11896:4;11902:9;;11912:1;11902:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11930:15;7255:2;11930;:15;:::i;:::-;11916:7;;11924:1;11916:10;;;;;;;:::i;:::-;;;;;;;:30;;;;:::i;:::-;11881:14;:66::i;:::-;;11798:159;11784:3:::0;::::1;::::0;::::1;:::i;:::-;;;;11745:219;;;;11630:339;11521:448:::0;;;;:::o;6468:97::-;6216:13;:11;:13::i;:::-;6529:30:::1;6556:1;6529:18;:30::i;:::-;6468:97::o:0;11273:122::-;11334:4;11354:35;11362:7;-1:-1:-1;;11354:7:0;:35::i;20876:247::-;6216:13;:11;:13::i;:::-;21004:20:::1;:53:::0;;-1:-1:-1;;;;;;21004:53:0::1;;-1:-1:-1::0;;;;;21004:53:0;;::::1;;;::::0;;21064:20:::1;:53:::0;;-1:-1:-1;;;;;;21064:53:0::1;::::0;;;::::1;;::::0;;20876:247::o;12746:165::-;12841:4;12861:44;12875:10;12887:9;12898:6;12861:13;:44::i;19527:207::-;6216:13;:11;:13::i;:::-;19631:1:::1;19619:9;:13;:28;;;;;19646:1;19636:7;:11;19619:28;:48;;;;;19662:5;19651:7;:16;;19619:48;19611:57;;;::::0;::::1;;19721:7;19708:9;19693:12;;:24;;;;:::i;:::-;19692:36;;;;:::i;:::-;19675:14;:53:::0;-1:-1:-1;;19527:207:0:o;10410:113::-;10459:7;10501:15;7255:2;10501;:15;:::i;:::-;10482;;:35;;;;:::i;12301:439::-;4404:10;9082:25;;;;:11;:25;;;;;;;;;:50;;-1:-1:-1;6295:7:0;6318:6;-1:-1:-1;;;;;6318:6:0;9111:10;:21;9082:50;9066:111;;;;-1:-1:-1;;;9066:111:0;;;;;;;:::i;:::-;12418:6:::1;12413:322;12430:19:::0;;::::1;12413:322;;;12469:10;12465:200;;;12492:14;:16:::0;;;:14:::1;:16;::::0;::::1;:::i;:::-;;;;;;12524:55;12542:9;12553:8;;12562:1;12553:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12524:55;::::0;;-1:-1:-1;;;;;12321:15:1;;;12303:34;;12373:15;;;;12368:2;12353:18;;12346:43;12566:12:0::1;12405:18:1::0;;;12398:34;12253:2;12238:18;12524:55:0::1;;;;;;;12465:200;;;12610:9;:22;12620:8;;12629:1;12620:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12610:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12610:22:0;;:27;12606:49:::1;;12639:14;:16:::0;;;:14:::1;:16;::::0;::::1;:::i;:::-;;;;;;12606:49;12698:10;:29;;12726:1;12698:29;;;12711:12;12698:29;12673:9;:22;12683:8;;12692:1;12683:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12673:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12673:22:0;:54;12451:3;::::1;::::0;::::1;:::i;:::-;;;;12413:322;;14900:160:::0;4404:10;9082:25;;;;:11;:25;;;;;;;;;:50;;-1:-1:-1;6295:7:0;6318:6;-1:-1:-1;;;;;6318:6:0;9111:10;:21;9082:50;9066:111;;;;-1:-1:-1;;;9066:111:0;;;;;;;:::i;:::-;14957:16:::1;::::0;::::1;;14956:17;14948:51;;;::::0;-1:-1:-1;;;14948:51:0;;12786:2:1;14948:51:0::1;::::0;::::1;12768:21:1::0;12825:2;12805:18;;;12798:30;-1:-1:-1;;;12844:18:1;;;12837:51;12905:18;;14948:51:0::1;12584:345:1::0;14948:51:0::1;15006:16;:23:::0;;-1:-1:-1;;15036:18:0;;;;;14900:160::o;21129:303::-;6216:13;:11;:13::i;:::-;21288:1:::1;21273:12;:16;21265:25;;;::::0;::::1;;21297:11;:22:::0;;-1:-1:-1;;21297:22:0::1;;::::0;::::1;;;;::::0;;21342:12:::1;::::0;:27:::1;::::0;21357:12;;21342:27:::1;:::i;:::-;21326:13;:43:::0;21410:15:::1;7255:2;21410;:15;:::i;:::-;21392:34;::::0;:14;:34:::1;:::i;:::-;21376:13;:50:::0;-1:-1:-1;;;21129:303:0:o;19056:100::-;6216:13;:11;:13::i;:::-;19126:17:::1;:24:::0;19056:100::o;20783:87::-;6216:13;:11;:13::i;:::-;20853:11:::1;::::0;;-1:-1:-1;;20838:26:0;::::1;20853:11;::::0;;::::1;20852:12;20838:26;::::0;;20783:87::o;16294:135::-;16350:7;16370;16366:32;;;-1:-1:-1;;16386:12:0;;;16294:135::o;16366:32::-;-1:-1:-1;;16412:11:0;;;16294:135::o;6571:191::-;6216:13;:11;:13::i;:::-;-1:-1:-1;;;;;6656:22:0;::::1;6648:73;;;::::0;-1:-1:-1;;;6648:73:0;;13136:2:1;6648:73:0::1;::::0;::::1;13118:21:1::0;13175:2;13155:18;;;13148:30;13214:34;13194:18;;;13187:62;-1:-1:-1;;;13265:18:1;;;13258:36;13311:19;;6648:73:0::1;12934:402:1::0;6648:73:0::1;6728:28;6747:8;6728:18;:28::i;:::-;6571:191:::0;:::o;19859:121::-;6216:13;:11;:13::i;:::-;-1:-1:-1;;;;;19942:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;19942:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19859:121::o;6336:126::-;6295:7;6318:6;-1:-1:-1;;;;;6318:6:0;4404:10;6396:23;6388:68;;;;-1:-1:-1;;;6388:68:0;;13543:2:1;6388:68:0;;;13525:21:1;;;13562:18;;;13555:30;13621:34;13601:18;;;13594:62;13673:18;;6388:68:0;13341:356:1;13284:1407:0;13396:4;-1:-1:-1;;;;;13417:20:0;;13409:57;;;;-1:-1:-1;;;13409:57:0;;13904:2:1;13409:57:0;;;13886:21:1;13943:2;13923:18;;;13916:30;13982:26;13962:18;;;13955:54;14026:18;;13409:57:0;13702:348:1;13409:57:0;-1:-1:-1;;;;;13481:23:0;;13473:58;;;;-1:-1:-1;;;13473:58:0;;14257:2:1;13473:58:0;;;14239:21:1;14296:2;14276:18;;;14269:30;-1:-1:-1;;;14315:18:1;;;14308:52;14377:18;;13473:58:0;14055:346:1;13473:58:0;13555:1;13546:6;:10;13538:44;;;;-1:-1:-1;;;13538:44:0;;14608:2:1;13538:44:0;;;14590:21:1;14647:2;14627:18;;;14620:30;-1:-1:-1;;;14666:18:1;;;14659:51;14727:18;;13538:44:0;14406:345:1;13538:44:0;-1:-1:-1;;;;;13597:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;13597:27:0;13589:60;;;;-1:-1:-1;;;13589:60:0;;14958:2:1;13589:60:0;;;14940:21:1;14997:2;14977:18;;;14970:30;-1:-1:-1;;;15016:18:1;;;15009:50;15076:18;;13589:60:0;14756:344:1;13589:60:0;14760:11;;:16;;;13660:40;;-1:-1:-1;;;;;;13675:25:0;;;;;;:14;:25;;;;;;;;13660:40;13656:143;;;-1:-1:-1;;;;;13719:26:0;;;;;;:18;:26;;;;;;;;13711:63;;;;-1:-1:-1;;;13711:63:0;;15307:2:1;13711:63:0;;;15289:21:1;15346:2;15326:18;;;15319:30;15385:26;15365:18;;;15358:54;15429:18;;13711:63:0;15105:348:1;13711:63:0;13783:8;14836:12;14822:11;:26;14873:15;14855;:33;14788:106;13783:8;13810:16;;;;13805:167;;-1:-1:-1;;;;;13855:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;13885:29:0;;;;;;:18;:29;;;;;;;;13855:59;13837:127;;;;-1:-1:-1;;;13837:127:0;;15660:2:1;13837:127:0;;;15642:21:1;15699:2;15679:18;;;15672:30;15738;15718:18;;;15711:58;15786:18;;13837:127:0;15458:352:1;13837:127:0;13980:39;13993:6;14001:9;14012:6;13980:12;:39::i;:::-;-1:-1:-1;;;;;14033:25:0;;;;;;:14;:25;;;;;;;;14032:26;:47;;;;-1:-1:-1;14075:4:0;;-1:-1:-1;;;;;14062:17:0;;;14075:4;;14062:17;;14032:47;14028:158;;;-1:-1:-1;;;;;14095:26:0;;;;;;:15;:26;;;;;;;;14090:89;;14134:35;14151:9;14162:6;14134:16;:35::i;:::-;14198:6;;;;14194:77;;;14222:41;14237:6;14245:9;14256:6;14222:14;:41::i;:::-;14215:48;;;;14194:77;-1:-1:-1;;;;;14299:17:0;;;;;;:9;:17;;;;;;:26;;14319:6;;14299:26;:::i;:::-;-1:-1:-1;;;;;14279:17:0;;;;;;:9;:17;;;;;:46;14359:6;14378:32;14289:6;14400:9;14378:13;:32::i;:::-;14374:168;;;14438:26;14446:9;14457:6;14438:7;:26::i;:::-;14421:43;;14477:25;14492:9;14477:14;:25::i;:::-;:39;;;;;14515:1;14506:6;:10;14477:39;14473:61;;;14518:16;14527:6;14518:8;:16::i;:::-;-1:-1:-1;;;;;14573:20:0;;;;;;:9;:20;;;;;;:37;;14596:14;;14573:37;:::i;:::-;-1:-1:-1;;;;;14550:20:0;;;;;;;:9;:20;;;;;;;:60;;;;14624:43;;;;;;;;;;14652:14;160:25:1;;148:2;133:18;;14:177;14624:43:0;;;;;;;;-1:-1:-1;14681:4:0;;13284:1407;-1:-1:-1;;;;13284:1407:0:o;15066:302::-;-1:-1:-1;;;;;15212:17:0;;15179:4;15212:17;;;:9;:17;;;;;;:26;;15232:6;;15212:26;:::i;:::-;-1:-1:-1;;;;;15192:17:0;;;;;;;:9;:17;;;;;;:46;;;;15268:20;;;;;;;:29;;15291:6;;15268:29;:::i;:::-;-1:-1:-1;;;;;15245:20:0;;;;;;;:9;:20;;;;;;;:52;;;;15309:35;;;;;;;;;;15337:6;160:25:1;;148:2;133:18;;14:177;15309:35:0;;;;;;;;-1:-1:-1;15358:4:0;15066:302;;;;;:::o;6768:177::-;6838:16;6857:6;;-1:-1:-1;;;;;6870:17:0;;;-1:-1:-1;;;;;;6870:17:0;;;;;;6899:40;;6857:6;;;;;;;6899:40;;6838:16;6899:40;6831:114;6768:177;:::o;15624:390::-;-1:-1:-1;;;;;15742:23:0;;;;;;:15;:23;;;;;;;;;:53;;-1:-1:-1;;;;;;15769:26:0;;;;;;:15;:26;;;;;;;;15742:53;15738:66;;;15624:390;;;:::o;15738:66::-;-1:-1:-1;;;;;15839:22:0;;;;;;:14;:22;;;;;;;;:59;;15882:16;;15839:59;;;15864:15;;15839:59;15828:6;:71;;15812:133;;;;-1:-1:-1;;;15812:133:0;;16017:2:1;15812:133:0;;;15999:21:1;16056:2;16036:18;;;16029:30;16095;16075:18;;;16068:58;16143:18;;15812:133:0;15815:352:1;15812:133:0;-1:-1:-1;;;;;15962:17:0;;;;;;:9;:17;;;;;;:22;15954:54;;;;-1:-1:-1;;;15954:54:0;;16374:2:1;15954:54:0;;;16356:21:1;16413:2;16393:18;;;16386:30;-1:-1:-1;;;16432:18:1;;;16425:49;16491:18;;15954:54:0;16172:343:1;15374:244:0;15478:14;;-1:-1:-1;;;;;15515:20:0;;15456:19;15515:20;;;:9;:20;;;;;;15478:14;;15515:29;;15538:6;;15515:29;:::i;:::-;:44;;15499:113;;;;-1:-1:-1;;;15499:113:0;;16722:2:1;15499:113:0;;;16704:21:1;16761:2;16741:18;;;16734:30;16800:34;16780:18;;;16773:62;-1:-1:-1;;;16851:18:1;;;16844:33;16894:19;;15499:113:0;16520:399:1;16435:302:0;-1:-1:-1;;;;;16551:25:0;;16520:7;16551:25;;;:14;:25;;;;;;16637:14;;16551:25;;;;;16520:7;;16613:20;16551:25;16613:11;:20::i;:::-;16604:29;;:6;:29;:::i;:::-;16603:48;;;;:::i;:::-;16678:4;16660:24;;;;:9;:24;;;;;:37;;16583:68;;-1:-1:-1;16583:68:0;;16660:24;;;:37;;16583:68;;16660:37;:::i;:::-;;;;-1:-1:-1;16713:18:0;;-1:-1:-1;16722:9:0;16713:6;:18;:::i;:::-;16706:25;16435:302;-1:-1:-1;;;;;16435:302:0:o;16743:355::-;16852:10;16809:4;16837:26;;;:14;:26;;;;;;;;16836:27;:45;;;;-1:-1:-1;16875:6:0;;;;16874:7;16836:45;:67;;;;-1:-1:-1;16892:11:0;;;;;;;16836:67;:127;;;;-1:-1:-1;16946:17:0;;16930:12;16914:29;;;;:15;:29;;;;;;:49;16836:127;:163;;;;-1:-1:-1;;;;;;16974:25:0;;;;;;:14;:25;;;;;;;;16836:163;:215;;;;-1:-1:-1;17038:13:0;;17028:4;17010:24;;;;:9;:24;;;;;;:41;;16836:215;:256;;;;;17091:1;17076:12;;17062:11;;:26;;;;:::i;:::-;:30;16822:270;16743:355;-1:-1:-1;;16743:355:0:o;17104:1766::-;8942:6;:13;;-1:-1:-1;;8942:13:0;8951:4;8942:13;;;17196:12:::1;::::0;17182:11:::1;::::0;8942:6;;17182:26:::1;::::0;::::1;:::i;:::-;17163:45;;17215:20;17247:13;;17238:6;:22;:47;;17272:13;;17238:47;;;17263:6;17238:47;17314:4;17296:24;::::0;;;:9:::1;:24;::::0;;;;;17215:70;;-1:-1:-1;17296:39:0;-1:-1:-1;17292:91:0::1;;;-1:-1:-1::0;17377:4:0::1;17359:24;::::0;;;:9:::1;:24;::::0;;;;;17292:91:::1;17392:25;17438:16;;17420:15;;:34;;;;:::i;:::-;17392:62:::0;-1:-1:-1;17461:23:0::1;17537:8:::0;17525:1:::1;17489:32;17392:62:::0;17489:12;:32:::1;:::i;:::-;17488:38;;;;:::i;:::-;17487:58;;;;:::i;:::-;17461:84:::0;-1:-1:-1;17552:31:0::1;17461:84:::0;17552:31;::::1;:::i;:::-;17616:16;::::0;;17630:1:::1;17616:16:::0;;;;;::::1;::::0;;17552:31;;-1:-1:-1;17592:21:0::1;::::0;17616:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;17616:16:0::1;17592:40;;17657:4;17639;17644:1;17639:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17639:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;17679:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;17679:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;17639:7;;17679:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17669:4;17674:1;17669:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17669:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;17755:6:::1;::::0;:154:::1;::::0;-1:-1:-1;;;17755:154:0;;17725:21:::1;::::0;17755:6;;;::::1;::::0;:57:::1;::::0;:154:::1;::::0;17821:12;;17701:21:::1;::::0;17852:4;;17873::::1;::::0;17887:15:::1;::::0;17755:154:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17918:17;17962:13;17938:21;:37;;;;:::i;:::-;17918:57:::0;-1:-1:-1;17982:19:0::1;18016:21;18036:1;18016:17:::0;:21:::1;:::i;:::-;18004:34;::::0;:8;:34:::1;:::i;:::-;17982:56:::0;-1:-1:-1;18047:26:0::1;17982:56:::0;18111:1:::1;18078:29;18090:17:::0;18078:9;:29:::1;:::i;:::-;18077:35;;;;:::i;:::-;18076:58;;;;:::i;:::-;18047:87:::0;-1:-1:-1;18141:26:0::1;18170:30;18047:87:::0;18170:9;:30:::1;:::i;:::-;18141:59:::0;-1:-1:-1;18213:22:0;;18209:232:::1;;18271:20;::::0;:74:::1;::::0;18247:18:::1;::::0;-1:-1:-1;;;;;18271:20:0::1;::::0;18314:18;;18247;18271:74;18247:18;18271:74;18314:18;18271:20;:74:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;18209:232:0::1;18453:19:::0;;18449:231:::1;;18483:6;::::0;18617:20:::1;::::0;18483:189:::1;::::0;-1:-1:-1;;;18483:189:0;;18551:4:::1;18483:189;::::0;::::1;18646:34:1::0;18696:18;;;18689:34;;;-1:-1:-1;18739:18:1;;;18732:34;;;18782:18;;;18775:34;-1:-1:-1;;;;;18483:6:0::1;18617:20:::0;;::::1;::::0;::::1;18825:19:1::0;;;18818:44;18648:15:0::1;18878:19:1::0;;;18871:35;18483:6:0;::::1;::::0;:22:::1;::::0;18513:18;;18580:19:1;;18483:189:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18449:231;18734:12;18718:29;::::0;;;:15:::1;:29;::::0;;;;;:33:::1;::::0;18750:1:::1;18718:33;:::i;:::-;18702:12;18686:29;::::0;;;:15:::1;:29;::::0;;;;;;;;:65;;;;18763:101;;8831:25:1;;;8872:18;;;8865:34;;;8915:18;;8908:34;;;18763:101:0::1;::::0;8819:2:1;8804:18;18763:101:0::1;;;;;;;-1:-1:-1::0;;8970:6:0;:14;;-1:-1:-1;;8970:14:0;;;-1:-1:-1;;;;;;;;;17104:1766:0:o;196:454:1:-;291:6;299;307;315;323;376:3;364:9;355:7;351:23;347:33;344:53;;;393:1;390;383:12;344:53;-1:-1:-1;;416:23:1;;;486:2;471:18;;458:32;;-1:-1:-1;537:2:1;522:18;;509:32;;588:2;573:18;;560:32;;-1:-1:-1;639:3:1;624:19;611:33;;-1:-1:-1;196:454:1;-1:-1:-1;196:454:1:o;655:548::-;767:4;796:2;825;814:9;807:21;857:6;851:13;900:6;895:2;884:9;880:18;873:34;925:1;935:140;949:6;946:1;943:13;935:140;;;1044:14;;;1040:23;;1034:30;1010:17;;;1029:2;1006:26;999:66;964:10;;935:140;;;939:3;1124:1;1119:2;1110:6;1099:9;1095:22;1091:31;1084:42;1194:2;1187;1183:7;1178:2;1170:6;1166:15;1162:29;1151:9;1147:45;1143:54;1135:62;;;;655:548;;;;:::o;1208:131::-;-1:-1:-1;;;;;1283:31:1;;1273:42;;1263:70;;1329:1;1326;1319:12;1344:315;1412:6;1420;1473:2;1461:9;1452:7;1448:23;1444:32;1441:52;;;1489:1;1486;1479:12;1441:52;1528:9;1515:23;1547:31;1572:5;1547:31;:::i;:::-;1597:5;1649:2;1634:18;;;;1621:32;;-1:-1:-1;;;1344:315:1:o;1856:456::-;1933:6;1941;1949;2002:2;1990:9;1981:7;1977:23;1973:32;1970:52;;;2018:1;2015;2008:12;1970:52;2057:9;2044:23;2076:31;2101:5;2076:31;:::i;:::-;2126:5;-1:-1:-1;2183:2:1;2168:18;;2155:32;2196:33;2155:32;2196:33;:::i;:::-;1856:456;;2248:7;;-1:-1:-1;;;2302:2:1;2287:18;;;;2274:32;;1856:456::o;2506:388::-;2574:6;2582;2635:2;2623:9;2614:7;2610:23;2606:32;2603:52;;;2651:1;2648;2641:12;2603:52;2690:9;2677:23;2709:31;2734:5;2709:31;:::i;:::-;2759:5;-1:-1:-1;2816:2:1;2801:18;;2788:32;2829:33;2788:32;2829:33;:::i;:::-;2881:7;2871:17;;;2506:388;;;;;:::o;2899:247::-;2958:6;3011:2;2999:9;2990:7;2986:23;2982:32;2979:52;;;3027:1;3024;3017:12;2979:52;3066:9;3053:23;3085:31;3110:5;3085:31;:::i;3151:160::-;3216:20;;3272:13;;3265:21;3255:32;;3245:60;;3301:1;3298;3291:12;3245:60;3151:160;;;:::o;3316:315::-;3381:6;3389;3442:2;3430:9;3421:7;3417:23;3413:32;3410:52;;;3458:1;3455;3448:12;3410:52;3497:9;3484:23;3516:31;3541:5;3516:31;:::i;:::-;3566:5;-1:-1:-1;3590:35:1;3621:2;3606:18;;3590:35;:::i;:::-;3580:45;;3316:315;;;;;:::o;3636:316::-;3713:6;3721;3729;3782:2;3770:9;3761:7;3757:23;3753:32;3750:52;;;3798:1;3795;3788:12;3750:52;-1:-1:-1;;3821:23:1;;;3891:2;3876:18;;3863:32;;-1:-1:-1;3942:2:1;3927:18;;;3914:32;;3636:316;-1:-1:-1;3636:316:1:o;3957:315::-;4025:6;4033;4086:2;4074:9;4065:7;4061:23;4057:32;4054:52;;;4102:1;4099;4092:12;4054:52;4138:9;4125:23;4115:33;;4198:2;4187:9;4183:18;4170:32;4211:31;4236:5;4211:31;:::i;4277:367::-;4340:8;4350:6;4404:3;4397:4;4389:6;4385:17;4381:27;4371:55;;4422:1;4419;4412:12;4371:55;-1:-1:-1;4445:20:1;;4488:18;4477:30;;4474:50;;;4520:1;4517;4510:12;4474:50;4557:4;4549:6;4545:17;4533:29;;4617:3;4610:4;4600:6;4597:1;4593:14;4585:6;4581:27;4577:38;4574:47;4571:67;;;4634:1;4631;4624:12;4571:67;4277:367;;;;;:::o;4649:773::-;4771:6;4779;4787;4795;4848:2;4836:9;4827:7;4823:23;4819:32;4816:52;;;4864:1;4861;4854:12;4816:52;4904:9;4891:23;4933:18;4974:2;4966:6;4963:14;4960:34;;;4990:1;4987;4980:12;4960:34;5029:70;5091:7;5082:6;5071:9;5067:22;5029:70;:::i;:::-;5118:8;;-1:-1:-1;5003:96:1;-1:-1:-1;5206:2:1;5191:18;;5178:32;;-1:-1:-1;5222:16:1;;;5219:36;;;5251:1;5248;5241:12;5219:36;;5290:72;5354:7;5343:8;5332:9;5328:24;5290:72;:::i;:::-;4649:773;;;;-1:-1:-1;5381:8:1;-1:-1:-1;;;;4649:773:1:o;5635:248::-;5703:6;5711;5764:2;5752:9;5743:7;5739:23;5735:32;5732:52;;;5780:1;5777;5770:12;5732:52;-1:-1:-1;;5803:23:1;;;5873:2;5858:18;;;5845:32;;-1:-1:-1;5635:248:1:o;5888:505::-;5980:6;5988;5996;6049:2;6037:9;6028:7;6024:23;6020:32;6017:52;;;6065:1;6062;6055:12;6017:52;6105:9;6092:23;6138:18;6130:6;6127:30;6124:50;;;6170:1;6167;6160:12;6124:50;6209:70;6271:7;6262:6;6251:9;6247:22;6209:70;:::i;:::-;6298:8;;-1:-1:-1;6183:96:1;-1:-1:-1;6352:35:1;;-1:-1:-1;6383:2:1;6368:18;;6352:35;:::i;:::-;6342:45;;5888:505;;;;;:::o;6622:316::-;6696:6;6704;6712;6765:2;6753:9;6744:7;6740:23;6736:32;6733:52;;;6781:1;6778;6771:12;6733:52;6804:26;6820:9;6804:26;:::i;:::-;6794:36;6877:2;6862:18;;6849:32;;-1:-1:-1;6928:2:1;6913:18;;;6900:32;;6622:316;-1:-1:-1;;;6622:316:1:o;6943:180::-;7002:6;7055:2;7043:9;7034:7;7030:23;7026:32;7023:52;;;7071:1;7068;7061:12;7023:52;-1:-1:-1;7094:23:1;;6943:180;-1:-1:-1;6943:180:1:o;7128:::-;7184:6;7237:2;7225:9;7216:7;7212:23;7208:32;7205:52;;;7253:1;7250;7243:12;7205:52;7276:26;7292:9;7276:26;:::i;7539:127::-;7600:10;7595:3;7591:20;7588:1;7581:31;7631:4;7628:1;7621:15;7655:4;7652:1;7645:15;7671:125;7736:9;;;7757:10;;;7754:36;;;7770:18;;:::i;7801:217::-;7841:1;7867;7857:132;;7911:10;7906:3;7902:20;7899:1;7892:31;7946:4;7943:1;7936:15;7974:4;7971:1;7964:15;7857:132;-1:-1:-1;8003:9:1;;7801:217::o;8023:168::-;8096:9;;;8127;;8144:15;;;8138:22;;8124:37;8114:71;;8165:18;;:::i;8953:422::-;9042:1;9085:5;9042:1;9099:270;9120:7;9110:8;9107:21;9099:270;;;9179:4;9175:1;9171:6;9167:17;9161:4;9158:27;9155:53;;;9188:18;;:::i;:::-;9238:7;9228:8;9224:22;9221:55;;;9258:16;;;;9221:55;9337:22;;;;9297:15;;;;9099:270;;;9103:3;8953:422;;;;;:::o;9380:806::-;9429:5;9459:8;9449:80;;-1:-1:-1;9500:1:1;9514:5;;9449:80;9548:4;9538:76;;-1:-1:-1;9585:1:1;9599:5;;9538:76;9630:4;9648:1;9643:59;;;;9716:1;9711:130;;;;9623:218;;9643:59;9673:1;9664:10;;9687:5;;;9711:130;9748:3;9738:8;9735:17;9732:43;;;9755:18;;:::i;:::-;-1:-1:-1;;9811:1:1;9797:16;;9826:5;;9623:218;;9925:2;9915:8;9912:16;9906:3;9900:4;9897:13;9893:36;9887:2;9877:8;9874:16;9869:2;9863:4;9860:12;9856:35;9853:77;9850:159;;;-1:-1:-1;9962:19:1;;;9994:5;;9850:159;10041:34;10066:8;10060:4;10041:34;:::i;:::-;10111:6;10107:1;10103:6;10099:19;10090:7;10087:32;10084:58;;;10122:18;;:::i;:::-;10160:20;;9380:806;-1:-1:-1;;;9380:806:1:o;10191:140::-;10249:5;10278:47;10319:4;10309:8;10305:19;10299:4;10278:47;:::i;10336:128::-;10403:9;;;10424:11;;;10421:37;;;10438:18;;:::i;10872:351::-;11074:2;11056:21;;;11113:2;11093:18;;;11086:30;11152:29;11147:2;11132:18;;11125:57;11214:2;11199:18;;10872:351::o;11791:127::-;11852:10;11847:3;11843:20;11840:1;11833:31;11883:4;11880:1;11873:15;11907:4;11904:1;11897:15;11923:135;11962:3;11983:17;;;11980:43;;12003:18;;:::i;:::-;-1:-1:-1;12050:1:1;12039:13;;11923:135::o;12443:136::-;12482:3;12510:5;12500:39;;12519:18;;:::i;:::-;-1:-1:-1;;;12555:18:1;;12443:136::o;17056:251::-;17126:6;17179:2;17167:9;17158:7;17154:23;17150:32;17147:52;;;17195:1;17192;17185:12;17147:52;17227:9;17221:16;17246:31;17271:5;17246:31;:::i;17312:980::-;17574:4;17622:3;17611:9;17607:19;17653:6;17642:9;17635:25;17679:2;17717:6;17712:2;17701:9;17697:18;17690:34;17760:3;17755:2;17744:9;17740:18;17733:31;17784:6;17819;17813:13;17850:6;17842;17835:22;17888:3;17877:9;17873:19;17866:26;;17927:2;17919:6;17915:15;17901:29;;17948:1;17958:195;17972:6;17969:1;17966:13;17958:195;;;18037:13;;-1:-1:-1;;;;;18033:39:1;18021:52;;18128:15;;;;18093:12;;;;18069:1;17987:9;17958:195;;;-1:-1:-1;;;;;;;18209:32:1;;;;18204:2;18189:18;;18182:60;-1:-1:-1;;;18273:3:1;18258:19;18251:35;18170:3;17312:980;-1:-1:-1;;;17312:980:1:o;18917:306::-;19005:6;19013;19021;19074:2;19062:9;19053:7;19049:23;19045:32;19042:52;;;19090:1;19087;19080:12;19042:52;19119:9;19113:16;19103:26;;19169:2;19158:9;19154:18;19148:25;19138:35;;19213:2;19202:9;19198:18;19192:25;19182:35;;18917:306;;;;;:::o

Swarm Source

ipfs://8e6ef83661081e1116c69bab48aac7980a5a49b52f088c96aa8afa64e1d0877b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.