ETH Price: $3,930.45 (+0.64%)

Token

ERC-20: KORI Inu (KORI)
 

Overview

Max Total Supply

1,000,000,000,000 KORI

Holders

149

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,000,000,000 KORI

Value
$0.00
0x753c52ce6d2d9010ea767fbf5c4c03b1c9c653cd
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:
KORIinu

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
KORI Inu
Telegram: https://t.me/KoriInuOfficial
Website: https://www.KoriInu.io


                              __
                            .d$$b
                          .' TO$;\
                         /  : TP._;
                        / _.;  :Tb|
                       /   /   ;j$j
                   _.-"       d$$$$
                 .' ..       d$$$$;
                /  /P'      d$$$$P. |\
               /   "      .d$$$P' |\^"l
             .'           `T$P^"""""  :
         ._.'      _.'                ;
      `-.-".-'-' ._.       _.-"    .-"
    `.-" _____  ._              .-"
   -(.g$$$$$$$b.              .'
     ""^^T$$$P^)            .(:
       _/  -"  /.'         /:/;
    ._.'-'`-'  ")/         /;/;
 `-.-"..--""   " /         /  ;
.-" ..--""        -'          :
..--""--.-"         (\      .-(\
  ..--""              `-\(\/;`
    _.                      :
                            ;`-
                           :\
                           ; 

                                                    
*/
// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.7;

library Address {

    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }
    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 functionCall(target, data, "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");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        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;
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract KORIinu is IERC20, Ownable {
    using Address for address;
    
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "KORI Inu";
    string constant _symbol = "KORI";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000_000_000 * (10 ** _decimals);
    uint256 _maxBuyTxAmount = (_totalSupply * 1) / 200;
    uint256 _maxSellTxAmount = (_totalSupply * 1) / 200;
    uint256 _maxWalletSize = (_totalSupply * 2) / 100;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => uint256) public lastSell;
    mapping (address => uint256) public lastBuy;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) liquidityCreator;

    uint256 marketingFee = 9000;
    uint256 liquidityFee = 2000;
    uint256 totalFee = marketingFee + liquidityFee;
    uint256 sellBias = 0;
    uint256 feeDenominator = 10000;

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

    IDEXRouter public router;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    mapping (address => bool) liquidityPools;
    mapping (address => uint256) public protected;
    bool protectionEnabled = true;
    bool protectionDisabled = false;
    uint256 protectionLimit;
    uint256 public protectionCount;
    uint256 protectionTimer;

    address public pair;

    uint256 public launchedAt;
    uint256 public launchedTime;
    uint256 public deadBlocks;
    bool startBullRun = false;
    bool pauseDisabled = false;
    uint256 public rateLimit = 2;

    bool public swapEnabled = false;
    bool processEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000;
    uint256 public swapMinimum = _totalSupply / 10000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    mapping (address => bool) teamMember;
    
    modifier onlyTeam() {
        require(teamMember[_msgSender()] || msg.sender == owner(), "Caller is not a team member");
        _;
    }
    
    event ProtectedWallet(address, address, uint256, uint8);

    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;
        liquidityCreator[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 approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }
    
    function setTeamMember(address _team, bool _enabled) external onlyOwner {
        teamMember[_team] = _enabled;
    }
    
    
    function clearStuckBalance(uint256 amountPercentage, address adr) external onlyTeam {
        uint256 amountETH = address(this).balance;
        payable(adr).transfer((amountETH * amountPercentage) / 100);
    }
    
    function openTrading(uint256 _deadBlocks, uint256 _protection, uint256 _limit) external onlyTeam {
        require(!startBullRun && _deadBlocks < 10);
        deadBlocks = _deadBlocks;
        startBullRun = true;
        launchedAt = block.number;
        protectionTimer = block.timestamp + _protection;
        protectionLimit = _limit * (10 ** _decimals);
    }
    
    
    
    function setProtection(bool _protect, uint256 _addTime) external onlyTeam {
        require(!protectionDisabled);
        protectionEnabled = _protect;
        require(_addTime < 1 days);
        protectionTimer += _addTime;
    }
    
    function disableProtection() external onlyTeam {
        protectionDisabled = true;
        protectionEnabled = false;
    }
    
    function protectWallet(address[] calldata _wallets, bool _protect) external onlyTeam {
        if (_protect) {
            require(protectionEnabled);
        }
        
        for (uint i = 0; i < _wallets.length; i++) {
            
            if (_protect) {
                protectionCount++;
                emit ProtectedWallet(tx.origin, _wallets[i], block.number, 2);
            }
            else {
                if (protected[_wallets[i]] != 0)
                    protectionCount--;      
            }
            protected[_wallets[i]] = _protect ? 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), "BEP20: transfer from 0x0");
        require(recipient != address(0), "BEP20: transfer to 0x0");
        require(amount > 0, "Amount must be > zero");
        require(_balances[sender] >= amount, "Insufficient balance");
        if(!launched() && liquidityPools[recipient]){ require(liquidityCreator[sender], "Liquidity not added yet."); launch(); }
        if(!startBullRun){ require(liquidityCreator[sender] || liquidityCreator[recipient], "Trading not open yet."); }

        checkTxLimit(sender, recipient, amount);
        
        if (!liquidityPools[recipient] && recipient != DEAD) {
            if (!isTxLimitExempt[recipient]) {
                checkWalletLimit(recipient, amount);
            }
        }
        
        if(protectionEnabled && protectionTimer > block.timestamp) {
            if(liquidityPools[sender] && tx.origin != recipient && protected[recipient] == 0) {
                protected[recipient] = block.number;
                protectionCount++;
                emit ProtectedWallet(tx.origin, recipient, block.number, 0);
            }
        }
        
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

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

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(recipient, amount) : amount;
        
        if(shouldSwapBack(recipient)){ if (amount > 0) swapBack(amount); }
        
        _balances[recipient] = _balances[recipient] + amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
        launchedTime = block.timestamp;
        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, "Transfer amount exceeds the bag size.");
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal {
        require(isTxLimitExempt[sender] || amount <= (liquidityPools[sender] ? _maxBuyTxAmount : _maxSellTxAmount), "TX Limit Exceeded");
        require(isTxLimitExempt[sender] || lastBuy[recipient] + rateLimit <= block.number, "Transfer rate limit exceeded.");
        
        if (protected[sender] != 0){
            require(amount <= protectionLimit * (10 ** _decimals) && lastSell[sender] == 0 && protectionTimer > block.timestamp, "Wallet protected, please contact support.");
            lastSell[sender] = block.number;
        }
        
        if (liquidityPools[recipient]) {
            lastSell[sender] = block.number;
        } else if (shouldTakeFee(sender)) {
            if (protectionEnabled && protectionTimer > block.timestamp && lastBuy[tx.origin] == block.number && protected[recipient] == 0) {
                protected[recipient] = block.number;
                emit ProtectedWallet(tx.origin, recipient, block.number, 1);
            }
            lastBuy[recipient] = block.number;
            if (tx.origin != recipient)
                lastBuy[tx.origin] = block.number;
        }
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + deadBlocks >= block.number){ return feeDenominator - 1; }
        if (selling) return totalFee + sellBias;
        return totalFee - sellBias;
    }

    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
        && liquidityPools[recipient]
        && _balances[address(this)] >= swapMinimum;
    }

    function swapBack(uint256 amount) internal swapping {
        uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold;
        if (_balances[address(this)] < amountToSwap) amountToSwap = _balances[address(this)];
        
        uint256 amountToLiquify = (amountToSwap * liquidityFee / 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 amountBNB = address(this).balance - balanceBefore;
        uint256 totalBNBFee = totalFee - (liquidityFee / 2);

        uint256 amountBNBLiquidity = (amountBNB * liquidityFee / 2) / totalBNBFee;
        uint256 amountBNBMarketing = amountBNB - amountBNBLiquidity;
        
        if (amountBNBMarketing > 0)
            marketingFeeReceiver.transfer(amountBNBMarketing);
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityFeeReceiver,
                block.timestamp
            );
        }

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

    function setRateLimit(uint256 rate) external onlyOwner {
        require(rate <= 60 seconds);
        rateLimit = 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 _liquidityFee, uint256 _marketingFee, uint256 _sellBias, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        totalFee = _marketingFee + _liquidityFee;
        sellBias = _sellBias;
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 2);
    }

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

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

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

    event FundsDistributed(uint256 marketingBNB, uint256 liquidityBNB, uint256 liquidityTokens);
}

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":"marketingBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityBNB","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":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint8","name":"","type":"uint8"}],"name":"ProtectedWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addLiquidityPool","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":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"adr","type":"address"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"disableProtection","outputs":[],"stateMutability":"nonpayable","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":"lastBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedTime","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":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"},{"internalType":"uint256","name":"_protection","type":"uint256"},{"internalType":"uint256","name":"_limit","type":"uint256"}],"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":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_protect","type":"bool"}],"name":"protectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"protected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellBias","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":"bool","name":"_protect","type":"bool"},{"internalType":"uint256","name":"_addTime","type":"uint256"}],"name":"setProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setRateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_processEnabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"},{"internalType":"uint256","name":"_swapMinimum","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":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMinimum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b031990811661dead17909155600280549091169055620000326009600a6200059d565b620000439064e8d4a510006200065e565b60035560c860035460016200005991906200065e565b62000065919062000531565b60045560c860035460016200007b91906200065e565b62000087919062000531565b600555606460035460026200009d91906200065e565b620000a9919062000531565b600655612328600e8190556107d0600f819055620000c79162000516565b6010556000601155612710601255601380546001600160a01b0319908116733e90ba0723e22584336d9af8a0606b97beecfce690811790925560148054821690921790915560168054909116737a250d5630b4cf539739df2c5dacb4c659f2488d1790556019805461ffff19908116600117909155602180548216905560026022556023805490911661010017905560035462000168906103e89062000531565b6024556127106003546200017d919062000531565b6025553480156200018d57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601654601580546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200022757600080fd5b505afa1580156200023c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002629190620004e4565b6001600160a01b031663c9c65396601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002bf57600080fd5b505afa158015620002d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fa9190620004e4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200034257600080fd5b505af115801562000357573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037d9190620004e4565b601d80546001600160a01b0319166001600160a01b039290921691821790556000908152601760205260408120805460ff1916600117905560001990600890620003cf6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601680548416835290855283822095909555308082526008855283822086548416835285528382206000199055815483168252600b85528382208054600160ff199182168117909255835485168452600d87528584208054821683179055918352600c865284832080548316821790558254841683528483208054831682179055955483168252838220805482168717905585548316825283822080549091169095179094556003548454821685526007845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000696565b600060208284031215620004f757600080fd5b81516001600160a01b03811681146200050f57600080fd5b9392505050565b600082198211156200052c576200052c62000680565b500190565b6000826200054f57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200059557816000190482111562000579576200057962000680565b808516156200058757918102915b93841c939080029062000559565b509250929050565b60006200050f60ff841683600082620005b95750600162000658565b81620005c85750600062000658565b8160018114620005e15760028114620005ec576200060c565b600191505062000658565b60ff84111562000600576200060062000680565b50506001821b62000658565b5060208310610133831016604e8410600b841016171562000631575081810a62000658565b6200063d838362000554565b806000190482111562000654576200065462000680565b0290505b92915050565b60008160001904831182151516156200067b576200067b62000680565b500290565b634e487b7160e01b600052601160045260246000fd5b61290180620006a66000396000f3fe6080604052600436106102b25760003560e01c80636fcba37711610175578063bf56b371116100dc578063e96fada211610095578063f84ba65d1161006f578063f84ba65d14610894578063f8821a62146108b4578063f887ea40146108ca578063fabb0b4f146108ea57600080fd5b8063e96fada214610834578063f1f3bca314610854578063f2fde38b1461087457600080fd5b8063bf56b3711461074b578063bfa21d6a14610761578063c1adf7bc14610781578063c287184e146107ae578063d6860142146107ce578063dd62ed3e146107ee57600080fd5b80639b02c4021161012e5780639b02c402146106a0578063a4b45c00146106b6578063a8aa1b31146106d6578063a9059cbb146106f6578063abe57e7014610716578063bafe446b1461073657600080fd5b80636fcba377146105b857806370a08231146105d8578063715018a61461060e578063893d20e8146106235780638da5cb5b1461065557806395d89b411461067357600080fd5b8063492a937b1161021957806360bba03d116101d257806360bba03d1461050657806361e08e721461052657806363a803e11461053c578063658d4b7f146105515780636ddd1713146105715780636f4ce4281461058b57600080fd5b8063492a937b14610450578063507139351461047057806354a1dfc91461049057806356a227f2146104b0578063571ac8b0146104d05780635804f1e4146104f057600080fd5b806323b872dd1161026b57806323b872dd1461039d5780632b112e49146103bd578063313ce567146103d257806334848b9a146103ee578063421dd7c71461040e57806346d7edaa1461042357600080fd5b80630445b667146102be57806306fdde03146102e7578063095db78f14610321578063095ea7b31461034357806318160ddd14610373578063234e94941461038857600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d460245481565b6040519081526020015b60405180910390f35b3480156102f357600080fd5b506040805180820190915260088152674b4f524920496e7560c01b60208201525b6040516102de91906125c5565b34801561032d57600080fd5b5061034161033c3660046123b1565b610900565b005b34801561034f57600080fd5b5061036361035e366004612385565b610abc565b60405190151581526020016102de565b34801561037f57600080fd5b506003546102d4565b34801561039457600080fd5b506102d4610b29565b3480156103a957600080fd5b506103636103b836600461230f565b610b49565b3480156103c957600080fd5b506102d4610bde565b3480156103de57600080fd5b50604051600981526020016102de565b3480156103fa57600080fd5b5061034161040936600461250e565b610c1f565b34801561041a57600080fd5b50610341610cc0565b34801561042f57600080fd5b506102d461043e36600461229c565b60186020526000908152604090205481565b34801561045c57600080fd5b5061034161046b366004612350565b610d15565b34801561047c57600080fd5b5061034161048b36600461250e565b610dd3565b34801561049c57600080fd5b506103416104ab366004612450565b610e6e565b3480156104bc57600080fd5b506103416104cb3660046124c7565b610ef1565b3480156104dc57600080fd5b506103636104eb36600461229c565b610f81565b3480156104fc57600080fd5b506102d4601f5481565b34801561051257600080fd5b50610341610521366004612350565b610f8f565b34801561053257600080fd5b506102d460225481565b34801561054857600080fd5b506102d4610fe4565b34801561055d57600080fd5b5061034161056c366004612350565b610fff565b34801561057d57600080fd5b506023546103639060ff1681565b34801561059757600080fd5b506102d46105a636600461229c565b60096020526000908152604090205481565b3480156105c457600080fd5b506103416105d3366004612568565b611054565b3480156105e457600080fd5b506102d46105f336600461229c565b6001600160a01b031660009081526007602052604090205490565b34801561061a57600080fd5b506103416110b7565b34801561062f57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102de565b34801561066157600080fd5b506000546001600160a01b031661063d565b34801561067f57600080fd5b506040805180820190915260048152634b4f524960e01b6020820152610314565b3480156106ac57600080fd5b506102d4601b5481565b3480156106c257600080fd5b506103416106d13660046122d6565b61112b565b3480156106e257600080fd5b50601d5461063d906001600160a01b031681565b34801561070257600080fd5b50610363610711366004612385565b611183565b34801561072257600080fd5b506103416107313660046124ec565b611190565b34801561074257600080fd5b506102d4611201565b34801561075757600080fd5b506102d4601e5481565b34801561076d57600080fd5b5060135461063d906001600160a01b031681565b34801561078d57600080fd5b506102d461079c36600461229c565b600a6020526000908152604090205481565b3480156107ba57600080fd5b506103416107c93660046124ae565b61121c565b3480156107da57600080fd5b506103416107e9366004612492565b611259565b3480156107fa57600080fd5b506102d46108093660046122d6565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561084057600080fd5b5060145461063d906001600160a01b031681565b34801561086057600080fd5b506102d461086f366004612435565b6112ea565b34801561088057600080fd5b5061034161088f36600461229c565b611337565b3480156108a057600080fd5b506103416108af366004612350565b611421565b3480156108c057600080fd5b506102d460255481565b3480156108d657600080fd5b5060155461063d906001600160a01b031681565b3480156108f657600080fd5b506102d460205481565b3360009081526027602052604090205460ff168061092857506000546001600160a01b031633145b61094d5760405162461bcd60e51b81526004016109449061261a565b60405180910390fd5b80156109625760195460ff1661096257600080fd5b60005b82811015610ab65781156109f157601b80549060006109838361286c565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea328585848181106109bc576109bc61289d565b90506020020160208101906109d1919061229c565b4360026040516109e4949392919061259a565b60405180910390a1610a51565b60186000858584818110610a0757610a0761289d565b9050602002016020810190610a1c919061229c565b6001600160a01b0316815260208101919091526040016000205415610a5157601b8054906000610a4b83612855565b91905055505b81610a5d576000610a5f565b435b60186000868685818110610a7557610a7561289d565b9050602002016020810190610a8a919061229c565b6001600160a01b0316815260208101919091526040016000205580610aae8161286c565b915050610965565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b179086815260200190565b60405180910390a35060015b92915050565b6000610b376009600a612774565b600554610b44919061270f565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610bc9576001600160a01b0384166000908152600860209081526040808320338452909152902054610ba490839061283e565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610bd4848484611476565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610c12916126f7565b600354610b44919061283e565b3360009081526027602052604090205460ff1680610c4757506000546001600160a01b031633145b610c635760405162461bcd60e51b81526004016109449061261a565b60215460ff16158015610c765750600a83105b610c7f57600080fd5b60208390556021805460ff1916600117905543601e55610c9f82426126f7565b601c55610cae6009600a612774565b610cb8908261281f565b601a55505050565b3360009081526027602052604090205460ff1680610ce857506000546001600160a01b031633145b610d045760405162461bcd60e51b81526004016109449061261a565b6019805461ffff1916610100179055565b6000546001600160a01b03163314610d3f5760405162461bcd60e51b815260040161094490612651565b601d546001600160a01b0383811691161415610da85760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610944565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610dfd5760405162461bcd60e51b815260040161094490612651565b600083118015610e0d5750600082115b8015610e195750600081115b8015610e2757506127108111155b610e3057600080fd5b8083600354610e3f919061281f565b610e49919061270f565b6004556003548190610e5c90849061281f565b610e66919061270f565b600555505050565b6000546001600160a01b03163314610e985760405162461bcd60e51b815260040161094490612651565b60008211610ea557600080fd5b6023805461ffff191685151561ff0019161761010085151502179055600354610ecf90839061270f565b602455610ede6009600a612774565b610ee8908261281f565b60255550505050565b3360009081526027602052604090205460ff1680610f1957506000546001600160a01b031633145b610f355760405162461bcd60e51b81526004016109449061261a565b476001600160a01b0382166108fc6064610f4f868561281f565b610f59919061270f565b6040518115909202916000818181858888f19350505050158015610ab6573d6000803e3d6000fd5b6000610b2382600019610abc565b6000546001600160a01b03163314610fb95760405162461bcd60e51b815260040161094490612651565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b6000610ff26009600a612774565b600654610b44919061270f565b6000546001600160a01b031633146110295760405162461bcd60e51b815260040161094490612651565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461107e5760405162461bcd60e51b815260040161094490612651565b600f849055600e83905561109284846126f7565b601055601182905560128190556110aa60028261270f565b60105410610ab657600080fd5b6000546001600160a01b031633146110e15760405162461bcd60e51b815260040161094490612651565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146111555760405162461bcd60e51b815260040161094490612651565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000610bd7338484611476565b6000546001600160a01b031633146111ba5760405162461bcd60e51b815260040161094490612651565b6000821180156111ca5750600081115b80156111d857506127108111155b6111e157600080fd5b80826003546111f0919061281f565b6111fa919061270f565b6006555050565b600061120f6009600a612774565b600454610b44919061270f565b6000546001600160a01b031633146112465760405162461bcd60e51b815260040161094490612651565b603c81111561125457600080fd5b602255565b3360009081526027602052604090205460ff168061128157506000546001600160a01b031633145b61129d5760405162461bcd60e51b81526004016109449061261a565b601954610100900460ff16156112b257600080fd5b6019805460ff19168315151790556201518081106112cf57600080fd5b80601c60008282546112e191906126f7565b90915550505050565b600043602054601e546112fd91906126f7565b10611311576001601254610b23919061283e565b811561132757601154601054610b2391906126f7565b601154601054610b23919061283e565b6000546001600160a01b031633146113615760405162461bcd60e51b815260040161094490612651565b6001600160a01b0381166113c65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610944565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461144b5760405162461bcd60e51b815260040161094490612651565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006001600160a01b0384166114ce5760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d2030783000000000000000006044820152606401610944565b6001600160a01b03831661151d5760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b6044820152606401610944565b600082116115655760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610944565b6001600160a01b0384166000908152600760205260409020548211156115c45760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610944565b601e541580156115ec57506001600160a01b03831660009081526017602052604090205460ff165b15611673576001600160a01b0384166000908152600d602052604090205460ff166116595760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610944565b61167343601e5542601f556023805460ff19166001179055565b60215460ff16611700576001600160a01b0384166000908152600d602052604090205460ff16806116bc57506001600160a01b0383166000908152600d602052604090205460ff165b6117005760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b6044820152606401610944565b61170b848484611978565b6001600160a01b03831660009081526017602052604090205460ff1615801561174257506001546001600160a01b03848116911614155b15611771576001600160a01b0383166000908152600c602052604090205460ff16611771576117718383611ccd565b60195460ff168015611784575042601c54115b1561184e576001600160a01b03841660009081526017602052604090205460ff1680156117ba5750326001600160a01b03841614155b80156117dc57506001600160a01b038316600090815260186020526040902054155b1561184e576001600160a01b0383166000908152601860205260408120439055601b80549161180a8361286c565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611845949392919061259a565b60405180910390a15b60265460ff161561186b57611864848484611d52565b9050610bd7565b6001600160a01b03841660009081526007602052604090205461188f90839061283e565b6001600160a01b038516600090815260076020908152604080832093909355600b90529081205460ff16156118c457826118ce565b6118ce8484611e0c565b90506118d984611e8a565b156118ed5782156118ed576118ed83611f01565b6001600160a01b0384166000908152600760205260409020546119119082906126f7565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119659085815260200190565b60405180910390a3506001949350505050565b6001600160a01b0383166000908152600c602052604090205460ff16806119ca57506001600160a01b03831660009081526017602052604090205460ff166119c2576005546119c6565b6004545b8111155b611a0a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610944565b6001600160a01b0383166000908152600c602052604090205460ff1680611a5657506022546001600160a01b0383166000908152600a60205260409020544391611a53916126f7565b11155b611aa25760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e0000006044820152606401610944565b6001600160a01b03831660009081526018602052604090205415611b8557611acc6009600a612774565b601a54611ad9919061281f565b8111158015611afe57506001600160a01b038316600090815260096020526040902054155b8015611b0b575042601c54115b611b695760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b6064820152608401610944565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526017602052604090205460ff1615611bc45750506001600160a01b03166000908152600960205260409020439055565b6001600160a01b0383166000908152600b602052604090205460ff16611cc85760195460ff168015611bf7575042601c54115b8015611c115750326000908152600a602052604090205443145b8015611c3357506001600160a01b038216600090815260186020526040902054155b15611c94576001600160a01b03821660009081526018602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea91611c8b913291869160019061259a565b60405180910390a15b6001600160a01b0382166000818152600a602052604090204390553214611cc857326000908152600a602052604090204390555b505050565b6006546001600160a01b0383166000908152600760205260409020548190611cf69084906126f7565b1115611cc85760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610944565b6001600160a01b038316600090815260076020526040812054611d7690839061283e565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611da69083906126f7565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611dfa9086815260200190565b60405180910390a35060019392505050565b6001600160a01b03821660009081526017602052604081205460125460ff909116908290611e39836112ea565b611e43908661281f565b611e4d919061270f565b30600090815260076020526040812080549293508392909190611e719084906126f7565b90915550611e819050818561283e565b95945050505050565b3360009081526017602052604081205460ff16158015611ead575060265460ff16155b8015611ebb575060235460ff165b8015611edf57506001600160a01b03821660009081526017602052604090205460ff165b8015610b23575060255430600090815260076020526040902054101592915050565b6026805460ff191660011790556024546000908210611f2257602454611f24565b815b30600090815260076020526040902054909150811115611f505750306000908152600760205260409020545b60006010546002600f5484611f65919061281f565b611f6f919061270f565b611f79919061270f565b9050611f85818361283e565b60408051600280825260608201835292945060009290916020830190803683370190505090503081600081518110611fbf57611fbf61289d565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561201357600080fd5b505afa158015612027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204b91906122b9565b8160018151811061205e5761205e61289d565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac947906120a8908790600090879030904290600401612686565b600060405180830381600087803b1580156120c257600080fd5b505af11580156120d6573d6000803e3d6000fd5b50505050600081476120e8919061283e565b905060006002600f546120fb919061270f565b601054612108919061283e565b90506000816002600f548561211d919061281f565b612127919061270f565b612131919061270f565b9050600061213f828561283e565b90508015612183576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612181573d6000803e3d6000fd5b505b86156122315760155460135460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b1580156121f457600080fd5b505af1158015612208573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061222d919061253a565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506026805460ff1916905550505050505050565b8035801515811461229757600080fd5b919050565b6000602082840312156122ae57600080fd5b8135610bd7816128b3565b6000602082840312156122cb57600080fd5b8151610bd7816128b3565b600080604083850312156122e957600080fd5b82356122f4816128b3565b91506020830135612304816128b3565b809150509250929050565b60008060006060848603121561232457600080fd5b833561232f816128b3565b9250602084013561233f816128b3565b929592945050506040919091013590565b6000806040838503121561236357600080fd5b823561236e816128b3565b915061237c60208401612287565b90509250929050565b6000806040838503121561239857600080fd5b82356123a3816128b3565b946020939093013593505050565b6000806000604084860312156123c657600080fd5b833567ffffffffffffffff808211156123de57600080fd5b818601915086601f8301126123f257600080fd5b81358181111561240157600080fd5b8760208260051b850101111561241657600080fd5b60209283019550935061242c9186019050612287565b90509250925092565b60006020828403121561244757600080fd5b610bd782612287565b6000806000806080858703121561246657600080fd5b61246f85612287565b935061247d60208601612287565b93969395505050506040820135916060013590565b600080604083850312156124a557600080fd5b6123a383612287565b6000602082840312156124c057600080fd5b5035919050565b600080604083850312156124da57600080fd5b823591506020830135612304816128b3565b600080604083850312156124ff57600080fd5b50508035926020909101359150565b60008060006060848603121561252357600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561254f57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561257e57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b600060208083528351808285015260005b818110156125f2578581018301518582016040015282016125d6565b81811115612604576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126d65784516001600160a01b0316835293830193918301916001016126b1565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561270a5761270a612887565b500190565b60008261272c57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561276c57816000190482111561275257612752612887565b8085161561275f57918102915b93841c9390800290612736565b509250929050565b6000610bd760ff84168360008261278d57506001610b23565b8161279a57506000610b23565b81600181146127b057600281146127ba576127d6565b6001915050610b23565b60ff8411156127cb576127cb612887565b50506001821b610b23565b5060208310610133831016604e8410600b84101617156127f9575081810a610b23565b6128038383612731565b806000190482111561281757612817612887565b029392505050565b600081600019048311821515161561283957612839612887565b500290565b60008282101561285057612850612887565b500390565b60008161286457612864612887565b506000190190565b600060001982141561288057612880612887565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146128c857600080fd5b5056fea2646970667358221220d518ad0ea273e59c1a0637c4a78d139ee8463e49e25d7e72d9e968df21c60a1164736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c80636fcba37711610175578063bf56b371116100dc578063e96fada211610095578063f84ba65d1161006f578063f84ba65d14610894578063f8821a62146108b4578063f887ea40146108ca578063fabb0b4f146108ea57600080fd5b8063e96fada214610834578063f1f3bca314610854578063f2fde38b1461087457600080fd5b8063bf56b3711461074b578063bfa21d6a14610761578063c1adf7bc14610781578063c287184e146107ae578063d6860142146107ce578063dd62ed3e146107ee57600080fd5b80639b02c4021161012e5780639b02c402146106a0578063a4b45c00146106b6578063a8aa1b31146106d6578063a9059cbb146106f6578063abe57e7014610716578063bafe446b1461073657600080fd5b80636fcba377146105b857806370a08231146105d8578063715018a61461060e578063893d20e8146106235780638da5cb5b1461065557806395d89b411461067357600080fd5b8063492a937b1161021957806360bba03d116101d257806360bba03d1461050657806361e08e721461052657806363a803e11461053c578063658d4b7f146105515780636ddd1713146105715780636f4ce4281461058b57600080fd5b8063492a937b14610450578063507139351461047057806354a1dfc91461049057806356a227f2146104b0578063571ac8b0146104d05780635804f1e4146104f057600080fd5b806323b872dd1161026b57806323b872dd1461039d5780632b112e49146103bd578063313ce567146103d257806334848b9a146103ee578063421dd7c71461040e57806346d7edaa1461042357600080fd5b80630445b667146102be57806306fdde03146102e7578063095db78f14610321578063095ea7b31461034357806318160ddd14610373578063234e94941461038857600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d460245481565b6040519081526020015b60405180910390f35b3480156102f357600080fd5b506040805180820190915260088152674b4f524920496e7560c01b60208201525b6040516102de91906125c5565b34801561032d57600080fd5b5061034161033c3660046123b1565b610900565b005b34801561034f57600080fd5b5061036361035e366004612385565b610abc565b60405190151581526020016102de565b34801561037f57600080fd5b506003546102d4565b34801561039457600080fd5b506102d4610b29565b3480156103a957600080fd5b506103636103b836600461230f565b610b49565b3480156103c957600080fd5b506102d4610bde565b3480156103de57600080fd5b50604051600981526020016102de565b3480156103fa57600080fd5b5061034161040936600461250e565b610c1f565b34801561041a57600080fd5b50610341610cc0565b34801561042f57600080fd5b506102d461043e36600461229c565b60186020526000908152604090205481565b34801561045c57600080fd5b5061034161046b366004612350565b610d15565b34801561047c57600080fd5b5061034161048b36600461250e565b610dd3565b34801561049c57600080fd5b506103416104ab366004612450565b610e6e565b3480156104bc57600080fd5b506103416104cb3660046124c7565b610ef1565b3480156104dc57600080fd5b506103636104eb36600461229c565b610f81565b3480156104fc57600080fd5b506102d4601f5481565b34801561051257600080fd5b50610341610521366004612350565b610f8f565b34801561053257600080fd5b506102d460225481565b34801561054857600080fd5b506102d4610fe4565b34801561055d57600080fd5b5061034161056c366004612350565b610fff565b34801561057d57600080fd5b506023546103639060ff1681565b34801561059757600080fd5b506102d46105a636600461229c565b60096020526000908152604090205481565b3480156105c457600080fd5b506103416105d3366004612568565b611054565b3480156105e457600080fd5b506102d46105f336600461229c565b6001600160a01b031660009081526007602052604090205490565b34801561061a57600080fd5b506103416110b7565b34801561062f57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102de565b34801561066157600080fd5b506000546001600160a01b031661063d565b34801561067f57600080fd5b506040805180820190915260048152634b4f524960e01b6020820152610314565b3480156106ac57600080fd5b506102d4601b5481565b3480156106c257600080fd5b506103416106d13660046122d6565b61112b565b3480156106e257600080fd5b50601d5461063d906001600160a01b031681565b34801561070257600080fd5b50610363610711366004612385565b611183565b34801561072257600080fd5b506103416107313660046124ec565b611190565b34801561074257600080fd5b506102d4611201565b34801561075757600080fd5b506102d4601e5481565b34801561076d57600080fd5b5060135461063d906001600160a01b031681565b34801561078d57600080fd5b506102d461079c36600461229c565b600a6020526000908152604090205481565b3480156107ba57600080fd5b506103416107c93660046124ae565b61121c565b3480156107da57600080fd5b506103416107e9366004612492565b611259565b3480156107fa57600080fd5b506102d46108093660046122d6565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561084057600080fd5b5060145461063d906001600160a01b031681565b34801561086057600080fd5b506102d461086f366004612435565b6112ea565b34801561088057600080fd5b5061034161088f36600461229c565b611337565b3480156108a057600080fd5b506103416108af366004612350565b611421565b3480156108c057600080fd5b506102d460255481565b3480156108d657600080fd5b5060155461063d906001600160a01b031681565b3480156108f657600080fd5b506102d460205481565b3360009081526027602052604090205460ff168061092857506000546001600160a01b031633145b61094d5760405162461bcd60e51b81526004016109449061261a565b60405180910390fd5b80156109625760195460ff1661096257600080fd5b60005b82811015610ab65781156109f157601b80549060006109838361286c565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea328585848181106109bc576109bc61289d565b90506020020160208101906109d1919061229c565b4360026040516109e4949392919061259a565b60405180910390a1610a51565b60186000858584818110610a0757610a0761289d565b9050602002016020810190610a1c919061229c565b6001600160a01b0316815260208101919091526040016000205415610a5157601b8054906000610a4b83612855565b91905055505b81610a5d576000610a5f565b435b60186000868685818110610a7557610a7561289d565b9050602002016020810190610a8a919061229c565b6001600160a01b0316815260208101919091526040016000205580610aae8161286c565b915050610965565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b179086815260200190565b60405180910390a35060015b92915050565b6000610b376009600a612774565b600554610b44919061270f565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610bc9576001600160a01b0384166000908152600860209081526040808320338452909152902054610ba490839061283e565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610bd4848484611476565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610c12916126f7565b600354610b44919061283e565b3360009081526027602052604090205460ff1680610c4757506000546001600160a01b031633145b610c635760405162461bcd60e51b81526004016109449061261a565b60215460ff16158015610c765750600a83105b610c7f57600080fd5b60208390556021805460ff1916600117905543601e55610c9f82426126f7565b601c55610cae6009600a612774565b610cb8908261281f565b601a55505050565b3360009081526027602052604090205460ff1680610ce857506000546001600160a01b031633145b610d045760405162461bcd60e51b81526004016109449061261a565b6019805461ffff1916610100179055565b6000546001600160a01b03163314610d3f5760405162461bcd60e51b815260040161094490612651565b601d546001600160a01b0383811691161415610da85760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610944565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610dfd5760405162461bcd60e51b815260040161094490612651565b600083118015610e0d5750600082115b8015610e195750600081115b8015610e2757506127108111155b610e3057600080fd5b8083600354610e3f919061281f565b610e49919061270f565b6004556003548190610e5c90849061281f565b610e66919061270f565b600555505050565b6000546001600160a01b03163314610e985760405162461bcd60e51b815260040161094490612651565b60008211610ea557600080fd5b6023805461ffff191685151561ff0019161761010085151502179055600354610ecf90839061270f565b602455610ede6009600a612774565b610ee8908261281f565b60255550505050565b3360009081526027602052604090205460ff1680610f1957506000546001600160a01b031633145b610f355760405162461bcd60e51b81526004016109449061261a565b476001600160a01b0382166108fc6064610f4f868561281f565b610f59919061270f565b6040518115909202916000818181858888f19350505050158015610ab6573d6000803e3d6000fd5b6000610b2382600019610abc565b6000546001600160a01b03163314610fb95760405162461bcd60e51b815260040161094490612651565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b6000610ff26009600a612774565b600654610b44919061270f565b6000546001600160a01b031633146110295760405162461bcd60e51b815260040161094490612651565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461107e5760405162461bcd60e51b815260040161094490612651565b600f849055600e83905561109284846126f7565b601055601182905560128190556110aa60028261270f565b60105410610ab657600080fd5b6000546001600160a01b031633146110e15760405162461bcd60e51b815260040161094490612651565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146111555760405162461bcd60e51b815260040161094490612651565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000610bd7338484611476565b6000546001600160a01b031633146111ba5760405162461bcd60e51b815260040161094490612651565b6000821180156111ca5750600081115b80156111d857506127108111155b6111e157600080fd5b80826003546111f0919061281f565b6111fa919061270f565b6006555050565b600061120f6009600a612774565b600454610b44919061270f565b6000546001600160a01b031633146112465760405162461bcd60e51b815260040161094490612651565b603c81111561125457600080fd5b602255565b3360009081526027602052604090205460ff168061128157506000546001600160a01b031633145b61129d5760405162461bcd60e51b81526004016109449061261a565b601954610100900460ff16156112b257600080fd5b6019805460ff19168315151790556201518081106112cf57600080fd5b80601c60008282546112e191906126f7565b90915550505050565b600043602054601e546112fd91906126f7565b10611311576001601254610b23919061283e565b811561132757601154601054610b2391906126f7565b601154601054610b23919061283e565b6000546001600160a01b031633146113615760405162461bcd60e51b815260040161094490612651565b6001600160a01b0381166113c65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610944565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461144b5760405162461bcd60e51b815260040161094490612651565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006001600160a01b0384166114ce5760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d2030783000000000000000006044820152606401610944565b6001600160a01b03831661151d5760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b6044820152606401610944565b600082116115655760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610944565b6001600160a01b0384166000908152600760205260409020548211156115c45760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610944565b601e541580156115ec57506001600160a01b03831660009081526017602052604090205460ff165b15611673576001600160a01b0384166000908152600d602052604090205460ff166116595760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610944565b61167343601e5542601f556023805460ff19166001179055565b60215460ff16611700576001600160a01b0384166000908152600d602052604090205460ff16806116bc57506001600160a01b0383166000908152600d602052604090205460ff165b6117005760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b6044820152606401610944565b61170b848484611978565b6001600160a01b03831660009081526017602052604090205460ff1615801561174257506001546001600160a01b03848116911614155b15611771576001600160a01b0383166000908152600c602052604090205460ff16611771576117718383611ccd565b60195460ff168015611784575042601c54115b1561184e576001600160a01b03841660009081526017602052604090205460ff1680156117ba5750326001600160a01b03841614155b80156117dc57506001600160a01b038316600090815260186020526040902054155b1561184e576001600160a01b0383166000908152601860205260408120439055601b80549161180a8361286c565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611845949392919061259a565b60405180910390a15b60265460ff161561186b57611864848484611d52565b9050610bd7565b6001600160a01b03841660009081526007602052604090205461188f90839061283e565b6001600160a01b038516600090815260076020908152604080832093909355600b90529081205460ff16156118c457826118ce565b6118ce8484611e0c565b90506118d984611e8a565b156118ed5782156118ed576118ed83611f01565b6001600160a01b0384166000908152600760205260409020546119119082906126f7565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119659085815260200190565b60405180910390a3506001949350505050565b6001600160a01b0383166000908152600c602052604090205460ff16806119ca57506001600160a01b03831660009081526017602052604090205460ff166119c2576005546119c6565b6004545b8111155b611a0a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610944565b6001600160a01b0383166000908152600c602052604090205460ff1680611a5657506022546001600160a01b0383166000908152600a60205260409020544391611a53916126f7565b11155b611aa25760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e0000006044820152606401610944565b6001600160a01b03831660009081526018602052604090205415611b8557611acc6009600a612774565b601a54611ad9919061281f565b8111158015611afe57506001600160a01b038316600090815260096020526040902054155b8015611b0b575042601c54115b611b695760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b6064820152608401610944565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526017602052604090205460ff1615611bc45750506001600160a01b03166000908152600960205260409020439055565b6001600160a01b0383166000908152600b602052604090205460ff16611cc85760195460ff168015611bf7575042601c54115b8015611c115750326000908152600a602052604090205443145b8015611c3357506001600160a01b038216600090815260186020526040902054155b15611c94576001600160a01b03821660009081526018602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea91611c8b913291869160019061259a565b60405180910390a15b6001600160a01b0382166000818152600a602052604090204390553214611cc857326000908152600a602052604090204390555b505050565b6006546001600160a01b0383166000908152600760205260409020548190611cf69084906126f7565b1115611cc85760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610944565b6001600160a01b038316600090815260076020526040812054611d7690839061283e565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611da69083906126f7565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611dfa9086815260200190565b60405180910390a35060019392505050565b6001600160a01b03821660009081526017602052604081205460125460ff909116908290611e39836112ea565b611e43908661281f565b611e4d919061270f565b30600090815260076020526040812080549293508392909190611e719084906126f7565b90915550611e819050818561283e565b95945050505050565b3360009081526017602052604081205460ff16158015611ead575060265460ff16155b8015611ebb575060235460ff165b8015611edf57506001600160a01b03821660009081526017602052604090205460ff165b8015610b23575060255430600090815260076020526040902054101592915050565b6026805460ff191660011790556024546000908210611f2257602454611f24565b815b30600090815260076020526040902054909150811115611f505750306000908152600760205260409020545b60006010546002600f5484611f65919061281f565b611f6f919061270f565b611f79919061270f565b9050611f85818361283e565b60408051600280825260608201835292945060009290916020830190803683370190505090503081600081518110611fbf57611fbf61289d565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561201357600080fd5b505afa158015612027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204b91906122b9565b8160018151811061205e5761205e61289d565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac947906120a8908790600090879030904290600401612686565b600060405180830381600087803b1580156120c257600080fd5b505af11580156120d6573d6000803e3d6000fd5b50505050600081476120e8919061283e565b905060006002600f546120fb919061270f565b601054612108919061283e565b90506000816002600f548561211d919061281f565b612127919061270f565b612131919061270f565b9050600061213f828561283e565b90508015612183576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612181573d6000803e3d6000fd5b505b86156122315760155460135460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b1580156121f457600080fd5b505af1158015612208573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061222d919061253a565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506026805460ff1916905550505050505050565b8035801515811461229757600080fd5b919050565b6000602082840312156122ae57600080fd5b8135610bd7816128b3565b6000602082840312156122cb57600080fd5b8151610bd7816128b3565b600080604083850312156122e957600080fd5b82356122f4816128b3565b91506020830135612304816128b3565b809150509250929050565b60008060006060848603121561232457600080fd5b833561232f816128b3565b9250602084013561233f816128b3565b929592945050506040919091013590565b6000806040838503121561236357600080fd5b823561236e816128b3565b915061237c60208401612287565b90509250929050565b6000806040838503121561239857600080fd5b82356123a3816128b3565b946020939093013593505050565b6000806000604084860312156123c657600080fd5b833567ffffffffffffffff808211156123de57600080fd5b818601915086601f8301126123f257600080fd5b81358181111561240157600080fd5b8760208260051b850101111561241657600080fd5b60209283019550935061242c9186019050612287565b90509250925092565b60006020828403121561244757600080fd5b610bd782612287565b6000806000806080858703121561246657600080fd5b61246f85612287565b935061247d60208601612287565b93969395505050506040820135916060013590565b600080604083850312156124a557600080fd5b6123a383612287565b6000602082840312156124c057600080fd5b5035919050565b600080604083850312156124da57600080fd5b823591506020830135612304816128b3565b600080604083850312156124ff57600080fd5b50508035926020909101359150565b60008060006060848603121561252357600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561254f57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561257e57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b600060208083528351808285015260005b818110156125f2578581018301518582016040015282016125d6565b81811115612604576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126d65784516001600160a01b0316835293830193918301916001016126b1565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561270a5761270a612887565b500190565b60008261272c57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561276c57816000190482111561275257612752612887565b8085161561275f57918102915b93841c9390800290612736565b509250929050565b6000610bd760ff84168360008261278d57506001610b23565b8161279a57506000610b23565b81600181146127b057600281146127ba576127d6565b6001915050610b23565b60ff8411156127cb576127cb612887565b50506001821b610b23565b5060208310610133831016604e8410600b84101617156127f9575081810a610b23565b6128038383612731565b806000190482111561281757612817612887565b029392505050565b600081600019048311821515161561283957612839612887565b500290565b60008282101561285057612850612887565b500390565b60008161286457612864612887565b506000190190565b600060001982141561288057612880612887565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146128c857600080fd5b5056fea2646970667358221220d518ad0ea273e59c1a0637c4a78d139ee8463e49e25d7e72d9e968df21c60a1164736f6c63430008070033

Deployed Bytecode Sourcemap

6067:15579:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8066:50;;;;;;;;;;;;;;;;;;;14261:25:1;;;14249:2;14234:18;8066:50:0;;;;;;;;9530:71;;;;;;;;;;-1:-1:-1;9593:5:0;;;;;;;;;;;;-1:-1:-1;;;9593:5:0;;;;9530:71;;;;;;;:::i;11774:617::-;;;;;;;;;;-1:-1:-1;11774:617:0;;;;;:::i;:::-;;:::i;:::-;;10271:216;;;;;;;;;;-1:-1:-1;10271:216:0;;;;;:::i;:::-;;:::i;:::-;;;8107:14:1;;8100:22;8082:41;;8070:2;8055:18;10271:216:0;7942:187:1;9278:88:0;;;;;;;;;;-1:-1:-1;9351:12:0;;9278:88;;9795:107;;;;;;;;;;;;;:::i;12563:341::-;;;;;;;;;;-1:-1:-1;12563:341:0;;;;;:::i;:::-;;:::i;21405:138::-;;;;;;;;;;;;;:::i;9372:71::-;;;;;;;;;;-1:-1:-1;9372:71:0;;6385:1;15748:36:1;;15736:2;15721:18;9372:71:0;15606:184:1;10992:372:0;;;;;;;;;;-1:-1:-1;10992:372:0;;;;;:::i;:::-;;:::i;11635:127::-;;;;;;;;;;;;;:::i;7542:45::-;;;;;;;;;;-1:-1:-1;7542:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;19225:184;;;;;;;;;;-1:-1:-1;19225:184:0;;;;;:::i;:::-;;:::i;19553:339::-;;;;;;;;;;-1:-1:-1;19553:339:0;;;;;:::i;:::-;;:::i;21037:360::-;;;;;;;;;;-1:-1:-1;21037:360:0;;;;;:::i;:::-;;:::i;10766:214::-;;;;;;;;;;-1:-1:-1;10766:214:0;;;;;:::i;:::-;;:::i;10495:122::-;;;;;;;;;;-1:-1:-1;10495:122:0;;;;;:::i;:::-;;:::i;7827:27::-;;;;;;;;;;;;;;;;10629:119;;;;;;;;;;-1:-1:-1;10629:119:0;;;;;:::i;:::-;;:::i;7958:28::-;;;;;;;;;;;;;;;;9908:105;;;;;;;;;;;;;:::i;20131:119::-;;;;;;;;;;-1:-1:-1;20131:119:0;;;;;:::i;:::-;;:::i;7995:31::-;;;;;;;;;;-1:-1:-1;7995:31:0;;;;;;;;6748:44;;;;;;;;;;-1:-1:-1;6748:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;20393:386;;;;;;;;;;-1:-1:-1;20393:386:0;;;;;:::i;:::-;;:::i;10019:105::-;;;;;;;;;;-1:-1:-1;10019:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;10103:18:0;10085:7;10103:18;;;:9;:18;;;;;;;10019:105;5662:148;;;;;;;;;;;;;:::i;9607:71::-;;;;;;;;;;-1:-1:-1;9650:7:0;5517:6;-1:-1:-1;;;;;5517:6:0;9607:71;;;-1:-1:-1;;;;;5647:32:1;;;5629:51;;5617:2;5602:18;9607:71:0;5483:203:1;5452:79:0;;;;;;;;;;-1:-1:-1;5490:7:0;5517:6;-1:-1:-1;;;;;5517:6:0;5452:79;;9449:75;;;;;;;;;;-1:-1:-1;9514:7:0;;;;;;;;;;;;-1:-1:-1;;;9514:7:0;;;;9449:75;;7698:30;;;;;;;;;;;;;;;;20787:242;;;;;;;;;;-1:-1:-1;20787:242:0;;;;;:::i;:::-;;:::i;7767:19::-;;;;;;;;;;-1:-1:-1;7767:19:0;;;;-1:-1:-1;;;;;7767:19:0;;;12399:156;;;;;;;;;;-1:-1:-1;12399:156:0;;;;;:::i;:::-;;:::i;19904:219::-;;;;;;;;;;-1:-1:-1;19904:219:0;;;;;:::i;:::-;;:::i;9684:105::-;;;;;;;;;;;;;:::i;7795:25::-;;;;;;;;;;;;;;;;7181:97;;;;;;;;;;-1:-1:-1;7181:97:0;;;;-1:-1:-1;;;;;7181:97:0;;;6799:43;;;;;;;;;;-1:-1:-1;6799:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;19417:128;;;;;;;;;;-1:-1:-1;19417:128:0;;;;;:::i;:::-;;:::i;11388:235::-;;;;;;;;;;-1:-1:-1;11388:235:0;;;;;:::i;:::-;;:::i;10130:133::-;;;;;;;;;;-1:-1:-1;10130:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10232:19:0;;;10214:7;10232:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10130:133;7285:97;;;;;;;;;;-1:-1:-1;7285:97:0;;;;-1:-1:-1;;;;;7285:97:0;;;16810:243;;;;;;;;;;-1:-1:-1;16810:243:0;;;;;:::i;:::-;;:::i;5816:244::-;;;;;;;;;;-1:-1:-1;5816:244:0;;;;;:::i;:::-;;:::i;20258:127::-;;;;;;;;;;-1:-1:-1;20258:127:0;;;;;:::i;:::-;;:::i;8123:49::-;;;;;;;;;;;;;;;;7391:24;;;;;;;;;;-1:-1:-1;7391:24:0;;;;-1:-1:-1;;;;;7391:24:0;;;7861:25;;;;;;;;;;;;;;;;11774:617;3567:10;8354:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;5490:7:0;5517:6;-1:-1:-1;;;;;5517:6:0;8382:10;:21;8354:49;8346:89;;;;-1:-1:-1;;;8346:89:0;;;;;;;:::i;:::-;;;;;;;;;11874:8:::1;11870:67;;;11907:17;::::0;::::1;;11899:26;;;::::0;::::1;;11962:6;11957:427;11974:19:::0;;::::1;11957:427;;;12033:8;12029:277;;;12062:15;:17:::0;;;:15:::1;:17;::::0;::::1;:::i;:::-;;;;;;12103:56;12119:9;12130:8;;12139:1;12130:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12143:12;12157:1;12103:56;;;;;;;;;:::i;:::-;;;;;;;;12029:277;;;12217:9;:22;12227:8;;12236:1;12227:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12217:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12217:22:0;;:27;12213:71:::1;;12267:15;:17:::0;;;:15:::1;:17;::::0;::::1;:::i;:::-;;;;;;12213:71;12345:8;:27;;12371:1;12345:27;;;12356:12;12345:27;12320:9;:22;12330:8;;12339:1;12330:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12320:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12320:22:0;:52;11995:3;::::1;::::0;::::1;:::i;:::-;;;;11957:427;;;;11774:617:::0;;;:::o;10271:216::-;10375:10;10346:4;10363:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10363:32:0;;;;;;;;;;:41;;;10420:37;10346:4;;10363:32;;10420:37;;;;10398:6;14261:25:1;;14249:2;14234:18;;14115:177;10420:37:0;;;;;;;;-1:-1:-1;10475:4:0;10271:216;;;;;:::o;9795:107::-;9845:7;9883:15;6385:1;9883:2;:15;:::i;:::-;9863:16;;:36;;;;:::i;:::-;9856:43;;9795:107;:::o;12563:341::-;-1:-1:-1;;;;;12683:19:0;;12663:4;12683:19;;;:11;:19;;;;;;;;12703:10;12683:31;;;;;;;;-1:-1:-1;;12683:52:0;12680:157;;-1:-1:-1;;;;;12785:19:0;;;;;;:11;:19;;;;;;;;12805:10;12785:31;;;;;;;;:40;;12819:6;;12785:40;:::i;:::-;-1:-1:-1;;;;;12751:19:0;;;;;;:11;:19;;;;;;;;12771:10;12751:31;;;;;;;:74;12680:157;12856:40;12870:6;12878:9;12889:6;12856:13;:40::i;:::-;12849:47;;12563:341;;;;;;:::o;21405:138::-;21529:4;;-1:-1:-1;;;;;21529:4:0;;;21458:7;10103:18;;;:9;:18;;;;;;;21511:4;;;;;10103:18;;;;;21458:7;;21501:33;;;:::i;:::-;21485:12;;:50;;;;:::i;10992:372::-;3567:10;8354:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;5490:7:0;5517:6;-1:-1:-1;;;;;5517:6:0;8382:10;:21;8354:49;8346:89;;;;-1:-1:-1;;;8346:89:0;;;;;;;:::i;:::-;11109:12:::1;::::0;::::1;;11108:13;:33:::0;::::1;;;;11139:2;11125:11;:16;11108:33;11100:42;;;::::0;::::1;;11153:10;:24:::0;;;11188:12:::1;:19:::0;;-1:-1:-1;;11188:19:0::1;11203:4;11188:19;::::0;;11231:12:::1;11218:10;:25:::0;11272:29:::1;11290:11:::0;11272:15:::1;:29;:::i;:::-;11254:15;:47:::0;11340:15:::1;6385:1;11340:2;:15;:::i;:::-;11330:26;::::0;:6;:26:::1;:::i;:::-;11312:15;:44:::0;-1:-1:-1;;;10992:372:0:o;11635:127::-;3567:10;8354:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;5490:7:0;5517:6;-1:-1:-1;;;;;5517:6:0;8382:10;:21;8354:49;8346:89;;;;-1:-1:-1;;;8346:89:0;;;;;;;:::i;:::-;11693:18:::1;:25:::0;;-1:-1:-1;;11729:25:0;11693::::1;11729::::0;;;11635:127::o;19225:184::-;5577:6;;-1:-1:-1;;;;;5577:6:0;3567:10;5577:22;5569:67;;;;-1:-1:-1;;;5569:67:0;;;;;;;:::i;:::-;19320:4:::1;::::0;-1:-1:-1;;;;;19314:10:0;;::::1;19320:4:::0;::::1;19314:10;;19306:57;;;::::0;-1:-1:-1;;;19306:57:0;;13914:2:1;19306:57:0::1;::::0;::::1;13896:21:1::0;13953:2;13933:18;;;13926:30;13992:34;13972:18;;;13965:62;-1:-1:-1;;;14043:18:1;;;14036:32;14085:19;;19306:57:0::1;13712:398:1::0;19306:57:0::1;-1:-1:-1::0;;;;;19374:18:0;;;::::1;;::::0;;;:14:::1;:18;::::0;;;;:27;;-1:-1:-1;;19374:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19225:184::o;19553:339::-;5577:6;;-1:-1:-1;;;;;5577:6:0;3567:10;5577:22;5569:67;;;;-1:-1:-1;;;5569:67:0;;;;;;;:::i;:::-;19688:1:::1;19673:12;:16;:37;;;;;19709:1;19693:13;:17;19673:37;:52;;;;;19724:1;19714:7;:11;19673:52;:72;;;;;19740:5;19729:7;:16;;19673:72;19665:81;;;::::0;::::1;;19807:7;19791:12;19776;;:27;;;;:::i;:::-;19775:39;;;;:::i;:::-;19757:15;:57:::0;19845:12:::1;::::0;19877:7;;19845:28:::1;::::0;19860:13;;19845:28:::1;:::i;:::-;19844:40;;;;:::i;:::-;19825:16;:59:::0;-1:-1:-1;;;19553:339:0:o;21037:360::-;5577:6;;-1:-1:-1;;;;;5577:6:0;3567:10;5577:22;5569:67;;;;-1:-1:-1;;;5569:67:0;;;;;;;:::i;:::-;21200:1:::1;21185:12;:16;21177:25;;;::::0;::::1;;21213:11;:22:::0;;-1:-1:-1;;21246:32:0;21213:22;::::1;;-1:-1:-1::0;;21246:32:0;;21213:22:::1;21246:32:::0;::::1;;;;::::0;;21305:12:::1;::::0;:27:::1;::::0;21320:12;;21305:27:::1;:::i;:::-;21289:13;:43:::0;21373:15:::1;6385:1;21373:2;:15;:::i;:::-;21357:32;::::0;:12;:32:::1;:::i;:::-;21343:11;:46:::0;-1:-1:-1;;;;21037:360:0:o;10766:214::-;3567:10;8354:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;5490:7:0;5517:6;-1:-1:-1;;;;;5517:6:0;8382:10;:21;8354:49;8346:89;;;;-1:-1:-1;;;8346:89:0;;;;;;;:::i;:::-;10881:21:::1;-1:-1:-1::0;;;;;10913:21:0;::::1;:59;10968:3;10936:28;10948:16:::0;10881:21;10936:28:::1;:::i;:::-;10935:36;;;;:::i;:::-;10913:59;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;10495:122:::0;10550:4;10574:35;10582:7;-1:-1:-1;;10574:7:0;:35::i;10629:119::-;5577:6;;-1:-1:-1;;;;;5577:6:0;3567:10;5577:22;5569:67;;;;-1:-1:-1;;;5569:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10712:17:0;;;::::1;;::::0;;;:10:::1;:17;::::0;;;;:28;;-1:-1:-1;;10712:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10629:119::o;9908:105::-;9958:7;9994:15;6385:1;9994:2;:15;:::i;:::-;9976:14;;:34;;;;:::i;20131:119::-;5577:6;;-1:-1:-1;;;;;5577:6:0;3567:10;5577:22;5569:67;;;;-1:-1:-1;;;5569:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20214:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;20214:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20131:119::o;20393:386::-;5577:6;;-1:-1:-1;;;;;5577:6:0;3567:10;5577:22;5569:67;;;;-1:-1:-1;;;5569:67:0;;;;;;;:::i;:::-;20530:12:::1;:28:::0;;;20569:12:::1;:28:::0;;;20619:29:::1;20545:13:::0;20584;20619:29:::1;:::i;:::-;20608:8;:40:::0;20659:8:::1;:20:::0;;;20690:14:::1;:32:::0;;;20752:18:::1;20769:1;20707:15:::0;20752:18:::1;:::i;:::-;20741:8;;:29;20733:38;;;::::0;::::1;5662:148:::0;5577:6;;-1:-1:-1;;;;;5577:6:0;3567:10;5577:22;5569:67;;;;-1:-1:-1;;;5569:67:0;;;;;;;:::i;:::-;5769:1:::1;5753:6:::0;;5732:40:::1;::::0;-1:-1:-1;;;;;5753:6:0;;::::1;::::0;5732:40:::1;::::0;5769:1;;5732:40:::1;5800:1;5783:19:::0;;-1:-1:-1;;;;;;5783:19:0::1;::::0;;5662:148::o;20787:242::-;5577:6;;-1:-1:-1;;;;;5577:6:0;3567:10;5577:22;5569:67;;;;-1:-1:-1;;;5569:67:0;;;;;;;:::i;:::-;20904:20:::1;:53:::0;;-1:-1:-1;;;;;20904:53:0;;::::1;-1:-1:-1::0;;;;;;20904:53:0;;::::1;;::::0;;;20968:20:::1;:53:::0;;;;;::::1;::::0;::::1;;::::0;;20787:242::o;12399:156::-;12479:4;12503:44;12517:10;12529:9;12540:6;12503:13;:44::i;19904:219::-;5577:6;;-1:-1:-1;;;;;5577:6:0;3567:10;5577:22;5569:67;;;;-1:-1:-1;;;5569:67:0;;;;;;;:::i;:::-;20014:1:::1;20002:9;:13;:28;;;;;20029:1;20019:7;:11;20002:28;:48;;;;;20045:5;20034:7;:16;;20002:48;19994:57;;;::::0;::::1;;20108:7;20095:9;20080:12;;:24;;;;:::i;:::-;20079:36;;;;:::i;:::-;20062:14;:53:::0;-1:-1:-1;;19904:219:0:o;9684:105::-;9733:7;9770:15;6385:1;9770:2;:15;:::i;:::-;9751;;:35;;;;:::i;19417:128::-;5577:6;;-1:-1:-1;;;;;5577:6:0;3567:10;5577:22;5569:67;;;;-1:-1:-1;;;5569:67:0;;;;;;;:::i;:::-;19499:10:::1;19491:4;:18;;19483:27;;;::::0;::::1;;19521:9;:16:::0;19417:128::o;11388:235::-;3567:10;8354:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;5490:7:0;5517:6;-1:-1:-1;;;;;5517:6:0;8382:10;:21;8354:49;8346:89;;;;-1:-1:-1;;;8346:89:0;;;;;;;:::i;:::-;11482:18:::1;::::0;::::1;::::0;::::1;;;11481:19;11473:28;;;::::0;::::1;;11512:17;:28:::0;;-1:-1:-1;;11512:28:0::1;::::0;::::1;;;::::0;;11570:6:::1;11559:17:::0;::::1;11551:26;;;::::0;::::1;;11607:8;11588:15;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;11388:235:0:o;16810:243::-;16866:7;16916:12;16902:10;;16889;;:23;;;;:::i;:::-;:39;16886:73;;16955:1;16938:14;;:18;;;;:::i;16886:73::-;16973:7;16969:39;;;17000:8;;16989;;:19;;;;:::i;16969:39::-;17037:8;;17026;;:19;;;;:::i;5816:244::-;5577:6;;-1:-1:-1;;;;;5577:6:0;3567:10;5577:22;5569:67;;;;-1:-1:-1;;;5569:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5905:22:0;::::1;5897:73;;;::::0;-1:-1:-1;;;5897:73:0;;10619:2:1;5897:73:0::1;::::0;::::1;10601:21:1::0;10658:2;10638:18;;;10631:30;10697:34;10677:18;;;10670:62;-1:-1:-1;;;10748:18:1;;;10741:36;10794:19;;5897:73:0::1;10417:402:1::0;5897:73:0::1;6007:6;::::0;;5986:38:::1;::::0;-1:-1:-1;;;;;5986:38:0;;::::1;::::0;6007:6;::::1;::::0;5986:38:::1;::::0;::::1;6035:6;:17:::0;;-1:-1:-1;;;;;;6035:17:0::1;-1:-1:-1::0;;;;;6035:17:0;;;::::1;::::0;;;::::1;::::0;;5816:244::o;20258:127::-;5577:6;;-1:-1:-1;;;;;5577:6:0;3567:10;5577:22;5569:67;;;;-1:-1:-1;;;5569:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20345:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;20345:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20258:127::o;12912:1734::-;13004:4;-1:-1:-1;;;;;13029:20:0;;13021:57;;;;-1:-1:-1;;;13021:57:0;;10266:2:1;13021:57:0;;;10248:21:1;10305:2;10285:18;;;10278:30;10344:26;10324:18;;;10317:54;10388:18;;13021:57:0;10064:348:1;13021:57:0;-1:-1:-1;;;;;13097:23:0;;13089:58;;;;-1:-1:-1;;;13089:58:0;;11026:2:1;13089:58:0;;;11008:21:1;11065:2;11045:18;;;11038:30;-1:-1:-1;;;11084:18:1;;;11077:52;11146:18;;13089:58:0;10824:346:1;13089:58:0;13175:1;13166:6;:10;13158:44;;;;-1:-1:-1;;;13158:44:0;;9164:2:1;13158:44:0;;;9146:21:1;9203:2;9183:18;;;9176:30;-1:-1:-1;;;9222:18:1;;;9215:51;9283:18;;13158:44:0;8962:345:1;13158:44:0;-1:-1:-1;;;;;13221:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;13221:27:0;13213:60;;;;-1:-1:-1;;;13213:60:0;;11377:2:1;13213:60:0;;;11359:21:1;11416:2;11396:18;;;11389:30;-1:-1:-1;;;11435:18:1;;;11428:50;11495:18;;13213:60:0;11175:344:1;13213:60:0;14725:10;;:15;;;13287:40;;-1:-1:-1;;;;;;13302:25:0;;;;;;:14;:25;;;;;;;;13287:40;13284:120;;;-1:-1:-1;;;;;13338:24:0;;;;;;:16;:24;;;;;;;;13330:61;;;;-1:-1:-1;;;13330:61:0;;12440:2:1;13330:61:0;;;12422:21:1;12479:2;12459:18;;;12452:30;12518:26;12498:18;;;12491:54;12562:18;;13330:61:0;12238:348:1;13330:61:0;13393:8;14807:12;14794:10;:25;14845:15;14830:12;:30;14871:11;:18;;-1:-1:-1;;14871:18:0;14885:4;14871:18;;;14756:141;13393:8;13418:12;;;;13414:111;;-1:-1:-1;;;;;13441:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;13469:27:0;;;;;;:16;:27;;;;;;;;13441:55;13433:89;;;;-1:-1:-1;;;13433:89:0;;13564:2:1;13433:89:0;;;13546:21:1;13603:2;13583:18;;;13576:30;-1:-1:-1;;;13622:18:1;;;13615:51;13683:18;;13433:89:0;13362:345:1;13433:89:0;13537:39;13550:6;13558:9;13569:6;13537:12;:39::i;:::-;-1:-1:-1;;;;;13602:25:0;;;;;;:14;:25;;;;;;;;13601:26;:47;;;;-1:-1:-1;13644:4:0;;-1:-1:-1;;;;;13631:17:0;;;13644:4;;13631:17;;13601:47;13597:182;;;-1:-1:-1;;;;;13670:26:0;;;;;;:15;:26;;;;;;;;13665:103;;13717:35;13734:9;13745:6;13717:16;:35::i;:::-;13802:17;;;;:54;;;;;13841:15;13823;;:33;13802:54;13799:351;;;-1:-1:-1;;;;;13876:22:0;;;;;;:14;:22;;;;;;;;:48;;;;-1:-1:-1;13902:9:0;-1:-1:-1;;;;;13902:22:0;;;;13876:48;:77;;;;-1:-1:-1;;;;;;13928:20:0;;;;;;:9;:20;;;;;;:25;13876:77;13873:266;;;-1:-1:-1;;;;;13974:20:0;;;;;;:9;:20;;;;;13997:12;13974:35;;14028:15;:17;;;;;;:::i;:::-;;;;;;14069:54;14085:9;14096;14107:12;14121:1;14069:54;;;;;;;;;:::i;:::-;;;;;;;;13873:266;14173:6;;;;14170:63;;;14189:41;14204:6;14212:9;14223:6;14189:14;:41::i;:::-;14182:48;;;;14170:63;-1:-1:-1;;;;;14265:17:0;;;;;;:9;:17;;;;;;:26;;14285:6;;14265:26;:::i;:::-;-1:-1:-1;;;;;14245:17:0;;;;;;:9;:17;;;;;;;;:46;;;;16775:11;:19;;;;;;;;16774:20;14329:59;;14382:6;14329:59;;;14353:26;14361:9;14372:6;14353:7;:26::i;:::-;14304:84;;14412:25;14427:9;14412:14;:25::i;:::-;14409:66;;;14444:10;;14440:32;;14456:16;14465:6;14456:8;:16::i;:::-;-1:-1:-1;;;;;14518:20:0;;;;;;:9;:20;;;;;;:37;;14541:14;;14518:37;:::i;:::-;-1:-1:-1;;;;;14495:20:0;;;;;;;:9;:20;;;;;;;:60;;;;14573:43;;;;;;;;;;14601:14;14261:25:1;;14249:2;14234:18;;14115:177;14573:43:0;;;;;;;;-1:-1:-1;14634:4:0;;12912:1734;-1:-1:-1;;;;12912:1734:0:o;15460:1220::-;-1:-1:-1;;;;;15561:23:0;;;;;;:15;:23;;;;;;;;;:98;;-1:-1:-1;;;;;;15599:22:0;;;;;;:14;:22;;;;;;;;:59;;15642:16;;15599:59;;;15624:15;;15599:59;15588:6;:71;;15561:98;15553:128;;;;-1:-1:-1;;;15553:128:0;;9920:2:1;15553:128:0;;;9902:21:1;9959:2;9939:18;;;9932:30;-1:-1:-1;;;9978:18:1;;;9971:47;10035:18;;15553:128:0;9718:341:1;15553:128:0;-1:-1:-1;;;;;15700:23:0;;;;;;:15;:23;;;;;;;;;:73;;-1:-1:-1;15748:9:0;;-1:-1:-1;;;;;15727:18:0;;;;;;:7;:18;;;;;;15761:12;;15727:30;;;:::i;:::-;:46;;15700:73;15692:115;;;;-1:-1:-1;;;15692:115:0;;12082:2:1;15692:115:0;;;12064:21:1;12121:2;12101:18;;;12094:30;12160:31;12140:18;;;12133:59;12209:18;;15692:115:0;11880:353:1;15692:115:0;-1:-1:-1;;;;;15832:17:0;;;;;;:9;:17;;;;;;:22;15828:261;;15907:15;6385:1;15907:2;:15;:::i;:::-;15888;;:35;;;;:::i;:::-;15878:6;:45;;:70;;;;-1:-1:-1;;;;;;15927:16:0;;;;;;:8;:16;;;;;;:21;15878:70;:107;;;;;15970:15;15952;;:33;15878:107;15870:161;;;;-1:-1:-1;;;15870:161:0;;12793:2:1;15870:161:0;;;12775:21:1;12832:2;12812:18;;;12805:30;12871:34;12851:18;;;12844:62;-1:-1:-1;;;12922:18:1;;;12915:39;12971:19;;15870:161:0;12591:405:1;15870:161:0;-1:-1:-1;;;;;16046:16:0;;;;;;:8;:16;;;;;16065:12;16046:31;;15828:261;-1:-1:-1;;;;;16113:25:0;;;;;;:14;:25;;;;;;;;16109:564;;;-1:-1:-1;;;;;;;16155:16:0;;;;;:8;:16;;;;;16174:12;16155:31;;15460:1220::o;16109:564::-;-1:-1:-1;;;;;16775:19:0;;16750:4;16775:19;;;:11;:19;;;;;;;;16204:469;;16250:17;;;;:54;;;;;16289:15;16271;;:33;16250:54;:92;;;;-1:-1:-1;16316:9:0;16308:18;;;;:7;:18;;;;;;16330:12;16308:34;16250:92;:121;;;;-1:-1:-1;;;;;;16346:20:0;;;;;;:9;:20;;;;;;:25;16250:121;16246:275;;;-1:-1:-1;;;;;16392:20:0;;;;;;:9;:20;;;;;;;16415:12;16392:35;;;;16451:54;;;;;;16467:9;;16402;;16503:1;;16451:54;:::i;:::-;;;;;;;;16246:275;-1:-1:-1;;;;;16535:18:0;;;;;;:7;:18;;;;;16556:12;16535:33;;16587:9;:22;16583:78;;16636:9;16628:18;;;;:7;:18;;;;;16649:12;16628:33;;16583:78;15460:1220;;;:::o;15217:235::-;15325:14;;-1:-1:-1;;;;;15358:20:0;;15303:19;15358:20;;;:9;:20;;;;;;15325:14;;15358:29;;15381:6;;15358:29;:::i;:::-;:44;;15350:94;;;;-1:-1:-1;;;15350:94:0;;9514:2:1;15350:94:0;;;9496:21:1;9553:2;9533:18;;;9526:30;9592:34;9572:18;;;9565:62;-1:-1:-1;;;9643:18:1;;;9636:35;9688:19;;15350:94:0;9312:401:1;14905:300:0;-1:-1:-1;;;;;15035:17:0;;14998:4;15035:17;;;:9;:17;;;;;;:26;;15055:6;;15035:26;:::i;:::-;-1:-1:-1;;;;;15015:17:0;;;;;;;:9;:17;;;;;;:46;;;;15095:20;;;;;;;:29;;15118:6;;15095:29;:::i;:::-;-1:-1:-1;;;;;15072:20:0;;;;;;;:9;:20;;;;;;;:52;;;;15140:35;;;;;;;;;;15168:6;14261:25:1;;14249:2;14234:18;;14115:177;15140:35:0;;;;;;;;-1:-1:-1;15193:4:0;14905:300;;;;;:::o;17061:317::-;-1:-1:-1;;;;;17166:25:0;;17131:7;17166:25;;;:14;:25;;;;;;17256:14;;17166:25;;;;;17131:7;;17232:20;17166:25;17232:11;:20::i;:::-;17223:29;;:6;:29;:::i;:::-;17222:48;;;;:::i;:::-;17309:4;17291:24;;;;:9;:24;;;;;:37;;17202:68;;-1:-1:-1;17202:68:0;;17291:24;;;:37;;17202:68;;17291:37;:::i;:::-;;;;-1:-1:-1;17352:18:0;;-1:-1:-1;17361:9:0;17352:6;:18;:::i;:::-;17345:25;17061:317;-1:-1:-1;;;;;17061:317:0:o;17386:259::-;17492:10;17452:4;17477:26;;;:14;:26;;;;;;;;17476:27;:47;;;;-1:-1:-1;17517:6:0;;;;17516:7;17476:47;:71;;;;-1:-1:-1;17536:11:0;;;;17476:71;:109;;;;-1:-1:-1;;;;;;17560:25:0;;;;;;:14;:25;;;;;;;;17476:109;:161;;;;-1:-1:-1;17626:11:0;;17616:4;17598:24;;;;:9;:24;;;;;;:39;;17469:168;17386:259;-1:-1:-1;;17386:259:0:o;17653:1560::-;8219:6;:13;;-1:-1:-1;;8219:13:0;8228:4;8219:13;;;17748::::1;::::0;8219:6;;17739:22;::::1;:47;;17773:13;;17739:47;;;17764:6;17739:47;17819:4;17801:24;::::0;;;:9:::1;:24;::::0;;;;;17716:70;;-1:-1:-1;17801:39:0;-1:-1:-1;17797:84:0::1;;;-1:-1:-1::0;17875:4:0::1;17857:24;::::0;;;:9:::1;:24;::::0;;;;;17797:84:::1;17902:23;17964:8;;17959:1;17944:12;;17929;:27;;;;:::i;:::-;:31;;;;:::i;:::-;17928:44;;;;:::i;:::-;17902:70:::0;-1:-1:-1;17983:31:0::1;17902:70:::0;17983:31;::::1;:::i;:::-;18051:16;::::0;;18065:1:::1;18051:16:::0;;;;;::::1;::::0;;17983:31;;-1:-1:-1;18027:21:0::1;::::0;18051:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18051:16:0::1;18027:40;;18096:4;18078;18083:1;18078:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18078:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;18122:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;18122:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;18078:7;;18122:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18112:4;18117:1;18112:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18112:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;18214:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;18214:188:0;;18180:21:::1;::::0;18214:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;18286:12;;18156:21:::1;::::0;18329:4;;18356::::1;::::0;18376:15:::1;::::0;18214:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18415:17;18459:13;18435:21;:37;;;;:::i;:::-;18415:57;;18483:19;18532:1;18517:12;;:16;;;;:::i;:::-;18505:8;;:29;;;;:::i;:::-;18483:51;;18547:26;18609:11;18604:1;18589:12;;18577:9;:24;;;;:::i;:::-;:28;;;;:::i;:::-;18576:44;;;;:::i;:::-;18547:73:::0;-1:-1:-1;18631:26:0::1;18660:30;18547:73:::0;18660:9;:30:::1;:::i;:::-;18631:59:::0;-1:-1:-1;18715:22:0;;18711:90:::1;;18752:20;::::0;:49:::1;::::0;-1:-1:-1;;;;;18752:20:0;;::::1;::::0;:49;::::1;;;::::0;18782:18;;18752:20:::1;:49:::0;:20;:49;18782:18;18752:20;:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18711:90;18825:19:::0;;18822:293:::1;;18860:6;::::0;19034:20:::1;::::0;18860:243:::1;::::0;-1:-1:-1;;;18860:243:0;;18936:4:::1;18860:243;::::0;::::1;7671:34:1::0;7721:18;;;7714:34;;;18860:6:0::1;7764:18:1::0;;;7757:34;;;7807:18;;;7800:34;-1:-1:-1;;;;;19034:20:0;;::::1;7850:19:1::0;;;7843:44;19073:15:0::1;7903:19:1::0;;;7896:35;18860:6:0;::::1;::::0;:22:::1;::::0;18890:18;;7605:19:1;;18860:243:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18822:293;19132:73;::::0;;15484:25:1;;;15540:2;15525:18;;15518:34;;;15568:18;;;15561:34;;;19132:73:0::1;::::0;15472:2:1;15457:18;19132:73:0::1;;;;;;;-1:-1:-1::0;;8237:6:0;:14;;-1:-1:-1;;8237:14:0;;;-1:-1:-1;;;;;;;17653:1560:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1606:6;1614;1667:2;1655:9;1646:7;1642:23;1638:32;1635:52;;;1683:1;1680;1673:12;1635:52;1722:9;1709:23;1741:31;1766:5;1741:31;:::i;:::-;1791:5;-1:-1:-1;1815:35:1;1846:2;1831:18;;1815:35;:::i;:::-;1805:45;;1541:315;;;;;:::o;1861:::-;1929:6;1937;1990:2;1978:9;1969:7;1965:23;1961:32;1958:52;;;2006:1;2003;1996:12;1958:52;2045:9;2032:23;2064:31;2089:5;2064:31;:::i;:::-;2114:5;2166:2;2151:18;;;;2138:32;;-1:-1:-1;;;1861:315:1:o;2181:689::-;2273:6;2281;2289;2342:2;2330:9;2321:7;2317:23;2313:32;2310:52;;;2358:1;2355;2348:12;2310:52;2398:9;2385:23;2427:18;2468:2;2460:6;2457:14;2454:34;;;2484:1;2481;2474:12;2454:34;2522:6;2511:9;2507:22;2497:32;;2567:7;2560:4;2556:2;2552:13;2548:27;2538:55;;2589:1;2586;2579:12;2538:55;2629:2;2616:16;2655:2;2647:6;2644:14;2641:34;;;2671:1;2668;2661:12;2641:34;2726:7;2719:4;2709:6;2706:1;2702:14;2698:2;2694:23;2690:34;2687:47;2684:67;;;2747:1;2744;2737:12;2684:67;2778:4;2770:13;;;;-1:-1:-1;2802:6:1;-1:-1:-1;2827:37:1;;2843:20;;;-1:-1:-1;2827:37:1;:::i;:::-;2817:47;;2181:689;;;;;:::o;2875:180::-;2931:6;2984:2;2972:9;2963:7;2959:23;2955:32;2952:52;;;3000:1;2997;2990:12;2952:52;3023:26;3039:9;3023:26;:::i;3060:385::-;3140:6;3148;3156;3164;3217:3;3205:9;3196:7;3192:23;3188:33;3185:53;;;3234:1;3231;3224:12;3185:53;3257:26;3273:9;3257:26;:::i;:::-;3247:36;;3302:35;3333:2;3322:9;3318:18;3302:35;:::i;:::-;3060:385;;3292:45;;-1:-1:-1;;;;3384:2:1;3369:18;;3356:32;;3435:2;3420:18;3407:32;;3060:385::o;3450:248::-;3515:6;3523;3576:2;3564:9;3555:7;3551:23;3547:32;3544:52;;;3592:1;3589;3582:12;3544:52;3615:26;3631:9;3615:26;:::i;3703:180::-;3762:6;3815:2;3803:9;3794:7;3790:23;3786:32;3783:52;;;3831:1;3828;3821:12;3783:52;-1:-1:-1;3854:23:1;;3703:180;-1:-1:-1;3703:180:1:o;3888:315::-;3956:6;3964;4017:2;4005:9;3996:7;3992:23;3988:32;3985:52;;;4033:1;4030;4023:12;3985:52;4069:9;4056:23;4046:33;;4129:2;4118:9;4114:18;4101:32;4142:31;4167:5;4142:31;:::i;4208:248::-;4276:6;4284;4337:2;4325:9;4316:7;4312:23;4308:32;4305:52;;;4353:1;4350;4343:12;4305:52;-1:-1:-1;;4376:23:1;;;4446:2;4431:18;;;4418:32;;-1:-1:-1;4208:248:1:o;4461:316::-;4538:6;4546;4554;4607:2;4595:9;4586:7;4582:23;4578:32;4575:52;;;4623:1;4620;4613:12;4575:52;-1:-1:-1;;4646:23:1;;;4716:2;4701:18;;4688:32;;-1:-1:-1;4767:2:1;4752:18;;;4739:32;;4461:316;-1:-1:-1;4461:316:1:o;4782:306::-;4870:6;4878;4886;4939:2;4927:9;4918:7;4914:23;4910:32;4907:52;;;4955:1;4952;4945:12;4907:52;4984:9;4978:16;4968:26;;5034:2;5023:9;5019:18;5013:25;5003:35;;5078:2;5067:9;5063:18;5057:25;5047:35;;4782:306;;;;;:::o;5093:385::-;5179:6;5187;5195;5203;5256:3;5244:9;5235:7;5231:23;5227:33;5224:53;;;5273:1;5270;5263:12;5224:53;-1:-1:-1;;5296:23:1;;;5366:2;5351:18;;5338:32;;-1:-1:-1;5417:2:1;5402:18;;5389:32;;5468:2;5453:18;5440:32;;-1:-1:-1;5093:385:1;-1:-1:-1;5093:385:1:o;5915:464::-;-1:-1:-1;;;;;6208:15:1;;;6190:34;;6260:15;;;;6255:2;6240:18;;6233:43;6307:2;6292:18;;6285:34;6367:4;6355:17;;;6350:2;6335:18;;6328:45;6139:3;6124:19;;5915:464::o;8360:597::-;8472:4;8501:2;8530;8519:9;8512:21;8562:6;8556:13;8605:6;8600:2;8589:9;8585:18;8578:34;8630:1;8640:140;8654:6;8651:1;8648:13;8640:140;;;8749:14;;;8745:23;;8739:30;8715:17;;;8734:2;8711:26;8704:66;8669:10;;8640:140;;;8798:6;8795:1;8792:13;8789:91;;;8868:1;8863:2;8854:6;8843:9;8839:22;8835:31;8828:42;8789:91;-1:-1:-1;8941:2:1;8920:15;-1:-1:-1;;8916:29:1;8901:45;;;;8948:2;8897:54;;8360:597;-1:-1:-1;;;8360:597:1:o;11524:351::-;11726:2;11708:21;;;11765:2;11745:18;;;11738:30;11804:29;11799:2;11784:18;;11777:57;11866:2;11851:18;;11524:351::o;13001:356::-;13203:2;13185:21;;;13222:18;;;13215:30;13281:34;13276:2;13261:18;;13254:62;13348:2;13333:18;;13001:356::o;14297:980::-;14559:4;14607:3;14596:9;14592:19;14638:6;14627:9;14620:25;14664:2;14702:6;14697:2;14686:9;14682:18;14675:34;14745:3;14740:2;14729:9;14725:18;14718:31;14769:6;14804;14798:13;14835:6;14827;14820:22;14873:3;14862:9;14858:19;14851:26;;14912:2;14904:6;14900:15;14886:29;;14933:1;14943:195;14957:6;14954:1;14951:13;14943:195;;;15022:13;;-1:-1:-1;;;;;15018:39:1;15006:52;;15113:15;;;;15078:12;;;;15054:1;14972:9;14943:195;;;-1:-1:-1;;;;;;;15194:32:1;;;;15189:2;15174:18;;15167:60;-1:-1:-1;;;15258:3:1;15243:19;15236:35;15155:3;14297:980;-1:-1:-1;;;14297:980:1:o;15795:128::-;15835:3;15866:1;15862:6;15859:1;15856:13;15853:39;;;15872:18;;:::i;:::-;-1:-1:-1;15908:9:1;;15795:128::o;15928:217::-;15968:1;15994;15984:132;;16038:10;16033:3;16029:20;16026:1;16019:31;16073:4;16070:1;16063:15;16101:4;16098:1;16091:15;15984:132;-1:-1:-1;16130:9:1;;15928:217::o;16150:422::-;16239:1;16282:5;16239:1;16296:270;16317:7;16307:8;16304:21;16296:270;;;16376:4;16372:1;16368:6;16364:17;16358:4;16355:27;16352:53;;;16385:18;;:::i;:::-;16435:7;16425:8;16421:22;16418:55;;;16455:16;;;;16418:55;16534:22;;;;16494:15;;;;16296:270;;;16300:3;16150:422;;;;;:::o;16577:140::-;16635:5;16664:47;16705:4;16695:8;16691:19;16685:4;16771:5;16801:8;16791:80;;-1:-1:-1;16842:1:1;16856:5;;16791:80;16890:4;16880:76;;-1:-1:-1;16927:1:1;16941:5;;16880:76;16972:4;16990:1;16985:59;;;;17058:1;17053:130;;;;16965:218;;16985:59;17015:1;17006:10;;17029:5;;;17053:130;17090:3;17080:8;17077:17;17074:43;;;17097:18;;:::i;:::-;-1:-1:-1;;17153:1:1;17139:16;;17168:5;;16965:218;;17267:2;17257:8;17254:16;17248:3;17242:4;17239:13;17235:36;17229:2;17219:8;17216:16;17211:2;17205:4;17202:12;17198:35;17195:77;17192:159;;;-1:-1:-1;17304:19:1;;;17336:5;;17192:159;17383:34;17408:8;17402:4;17383:34;:::i;:::-;17453:6;17449:1;17445:6;17441:19;17432:7;17429:32;17426:58;;;17464:18;;:::i;:::-;17502:20;;16722:806;-1:-1:-1;;;16722:806:1:o;17533:168::-;17573:7;17639:1;17635;17631:6;17627:14;17624:1;17621:21;17616:1;17609:9;17602:17;17598:45;17595:71;;;17646:18;;:::i;:::-;-1:-1:-1;17686:9:1;;17533:168::o;17706:125::-;17746:4;17774:1;17771;17768:8;17765:34;;;17779:18;;:::i;:::-;-1:-1:-1;17816:9:1;;17706:125::o;17836:136::-;17875:3;17903:5;17893:39;;17912:18;;:::i;:::-;-1:-1:-1;;;17948:18:1;;17836:136::o;17977:135::-;18016:3;-1:-1:-1;;18037:17:1;;18034:43;;;18057:18;;:::i;:::-;-1:-1:-1;18104:1:1;18093:13;;17977:135::o;18117:127::-;18178:10;18173:3;18169:20;18166:1;18159:31;18209:4;18206:1;18199:15;18233:4;18230:1;18223:15;18249:127;18310:10;18305:3;18301:20;18298:1;18291:31;18341:4;18338:1;18331:15;18365:4;18362:1;18355:15;18513:131;-1:-1:-1;;;;;18588:31:1;;18578:42;;18568:70;;18634:1;18631;18624:12;18568:70;18513:131;:::o

Swarm Source

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