ETH Price: $3,249.29 (-0.33%)
Gas: 2 Gwei

Token

FUBU Inu (FUBU)
 

Overview

Max Total Supply

1,000,000,000 FUBU

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: FUBU 3
Balance
0.000000177 FUBU

Value
$0.00
0xf31ea785ef6946768d93ae6dada0414a2d51e940
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:
FUBUInu

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-11
*/

/*
FUBU Inu
Telegram: https://t.me/FUBUinu
Website: https://fubuinu.space/
Twitter: https://twitter.com/FUBUInu

 ▄▄▄▄▄▄▄▄▄▄▄  ▄         ▄  ▄▄▄▄▄▄▄▄▄▄   ▄         ▄ 
▐░░░░░░░░░░░▌▐░▌       ▐░▌▐░░░░░░░░░░▌ ▐░▌       ▐░▌
▐░█▀▀▀▀▀▀▀▀▀ ▐░▌       ▐░▌▐░█▀▀▀▀▀▀▀█░▌▐░▌       ▐░▌
▐░▌          ▐░▌       ▐░▌▐░▌       ▐░▌▐░▌       ▐░▌
▐░█▄▄▄▄▄▄▄▄▄ ▐░▌       ▐░▌▐░█▄▄▄▄▄▄▄█░▌▐░▌       ▐░▌
▐░░░░░░░░░░░▌▐░▌       ▐░▌▐░░░░░░░░░░▌ ▐░▌       ▐░▌
▐░█▀▀▀▀▀▀▀▀▀ ▐░▌       ▐░▌▐░█▀▀▀▀▀▀▀█░▌▐░▌       ▐░▌
▐░▌          ▐░▌       ▐░▌▐░▌       ▐░▌▐░▌       ▐░▌
▐░▌          ▐░█▄▄▄▄▄▄▄█░▌▐░█▄▄▄▄▄▄▄█░▌▐░█▄▄▄▄▄▄▄█░▌
▐░▌          ▐░░░░░░░░░░░▌▐░░░░░░░░░░▌ ▐░░░░░░░░░░░▌
 ▀            ▀▀▀▀▀▀▀▀▀▀▀  ▀▀▀▀▀▀▀▀▀▀   ▀▀▀▀▀▀▀▀▀▀▀ 
                                                    
*/
// 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 FUBUInu is IERC20, Ownable {
    using Address for address;
    
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

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

    uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 _maxBuyTxAmount = (_totalSupply * 1) / 100;
    uint256 _maxSellTxAmount = (_totalSupply * 1) / 100;
    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 = 2000;
    uint256 liquidityFee = 500;
    uint256 totalFee = marketingFee + liquidityFee;
    uint256 sellBias = 1500;
    uint256 feeDenominator = 10000;

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

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

6080604052600180546001600160a01b031990811661dead17909155600280549091169055620000326009600a6200059d565b6200004290633b9aca006200065e565b600355606460035460016200005891906200065e565b62000064919062000531565b600455606460035460016200007a91906200065e565b62000086919062000531565b600555606460035460026200009c91906200065e565b620000a8919062000531565b6006556107d0600e8190556101f4600f819055620000c69162000516565b6010556105dc601155612710601255601380546001600160a01b031990811673b59897a53c4bd2d4da3967760de3f90822b1258a90811790925560148054821690921790915560168054909116737a250d5630b4cf539739df2c5dacb4c659f2488d1790556019805461ffff19908116600117909155602180548216905560026022556023805490911661010017905560035462000168906103e89062000531565b6024556127106003546200017d919062000531565b6025553480156200018d57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601654601580546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200022757600080fd5b505afa1580156200023c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002629190620004e4565b6001600160a01b031663c9c65396601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002bf57600080fd5b505afa158015620002d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fa9190620004e4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200034257600080fd5b505af115801562000357573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037d9190620004e4565b601d80546001600160a01b0319166001600160a01b039290921691821790556000908152601760205260408120805460ff1916600117905560001990600890620003cf6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601680548416835290855283822095909555308082526008855283822086548416835285528382206000199055815483168252600b85528382208054600160ff199182168117909255835485168452600d87528584208054821683179055918352600c865284832080548316821790558254841683528483208054831682179055955483168252838220805482168717905585548316825283822080549091169095179094556003548454821685526007845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000696565b600060208284031215620004f757600080fd5b81516001600160a01b03811681146200050f57600080fd5b9392505050565b600082198211156200052c576200052c62000680565b500190565b6000826200054f57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156200059557816000190482111562000579576200057962000680565b808516156200058757918102915b93841c939080029062000559565b509250929050565b60006200050f60ff841683600082620005b95750600162000658565b81620005c85750600062000658565b8160018114620005e15760028114620005ec576200060c565b600191505062000658565b60ff84111562000600576200060062000680565b50506001821b62000658565b5060208310610133831016604e8410600b841016171562000631575081810a62000658565b6200063d838362000554565b806000190482111562000654576200065462000680565b0290505b92915050565b60008160001904831182151516156200067b576200067b62000680565b500290565b634e487b7160e01b600052601160045260246000fd5b61290180620006a66000396000f3fe6080604052600436106102b25760003560e01c80636fcba37711610175578063bf56b371116100dc578063e96fada211610095578063f84ba65d1161006f578063f84ba65d14610894578063f8821a62146108b4578063f887ea40146108ca578063fabb0b4f146108ea57600080fd5b8063e96fada214610834578063f1f3bca314610854578063f2fde38b1461087457600080fd5b8063bf56b3711461074b578063bfa21d6a14610761578063c1adf7bc14610781578063c287184e146107ae578063d6860142146107ce578063dd62ed3e146107ee57600080fd5b80639b02c4021161012e5780639b02c402146106a0578063a4b45c00146106b6578063a8aa1b31146106d6578063a9059cbb146106f6578063abe57e7014610716578063bafe446b1461073657600080fd5b80636fcba377146105b857806370a08231146105d8578063715018a61461060e578063893d20e8146106235780638da5cb5b1461065557806395d89b411461067357600080fd5b8063492a937b1161021957806360bba03d116101d257806360bba03d1461050657806361e08e721461052657806363a803e11461053c578063658d4b7f146105515780636ddd1713146105715780636f4ce4281461058b57600080fd5b8063492a937b14610450578063507139351461047057806354a1dfc91461049057806356a227f2146104b0578063571ac8b0146104d05780635804f1e4146104f057600080fd5b806323b872dd1161026b57806323b872dd1461039d5780632b112e49146103bd578063313ce567146103d257806334848b9a146103ee578063421dd7c71461040e57806346d7edaa1461042357600080fd5b80630445b667146102be57806306fdde03146102e7578063095db78f14610321578063095ea7b31461034357806318160ddd14610373578063234e94941461038857600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d460245481565b6040519081526020015b60405180910390f35b3480156102f357600080fd5b506040805180820190915260088152674655425520496e7560c01b60208201525b6040516102de91906125c5565b34801561032d57600080fd5b5061034161033c3660046123b1565b610900565b005b34801561034f57600080fd5b5061036361035e366004612385565b610abc565b60405190151581526020016102de565b34801561037f57600080fd5b506003546102d4565b34801561039457600080fd5b506102d4610b29565b3480156103a957600080fd5b506103636103b836600461230f565b610b49565b3480156103c957600080fd5b506102d4610bde565b3480156103de57600080fd5b50604051600981526020016102de565b3480156103fa57600080fd5b5061034161040936600461250e565b610c1f565b34801561041a57600080fd5b50610341610cc0565b34801561042f57600080fd5b506102d461043e36600461229c565b60186020526000908152604090205481565b34801561045c57600080fd5b5061034161046b366004612350565b610d15565b34801561047c57600080fd5b5061034161048b36600461250e565b610dd3565b34801561049c57600080fd5b506103416104ab366004612450565b610e6e565b3480156104bc57600080fd5b506103416104cb3660046124c7565b610ef1565b3480156104dc57600080fd5b506103636104eb36600461229c565b610f81565b3480156104fc57600080fd5b506102d4601f5481565b34801561051257600080fd5b50610341610521366004612350565b610f8f565b34801561053257600080fd5b506102d460225481565b34801561054857600080fd5b506102d4610fe4565b34801561055d57600080fd5b5061034161056c366004612350565b610fff565b34801561057d57600080fd5b506023546103639060ff1681565b34801561059757600080fd5b506102d46105a636600461229c565b60096020526000908152604090205481565b3480156105c457600080fd5b506103416105d3366004612568565b611054565b3480156105e457600080fd5b506102d46105f336600461229c565b6001600160a01b031660009081526007602052604090205490565b34801561061a57600080fd5b506103416110b7565b34801561062f57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102de565b34801561066157600080fd5b506000546001600160a01b031661063d565b34801561067f57600080fd5b506040805180820190915260048152634655425560e01b6020820152610314565b3480156106ac57600080fd5b506102d4601b5481565b3480156106c257600080fd5b506103416106d13660046122d6565b61112b565b3480156106e257600080fd5b50601d5461063d906001600160a01b031681565b34801561070257600080fd5b50610363610711366004612385565b611183565b34801561072257600080fd5b506103416107313660046124ec565b611190565b34801561074257600080fd5b506102d4611201565b34801561075757600080fd5b506102d4601e5481565b34801561076d57600080fd5b5060135461063d906001600160a01b031681565b34801561078d57600080fd5b506102d461079c36600461229c565b600a6020526000908152604090205481565b3480156107ba57600080fd5b506103416107c93660046124ae565b61121c565b3480156107da57600080fd5b506103416107e9366004612492565b611259565b3480156107fa57600080fd5b506102d46108093660046122d6565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561084057600080fd5b5060145461063d906001600160a01b031681565b34801561086057600080fd5b506102d461086f366004612435565b6112ea565b34801561088057600080fd5b5061034161088f36600461229c565b611337565b3480156108a057600080fd5b506103416108af366004612350565b611421565b3480156108c057600080fd5b506102d460255481565b3480156108d657600080fd5b5060155461063d906001600160a01b031681565b3480156108f657600080fd5b506102d460205481565b3360009081526027602052604090205460ff168061092857506000546001600160a01b031633145b61094d5760405162461bcd60e51b81526004016109449061261a565b60405180910390fd5b80156109625760195460ff1661096257600080fd5b60005b82811015610ab65781156109f157601b80549060006109838361286c565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea328585848181106109bc576109bc61289d565b90506020020160208101906109d1919061229c565b4360026040516109e4949392919061259a565b60405180910390a1610a51565b60186000858584818110610a0757610a0761289d565b9050602002016020810190610a1c919061229c565b6001600160a01b0316815260208101919091526040016000205415610a5157601b8054906000610a4b83612855565b91905055505b81610a5d576000610a5f565b435b60186000868685818110610a7557610a7561289d565b9050602002016020810190610a8a919061229c565b6001600160a01b0316815260208101919091526040016000205580610aae8161286c565b915050610965565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b179086815260200190565b60405180910390a35060015b92915050565b6000610b376009600a612774565b600554610b44919061270f565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610bc9576001600160a01b0384166000908152600860209081526040808320338452909152902054610ba490839061283e565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610bd4848484611476565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610c12916126f7565b600354610b44919061283e565b3360009081526027602052604090205460ff1680610c4757506000546001600160a01b031633145b610c635760405162461bcd60e51b81526004016109449061261a565b60215460ff16158015610c765750600a83105b610c7f57600080fd5b60208390556021805460ff1916600117905543601e55610c9f82426126f7565b601c55610cae6009600a612774565b610cb8908261281f565b601a55505050565b3360009081526027602052604090205460ff1680610ce857506000546001600160a01b031633145b610d045760405162461bcd60e51b81526004016109449061261a565b6019805461ffff1916610100179055565b6000546001600160a01b03163314610d3f5760405162461bcd60e51b815260040161094490612651565b601d546001600160a01b0383811691161415610da85760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610944565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610dfd5760405162461bcd60e51b815260040161094490612651565b600083118015610e0d5750600082115b8015610e195750600081115b8015610e2757506127108111155b610e3057600080fd5b8083600354610e3f919061281f565b610e49919061270f565b6004556003548190610e5c90849061281f565b610e66919061270f565b600555505050565b6000546001600160a01b03163314610e985760405162461bcd60e51b815260040161094490612651565b60008211610ea557600080fd5b6023805461ffff191685151561ff0019161761010085151502179055600354610ecf90839061270f565b602455610ede6009600a612774565b610ee8908261281f565b60255550505050565b3360009081526027602052604090205460ff1680610f1957506000546001600160a01b031633145b610f355760405162461bcd60e51b81526004016109449061261a565b476001600160a01b0382166108fc6064610f4f868561281f565b610f59919061270f565b6040518115909202916000818181858888f19350505050158015610ab6573d6000803e3d6000fd5b6000610b2382600019610abc565b6000546001600160a01b03163314610fb95760405162461bcd60e51b815260040161094490612651565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b6000610ff26009600a612774565b600654610b44919061270f565b6000546001600160a01b031633146110295760405162461bcd60e51b815260040161094490612651565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461107e5760405162461bcd60e51b815260040161094490612651565b600f849055600e83905561109284846126f7565b601055601182905560128190556110aa60028261270f565b60105410610ab657600080fd5b6000546001600160a01b031633146110e15760405162461bcd60e51b815260040161094490612651565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146111555760405162461bcd60e51b815260040161094490612651565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000610bd7338484611476565b6000546001600160a01b031633146111ba5760405162461bcd60e51b815260040161094490612651565b6000821180156111ca5750600081115b80156111d857506127108111155b6111e157600080fd5b80826003546111f0919061281f565b6111fa919061270f565b6006555050565b600061120f6009600a612774565b600454610b44919061270f565b6000546001600160a01b031633146112465760405162461bcd60e51b815260040161094490612651565b603c81111561125457600080fd5b602255565b3360009081526027602052604090205460ff168061128157506000546001600160a01b031633145b61129d5760405162461bcd60e51b81526004016109449061261a565b601954610100900460ff16156112b257600080fd5b6019805460ff19168315151790556201518081106112cf57600080fd5b80601c60008282546112e191906126f7565b90915550505050565b600043602054601e546112fd91906126f7565b10611311576001601254610b23919061283e565b811561132757601154601054610b2391906126f7565b601154601054610b23919061283e565b6000546001600160a01b031633146113615760405162461bcd60e51b815260040161094490612651565b6001600160a01b0381166113c65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610944565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461144b5760405162461bcd60e51b815260040161094490612651565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006001600160a01b0384166114ce5760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d2030783000000000000000006044820152606401610944565b6001600160a01b03831661151d5760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b6044820152606401610944565b600082116115655760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610944565b6001600160a01b0384166000908152600760205260409020548211156115c45760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610944565b601e541580156115ec57506001600160a01b03831660009081526017602052604090205460ff165b15611673576001600160a01b0384166000908152600d602052604090205460ff166116595760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610944565b61167343601e5542601f556023805460ff19166001179055565b60215460ff16611700576001600160a01b0384166000908152600d602052604090205460ff16806116bc57506001600160a01b0383166000908152600d602052604090205460ff165b6117005760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b6044820152606401610944565b61170b848484611978565b6001600160a01b03831660009081526017602052604090205460ff1615801561174257506001546001600160a01b03848116911614155b15611771576001600160a01b0383166000908152600c602052604090205460ff16611771576117718383611ccd565b60195460ff168015611784575042601c54115b1561184e576001600160a01b03841660009081526017602052604090205460ff1680156117ba5750326001600160a01b03841614155b80156117dc57506001600160a01b038316600090815260186020526040902054155b1561184e576001600160a01b0383166000908152601860205260408120439055601b80549161180a8361286c565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611845949392919061259a565b60405180910390a15b60265460ff161561186b57611864848484611d52565b9050610bd7565b6001600160a01b03841660009081526007602052604090205461188f90839061283e565b6001600160a01b038516600090815260076020908152604080832093909355600b90529081205460ff16156118c457826118ce565b6118ce8484611e0c565b90506118d984611e8a565b156118ed5782156118ed576118ed83611f01565b6001600160a01b0384166000908152600760205260409020546119119082906126f7565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119659085815260200190565b60405180910390a3506001949350505050565b6001600160a01b0383166000908152600c602052604090205460ff16806119ca57506001600160a01b03831660009081526017602052604090205460ff166119c2576005546119c6565b6004545b8111155b611a0a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610944565b6001600160a01b0383166000908152600c602052604090205460ff1680611a5657506022546001600160a01b0383166000908152600a60205260409020544391611a53916126f7565b11155b611aa25760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e0000006044820152606401610944565b6001600160a01b03831660009081526018602052604090205415611b8557611acc6009600a612774565b601a54611ad9919061281f565b8111158015611afe57506001600160a01b038316600090815260096020526040902054155b8015611b0b575042601c54115b611b695760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b6064820152608401610944565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526017602052604090205460ff1615611bc45750506001600160a01b03166000908152600960205260409020439055565b6001600160a01b0383166000908152600b602052604090205460ff16611cc85760195460ff168015611bf7575042601c54115b8015611c115750326000908152600a602052604090205443145b8015611c3357506001600160a01b038216600090815260186020526040902054155b15611c94576001600160a01b03821660009081526018602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea91611c8b913291869160019061259a565b60405180910390a15b6001600160a01b0382166000818152600a602052604090204390553214611cc857326000908152600a602052604090204390555b505050565b6006546001600160a01b0383166000908152600760205260409020548190611cf69084906126f7565b1115611cc85760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610944565b6001600160a01b038316600090815260076020526040812054611d7690839061283e565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611da69083906126f7565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611dfa9086815260200190565b60405180910390a35060019392505050565b6001600160a01b03821660009081526017602052604081205460125460ff909116908290611e39836112ea565b611e43908661281f565b611e4d919061270f565b30600090815260076020526040812080549293508392909190611e719084906126f7565b90915550611e819050818561283e565b95945050505050565b3360009081526017602052604081205460ff16158015611ead575060265460ff16155b8015611ebb575060235460ff165b8015611edf57506001600160a01b03821660009081526017602052604090205460ff165b8015610b23575060255430600090815260076020526040902054101592915050565b6026805460ff191660011790556024546000908210611f2257602454611f24565b815b30600090815260076020526040902054909150811115611f505750306000908152600760205260409020545b60006010546002600f5484611f65919061281f565b611f6f919061270f565b611f79919061270f565b9050611f85818361283e565b60408051600280825260608201835292945060009290916020830190803683370190505090503081600081518110611fbf57611fbf61289d565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561201357600080fd5b505afa158015612027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204b91906122b9565b8160018151811061205e5761205e61289d565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac947906120a8908790600090879030904290600401612686565b600060405180830381600087803b1580156120c257600080fd5b505af11580156120d6573d6000803e3d6000fd5b50505050600081476120e8919061283e565b905060006002600f546120fb919061270f565b601054612108919061283e565b90506000816002600f548561211d919061281f565b612127919061270f565b612131919061270f565b9050600061213f828561283e565b90508015612183576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612181573d6000803e3d6000fd5b505b86156122315760155460135460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b1580156121f457600080fd5b505af1158015612208573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061222d919061253a565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506026805460ff1916905550505050505050565b8035801515811461229757600080fd5b919050565b6000602082840312156122ae57600080fd5b8135610bd7816128b3565b6000602082840312156122cb57600080fd5b8151610bd7816128b3565b600080604083850312156122e957600080fd5b82356122f4816128b3565b91506020830135612304816128b3565b809150509250929050565b60008060006060848603121561232457600080fd5b833561232f816128b3565b9250602084013561233f816128b3565b929592945050506040919091013590565b6000806040838503121561236357600080fd5b823561236e816128b3565b915061237c60208401612287565b90509250929050565b6000806040838503121561239857600080fd5b82356123a3816128b3565b946020939093013593505050565b6000806000604084860312156123c657600080fd5b833567ffffffffffffffff808211156123de57600080fd5b818601915086601f8301126123f257600080fd5b81358181111561240157600080fd5b8760208260051b850101111561241657600080fd5b60209283019550935061242c9186019050612287565b90509250925092565b60006020828403121561244757600080fd5b610bd782612287565b6000806000806080858703121561246657600080fd5b61246f85612287565b935061247d60208601612287565b93969395505050506040820135916060013590565b600080604083850312156124a557600080fd5b6123a383612287565b6000602082840312156124c057600080fd5b5035919050565b600080604083850312156124da57600080fd5b823591506020830135612304816128b3565b600080604083850312156124ff57600080fd5b50508035926020909101359150565b60008060006060848603121561252357600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561254f57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561257e57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b600060208083528351808285015260005b818110156125f2578581018301518582016040015282016125d6565b81811115612604576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126d65784516001600160a01b0316835293830193918301916001016126b1565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561270a5761270a612887565b500190565b60008261272c57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561276c57816000190482111561275257612752612887565b8085161561275f57918102915b93841c9390800290612736565b509250929050565b6000610bd760ff84168360008261278d57506001610b23565b8161279a57506000610b23565b81600181146127b057600281146127ba576127d6565b6001915050610b23565b60ff8411156127cb576127cb612887565b50506001821b610b23565b5060208310610133831016604e8410600b84101617156127f9575081810a610b23565b6128038383612731565b806000190482111561281757612817612887565b029392505050565b600081600019048311821515161561283957612839612887565b500290565b60008282101561285057612850612887565b500390565b60008161286457612864612887565b506000190190565b600060001982141561288057612880612887565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146128c857600080fd5b5056fea2646970667358221220d413032194f3744a5ca8be587833e5b8aa6b014dc3035a60f51ee5d144aa50fa64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c80636fcba37711610175578063bf56b371116100dc578063e96fada211610095578063f84ba65d1161006f578063f84ba65d14610894578063f8821a62146108b4578063f887ea40146108ca578063fabb0b4f146108ea57600080fd5b8063e96fada214610834578063f1f3bca314610854578063f2fde38b1461087457600080fd5b8063bf56b3711461074b578063bfa21d6a14610761578063c1adf7bc14610781578063c287184e146107ae578063d6860142146107ce578063dd62ed3e146107ee57600080fd5b80639b02c4021161012e5780639b02c402146106a0578063a4b45c00146106b6578063a8aa1b31146106d6578063a9059cbb146106f6578063abe57e7014610716578063bafe446b1461073657600080fd5b80636fcba377146105b857806370a08231146105d8578063715018a61461060e578063893d20e8146106235780638da5cb5b1461065557806395d89b411461067357600080fd5b8063492a937b1161021957806360bba03d116101d257806360bba03d1461050657806361e08e721461052657806363a803e11461053c578063658d4b7f146105515780636ddd1713146105715780636f4ce4281461058b57600080fd5b8063492a937b14610450578063507139351461047057806354a1dfc91461049057806356a227f2146104b0578063571ac8b0146104d05780635804f1e4146104f057600080fd5b806323b872dd1161026b57806323b872dd1461039d5780632b112e49146103bd578063313ce567146103d257806334848b9a146103ee578063421dd7c71461040e57806346d7edaa1461042357600080fd5b80630445b667146102be57806306fdde03146102e7578063095db78f14610321578063095ea7b31461034357806318160ddd14610373578063234e94941461038857600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d460245481565b6040519081526020015b60405180910390f35b3480156102f357600080fd5b506040805180820190915260088152674655425520496e7560c01b60208201525b6040516102de91906125c5565b34801561032d57600080fd5b5061034161033c3660046123b1565b610900565b005b34801561034f57600080fd5b5061036361035e366004612385565b610abc565b60405190151581526020016102de565b34801561037f57600080fd5b506003546102d4565b34801561039457600080fd5b506102d4610b29565b3480156103a957600080fd5b506103636103b836600461230f565b610b49565b3480156103c957600080fd5b506102d4610bde565b3480156103de57600080fd5b50604051600981526020016102de565b3480156103fa57600080fd5b5061034161040936600461250e565b610c1f565b34801561041a57600080fd5b50610341610cc0565b34801561042f57600080fd5b506102d461043e36600461229c565b60186020526000908152604090205481565b34801561045c57600080fd5b5061034161046b366004612350565b610d15565b34801561047c57600080fd5b5061034161048b36600461250e565b610dd3565b34801561049c57600080fd5b506103416104ab366004612450565b610e6e565b3480156104bc57600080fd5b506103416104cb3660046124c7565b610ef1565b3480156104dc57600080fd5b506103636104eb36600461229c565b610f81565b3480156104fc57600080fd5b506102d4601f5481565b34801561051257600080fd5b50610341610521366004612350565b610f8f565b34801561053257600080fd5b506102d460225481565b34801561054857600080fd5b506102d4610fe4565b34801561055d57600080fd5b5061034161056c366004612350565b610fff565b34801561057d57600080fd5b506023546103639060ff1681565b34801561059757600080fd5b506102d46105a636600461229c565b60096020526000908152604090205481565b3480156105c457600080fd5b506103416105d3366004612568565b611054565b3480156105e457600080fd5b506102d46105f336600461229c565b6001600160a01b031660009081526007602052604090205490565b34801561061a57600080fd5b506103416110b7565b34801561062f57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102de565b34801561066157600080fd5b506000546001600160a01b031661063d565b34801561067f57600080fd5b506040805180820190915260048152634655425560e01b6020820152610314565b3480156106ac57600080fd5b506102d4601b5481565b3480156106c257600080fd5b506103416106d13660046122d6565b61112b565b3480156106e257600080fd5b50601d5461063d906001600160a01b031681565b34801561070257600080fd5b50610363610711366004612385565b611183565b34801561072257600080fd5b506103416107313660046124ec565b611190565b34801561074257600080fd5b506102d4611201565b34801561075757600080fd5b506102d4601e5481565b34801561076d57600080fd5b5060135461063d906001600160a01b031681565b34801561078d57600080fd5b506102d461079c36600461229c565b600a6020526000908152604090205481565b3480156107ba57600080fd5b506103416107c93660046124ae565b61121c565b3480156107da57600080fd5b506103416107e9366004612492565b611259565b3480156107fa57600080fd5b506102d46108093660046122d6565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561084057600080fd5b5060145461063d906001600160a01b031681565b34801561086057600080fd5b506102d461086f366004612435565b6112ea565b34801561088057600080fd5b5061034161088f36600461229c565b611337565b3480156108a057600080fd5b506103416108af366004612350565b611421565b3480156108c057600080fd5b506102d460255481565b3480156108d657600080fd5b5060155461063d906001600160a01b031681565b3480156108f657600080fd5b506102d460205481565b3360009081526027602052604090205460ff168061092857506000546001600160a01b031633145b61094d5760405162461bcd60e51b81526004016109449061261a565b60405180910390fd5b80156109625760195460ff1661096257600080fd5b60005b82811015610ab65781156109f157601b80549060006109838361286c565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea328585848181106109bc576109bc61289d565b90506020020160208101906109d1919061229c565b4360026040516109e4949392919061259a565b60405180910390a1610a51565b60186000858584818110610a0757610a0761289d565b9050602002016020810190610a1c919061229c565b6001600160a01b0316815260208101919091526040016000205415610a5157601b8054906000610a4b83612855565b91905055505b81610a5d576000610a5f565b435b60186000868685818110610a7557610a7561289d565b9050602002016020810190610a8a919061229c565b6001600160a01b0316815260208101919091526040016000205580610aae8161286c565b915050610965565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b179086815260200190565b60405180910390a35060015b92915050565b6000610b376009600a612774565b600554610b44919061270f565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610bc9576001600160a01b0384166000908152600860209081526040808320338452909152902054610ba490839061283e565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610bd4848484611476565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610c12916126f7565b600354610b44919061283e565b3360009081526027602052604090205460ff1680610c4757506000546001600160a01b031633145b610c635760405162461bcd60e51b81526004016109449061261a565b60215460ff16158015610c765750600a83105b610c7f57600080fd5b60208390556021805460ff1916600117905543601e55610c9f82426126f7565b601c55610cae6009600a612774565b610cb8908261281f565b601a55505050565b3360009081526027602052604090205460ff1680610ce857506000546001600160a01b031633145b610d045760405162461bcd60e51b81526004016109449061261a565b6019805461ffff1916610100179055565b6000546001600160a01b03163314610d3f5760405162461bcd60e51b815260040161094490612651565b601d546001600160a01b0383811691161415610da85760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b6064820152608401610944565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610dfd5760405162461bcd60e51b815260040161094490612651565b600083118015610e0d5750600082115b8015610e195750600081115b8015610e2757506127108111155b610e3057600080fd5b8083600354610e3f919061281f565b610e49919061270f565b6004556003548190610e5c90849061281f565b610e66919061270f565b600555505050565b6000546001600160a01b03163314610e985760405162461bcd60e51b815260040161094490612651565b60008211610ea557600080fd5b6023805461ffff191685151561ff0019161761010085151502179055600354610ecf90839061270f565b602455610ede6009600a612774565b610ee8908261281f565b60255550505050565b3360009081526027602052604090205460ff1680610f1957506000546001600160a01b031633145b610f355760405162461bcd60e51b81526004016109449061261a565b476001600160a01b0382166108fc6064610f4f868561281f565b610f59919061270f565b6040518115909202916000818181858888f19350505050158015610ab6573d6000803e3d6000fd5b6000610b2382600019610abc565b6000546001600160a01b03163314610fb95760405162461bcd60e51b815260040161094490612651565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b6000610ff26009600a612774565b600654610b44919061270f565b6000546001600160a01b031633146110295760405162461bcd60e51b815260040161094490612651565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461107e5760405162461bcd60e51b815260040161094490612651565b600f849055600e83905561109284846126f7565b601055601182905560128190556110aa60028261270f565b60105410610ab657600080fd5b6000546001600160a01b031633146110e15760405162461bcd60e51b815260040161094490612651565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146111555760405162461bcd60e51b815260040161094490612651565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000610bd7338484611476565b6000546001600160a01b031633146111ba5760405162461bcd60e51b815260040161094490612651565b6000821180156111ca5750600081115b80156111d857506127108111155b6111e157600080fd5b80826003546111f0919061281f565b6111fa919061270f565b6006555050565b600061120f6009600a612774565b600454610b44919061270f565b6000546001600160a01b031633146112465760405162461bcd60e51b815260040161094490612651565b603c81111561125457600080fd5b602255565b3360009081526027602052604090205460ff168061128157506000546001600160a01b031633145b61129d5760405162461bcd60e51b81526004016109449061261a565b601954610100900460ff16156112b257600080fd5b6019805460ff19168315151790556201518081106112cf57600080fd5b80601c60008282546112e191906126f7565b90915550505050565b600043602054601e546112fd91906126f7565b10611311576001601254610b23919061283e565b811561132757601154601054610b2391906126f7565b601154601054610b23919061283e565b6000546001600160a01b031633146113615760405162461bcd60e51b815260040161094490612651565b6001600160a01b0381166113c65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610944565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461144b5760405162461bcd60e51b815260040161094490612651565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006001600160a01b0384166114ce5760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d2030783000000000000000006044820152606401610944565b6001600160a01b03831661151d5760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b6044820152606401610944565b600082116115655760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b6044820152606401610944565b6001600160a01b0384166000908152600760205260409020548211156115c45760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610944565b601e541580156115ec57506001600160a01b03831660009081526017602052604090205460ff165b15611673576001600160a01b0384166000908152600d602052604090205460ff166116595760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e00000000000000006044820152606401610944565b61167343601e5542601f556023805460ff19166001179055565b60215460ff16611700576001600160a01b0384166000908152600d602052604090205460ff16806116bc57506001600160a01b0383166000908152600d602052604090205460ff165b6117005760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b6044820152606401610944565b61170b848484611978565b6001600160a01b03831660009081526017602052604090205460ff1615801561174257506001546001600160a01b03848116911614155b15611771576001600160a01b0383166000908152600c602052604090205460ff16611771576117718383611ccd565b60195460ff168015611784575042601c54115b1561184e576001600160a01b03841660009081526017602052604090205460ff1680156117ba5750326001600160a01b03841614155b80156117dc57506001600160a01b038316600090815260186020526040902054155b1561184e576001600160a01b0383166000908152601860205260408120439055601b80549161180a8361286c565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611845949392919061259a565b60405180910390a15b60265460ff161561186b57611864848484611d52565b9050610bd7565b6001600160a01b03841660009081526007602052604090205461188f90839061283e565b6001600160a01b038516600090815260076020908152604080832093909355600b90529081205460ff16156118c457826118ce565b6118ce8484611e0c565b90506118d984611e8a565b156118ed5782156118ed576118ed83611f01565b6001600160a01b0384166000908152600760205260409020546119119082906126f7565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119659085815260200190565b60405180910390a3506001949350505050565b6001600160a01b0383166000908152600c602052604090205460ff16806119ca57506001600160a01b03831660009081526017602052604090205460ff166119c2576005546119c6565b6004545b8111155b611a0a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610944565b6001600160a01b0383166000908152600c602052604090205460ff1680611a5657506022546001600160a01b0383166000908152600a60205260409020544391611a53916126f7565b11155b611aa25760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e0000006044820152606401610944565b6001600160a01b03831660009081526018602052604090205415611b8557611acc6009600a612774565b601a54611ad9919061281f565b8111158015611afe57506001600160a01b038316600090815260096020526040902054155b8015611b0b575042601c54115b611b695760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b6064820152608401610944565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526017602052604090205460ff1615611bc45750506001600160a01b03166000908152600960205260409020439055565b6001600160a01b0383166000908152600b602052604090205460ff16611cc85760195460ff168015611bf7575042601c54115b8015611c115750326000908152600a602052604090205443145b8015611c3357506001600160a01b038216600090815260186020526040902054155b15611c94576001600160a01b03821660009081526018602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea91611c8b913291869160019061259a565b60405180910390a15b6001600160a01b0382166000818152600a602052604090204390553214611cc857326000908152600a602052604090204390555b505050565b6006546001600160a01b0383166000908152600760205260409020548190611cf69084906126f7565b1115611cc85760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610944565b6001600160a01b038316600090815260076020526040812054611d7690839061283e565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611da69083906126f7565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611dfa9086815260200190565b60405180910390a35060019392505050565b6001600160a01b03821660009081526017602052604081205460125460ff909116908290611e39836112ea565b611e43908661281f565b611e4d919061270f565b30600090815260076020526040812080549293508392909190611e719084906126f7565b90915550611e819050818561283e565b95945050505050565b3360009081526017602052604081205460ff16158015611ead575060265460ff16155b8015611ebb575060235460ff165b8015611edf57506001600160a01b03821660009081526017602052604090205460ff165b8015610b23575060255430600090815260076020526040902054101592915050565b6026805460ff191660011790556024546000908210611f2257602454611f24565b815b30600090815260076020526040902054909150811115611f505750306000908152600760205260409020545b60006010546002600f5484611f65919061281f565b611f6f919061270f565b611f79919061270f565b9050611f85818361283e565b60408051600280825260608201835292945060009290916020830190803683370190505090503081600081518110611fbf57611fbf61289d565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561201357600080fd5b505afa158015612027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204b91906122b9565b8160018151811061205e5761205e61289d565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac947906120a8908790600090879030904290600401612686565b600060405180830381600087803b1580156120c257600080fd5b505af11580156120d6573d6000803e3d6000fd5b50505050600081476120e8919061283e565b905060006002600f546120fb919061270f565b601054612108919061283e565b90506000816002600f548561211d919061281f565b612127919061270f565b612131919061270f565b9050600061213f828561283e565b90508015612183576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612181573d6000803e3d6000fd5b505b86156122315760155460135460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b1580156121f457600080fd5b505af1158015612208573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061222d919061253a565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506026805460ff1916905550505050505050565b8035801515811461229757600080fd5b919050565b6000602082840312156122ae57600080fd5b8135610bd7816128b3565b6000602082840312156122cb57600080fd5b8151610bd7816128b3565b600080604083850312156122e957600080fd5b82356122f4816128b3565b91506020830135612304816128b3565b809150509250929050565b60008060006060848603121561232457600080fd5b833561232f816128b3565b9250602084013561233f816128b3565b929592945050506040919091013590565b6000806040838503121561236357600080fd5b823561236e816128b3565b915061237c60208401612287565b90509250929050565b6000806040838503121561239857600080fd5b82356123a3816128b3565b946020939093013593505050565b6000806000604084860312156123c657600080fd5b833567ffffffffffffffff808211156123de57600080fd5b818601915086601f8301126123f257600080fd5b81358181111561240157600080fd5b8760208260051b850101111561241657600080fd5b60209283019550935061242c9186019050612287565b90509250925092565b60006020828403121561244757600080fd5b610bd782612287565b6000806000806080858703121561246657600080fd5b61246f85612287565b935061247d60208601612287565b93969395505050506040820135916060013590565b600080604083850312156124a557600080fd5b6123a383612287565b6000602082840312156124c057600080fd5b5035919050565b600080604083850312156124da57600080fd5b823591506020830135612304816128b3565b600080604083850312156124ff57600080fd5b50508035926020909101359150565b60008060006060848603121561252357600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561254f57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561257e57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b600060208083528351808285015260005b818110156125f2578581018301518582016040015282016125d6565b81811115612604576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126d65784516001600160a01b0316835293830193918301916001016126b1565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561270a5761270a612887565b500190565b60008261272c57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561276c57816000190482111561275257612752612887565b8085161561275f57918102915b93841c9390800290612736565b509250929050565b6000610bd760ff84168360008261278d57506001610b23565b8161279a57506000610b23565b81600181146127b057600281146127ba576127d6565b6001915050610b23565b60ff8411156127cb576127cb612887565b50506001821b610b23565b5060208310610133831016604e8410600b84101617156127f9575081810a610b23565b6128038383612731565b806000190482111561281757612817612887565b029392505050565b600081600019048311821515161561283957612839612887565b500290565b60008282101561285057612850612887565b500390565b60008161286457612864612887565b506000190190565b600060001982141561288057612880612887565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146128c857600080fd5b5056fea2646970667358221220d413032194f3744a5ca8be587833e5b8aa6b014dc3035a60f51ee5d144aa50fa64736f6c63430008070033

Deployed Bytecode Sourcemap

6502:15577:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8499:50;;;;;;;;;;;;;;;;;;;14261:25:1;;;14249:2;14234:18;8499:50:0;;;;;;;;9963:71;;;;;;;;;;-1:-1:-1;10026:5:0;;;;;;;;;;;;-1:-1:-1;;;10026:5:0;;;;9963:71;;;;;;;:::i;12207:617::-;;;;;;;;;;-1:-1:-1;12207:617:0;;;;;:::i;:::-;;:::i;:::-;;10704:216;;;;;;;;;;-1:-1:-1;10704:216:0;;;;;:::i;:::-;;:::i;:::-;;;8107:14:1;;8100:22;8082:41;;8070:2;8055:18;10704:216:0;7942:187:1;9711:88:0;;;;;;;;;;-1:-1:-1;9784:12:0;;9711:88;;10228:107;;;;;;;;;;;;;:::i;12996:341::-;;;;;;;;;;-1:-1:-1;12996:341:0;;;;;:::i;:::-;;:::i;21838:138::-;;;;;;;;;;;;;:::i;9805:71::-;;;;;;;;;;-1:-1:-1;9805:71:0;;6820:1;15748:36:1;;15736:2;15721:18;9805:71:0;15606:184:1;11425:372:0;;;;;;;;;;-1:-1:-1;11425:372:0;;;;;:::i;:::-;;:::i;12068:127::-;;;;;;;;;;;;;:::i;7975:45::-;;;;;;;;;;-1:-1:-1;7975:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;19658:184;;;;;;;;;;-1:-1:-1;19658:184:0;;;;;:::i;:::-;;:::i;19986:339::-;;;;;;;;;;-1:-1:-1;19986:339:0;;;;;:::i;:::-;;:::i;21470:360::-;;;;;;;;;;-1:-1:-1;21470:360:0;;;;;:::i;:::-;;:::i;11199:214::-;;;;;;;;;;-1:-1:-1;11199:214:0;;;;;:::i;:::-;;:::i;10928:122::-;;;;;;;;;;-1:-1:-1;10928:122:0;;;;;:::i;:::-;;:::i;8260:27::-;;;;;;;;;;;;;;;;11062:119;;;;;;;;;;-1:-1:-1;11062:119:0;;;;;:::i;:::-;;:::i;8391:28::-;;;;;;;;;;;;;;;;10341:105;;;;;;;;;;;;;:::i;20564:119::-;;;;;;;;;;-1:-1:-1;20564:119:0;;;;;:::i;:::-;;:::i;8428:31::-;;;;;;;;;;-1:-1:-1;8428:31:0;;;;;;;;7179:44;;;;;;;;;;-1:-1:-1;7179:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;20826:386;;;;;;;;;;-1:-1:-1;20826:386:0;;;;;:::i;:::-;;:::i;10452:105::-;;;;;;;;;;-1:-1:-1;10452:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;10536:18:0;10518:7;10536:18;;;:9;:18;;;;;;;10452:105;6097:148;;;;;;;;;;;;;:::i;10040:71::-;;;;;;;;;;-1:-1:-1;10083:7:0;5952:6;-1:-1:-1;;;;;5952:6:0;10040:71;;;-1:-1:-1;;;;;5647:32:1;;;5629:51;;5617:2;5602:18;10040:71:0;5483:203:1;5887:79:0;;;;;;;;;;-1:-1:-1;5925:7:0;5952:6;-1:-1:-1;;;;;5952:6:0;5887:79;;9882:75;;;;;;;;;;-1:-1:-1;9947:7:0;;;;;;;;;;;;-1:-1:-1;;;9947:7:0;;;;9882:75;;8131:30;;;;;;;;;;;;;;;;21220:242;;;;;;;;;;-1:-1:-1;21220:242:0;;;;;:::i;:::-;;:::i;8200:19::-;;;;;;;;;;-1:-1:-1;8200:19:0;;;;-1:-1:-1;;;;;8200:19:0;;;12832:156;;;;;;;;;;-1:-1:-1;12832:156:0;;;;;:::i;:::-;;:::i;20337:219::-;;;;;;;;;;-1:-1:-1;20337:219:0;;;;;:::i;:::-;;:::i;10117:105::-;;;;;;;;;;;;;:::i;8228:25::-;;;;;;;;;;;;;;;;7614:97;;;;;;;;;;-1:-1:-1;7614:97:0;;;;-1:-1:-1;;;;;7614:97:0;;;7230:43;;;;;;;;;;-1:-1:-1;7230:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;19850:128;;;;;;;;;;-1:-1:-1;19850:128:0;;;;;:::i;:::-;;:::i;11821:235::-;;;;;;;;;;-1:-1:-1;11821:235:0;;;;;:::i;:::-;;:::i;10563:133::-;;;;;;;;;;-1:-1:-1;10563:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10665:19:0;;;10647:7;10665:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10563:133;7718:97;;;;;;;;;;-1:-1:-1;7718:97:0;;;;-1:-1:-1;;;;;7718:97:0;;;17243:243;;;;;;;;;;-1:-1:-1;17243:243:0;;;;;:::i;:::-;;:::i;6251:244::-;;;;;;;;;;-1:-1:-1;6251:244:0;;;;;:::i;:::-;;:::i;20691:127::-;;;;;;;;;;-1:-1:-1;20691:127:0;;;;;:::i;:::-;;:::i;8556:49::-;;;;;;;;;;;;;;;;7824:24;;;;;;;;;;-1:-1:-1;7824:24:0;;;;-1:-1:-1;;;;;7824:24:0;;;8294:25;;;;;;;;;;;;;;;;12207:617;4002:10;8787:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;5925:7:0;5952:6;-1:-1:-1;;;;;5952:6:0;8815:10;:21;8787:49;8779:89;;;;-1:-1:-1;;;8779:89:0;;;;;;;:::i;:::-;;;;;;;;;12307:8:::1;12303:67;;;12340:17;::::0;::::1;;12332:26;;;::::0;::::1;;12395:6;12390:427;12407:19:::0;;::::1;12390:427;;;12466:8;12462:277;;;12495:15;:17:::0;;;:15:::1;:17;::::0;::::1;:::i;:::-;;;;;;12536:56;12552:9;12563:8;;12572:1;12563:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;12576:12;12590:1;12536:56;;;;;;;;;:::i;:::-;;;;;;;;12462:277;;;12650:9;:22;12660:8;;12669:1;12660:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12650:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12650:22:0;;:27;12646:71:::1;;12700:15;:17:::0;;;:15:::1;:17;::::0;::::1;:::i;:::-;;;;;;12646:71;12778:8;:27;;12804:1;12778:27;;;12789:12;12778:27;12753:9;:22;12763:8;;12772:1;12763:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12753:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12753:22:0;:52;12428:3;::::1;::::0;::::1;:::i;:::-;;;;12390:427;;;;12207:617:::0;;;:::o;10704:216::-;10808:10;10779:4;10796:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10796:32:0;;;;;;;;;;:41;;;10853:37;10779:4;;10796:32;;10853:37;;;;10831:6;14261:25:1;;14249:2;14234:18;;14115:177;10853:37:0;;;;;;;;-1:-1:-1;10908:4:0;10704:216;;;;;:::o;10228:107::-;10278:7;10316:15;6820:1;10316:2;:15;:::i;:::-;10296:16;;:36;;;;:::i;:::-;10289:43;;10228:107;:::o;12996:341::-;-1:-1:-1;;;;;13116:19:0;;13096:4;13116:19;;;:11;:19;;;;;;;;13136:10;13116:31;;;;;;;;-1:-1:-1;;13116:52:0;13113:157;;-1:-1:-1;;;;;13218:19:0;;;;;;:11;:19;;;;;;;;13238:10;13218:31;;;;;;;;:40;;13252:6;;13218:40;:::i;:::-;-1:-1:-1;;;;;13184:19:0;;;;;;:11;:19;;;;;;;;13204:10;13184:31;;;;;;;:74;13113:157;13289:40;13303:6;13311:9;13322:6;13289:13;:40::i;:::-;13282:47;;12996:341;;;;;;:::o;21838:138::-;21962:4;;-1:-1:-1;;;;;21962:4:0;;;21891:7;10536:18;;;:9;:18;;;;;;;21944:4;;;;;10536:18;;;;;21891:7;;21934:33;;;:::i;:::-;21918:12;;:50;;;;:::i;11425:372::-;4002:10;8787:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;5925:7:0;5952:6;-1:-1:-1;;;;;5952:6:0;8815:10;:21;8787:49;8779:89;;;;-1:-1:-1;;;8779:89:0;;;;;;;:::i;:::-;11542:12:::1;::::0;::::1;;11541:13;:33:::0;::::1;;;;11572:2;11558:11;:16;11541:33;11533:42;;;::::0;::::1;;11586:10;:24:::0;;;11621:12:::1;:19:::0;;-1:-1:-1;;11621:19:0::1;11636:4;11621:19;::::0;;11664:12:::1;11651:10;:25:::0;11705:29:::1;11723:11:::0;11705:15:::1;:29;:::i;:::-;11687:15;:47:::0;11773:15:::1;6820:1;11773:2;:15;:::i;:::-;11763:26;::::0;:6;:26:::1;:::i;:::-;11745:15;:44:::0;-1:-1:-1;;;11425:372:0:o;12068:127::-;4002:10;8787:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;5925:7:0;5952:6;-1:-1:-1;;;;;5952:6:0;8815:10;:21;8787:49;8779:89;;;;-1:-1:-1;;;8779:89:0;;;;;;;:::i;:::-;12126:18:::1;:25:::0;;-1:-1:-1;;12162:25:0;12126::::1;12162::::0;;;12068:127::o;19658:184::-;6012:6;;-1:-1:-1;;;;;6012:6:0;4002:10;6012:22;6004:67;;;;-1:-1:-1;;;6004:67:0;;;;;;;:::i;:::-;19753:4:::1;::::0;-1:-1:-1;;;;;19747:10:0;;::::1;19753:4:::0;::::1;19747:10;;19739:57;;;::::0;-1:-1:-1;;;19739:57:0;;13914:2:1;19739: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;;19739:57:0::1;13712:398:1::0;19739:57:0::1;-1:-1:-1::0;;;;;19807:18:0;;;::::1;;::::0;;;:14:::1;:18;::::0;;;;:27;;-1:-1:-1;;19807:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19658:184::o;19986:339::-;6012:6;;-1:-1:-1;;;;;6012:6:0;4002:10;6012:22;6004:67;;;;-1:-1:-1;;;6004:67:0;;;;;;;:::i;:::-;20121:1:::1;20106:12;:16;:37;;;;;20142:1;20126:13;:17;20106:37;:52;;;;;20157:1;20147:7;:11;20106:52;:72;;;;;20173:5;20162:7;:16;;20106:72;20098:81;;;::::0;::::1;;20240:7;20224:12;20209;;:27;;;;:::i;:::-;20208:39;;;;:::i;:::-;20190:15;:57:::0;20278:12:::1;::::0;20310:7;;20278:28:::1;::::0;20293:13;;20278:28:::1;:::i;:::-;20277:40;;;;:::i;:::-;20258:16;:59:::0;-1:-1:-1;;;19986:339:0:o;21470:360::-;6012:6;;-1:-1:-1;;;;;6012:6:0;4002:10;6012:22;6004:67;;;;-1:-1:-1;;;6004:67:0;;;;;;;:::i;:::-;21633:1:::1;21618:12;:16;21610:25;;;::::0;::::1;;21646:11;:22:::0;;-1:-1:-1;;21679:32:0;21646:22;::::1;;-1:-1:-1::0;;21679:32:0;;21646:22:::1;21679:32:::0;::::1;;;;::::0;;21738:12:::1;::::0;:27:::1;::::0;21753:12;;21738:27:::1;:::i;:::-;21722:13;:43:::0;21806:15:::1;6820:1;21806:2;:15;:::i;:::-;21790:32;::::0;:12;:32:::1;:::i;:::-;21776:11;:46:::0;-1:-1:-1;;;;21470:360:0:o;11199:214::-;4002:10;8787:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;5925:7:0;5952:6;-1:-1:-1;;;;;5952:6:0;8815:10;:21;8787:49;8779:89;;;;-1:-1:-1;;;8779:89:0;;;;;;;:::i;:::-;11314:21:::1;-1:-1:-1::0;;;;;11346:21:0;::::1;:59;11401:3;11369:28;11381:16:::0;11314:21;11369:28:::1;:::i;:::-;11368:36;;;;:::i;:::-;11346:59;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;10928:122:::0;10983:4;11007:35;11015:7;-1:-1:-1;;11007:7:0;:35::i;11062:119::-;6012:6;;-1:-1:-1;;;;;6012:6:0;4002:10;6012:22;6004:67;;;;-1:-1:-1;;;6004:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11145:17:0;;;::::1;;::::0;;;:10:::1;:17;::::0;;;;:28;;-1:-1:-1;;11145:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11062:119::o;10341:105::-;10391:7;10427:15;6820:1;10427:2;:15;:::i;:::-;10409:14;;:34;;;;:::i;20564:119::-;6012:6;;-1:-1:-1;;;;;6012:6:0;4002:10;6012:22;6004:67;;;;-1:-1:-1;;;6004:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20647:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;20647:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20564:119::o;20826:386::-;6012:6;;-1:-1:-1;;;;;6012:6:0;4002:10;6012:22;6004:67;;;;-1:-1:-1;;;6004:67:0;;;;;;;:::i;:::-;20963:12:::1;:28:::0;;;21002:12:::1;:28:::0;;;21052:29:::1;20978:13:::0;21017;21052:29:::1;:::i;:::-;21041:8;:40:::0;21092:8:::1;:20:::0;;;21123:14:::1;:32:::0;;;21185:18:::1;21202:1;21140:15:::0;21185:18:::1;:::i;:::-;21174:8;;:29;21166:38;;;::::0;::::1;6097:148:::0;6012:6;;-1:-1:-1;;;;;6012:6:0;4002:10;6012:22;6004:67;;;;-1:-1:-1;;;6004:67:0;;;;;;;:::i;:::-;6204:1:::1;6188:6:::0;;6167:40:::1;::::0;-1:-1:-1;;;;;6188:6:0;;::::1;::::0;6167:40:::1;::::0;6204:1;;6167:40:::1;6235:1;6218:19:::0;;-1:-1:-1;;;;;;6218:19:0::1;::::0;;6097:148::o;21220:242::-;6012:6;;-1:-1:-1;;;;;6012:6:0;4002:10;6012:22;6004:67;;;;-1:-1:-1;;;6004:67:0;;;;;;;:::i;:::-;21337:20:::1;:53:::0;;-1:-1:-1;;;;;21337:53:0;;::::1;-1:-1:-1::0;;;;;;21337:53:0;;::::1;;::::0;;;21401:20:::1;:53:::0;;;;;::::1;::::0;::::1;;::::0;;21220:242::o;12832:156::-;12912:4;12936:44;12950:10;12962:9;12973:6;12936:13;:44::i;20337:219::-;6012:6;;-1:-1:-1;;;;;6012:6:0;4002:10;6012:22;6004:67;;;;-1:-1:-1;;;6004:67:0;;;;;;;:::i;:::-;20447:1:::1;20435:9;:13;:28;;;;;20462:1;20452:7;:11;20435:28;:48;;;;;20478:5;20467:7;:16;;20435:48;20427:57;;;::::0;::::1;;20541:7;20528:9;20513:12;;:24;;;;:::i;:::-;20512:36;;;;:::i;:::-;20495:14;:53:::0;-1:-1:-1;;20337:219:0:o;10117:105::-;10166:7;10203:15;6820:1;10203:2;:15;:::i;:::-;10184;;:35;;;;:::i;19850:128::-;6012:6;;-1:-1:-1;;;;;6012:6:0;4002:10;6012:22;6004:67;;;;-1:-1:-1;;;6004:67:0;;;;;;;:::i;:::-;19932:10:::1;19924:4;:18;;19916:27;;;::::0;::::1;;19954:9;:16:::0;19850:128::o;11821:235::-;4002:10;8787:24;;;;:10;:24;;;;;;;;;:49;;-1:-1:-1;5925:7:0;5952:6;-1:-1:-1;;;;;5952:6:0;8815:10;:21;8787:49;8779:89;;;;-1:-1:-1;;;8779:89:0;;;;;;;:::i;:::-;11915:18:::1;::::0;::::1;::::0;::::1;;;11914:19;11906:28;;;::::0;::::1;;11945:17;:28:::0;;-1:-1:-1;;11945:28:0::1;::::0;::::1;;;::::0;;12003:6:::1;11992:17:::0;::::1;11984:26;;;::::0;::::1;;12040:8;12021:15;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;11821:235:0:o;17243:243::-;17299:7;17349:12;17335:10;;17322;;:23;;;;:::i;:::-;:39;17319:73;;17388:1;17371:14;;:18;;;;:::i;17319:73::-;17406:7;17402:39;;;17433:8;;17422;;:19;;;;:::i;17402:39::-;17470:8;;17459;;:19;;;;:::i;6251:244::-;6012:6;;-1:-1:-1;;;;;6012:6:0;4002:10;6012:22;6004:67;;;;-1:-1:-1;;;6004:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6340:22:0;::::1;6332:73;;;::::0;-1:-1:-1;;;6332:73:0;;10619:2:1;6332: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;;6332:73:0::1;10417:402:1::0;6332:73:0::1;6442:6;::::0;;6421:38:::1;::::0;-1:-1:-1;;;;;6421:38:0;;::::1;::::0;6442:6;::::1;::::0;6421:38:::1;::::0;::::1;6470:6;:17:::0;;-1:-1:-1;;;;;;6470:17:0::1;-1:-1:-1::0;;;;;6470:17:0;;;::::1;::::0;;;::::1;::::0;;6251:244::o;20691:127::-;6012:6;;-1:-1:-1;;;;;6012:6:0;4002:10;6012:22;6004:67;;;;-1:-1:-1;;;6004:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20778:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;20778:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20691:127::o;13345:1734::-;13437:4;-1:-1:-1;;;;;13462:20:0;;13454:57;;;;-1:-1:-1;;;13454:57:0;;10266:2:1;13454:57:0;;;10248:21:1;10305:2;10285:18;;;10278:30;10344:26;10324:18;;;10317:54;10388:18;;13454:57:0;10064:348:1;13454:57:0;-1:-1:-1;;;;;13530:23:0;;13522:58;;;;-1:-1:-1;;;13522:58:0;;11026:2:1;13522:58:0;;;11008:21:1;11065:2;11045:18;;;11038:30;-1:-1:-1;;;11084:18:1;;;11077:52;11146:18;;13522:58:0;10824:346:1;13522:58:0;13608:1;13599:6;:10;13591:44;;;;-1:-1:-1;;;13591:44:0;;9164:2:1;13591:44:0;;;9146:21:1;9203:2;9183:18;;;9176:30;-1:-1:-1;;;9222:18:1;;;9215:51;9283:18;;13591:44:0;8962:345:1;13591:44:0;-1:-1:-1;;;;;13654:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;13654:27:0;13646:60;;;;-1:-1:-1;;;13646:60:0;;11377:2:1;13646:60:0;;;11359:21:1;11416:2;11396:18;;;11389:30;-1:-1:-1;;;11435:18:1;;;11428:50;11495:18;;13646:60:0;11175:344:1;13646:60:0;15158:10;;:15;;;13720:40;;-1:-1:-1;;;;;;13735:25:0;;;;;;:14;:25;;;;;;;;13720:40;13717:120;;;-1:-1:-1;;;;;13771:24:0;;;;;;:16;:24;;;;;;;;13763:61;;;;-1:-1:-1;;;13763:61:0;;12440:2:1;13763:61:0;;;12422:21:1;12479:2;12459:18;;;12452:30;12518:26;12498:18;;;12491:54;12562:18;;13763:61:0;12238:348:1;13763:61:0;13826:8;15240:12;15227:10;:25;15278:15;15263:12;:30;15304:11;:18;;-1:-1:-1;;15304:18:0;15318:4;15304:18;;;15189:141;13826:8;13851:12;;;;13847:111;;-1:-1:-1;;;;;13874:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;13902:27:0;;;;;;:16;:27;;;;;;;;13874:55;13866:89;;;;-1:-1:-1;;;13866:89:0;;13564:2:1;13866:89:0;;;13546:21:1;13603:2;13583:18;;;13576:30;-1:-1:-1;;;13622:18:1;;;13615:51;13683:18;;13866:89:0;13362:345:1;13866:89:0;13970:39;13983:6;13991:9;14002:6;13970:12;:39::i;:::-;-1:-1:-1;;;;;14035:25:0;;;;;;:14;:25;;;;;;;;14034:26;:47;;;;-1:-1:-1;14077:4:0;;-1:-1:-1;;;;;14064:17:0;;;14077:4;;14064:17;;14034:47;14030:182;;;-1:-1:-1;;;;;14103:26:0;;;;;;:15;:26;;;;;;;;14098:103;;14150:35;14167:9;14178:6;14150:16;:35::i;:::-;14235:17;;;;:54;;;;;14274:15;14256;;:33;14235:54;14232:351;;;-1:-1:-1;;;;;14309:22:0;;;;;;:14;:22;;;;;;;;:48;;;;-1:-1:-1;14335:9:0;-1:-1:-1;;;;;14335:22:0;;;;14309:48;:77;;;;-1:-1:-1;;;;;;14361:20:0;;;;;;:9;:20;;;;;;:25;14309:77;14306:266;;;-1:-1:-1;;;;;14407:20:0;;;;;;:9;:20;;;;;14430:12;14407:35;;14461:15;:17;;;;;;:::i;:::-;;;;;;14502:54;14518:9;14529;14540:12;14554:1;14502:54;;;;;;;;;:::i;:::-;;;;;;;;14306:266;14606:6;;;;14603:63;;;14622:41;14637:6;14645:9;14656:6;14622:14;:41::i;:::-;14615:48;;;;14603:63;-1:-1:-1;;;;;14698:17:0;;;;;;:9;:17;;;;;;:26;;14718:6;;14698:26;:::i;:::-;-1:-1:-1;;;;;14678:17:0;;;;;;:9;:17;;;;;;;;:46;;;;17208:11;:19;;;;;;;;17207:20;14762:59;;14815:6;14762:59;;;14786:26;14794:9;14805:6;14786:7;:26::i;:::-;14737:84;;14845:25;14860:9;14845:14;:25::i;:::-;14842:66;;;14877:10;;14873:32;;14889:16;14898:6;14889:8;:16::i;:::-;-1:-1:-1;;;;;14951:20:0;;;;;;:9;:20;;;;;;:37;;14974:14;;14951:37;:::i;:::-;-1:-1:-1;;;;;14928:20:0;;;;;;;:9;:20;;;;;;;:60;;;;15006:43;;;;;;;;;;15034:14;14261:25:1;;14249:2;14234:18;;14115:177;15006:43:0;;;;;;;;-1:-1:-1;15067:4:0;;13345:1734;-1:-1:-1;;;;13345:1734:0:o;15893:1220::-;-1:-1:-1;;;;;15994:23:0;;;;;;:15;:23;;;;;;;;;:98;;-1:-1:-1;;;;;;16032:22:0;;;;;;:14;:22;;;;;;;;:59;;16075:16;;16032:59;;;16057:15;;16032:59;16021:6;:71;;15994:98;15986:128;;;;-1:-1:-1;;;15986:128:0;;9920:2:1;15986:128:0;;;9902:21:1;9959:2;9939:18;;;9932:30;-1:-1:-1;;;9978:18:1;;;9971:47;10035:18;;15986:128:0;9718:341:1;15986:128:0;-1:-1:-1;;;;;16133:23:0;;;;;;:15;:23;;;;;;;;;:73;;-1:-1:-1;16181:9:0;;-1:-1:-1;;;;;16160:18:0;;;;;;:7;:18;;;;;;16194:12;;16160:30;;;:::i;:::-;:46;;16133:73;16125:115;;;;-1:-1:-1;;;16125:115:0;;12082:2:1;16125:115:0;;;12064:21:1;12121:2;12101:18;;;12094:30;12160:31;12140:18;;;12133:59;12209:18;;16125:115:0;11880:353:1;16125:115:0;-1:-1:-1;;;;;16265:17:0;;;;;;:9;:17;;;;;;:22;16261:261;;16340:15;6820:1;16340:2;:15;:::i;:::-;16321;;:35;;;;:::i;:::-;16311:6;:45;;:70;;;;-1:-1:-1;;;;;;16360:16:0;;;;;;:8;:16;;;;;;:21;16311:70;:107;;;;;16403:15;16385;;:33;16311:107;16303:161;;;;-1:-1:-1;;;16303:161:0;;12793:2:1;16303: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;;16303:161:0;12591:405:1;16303:161:0;-1:-1:-1;;;;;16479:16:0;;;;;;:8;:16;;;;;16498:12;16479:31;;16261:261;-1:-1:-1;;;;;16546:25:0;;;;;;:14;:25;;;;;;;;16542:564;;;-1:-1:-1;;;;;;;16588:16:0;;;;;:8;:16;;;;;16607:12;16588:31;;15893:1220::o;16542:564::-;-1:-1:-1;;;;;17208:19:0;;17183:4;17208:19;;;:11;:19;;;;;;;;16637:469;;16683:17;;;;:54;;;;;16722:15;16704;;:33;16683:54;:92;;;;-1:-1:-1;16749:9:0;16741:18;;;;:7;:18;;;;;;16763:12;16741:34;16683:92;:121;;;;-1:-1:-1;;;;;;16779:20:0;;;;;;:9;:20;;;;;;:25;16683:121;16679:275;;;-1:-1:-1;;;;;16825:20:0;;;;;;:9;:20;;;;;;;16848:12;16825:35;;;;16884:54;;;;;;16900:9;;16835;;16936:1;;16884:54;:::i;:::-;;;;;;;;16679:275;-1:-1:-1;;;;;16968:18:0;;;;;;:7;:18;;;;;16989:12;16968:33;;17020:9;:22;17016:78;;17069:9;17061:18;;;;:7;:18;;;;;17082:12;17061:33;;17016:78;15893:1220;;;:::o;15650:235::-;15758:14;;-1:-1:-1;;;;;15791:20:0;;15736:19;15791:20;;;:9;:20;;;;;;15758:14;;15791:29;;15814:6;;15791:29;:::i;:::-;:44;;15783:94;;;;-1:-1:-1;;;15783:94:0;;9514:2:1;15783: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;;15783:94:0;9312:401:1;15338:300:0;-1:-1:-1;;;;;15468:17:0;;15431:4;15468:17;;;:9;:17;;;;;;:26;;15488:6;;15468:26;:::i;:::-;-1:-1:-1;;;;;15448:17:0;;;;;;;:9;:17;;;;;;:46;;;;15528:20;;;;;;;:29;;15551:6;;15528:29;:::i;:::-;-1:-1:-1;;;;;15505:20:0;;;;;;;:9;:20;;;;;;;:52;;;;15573:35;;;;;;;;;;15601:6;14261:25:1;;14249:2;14234:18;;14115:177;15573:35:0;;;;;;;;-1:-1:-1;15626:4:0;15338:300;;;;;:::o;17494:317::-;-1:-1:-1;;;;;17599:25:0;;17564:7;17599:25;;;:14;:25;;;;;;17689:14;;17599:25;;;;;17564:7;;17665:20;17599:25;17665:11;:20::i;:::-;17656:29;;:6;:29;:::i;:::-;17655:48;;;;:::i;:::-;17742:4;17724:24;;;;:9;:24;;;;;:37;;17635:68;;-1:-1:-1;17635:68:0;;17724:24;;;:37;;17635:68;;17724:37;:::i;:::-;;;;-1:-1:-1;17785:18:0;;-1:-1:-1;17794:9:0;17785:6;:18;:::i;:::-;17778:25;17494:317;-1:-1:-1;;;;;17494:317:0:o;17819:259::-;17925:10;17885:4;17910:26;;;:14;:26;;;;;;;;17909:27;:47;;;;-1:-1:-1;17950:6:0;;;;17949:7;17909:47;:71;;;;-1:-1:-1;17969:11:0;;;;17909:71;:109;;;;-1:-1:-1;;;;;;17993:25:0;;;;;;:14;:25;;;;;;;;17909:109;:161;;;;-1:-1:-1;18059:11:0;;18049:4;18031:24;;;;:9;:24;;;;;;:39;;17902:168;17819:259;-1:-1:-1;;17819:259:0:o;18086:1560::-;8652:6;:13;;-1:-1:-1;;8652:13:0;8661:4;8652:13;;;18181::::1;::::0;8652:6;;18172:22;::::1;:47;;18206:13;;18172:47;;;18197:6;18172:47;18252:4;18234:24;::::0;;;:9:::1;:24;::::0;;;;;18149:70;;-1:-1:-1;18234:39:0;-1:-1:-1;18230:84:0::1;;;-1:-1:-1::0;18308:4:0::1;18290:24;::::0;;;:9:::1;:24;::::0;;;;;18230:84:::1;18335:23;18397:8;;18392:1;18377:12;;18362;:27;;;;:::i;:::-;:31;;;;:::i;:::-;18361:44;;;;:::i;:::-;18335:70:::0;-1:-1:-1;18416:31:0::1;18335:70:::0;18416:31;::::1;:::i;:::-;18484:16;::::0;;18498:1:::1;18484:16:::0;;;;;::::1;::::0;;18416:31;;-1:-1:-1;18460:21:0::1;::::0;18484:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18484:16:0::1;18460:40;;18529:4;18511;18516:1;18511:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18511:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;18555:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;18555:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;18511:7;;18555:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18545:4;18550:1;18545:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18545:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;18647:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;18647:188:0;;18613:21:::1;::::0;18647:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;18719:12;;18589:21:::1;::::0;18762:4;;18789::::1;::::0;18809:15:::1;::::0;18647:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18848:17;18892:13;18868:21;:37;;;;:::i;:::-;18848:57;;18916:19;18965:1;18950:12;;:16;;;;:::i;:::-;18938:8;;:29;;;;:::i;:::-;18916:51;;18980:26;19042:11;19037:1;19022:12;;19010:9;:24;;;;:::i;:::-;:28;;;;:::i;:::-;19009:44;;;;:::i;:::-;18980:73:::0;-1:-1:-1;19064:26:0::1;19093:30;18980:73:::0;19093:9;:30:::1;:::i;:::-;19064:59:::0;-1:-1:-1;19148:22:0;;19144:90:::1;;19185:20;::::0;:49:::1;::::0;-1:-1:-1;;;;;19185:20:0;;::::1;::::0;:49;::::1;;;::::0;19215:18;;19185:20:::1;:49:::0;:20;:49;19215:18;19185:20;:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;19144:90;19258:19:::0;;19255:293:::1;;19293:6;::::0;19467:20:::1;::::0;19293:243:::1;::::0;-1:-1:-1;;;19293:243:0;;19369:4:::1;19293:243;::::0;::::1;7671:34:1::0;7721:18;;;7714:34;;;19293:6:0::1;7764:18:1::0;;;7757:34;;;7807:18;;;7800:34;-1:-1:-1;;;;;19467:20:0;;::::1;7850:19:1::0;;;7843:44;19506:15:0::1;7903:19:1::0;;;7896:35;19293:6:0;::::1;::::0;:22:::1;::::0;19323:18;;7605:19:1;;19293:243:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19255:293;19565:73;::::0;;15484:25:1;;;15540:2;15525:18;;15518:34;;;15568:18;;;15561:34;;;19565:73:0::1;::::0;15472:2:1;15457:18;19565:73:0::1;;;;;;;-1:-1:-1::0;;8670:6:0;:14;;-1:-1:-1;;8670:14:0;;;-1:-1:-1;;;;;;;18086: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://d413032194f3744a5ca8be587833e5b8aa6b014dc3035a60f51ee5d144aa50fa
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.