ETH Price: $3,304.90 (-3.35%)
Gas: 16 Gwei

Token

Kiwi Inu (KIWI)
 

Overview

Max Total Supply

100,000,000 KIWI

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,474.82346477 KIWI

Value
$0.00
0x60536cbc501ea0a215329fbeb7431bf6f3f2e43a
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:
KIWIINU

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-15
*/

// SPDX-License-Identifier: MIT

/*


*/

pragma solidity 0.8.7;

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

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8);

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external view returns (string memory);

  /**
  * @dev Returns the token name.
  */
  function name() external view returns (string memory);

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

  /**
   * @dev Returns the amount of tokens owned by `account`.
   */
  function balanceOf(address account) external view returns (uint256);

  /**
   * @dev Moves `amount` tokens from the caller's account to `recipient`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Returns the remaining number of tokens that `spender` will be
   * allowed to spend on behalf of `owner` through {transferFrom}. This is
   * zero by default.
   *
   * This value changes when {approve} or {transferFrom} are called.
   */
  function allowance(address _owner, address spender) external view returns (uint256);

  /**
   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * IMPORTANT: Beware that changing an allowance with this method brings the risk
   * that someone may use both the old and the new allowance by unfortunate
   * transaction ordering. One possible solution to mitigate this race
   * condition is to first reduce the spender's allowance to 0 and set the
   * desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * Emits an {Approval} event.
   */
  function approve(address spender, uint256 amount) external returns (bool);

  /**
   * @dev Moves `amount` tokens from `sender` to `recipient` using the
   * allowance mechanism. `amount` is then deducted from the caller's
   * allowance.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Emitted when `value` tokens are moved from one account (`from`) to
   * another (`to`).
   *
   * Note that `value` may be zero.
   */
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function factory() external view returns (address);
}

interface IUniswapV2Router01 {
    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);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract KIWIINU is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isSniperOrBlacklisted;
    mapping (address => bool) private _liquidityHolders;
    
    mapping (address => uint256) buyLog;
    uint256 buyCoolDown = 10 seconds;

    uint256 private startingSupply = 100_000_000;

    string private _name = "Kiwi Inu";
    string private _symbol = "KIWI";

    uint256 public _buyFee = 800;
    uint256 public _sellFee = 800;
    uint256 private _transferFee = 2500;

    uint256 constant private maxBuyTaxes = 1500;
    uint256 constant private maxSellTaxes = 2500;
    uint256 constant private maxTransferTaxes = 2500;

    uint256 public _liquidityRatio = 10;
    uint256 public _marketingRatio = 80;
    uint256 public _devRatio = 10;

    uint256 private constant masterTaxDivisor = 10_000;

    uint256 private constant MAX = ~uint256(0);
    uint8 constant private _decimals = 9;
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // UNI ROUTER
    address private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable private _marketingWallet = payable(0x531604472AB8ec3F516974D2c68C2dfa703e5cD1);
    address payable private _teamWallet = payable(0x531604472AB8ec3F516974D2c68C2dfa703e5cD1);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent = 2;
    uint256 private maxTxDivisor = 100;
    uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor; // 

    uint256 private maxWalletPercent = 2;
    uint256 private maxWalletDivisor = 100;
    uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor; // 

    uint256 private swapThreshold = (_tTotal * 5) / 10_000; // 0.05%
    uint256 private swapAmount = (_tTotal * 5) / 1_000; // 0.5%

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0;
    uint256 private snipeBlockAmt = 0;
    uint256 public snipersCaught = 0;
    bool private sameBlockActive = true;
    mapping (address => uint256) private lastTrade;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

        // Set the owner.
        _owner = msg.sender;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[owner()] = true;

        // Approve the owner for UniSwap, timesaver.
        _approve(_msgSender(), _routerAddress, _tTotal);

        // Transfer tTotal to the _msgSender.
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (_marketingWallet == payable(_owner))
            _marketingWallet = payable(newOwner);
        
        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner() {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

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

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

        return _transfer(sender, recipient, amount);
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 1 weeks, "One week cooldown.");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function isSniperOrBlacklisted(address account) public view returns (bool) {
        return _isSniperOrBlacklisted[account];
    }

    function setBuyCoolDownTime(uint256 Seconds) public onlyOwner{
        uint256 timeInSeconds = Seconds * 1 seconds;
        buyCoolDown = timeInSeconds;
    }

    function isProtected(uint256 rInitializer) external onlyOwner {
        require (_liqAddStatus == 0, "Error.");
        _liqAddStatus = rInitializer;
    }

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner() {
        _isSniperOrBlacklisted[account] = enabled;
    }

    function setStartingProtections(uint8 _block) external onlyOwner{
        require (snipeBlockAmt == 0 && !_hasLiqBeenAdded, "Starting Protections have already been executed.");
        snipeBlockAmt = _block;
    }

    function setProtectionSettings(bool antiSnipe, bool antiBlock) external onlyOwner() {
        sniperProtection = antiSnipe;
        sameBlockActive = antiBlock;
    }

    function setTaxes(uint256 buyFee, uint256 sellFee, uint256 transferFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _buyFee = buyFee;
        _sellFee = sellFee;
        _transferFee = transferFee;
    }

    function setRatios(uint256 liquidity, uint256 marketing, uint256 dev) external onlyOwner {
        require (liquidity + marketing + dev == 100, "Must add up to 100%");
        _liquidityRatio = liquidity;
        _marketingRatio = marketing;
        _devRatio = dev;
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply.");
        _maxTxAmount = check;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 1000), "Must be above 0.1% of total supply.");
        _maxWalletSize = check;
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setWallets(address payable marketingWallet, address payable teamWallet) external onlyOwner {
        _marketingWallet = payable(marketingWallet);
        _teamWallet = payable(teamWallet);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        if(_hasLimits(from, to)) {
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                } else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                }
            }
            if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
            }
            if(to != _routerAddress && !lpPairs[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (_liquidityRatio + _marketingRatio + _devRatio == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * _liquidityRatio) / (_liquidityRatio + _marketingRatio + _devRatio)) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;
        swapTokensForEth(toSwapForEth);

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * _liquidityRatio) / (_liquidityRatio + _marketingRatio + _devRatio)) / 2;

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {
            _marketingWallet.transfer(((currentBalance - liquidityBalance) * _marketingRatio) / (_marketingRatio + _devRatio));
            _teamWallet.transfer(address(this).balance);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            DEAD,
            block.timestamp
        );
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            if (snipeBlockAmt != 2) {
                _liqAddBlock = block.number + 5000;
            } else {
                _liqAddBlock = block.number;
            }

            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (sniperProtection){
            if (isSniperOrBlacklisted(from) || isSniperOrBlacklisted(to)) {
                revert("Sniper rejected.");
            }

            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
            } else {
                if (_liqAddBlock > 0 
                    && lpPairs[from] 
                    && _hasLimits(from, to)
                ) {
                    if (block.number - _liqAddBlock < snipeBlockAmt) {
                        _isSniperOrBlacklisted[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }
            }
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount;
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (from == lpPair) {
            if (balanceOf(to) > 0){
                require(block.timestamp - buyLog[to] >= buyCoolDown, "Buy cooldown");
            }

            buyLog[to] = block.timestamp;
            currentFee = _buyFee;

        } else if (to == lpPair) {
            currentFee = _sellFee;
        } else {
            currentFee = _transferFee;
        }

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != startingSupply/10) {
                revert();
            }
        }

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;

        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rInitializer","type":"uint256"}],"name":"isProtected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniperOrBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Seconds","type":"uint256"}],"name":"setBuyCoolDownTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"antiSnipe","type":"bool"},{"internalType":"bool","name":"antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_block","type":"uint8"}],"name":"setStartingProtections","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWallet","type":"address"},{"internalType":"address payable","name":"teamWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6000600355600a60098190556305f5e100905560c060405260086080819052674b69776920496e7560c01b60a09081526200003e91600b91906200064d565b50604080518082019091526004808252634b49574960e01b60209092019182526200006c91600c916200064d565b50610320600d55610320600e556109c4600f55600a6010556050601155600a6012556009600a6200009e919062000791565b600a54620000ad919062000852565b601381905560178054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0319918216179091556018805473531604472ab8ec3f516974d2c68c2dfa703e5cd192168217905560198054600161ff0160a01b03191690911790556002601a8190556064601b8190559162000129919062000852565b62000135919062000725565b601c556002601d556064601e55601e54601d5460135462000157919062000852565b62000163919062000725565b601f5561271060135460056200017a919062000852565b62000186919062000725565b6020556103e860135460056200019d919062000852565b620001a9919062000725565b6021556022805461ffff1916600190811790915560006023819055602481905560258190556026819055602781905560288190556029805460ff1916831790556013549190620001f63390565b6001600160a01b03908116825260208083019390935260409182016000908120949094558354336001600160a01b0319918216179094556017546015805491909216941684179055805163c45a015560e01b8152905163c45a015592600480840193919291829003018186803b1580156200027057600080fd5b505afa15801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab9190620006f3565b6001600160a01b031663c9c65396601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030857600080fd5b505afa1580156200031d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003439190620006f3565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200038b57600080fd5b505af1158015620003a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c69190620006f3565b601680546001600160a01b0319166001600160a01b039283169081179091556000908152600260209081526040808320805460ff191660019081179091553084526004835281842060155490951684529390915281206000199055600590620004376000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252812080548316600190811790915561dead82527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80549093168117909255600790620004bf6000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556200050b620004f33390565b6017546013546001600160a01b03909116906200054c565b60135460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3620008c7565b6001600160a01b0383166200059e5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620005ec5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000595565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b8280546200065b9062000874565b90600052602060002090601f0160209004810192826200067f5760008555620006ca565b82601f106200069a57805160ff1916838001178555620006ca565b82800160010185558215620006ca579182015b82811115620006ca578251825591602001919060010190620006ad565b50620006d8929150620006dc565b5090565b5b80821115620006d85760008155600101620006dd565b6000602082840312156200070657600080fd5b81516001600160a01b03811681146200071e57600080fd5b9392505050565b6000826200074357634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620007895781600019048211156200076d576200076d620008b1565b808516156200077b57918102915b93841c93908002906200074d565b509250929050565b60006200071e60ff841683600082620007ad575060016200084c565b81620007bc575060006200084c565b8160018114620007d55760028114620007e05762000800565b60019150506200084c565b60ff841115620007f457620007f4620008b1565b50506001821b6200084c565b5060208310610133831016604e8410600b841016171562000825575081810a6200084c565b62000831838362000748565b8060001904821115620008485762000848620008b1565b0290505b92915050565b60008160001904831182151516156200086f576200086f620008b1565b500290565b600181811c908216806200088957607f821691505b60208210811415620008ab57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b612a2e80620008d76000396000f3fe60806040526004361061026b5760003560e01c8063590f897e11610144578063a8edc797116100b6578063dd62ed3e1161007a578063dd62ed3e14610721578063e79d416014610767578063e9dae5ed1461077d578063eafb5a3c1461079d578063eec2744e146107bd578063fb78680d146107dd57600080fd5b8063a8edc7971461068b578063a9059cbb146106a1578063c49b9a80146106c1578063cdfdb7dc146106e1578063d3f6a1571461070157600080fd5b806381c6f11b1161010857806381c6f11b146105df578063893d20e8146105ff57806389fd9bc11461061d5780638da5cb5b146105ff57806395d89b4114610656578063a457c2d71461066b57600080fd5b8063590f897e14610554578063590ffdce1461056a57806370a082311461058a578063715018a6146105aa57806380c581d1146105bf57600080fd5b80633f3cf56c116101dd5780634a74bb02116101a15780634a74bb02146104855780634ef3cce5146104a65780634fb2e45d146104bc5780634fbee193146104dc57806350a8e01614610515578063571ac8b01461053457600080fd5b80633f3cf56c146103ef57806340b9a54b1461040f5780634129ecee14610425578063452ed4f114610445578063469c0ef51461046557600080fd5b806318160ddd1161022f57806318160ddd1461033e57806323b872dd1461035d578063260039571461037d578063313ce5671461039d578063384f6b51146103b957806339509351146103cf57600080fd5b806303fd2a4514610277578063044df726146102aa57806306fdde03146102cc5780630758d924146102ee578063095ea7b31461030e57600080fd5b3661027257005b600080fd5b34801561028357600080fd5b5061028d61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102b657600080fd5b506102ca6102c5366004612657565b6107fd565b005b3480156102d857600080fd5b506102e1610850565b6040516102a1919061275d565b3480156102fa57600080fd5b5060155461028d906001600160a01b031681565b34801561031a57600080fd5b5061032e610329366004612610565b6108e2565b60405190151581526020016102a1565b34801561034a57600080fd5b506013545b6040519081526020016102a1565b34801561036957600080fd5b5061032e61037836600461259a565b6108f8565b34801561038957600080fd5b506102ca61039836600461268c565b610970565b3480156103a957600080fd5b50604051600981526020016102a1565b3480156103c557600080fd5b5061034f60105481565b3480156103db57600080fd5b5061032e6103ea366004612610565b6109ed565b3480156103fb57600080fd5b506102ca61040a36600461268c565b610a29565b34801561041b57600080fd5b5061034f600d5481565b34801561043157600080fd5b506102ca61044036600461273a565b610aa6565b34801561045157600080fd5b5060165461028d906001600160a01b031681565b34801561047157600080fd5b506102ca610480366004612673565b610b55565b34801561049157600080fd5b5060195461032e90600160a81b900460ff1681565b3480156104b257600080fd5b5061034f60115481565b3480156104c857600080fd5b506102ca6104d7366004612527565b610b93565b3480156104e857600080fd5b5061032e6104f7366004612527565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561052157600080fd5b5060225461032e90610100900460ff1681565b34801561054057600080fd5b5061032e61054f366004612527565b610d27565b34801561056057600080fd5b5061034f600e5481565b34801561057657600080fd5b506102ca6105853660046125db565b610d3b565b34801561059657600080fd5b5061034f6105a5366004612527565b610d90565b3480156105b657600080fd5b506102ca610dab565b3480156105cb57600080fd5b506102ca6105da3660046125db565b610e2a565b3480156105eb57600080fd5b506102ca6105fa366004612673565b610f03565b34801561060b57600080fd5b506000546001600160a01b031661028d565b34801561062957600080fd5b5061032e610638366004612527565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561066257600080fd5b506102e1610f6b565b34801561067757600080fd5b5061032e610686366004612610565b610f7a565b34801561069757600080fd5b5061034f60125481565b3480156106ad57600080fd5b5061032e6106bc366004612610565b610fb1565b3480156106cd57600080fd5b506102ca6106dc36600461263c565b610fc8565b3480156106ed57600080fd5b506102ca6106fc3660046126ae565b61104a565b34801561070d57600080fd5b506102ca61071c366004612561565b6110dc565b34801561072d57600080fd5b5061034f61073c366004612561565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561077357600080fd5b5061034f60285481565b34801561078957600080fd5b506102ca6107983660046126ae565b611134565b3480156107a957600080fd5b506102ca6107b8366004612527565b6111da565b3480156107c957600080fd5b506102ca6107d83660046125db565b611560565b3480156107e957600080fd5b506102ca6107f8366004612708565b6115b5565b6000546001600160a01b031633146108305760405162461bcd60e51b8152600401610827906127b2565b60405180910390fd5b6022805492151560ff199384161790556029805491151591909216179055565b6060600b805461085f9061295e565b80601f016020809104026020016040519081016040528092919081815260200182805461088b9061295e565b80156108d85780601f106108ad576101008083540402835291602001916108d8565b820191906000526020600020905b8154815290600101906020018083116108bb57829003601f168201915b5050505050905090565b60006108ef33848461161e565b50600192915050565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000191461095d576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610957908490612947565b90915550505b610968848484611717565b949350505050565b6000546001600160a01b0316331461099a5760405162461bcd60e51b8152600401610827906127b2565b600081836013546109ab9190612928565b6109b59190612906565b90506103e86013546109c79190612906565b8110156109e65760405162461bcd60e51b8152600401610827906127dd565b601f555050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916108ef918590610a249086906128ee565b61161e565b6000546001600160a01b03163314610a535760405162461bcd60e51b8152600401610827906127b2565b60008183601354610a649190612928565b610a6e9190612906565b90506103e8601354610a809190612906565b811015610a9f5760405162461bcd60e51b8152600401610827906127dd565b601c555050565b6000546001600160a01b03163314610ad05760405162461bcd60e51b8152600401610827906127b2565b602754158015610ae85750602254610100900460ff16155b610b4d5760405162461bcd60e51b815260206004820152603060248201527f5374617274696e672050726f74656374696f6e73206861766520616c7265616460448201526f3c903132b2b71032bc32b1baba32b21760811b6064820152608401610827565b60ff16602755565b6000546001600160a01b03163314610b7f5760405162461bcd60e51b8152600401610827906127b2565b6000610b8c826001612928565b6009555050565b6000546001600160a01b03163314610bbd5760405162461bcd60e51b8152600401610827906127b2565b6001600160a01b038116610be35760405162461bcd60e51b815260040161082790612820565b6001600160a01b03811661dead1415610c0e5760405162461bcd60e51b815260040161082790612820565b60008054610c27916001600160a01b0390911690610d3b565b610c32816001610d3b565b6000546018546001600160a01b0390811691161415610c6757601880546001600160a01b0319166001600160a01b0383161790555b600054610c7c906001600160a01b0316610d90565b600080546001600160a01b039081168252600460209081526040808420868416855290915282209290925580549091610cb59116610d90565b1115610cdc57600054610cda906001600160a01b031682610cd582610d90565b611717565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610d35826000196108e2565b92915050565b6000546001600160a01b03163314610d655760405162461bcd60e51b8152600401610827906127b2565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610dd55760405162461bcd60e51b8152600401610827906127b2565b60008054610dee916001600160a01b0390911690610d3b565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610e545760405162461bcd60e51b8152600401610827906127b2565b80610e7b57506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610ed75762093a8060035442610e959190612947565b11610ed75760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b6044820152606401610827565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b03163314610f2d5760405162461bcd60e51b8152600401610827906127b2565b60235415610f665760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b6044820152606401610827565b602355565b6060600c805461085f9061295e565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916108ef918590610a24908690612947565b6000610fbe338484611717565b5060019392505050565b6000546001600160a01b03163314610ff25760405162461bcd60e51b8152600401610827906127b2565b60198054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061103f90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146110745760405162461bcd60e51b8152600401610827906127b2565b8061107f83856128ee565b61108991906128ee565b6064146110ce5760405162461bcd60e51b81526020600482015260136024820152724d7573742061646420757020746f203130302560681b6044820152606401610827565b601092909255601155601255565b6000546001600160a01b031633146111065760405162461bcd60e51b8152600401610827906127b2565b601880546001600160a01b039384166001600160a01b03199182161790915560198054929093169116179055565b6000546001600160a01b0316331461115e5760405162461bcd60e51b8152600401610827906127b2565b6105dc831115801561117257506109c48211155b801561118057506109c48111155b6111cc5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610827565b600d92909255600e55600f55565b6000546001600160a01b031633146112045760405162461bcd60e51b8152600401610827906127b2565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561124457600080fd5b505afa158015611258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127c9190612544565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112c457600080fd5b505afa1580156112d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fc9190612544565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561134257600080fd5b505afa158015611356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137a9190612544565b90506001600160a01b03811661152057816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c357600080fd5b505afa1580156113d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fb9190612544565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561144357600080fd5b505afa158015611457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147b9190612544565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156114c357600080fd5b505af11580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb9190612544565b601680546001600160a01b0319166001600160a01b039290921691909117905561153c565b601680546001600160a01b0319166001600160a01b0383161790555b50601580546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b0316331461158a5760405162461bcd60e51b8152600401610827906127b2565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115df5760405162461bcd60e51b8152600401610827906127b2565b82846013546115ee9190612928565b6115f89190612906565b602055601354819061160b908490612928565b6116159190612906565b60215550505050565b6001600160a01b03831661166a5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610827565b6001600160a01b0382166116b65760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610827565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117665760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b6044820152606401610827565b6001600160a01b0383166117b35760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b6044820152606401610827565b600082116117ee5760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b6044820152606401610827565b6117f88484611abe565b156119e65760295460ff16156118af576001600160a01b03841660009081526002602052604090205460ff161561186e576001600160a01b0383166000908152602a602052604090205443141561184e57600080fd5b6001600160a01b0383166000908152602a602052604090204390556118af565b6001600160a01b0384166000908152602a602052604090205443141561189357600080fd5b6001600160a01b0384166000908152602a602052604090204390555b6001600160a01b03841660009081526002602052604090205460ff16806118ee57506001600160a01b03831660009081526002602052604090205460ff165b1561194557601c548211156119455760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e00000000000000006044820152606401610827565b6017546001600160a01b0384811691161480159061197c57506001600160a01b03831660009081526002602052604090205460ff16155b156119e657601f548261198e85610d90565b61199891906128ee565b11156119e65760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610827565b6001600160a01b03841660009081526005602052604090205460019060ff1680611a2857506001600160a01b03841660009081526005602052604090205460ff165b15611a31575060005b6001600160a01b03841660009081526002602052604090205460ff1615611aa957601954600160a01b900460ff16158015611a755750601954600160a81b900460ff165b15611aa9576000611a8530610d90565b90506020548110611aa7576021548110611a9e57506021545b611aa781611b7c565b505b611ab585858584611d79565b95945050505050565b600080546001600160a01b03848116911614801590611aeb57506000546001600160a01b03838116911614155b8015611b1057506001600160a01b03821660009081526007602052604090205460ff16155b8015611b3557506001600160a01b03831660009081526007602052604090205460ff16155b8015611b4c57506001600160a01b03821661dead14155b8015611b6057506001600160a01b03821615155b8015611b7557506001600160a01b0383163014155b9392505050565b6019805460ff60a01b1916600160a01b179055601254601154601054611ba291906128ee565b611bac91906128ee565b611bb557611d69565b60006002601254601154601054611bcc91906128ee565b611bd691906128ee565b601054611be39085612928565b611bed9190612906565b611bf79190612906565b90506000611c058284612947565b9050611c1081612038565b600047905060006002601254601154601054611c2c91906128ee565b611c3691906128ee565b601054611c439085612928565b611c4d9190612906565b611c579190612906565b90508315611cab57611c698482612188565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6000611cb78587612947565b1115611d64576018546012546011546001600160a01b03909216916108fc91611cdf916128ee565b601154611cec8587612947565b611cf69190612928565b611d009190612906565b6040518115909202916000818181858888f19350505050158015611d28573d6000803e3d6000fd5b506019546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611d62573d6000803e3d6000fd5b505b505050505b506019805460ff60a01b19169055565b60225460009060ff1615611f65576001600160a01b03851660009081526006602052604090205460ff1680611dc657506001600160a01b03841660009081526006602052604090205460ff165b15611e065760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b6044820152606401610827565b602254610100900460ff16611e9c57611e1f8585612231565b602254610100900460ff16158015611e3c5750611e3c8585611abe565b15611e975760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610827565b611f65565b6000602454118015611ec657506001600160a01b03851660009081526002602052604090205460ff165b8015611ed75750611ed78585611abe565b15611f6557602754602454611eec9043612947565b1015611f65576001600160a01b0384166000908152600660205260408120805460ff191660011790556028805491611f2383612999565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b03851660009081526001602052604081208054859290611f8d908490612947565b909155506000905082611fa05783611fab565b611fab86868661236e565b6001600160a01b038616600090815260016020526040812080549293508392909190611fd89084906128ee565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161202491815260200190565b60405180910390a350600195945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061206d5761206d6129ca565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156120c157600080fd5b505afa1580156120d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f99190612544565b8160018151811061210c5761210c6129ca565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac9479061215290859060009086903090429060040161287d565b600060405180830381600087803b15801561216c57600080fd5b505af1158015612180573d6000803e3d6000fd5b505050505050565b60155460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b1580156121f157600080fd5b505af1158015612205573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061222a91906126da565b5050505050565b602254610100900460ff16156122955760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610827565b61229f8282611abe565b1580156122b957506016546001600160a01b038281169116145b15610eff576027546002146122dc576122d4436113886128ee565b6024556122e1565b436024555b6001600160a01b03821660009081526007602052604090819020805460ff191660019081179091556022805461ff001916610100179055426025556019805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599161236291901515815260200190565b60405180910390a15050565b60165460009081906001600160a01b038681169116141561242157600061239485610d90565b11156123fd576009546001600160a01b0385166000908152600860205260409020546123c09042612947565b10156123fd5760405162461bcd60e51b815260206004820152600c60248201526b213abc9031b7b7b63237bbb760a11b6044820152606401610827565b506001600160a01b0383166000908152600860205260409020429055600d54612445565b6016546001600160a01b03858116911614156124405750600e54612445565b50600f545b61244f8585611abe565b1561247c5760235415806124725750600a805461246c9190612906565b60235414155b1561247c57600080fd5b600061271061248b8386612928565b6124959190612906565b306000908152600160205260408120805492935083929091906124b99084906128ee565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36125088185612947565b9695505050505050565b8035801515811461252257600080fd5b919050565b60006020828403121561253957600080fd5b8135611b75816129e0565b60006020828403121561255657600080fd5b8151611b75816129e0565b6000806040838503121561257457600080fd5b823561257f816129e0565b9150602083013561258f816129e0565b809150509250929050565b6000806000606084860312156125af57600080fd5b83356125ba816129e0565b925060208401356125ca816129e0565b929592945050506040919091013590565b600080604083850312156125ee57600080fd5b82356125f9816129e0565b915061260760208401612512565b90509250929050565b6000806040838503121561262357600080fd5b823561262e816129e0565b946020939093013593505050565b60006020828403121561264e57600080fd5b611b7582612512565b6000806040838503121561266a57600080fd5b6125f983612512565b60006020828403121561268557600080fd5b5035919050565b6000806040838503121561269f57600080fd5b50508035926020909101359150565b6000806000606084860312156126c357600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156126ef57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561271e57600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561274c57600080fd5b813560ff81168114611b7557600080fd5b600060208083528351808285015260005b8181101561278a5785810183015185820160400152820161276e565b8181111561279c576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b60208082526023908201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604082015262363c9760e91b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128cd5784516001600160a01b0316835293830193918301916001016128a8565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612901576129016129b4565b500190565b60008261292357634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612942576129426129b4565b500290565b600082821015612959576129596129b4565b500390565b600181811c9082168061297257607f821691505b6020821081141561299357634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129ad576129ad6129b4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146129f557600080fd5b5056fea2646970667358221220ca255b244db4c383436fbab0a38278e23e92c8eac28358d0984980f5d3a4871864736f6c63430008070033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c8063590f897e11610144578063a8edc797116100b6578063dd62ed3e1161007a578063dd62ed3e14610721578063e79d416014610767578063e9dae5ed1461077d578063eafb5a3c1461079d578063eec2744e146107bd578063fb78680d146107dd57600080fd5b8063a8edc7971461068b578063a9059cbb146106a1578063c49b9a80146106c1578063cdfdb7dc146106e1578063d3f6a1571461070157600080fd5b806381c6f11b1161010857806381c6f11b146105df578063893d20e8146105ff57806389fd9bc11461061d5780638da5cb5b146105ff57806395d89b4114610656578063a457c2d71461066b57600080fd5b8063590f897e14610554578063590ffdce1461056a57806370a082311461058a578063715018a6146105aa57806380c581d1146105bf57600080fd5b80633f3cf56c116101dd5780634a74bb02116101a15780634a74bb02146104855780634ef3cce5146104a65780634fb2e45d146104bc5780634fbee193146104dc57806350a8e01614610515578063571ac8b01461053457600080fd5b80633f3cf56c146103ef57806340b9a54b1461040f5780634129ecee14610425578063452ed4f114610445578063469c0ef51461046557600080fd5b806318160ddd1161022f57806318160ddd1461033e57806323b872dd1461035d578063260039571461037d578063313ce5671461039d578063384f6b51146103b957806339509351146103cf57600080fd5b806303fd2a4514610277578063044df726146102aa57806306fdde03146102cc5780630758d924146102ee578063095ea7b31461030e57600080fd5b3661027257005b600080fd5b34801561028357600080fd5b5061028d61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102b657600080fd5b506102ca6102c5366004612657565b6107fd565b005b3480156102d857600080fd5b506102e1610850565b6040516102a1919061275d565b3480156102fa57600080fd5b5060155461028d906001600160a01b031681565b34801561031a57600080fd5b5061032e610329366004612610565b6108e2565b60405190151581526020016102a1565b34801561034a57600080fd5b506013545b6040519081526020016102a1565b34801561036957600080fd5b5061032e61037836600461259a565b6108f8565b34801561038957600080fd5b506102ca61039836600461268c565b610970565b3480156103a957600080fd5b50604051600981526020016102a1565b3480156103c557600080fd5b5061034f60105481565b3480156103db57600080fd5b5061032e6103ea366004612610565b6109ed565b3480156103fb57600080fd5b506102ca61040a36600461268c565b610a29565b34801561041b57600080fd5b5061034f600d5481565b34801561043157600080fd5b506102ca61044036600461273a565b610aa6565b34801561045157600080fd5b5060165461028d906001600160a01b031681565b34801561047157600080fd5b506102ca610480366004612673565b610b55565b34801561049157600080fd5b5060195461032e90600160a81b900460ff1681565b3480156104b257600080fd5b5061034f60115481565b3480156104c857600080fd5b506102ca6104d7366004612527565b610b93565b3480156104e857600080fd5b5061032e6104f7366004612527565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561052157600080fd5b5060225461032e90610100900460ff1681565b34801561054057600080fd5b5061032e61054f366004612527565b610d27565b34801561056057600080fd5b5061034f600e5481565b34801561057657600080fd5b506102ca6105853660046125db565b610d3b565b34801561059657600080fd5b5061034f6105a5366004612527565b610d90565b3480156105b657600080fd5b506102ca610dab565b3480156105cb57600080fd5b506102ca6105da3660046125db565b610e2a565b3480156105eb57600080fd5b506102ca6105fa366004612673565b610f03565b34801561060b57600080fd5b506000546001600160a01b031661028d565b34801561062957600080fd5b5061032e610638366004612527565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561066257600080fd5b506102e1610f6b565b34801561067757600080fd5b5061032e610686366004612610565b610f7a565b34801561069757600080fd5b5061034f60125481565b3480156106ad57600080fd5b5061032e6106bc366004612610565b610fb1565b3480156106cd57600080fd5b506102ca6106dc36600461263c565b610fc8565b3480156106ed57600080fd5b506102ca6106fc3660046126ae565b61104a565b34801561070d57600080fd5b506102ca61071c366004612561565b6110dc565b34801561072d57600080fd5b5061034f61073c366004612561565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561077357600080fd5b5061034f60285481565b34801561078957600080fd5b506102ca6107983660046126ae565b611134565b3480156107a957600080fd5b506102ca6107b8366004612527565b6111da565b3480156107c957600080fd5b506102ca6107d83660046125db565b611560565b3480156107e957600080fd5b506102ca6107f8366004612708565b6115b5565b6000546001600160a01b031633146108305760405162461bcd60e51b8152600401610827906127b2565b60405180910390fd5b6022805492151560ff199384161790556029805491151591909216179055565b6060600b805461085f9061295e565b80601f016020809104026020016040519081016040528092919081815260200182805461088b9061295e565b80156108d85780601f106108ad576101008083540402835291602001916108d8565b820191906000526020600020905b8154815290600101906020018083116108bb57829003601f168201915b5050505050905090565b60006108ef33848461161e565b50600192915050565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000191461095d576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610957908490612947565b90915550505b610968848484611717565b949350505050565b6000546001600160a01b0316331461099a5760405162461bcd60e51b8152600401610827906127b2565b600081836013546109ab9190612928565b6109b59190612906565b90506103e86013546109c79190612906565b8110156109e65760405162461bcd60e51b8152600401610827906127dd565b601f555050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916108ef918590610a249086906128ee565b61161e565b6000546001600160a01b03163314610a535760405162461bcd60e51b8152600401610827906127b2565b60008183601354610a649190612928565b610a6e9190612906565b90506103e8601354610a809190612906565b811015610a9f5760405162461bcd60e51b8152600401610827906127dd565b601c555050565b6000546001600160a01b03163314610ad05760405162461bcd60e51b8152600401610827906127b2565b602754158015610ae85750602254610100900460ff16155b610b4d5760405162461bcd60e51b815260206004820152603060248201527f5374617274696e672050726f74656374696f6e73206861766520616c7265616460448201526f3c903132b2b71032bc32b1baba32b21760811b6064820152608401610827565b60ff16602755565b6000546001600160a01b03163314610b7f5760405162461bcd60e51b8152600401610827906127b2565b6000610b8c826001612928565b6009555050565b6000546001600160a01b03163314610bbd5760405162461bcd60e51b8152600401610827906127b2565b6001600160a01b038116610be35760405162461bcd60e51b815260040161082790612820565b6001600160a01b03811661dead1415610c0e5760405162461bcd60e51b815260040161082790612820565b60008054610c27916001600160a01b0390911690610d3b565b610c32816001610d3b565b6000546018546001600160a01b0390811691161415610c6757601880546001600160a01b0319166001600160a01b0383161790555b600054610c7c906001600160a01b0316610d90565b600080546001600160a01b039081168252600460209081526040808420868416855290915282209290925580549091610cb59116610d90565b1115610cdc57600054610cda906001600160a01b031682610cd582610d90565b611717565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000610d35826000196108e2565b92915050565b6000546001600160a01b03163314610d655760405162461bcd60e51b8152600401610827906127b2565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610dd55760405162461bcd60e51b8152600401610827906127b2565b60008054610dee916001600160a01b0390911690610d3b565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610e545760405162461bcd60e51b8152600401610827906127b2565b80610e7b57506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610ed75762093a8060035442610e959190612947565b11610ed75760405162461bcd60e51b815260206004820152601260248201527127b732903bb2b2b59031b7b7b63237bbb71760711b6044820152606401610827565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b03163314610f2d5760405162461bcd60e51b8152600401610827906127b2565b60235415610f665760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b6044820152606401610827565b602355565b6060600c805461085f9061295e565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916108ef918590610a24908690612947565b6000610fbe338484611717565b5060019392505050565b6000546001600160a01b03163314610ff25760405162461bcd60e51b8152600401610827906127b2565b60198054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061103f90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146110745760405162461bcd60e51b8152600401610827906127b2565b8061107f83856128ee565b61108991906128ee565b6064146110ce5760405162461bcd60e51b81526020600482015260136024820152724d7573742061646420757020746f203130302560681b6044820152606401610827565b601092909255601155601255565b6000546001600160a01b031633146111065760405162461bcd60e51b8152600401610827906127b2565b601880546001600160a01b039384166001600160a01b03199182161790915560198054929093169116179055565b6000546001600160a01b0316331461115e5760405162461bcd60e51b8152600401610827906127b2565b6105dc831115801561117257506109c48211155b801561118057506109c48111155b6111cc5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610827565b600d92909255600e55600f55565b6000546001600160a01b031633146112045760405162461bcd60e51b8152600401610827906127b2565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561124457600080fd5b505afa158015611258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127c9190612544565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112c457600080fd5b505afa1580156112d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fc9190612544565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561134257600080fd5b505afa158015611356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137a9190612544565b90506001600160a01b03811661152057816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113c357600080fd5b505afa1580156113d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fb9190612544565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561144357600080fd5b505afa158015611457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147b9190612544565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156114c357600080fd5b505af11580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb9190612544565b601680546001600160a01b0319166001600160a01b039290921691909117905561153c565b601680546001600160a01b0319166001600160a01b0383161790555b50601580546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b0316331461158a5760405162461bcd60e51b8152600401610827906127b2565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115df5760405162461bcd60e51b8152600401610827906127b2565b82846013546115ee9190612928565b6115f89190612906565b602055601354819061160b908490612928565b6116159190612906565b60215550505050565b6001600160a01b03831661166a5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610827565b6001600160a01b0382166116b65760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610827565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166117665760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b6044820152606401610827565b6001600160a01b0383166117b35760405162461bcd60e51b815260206004820152601460248201527322a92199181d102d32b9379030b2323932b9b99760611b6044820152606401610827565b600082116117ee5760405162461bcd60e51b815260206004820152600860248201526726bab9ba101f181760c11b6044820152606401610827565b6117f88484611abe565b156119e65760295460ff16156118af576001600160a01b03841660009081526002602052604090205460ff161561186e576001600160a01b0383166000908152602a602052604090205443141561184e57600080fd5b6001600160a01b0383166000908152602a602052604090204390556118af565b6001600160a01b0384166000908152602a602052604090205443141561189357600080fd5b6001600160a01b0384166000908152602a602052604090204390555b6001600160a01b03841660009081526002602052604090205460ff16806118ee57506001600160a01b03831660009081526002602052604090205460ff165b1561194557601c548211156119455760405162461bcd60e51b815260206004820152601860248201527f4578636565647320746865206d61785478416d6f756e742e00000000000000006044820152606401610827565b6017546001600160a01b0384811691161480159061197c57506001600160a01b03831660009081526002602052604090205460ff16155b156119e657601f548261198e85610d90565b61199891906128ee565b11156119e65760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610827565b6001600160a01b03841660009081526005602052604090205460019060ff1680611a2857506001600160a01b03841660009081526005602052604090205460ff165b15611a31575060005b6001600160a01b03841660009081526002602052604090205460ff1615611aa957601954600160a01b900460ff16158015611a755750601954600160a81b900460ff165b15611aa9576000611a8530610d90565b90506020548110611aa7576021548110611a9e57506021545b611aa781611b7c565b505b611ab585858584611d79565b95945050505050565b600080546001600160a01b03848116911614801590611aeb57506000546001600160a01b03838116911614155b8015611b1057506001600160a01b03821660009081526007602052604090205460ff16155b8015611b3557506001600160a01b03831660009081526007602052604090205460ff16155b8015611b4c57506001600160a01b03821661dead14155b8015611b6057506001600160a01b03821615155b8015611b7557506001600160a01b0383163014155b9392505050565b6019805460ff60a01b1916600160a01b179055601254601154601054611ba291906128ee565b611bac91906128ee565b611bb557611d69565b60006002601254601154601054611bcc91906128ee565b611bd691906128ee565b601054611be39085612928565b611bed9190612906565b611bf79190612906565b90506000611c058284612947565b9050611c1081612038565b600047905060006002601254601154601054611c2c91906128ee565b611c3691906128ee565b601054611c439085612928565b611c4d9190612906565b611c579190612906565b90508315611cab57611c698482612188565b60408051858152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6000611cb78587612947565b1115611d64576018546012546011546001600160a01b03909216916108fc91611cdf916128ee565b601154611cec8587612947565b611cf69190612928565b611d009190612906565b6040518115909202916000818181858888f19350505050158015611d28573d6000803e3d6000fd5b506019546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611d62573d6000803e3d6000fd5b505b505050505b506019805460ff60a01b19169055565b60225460009060ff1615611f65576001600160a01b03851660009081526006602052604090205460ff1680611dc657506001600160a01b03841660009081526006602052604090205460ff165b15611e065760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b6044820152606401610827565b602254610100900460ff16611e9c57611e1f8585612231565b602254610100900460ff16158015611e3c5750611e3c8585611abe565b15611e975760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610827565b611f65565b6000602454118015611ec657506001600160a01b03851660009081526002602052604090205460ff165b8015611ed75750611ed78585611abe565b15611f6557602754602454611eec9043612947565b1015611f65576001600160a01b0384166000908152600660205260408120805460ff191660011790556028805491611f2383612999565b90915550506040516001600160a01b03851681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b03851660009081526001602052604081208054859290611f8d908490612947565b909155506000905082611fa05783611fab565b611fab86868661236e565b6001600160a01b038616600090815260016020526040812080549293508392909190611fd89084906128ee565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161202491815260200190565b60405180910390a350600195945050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061206d5761206d6129ca565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156120c157600080fd5b505afa1580156120d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f99190612544565b8160018151811061210c5761210c6129ca565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac9479061215290859060009086903090429060040161287d565b600060405180830381600087803b15801561216c57600080fd5b505af1158015612180573d6000803e3d6000fd5b505050505050565b60155460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b1580156121f157600080fd5b505af1158015612205573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061222a91906126da565b5050505050565b602254610100900460ff16156122955760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610827565b61229f8282611abe565b1580156122b957506016546001600160a01b038281169116145b15610eff576027546002146122dc576122d4436113886128ee565b6024556122e1565b436024555b6001600160a01b03821660009081526007602052604090819020805460ff191660019081179091556022805461ff001916610100179055426025556019805460ff60a81b1916600160a81b17905590517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599161236291901515815260200190565b60405180910390a15050565b60165460009081906001600160a01b038681169116141561242157600061239485610d90565b11156123fd576009546001600160a01b0385166000908152600860205260409020546123c09042612947565b10156123fd5760405162461bcd60e51b815260206004820152600c60248201526b213abc9031b7b7b63237bbb760a11b6044820152606401610827565b506001600160a01b0383166000908152600860205260409020429055600d54612445565b6016546001600160a01b03858116911614156124405750600e54612445565b50600f545b61244f8585611abe565b1561247c5760235415806124725750600a805461246c9190612906565b60235414155b1561247c57600080fd5b600061271061248b8386612928565b6124959190612906565b306000908152600160205260408120805492935083929091906124b99084906128ee565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36125088185612947565b9695505050505050565b8035801515811461252257600080fd5b919050565b60006020828403121561253957600080fd5b8135611b75816129e0565b60006020828403121561255657600080fd5b8151611b75816129e0565b6000806040838503121561257457600080fd5b823561257f816129e0565b9150602083013561258f816129e0565b809150509250929050565b6000806000606084860312156125af57600080fd5b83356125ba816129e0565b925060208401356125ca816129e0565b929592945050506040919091013590565b600080604083850312156125ee57600080fd5b82356125f9816129e0565b915061260760208401612512565b90509250929050565b6000806040838503121561262357600080fd5b823561262e816129e0565b946020939093013593505050565b60006020828403121561264e57600080fd5b611b7582612512565b6000806040838503121561266a57600080fd5b6125f983612512565b60006020828403121561268557600080fd5b5035919050565b6000806040838503121561269f57600080fd5b50508035926020909101359150565b6000806000606084860312156126c357600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156126ef57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561271e57600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561274c57600080fd5b813560ff81168114611b7557600080fd5b600060208083528351808285015260005b8181101561278a5785810183015185820160400152820161276e565b8181111561279c576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b60208082526023908201527f4d7573742062652061626f766520302e3125206f6620746f74616c2073757070604082015262363c9760e91b606082015260800190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128cd5784516001600160a01b0316835293830193918301916001016128a8565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612901576129016129b4565b500190565b60008261292357634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612942576129426129b4565b500290565b600082821015612959576129596129b4565b500390565b600181811c9082168061297257607f821691505b6020821081141561299357634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156129ad576129ad6129b4565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146129f557600080fd5b5056fea2646970667358221220ca255b244db4c383436fbab0a38278e23e92c8eac28358d0984980f5d3a4871864736f6c63430008070033

Deployed Bytecode Sourcemap

5715:19184:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7282:73;;;;;;;;;;;;7313:42;7282:73;;;;;-1:-1:-1;;;;;4926:32:1;;;4908:51;;4896:2;4881:18;7282:73:0;;;;;;;;16311:169;;;;;;;;;;-1:-1:-1;16311:169:0;;;;;:::i;:::-;;:::i;:::-;;12263:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7107:35::-;;;;;;;;;;-1:-1:-1;7107:35:0;;;;-1:-1:-1;;;;;7107:35:0;;;12876:161;;;;;;;;;;-1:-1:-1;12876:161:0;;;;;:::i;:::-;;:::i;:::-;;;6056:14:1;;6049:22;6031:41;;6019:2;6004:18;12876:161:0;5891:187:1;11998:83:0;;;;;;;;;;-1:-1:-1;12071:7:0;;11998:83;;;13280:25:1;;;13268:2;13253:18;11998:83:0;13134:177:1;13490:306:0;;;;;;;;;;-1:-1:-1;13490:306:0;;;;;:::i;:::-;;:::i;17419:260::-;;;;;;;;;;-1:-1:-1;17419:260:0;;;;;:::i;:::-;;:::i;12087:80::-;;;;;;;;;;-1:-1:-1;12087:80:0;;7001:1;14767:36:1;;14755:2;14740:18;12087:80:0;14625:184:1;6736:35:0;;;;;;;;;;;;;;;;13804:215;;;;;;;;;;-1:-1:-1;13804:215:0;;;;;:::i;:::-;;:::i;17154:257::-;;;;;;;;;;-1:-1:-1;17154:257:0;;;;;:::i;:::-;;:::i;6463:28::-;;;;;;;;;;;;;;;;16086:217;;;;;;;;;;-1:-1:-1;16086:217:0;;;;;:::i;:::-;;:::i;7149:21::-;;;;;;;;;;-1:-1:-1;7149:21:0;;;;-1:-1:-1;;;;;7149:21:0;;;15602:161;;;;;;;;;;-1:-1:-1;15602:161:0;;;;;:::i;:::-;;:::i;7593:41::-;;;;;;;;;;-1:-1:-1;7593:41:0;;;;-1:-1:-1;;;7593:41:0;;;;;;6778:35;;;;;;;;;;;;;;;;10681:761;;;;;;;;;;-1:-1:-1;10681:761:0;;;;;:::i;:::-;;:::i;15187:125::-;;;;;;;;;;-1:-1:-1;15187:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;15276:28:0;15252:4;15276:28;;;:19;:28;;;;;;;;;15187:125;8171:36;;;;;;;;;;-1:-1:-1;8171:36:0;;;;;;;;;;;13362:120;;;;;;;;;;-1:-1:-1;13362:120:0;;;;;:::i;:::-;;:::i;6498:29::-;;;;;;;;;;;;;;;;15320:134;;;;;;;;;;-1:-1:-1;15320:134:0;;;;;:::i;:::-;;:::i;12576:117::-;;;;;;;;;;-1:-1:-1;12576:117:0;;;;;:::i;:::-;;:::i;11450:195::-;;;;;;;;;;;;;:::i;14769:410::-;;;;;;;;;;-1:-1:-1;14769:410:0;;;;;:::i;:::-;;:::i;15771:158::-;;;;;;;;;;-1:-1:-1;15771:158:0;;;;;:::i;:::-;;:::i;12349:80::-;;;;;;;;;;-1:-1:-1;12401:7:0;10659:6;-1:-1:-1;;;;;10659:6:0;12349:80;;15462:132;;;;;;;;;;-1:-1:-1;15462:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;15555:31:0;15531:4;15555:31;;;:22;:31;;;;;;;;;15462:132;12173:84;;;;;;;;;;;;;:::i;14027:225::-;;;;;;;;;;-1:-1:-1;14027:225:0;;;;;:::i;:::-;;:::i;6820:29::-;;;;;;;;;;;;;;;;12701:167;;;;;;;;;;-1:-1:-1;12701:167:0;;;;;:::i;:::-;;:::i;18198:171::-;;;;;;;;;;-1:-1:-1;18198:171:0;;;;;:::i;:::-;;:::i;16869:277::-;;;;;;;;;;-1:-1:-1;16869:277:0;;;;;:::i;:::-;;:::i;17984:206::-;;;;;;;;;;-1:-1:-1;17984:206:0;;;;;:::i;:::-;;:::i;12435:133::-;;;;;;;;;;-1:-1:-1;12435:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12537:19:0;;;12519:7;12537:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12435:133;8422:32;;;;;;;;;;;;;;;;16488:373;;;;;;;;;;-1:-1:-1;16488:373:0;;;;;:::i;:::-;;:::i;14260:501::-;;;;;;;;;;-1:-1:-1;14260:501:0;;;;;:::i;:::-;;:::i;15937:141::-;;;;;;;;;;-1:-1:-1;15937:141:0;;;;;:::i;:::-;;:::i;17687:289::-;;;;;;;;;;-1:-1:-1;17687:289:0;;;;;:::i;:::-;;:::i;16311:169::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;;;;;;;;;16406:16:::1;:28:::0;;;::::1;;-1:-1:-1::0;;16406:28:0;;::::1;;::::0;;16445:15:::1;:27:::0;;;::::1;;::::0;;;::::1;;::::0;;16311:169::o;12263:80::-;12311:13;12335:5;12328:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12263:80;:::o;12876:161::-;12951:4;12968:39;196:10;12991:7;13000:6;12968:8;:39::i;:::-;-1:-1:-1;13025:4:0;12876:161;;;;:::o;13490:306::-;-1:-1:-1;;;;;13611:19:0;;13590:4;13611:19;;;:11;:19;;;;;;;;13631:10;13611:31;;;;;;;;-1:-1:-1;;13611:52:0;13607:126;;-1:-1:-1;;;;;13680:19:0;;;;;;:11;:19;;;;;;;;13700:10;13680:31;;;;;;;:41;;13715:6;;13680:19;:41;;13715:6;;13680:41;:::i;:::-;;;;-1:-1:-1;;13607:126:0;13752:36;13762:6;13770:9;13781:6;13752:9;:36::i;:::-;13745:43;13490:306;-1:-1:-1;;;;13490:306:0:o;17419:260::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;17509:13:::1;17547:7;17536;17526;;:17;;;;:::i;:::-;17525:29;;;;:::i;:::-;17509:45;;17593:4;17583:7;;:14;;;;:::i;:::-;17573:5;:25;;17565:73;;;;-1:-1:-1::0;;;17565:73:0::1;;;;;;;:::i;:::-;17649:14;:22:::0;-1:-1:-1;;17419:260:0:o;13804:215::-;196:10;13892:4;13941:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13941:34:0;;;;;;;;;;13892:4;;13909:80;;13932:7;;13941:47;;13978:10;;13941:47;:::i;:::-;13909:8;:80::i;17154:257::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;17243:13:::1;17281:7;17270;17260;;:17;;;;:::i;:::-;17259:29;;;;:::i;:::-;17243:45;;17327:4;17317:7;;:14;;;;:::i;:::-;17307:5;:25;;17299:73;;;;-1:-1:-1::0;;;17299:73:0::1;;;;;;;:::i;:::-;17383:12;:20:::0;-1:-1:-1;;17154:257:0:o;16086:217::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;16170:13:::1;::::0;:18;:39;::::1;;;-1:-1:-1::0;16193:16:0::1;::::0;::::1;::::0;::::1;;;16192:17;16170:39;16161:101;;;::::0;-1:-1:-1;;;16161:101:0;;7462:2:1;16161:101:0::1;::::0;::::1;7444:21:1::0;7501:2;7481:18;;;7474:30;7540:34;7520:18;;;7513:62;-1:-1:-1;;;7591:18:1;;;7584:46;7647:19;;16161:101:0::1;7260:412:1::0;16161:101:0::1;16273:22;;:13;:22:::0;16086:217::o;15602:161::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;15674:21:::1;15698:19;:7:::0;15708:9:::1;15698:19;:::i;:::-;15728:11;:27:::0;-1:-1:-1;;15602:161:0:o;10681:761::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10762:22:0;::::1;10754:96;;;;-1:-1:-1::0;;;10754:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10869:16:0;::::1;7313:42;10869:16;;10861:90;;;;-1:-1:-1::0;;;10861:90:0::1;;;;;;;:::i;:::-;10982:6;::::0;;10962:34:::1;::::0;-1:-1:-1;;;;;10982:6:0;;::::1;::::0;10962:19:::1;:34::i;:::-;11007:35;11027:8;11037:4;11007:19;:35::i;:::-;11095:6;::::0;11067:16:::1;::::0;-1:-1:-1;;;;;11067:16:0;;::::1;11095:6:::0;::::1;11067:35;11063:90;;;11117:16;:36:::0;;-1:-1:-1;;;;;;11117:36:0::1;-1:-1:-1::0;;;;;11117:36:0;::::1;;::::0;;11063:90:::1;11216:6;::::0;11206:17:::1;::::0;-1:-1:-1;;;;;11216:6:0::1;11206:9;:17::i;:::-;11174:19;11186:6:::0;;-1:-1:-1;;;;;11186:6:0;;::::1;11174:19:::0;;:11:::1;:19;::::0;;;;;;;:29;;::::1;::::0;;;;;;;:49;;;;11247:6;;11174:19;;11237:17:::1;::::0;11247:6:::1;11237:9;:17::i;:::-;:21;11234:99;;;11285:6;::::0;11275:46:::1;::::0;-1:-1:-1;;;;;11285:6:0::1;11293:8:::0;11303:17:::1;11285:6:::0;11303:9:::1;:17::i;:::-;11275:9;:46::i;:::-;;11234:99;11353:6;:17:::0;;-1:-1:-1;;;;;;11353:17:0::1;-1:-1:-1::0;;;;;11353:17:0;::::1;::::0;;::::1;::::0;;11386:38:::1;::::0;11353:17;;;;11386:38:::1;::::0;11353:6;11386:38:::1;10681:761:::0;:::o;13362:120::-;13415:4;13439:35;13447:7;-1:-1:-1;;13439:7:0;:35::i;:::-;13432:42;13362:120;-1:-1:-1;;13362:120:0:o;15320:134::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15408:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;15408:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15320:134::o;12576:117::-;-1:-1:-1;;;;;12669:16:0;12642:7;12669:16;;;:7;:16;;;;;;;12576:117::o;11450:195::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;11537:6:::1;::::0;;11517:34:::1;::::0;-1:-1:-1;;;;;11537:6:0;;::::1;::::0;11517:19:::1;:34::i;:::-;11579:1;11562:19:::0;;-1:-1:-1;;;;;;11562:19:0::1;::::0;;11597:40:::1;::::0;11579:1;;11597:40:::1;::::0;11579:1;;11597:40:::1;11450:195::o:0;14769:410::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;14850:16;14846:326:::1;;-1:-1:-1::0;;;;;;14883:13:0::1;14899:5;14883:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;14883:21:0::1;::::0;;14769:410::o;14846:326::-:1;14941:17;::::0;:22;14937:139:::1;;15030:7;15010:17;;14992:15;:35;;;;:::i;:::-;:45;14984:76;;;::::0;-1:-1:-1;;;14984:76:0;;10140:2:1;14984:76:0::1;::::0;::::1;10122:21:1::0;10179:2;10159:18;;;10152:30;-1:-1:-1;;;10198:18:1;;;10191:48;10256:18;;14984:76:0::1;9938:342:1::0;14984:76:0::1;-1:-1:-1::0;;;;;15090:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;15090:20:0::1;15106:4;15090:20;::::0;;15145:15:::1;15125:17;:35:::0;14846:326:::1;14769:410:::0;;:::o;15771:158::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;15853:13:::1;::::0;:18;15844:38:::1;;;::::0;-1:-1:-1;;;15844:38:0;;11516:2:1;15844:38:0::1;::::0;::::1;11498:21:1::0;11555:1;11535:18;;;11528:29;-1:-1:-1;;;11573:18:1;;;11566:36;11619:18;;15844:38:0::1;11314:329:1::0;15844:38:0::1;15893:13;:28:::0;15771:158::o;12173:84::-;12223:13;12247:7;12240:14;;;;;:::i;14027:225::-;196:10;14120:4;14169:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14169:34:0;;;;;;;;;;14120:4;;14137:85;;14160:7;;14169:52;;14206:15;;14169:52;:::i;12701:167::-;12779:4;12796:42;196:10;12820:9;12831:6;12796:9;:42::i;:::-;-1:-1:-1;12856:4:0;;12701:167;-1:-1:-1;;;12701:167:0:o;18198:171::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;18275:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18275:32:0::1;-1:-1:-1::0;;;;18275:32:0;;::::1;;::::0;;18323:38:::1;::::0;::::1;::::0;::::1;::::0;18299:8;6056:14:1;6049:22;6031:41;;6019:2;6004:18;;5891:187;18323:38:0::1;;;;;;;;18198:171:::0;:::o;16869:277::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;17002:3;16978:21:::1;16990:9:::0;16978;:21:::1;:::i;:::-;:27;;;;:::i;:::-;17009:3;16978:34;16969:67;;;::::0;-1:-1:-1;;;16969:67:0;;12205:2:1;16969:67:0::1;::::0;::::1;12187:21:1::0;12244:2;12224:18;;;12217:30;-1:-1:-1;;;12263:18:1;;;12256:49;12322:18;;16969:67:0::1;12003:343:1::0;16969:67:0::1;17047:15;:27:::0;;;;17085:15:::1;:27:::0;17123:9:::1;:15:::0;16869:277::o;17984:206::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;18095:16:::1;:43:::0;;-1:-1:-1;;;;;18095:43:0;;::::1;-1:-1:-1::0;;;;;;18095:43:0;;::::1;;::::0;;;18149:11:::1;:33:::0;;;;;::::1;::::0;::::1;;::::0;;17984:206::o;16488:373::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;6617:4:::1;16598:6;:21;;:65;;;;;6668:4;16640:7;:23;;16598:65;:117;;;;;6723:4;16684:11;:31;;16598:117;16590:170;;;::::0;-1:-1:-1;;;16590:170:0;;9035:2:1;16590:170:0::1;::::0;::::1;9017:21:1::0;9074:2;9054:18;;;9047:30;9113:25;9093:18;;;9086:53;9156:18;;16590:170:0::1;8833:347:1::0;16590:170:0::1;16771:7;:16:::0;;;;16798:8:::1;:18:::0;16827:12:::1;:26:::0;16488:373::o;14260:501::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;14331:29:::1;14382:9;14331:61;;14403:16;14440:10;-1:-1:-1::0;;;;;14440:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14422:47:0::1;;14478:4;14485:10;-1:-1:-1::0;;;;;14485:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14422:81;::::0;-1:-1:-1;;;;;;14422:81:0::1;::::0;;;;;;-1:-1:-1;;;;;5200:15:1;;;14422:81:0::1;::::0;::::1;5182:34:1::0;5252:15;;5232:18;;;5225:43;5117:18;;14422:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14403:100:::0;-1:-1:-1;;;;;;14518:22:0;::::1;14514:207;;14584:10;-1:-1:-1::0;;;;;14584:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14566:50:0::1;;14625:4;14632:10;-1:-1:-1::0;;;;;14632:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14566:84;::::0;-1:-1:-1;;;;;;14566:84:0::1;::::0;;;;;;-1:-1:-1;;;;;5200:15:1;;;14566:84:0::1;::::0;::::1;5182:34:1::0;5252:15;;5232:18;;;5225:43;5117:18;;14566:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14557:6;:93:::0;;-1:-1:-1;;;;;;14557:93:0::1;-1:-1:-1::0;;;;;14557:93:0;;;::::1;::::0;;;::::1;::::0;;14514:207:::1;;;14692:6;:17:::0;;-1:-1:-1;;;;;;14692:17:0::1;-1:-1:-1::0;;;;;14692:17:0;::::1;;::::0;;14514:207:::1;-1:-1:-1::0;14731:9:0::1;:22:::0;;-1:-1:-1;;;;;;14731:22:0::1;-1:-1:-1::0;;;;;14731:22:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;14260:501:0:o;15937:141::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16029:31:0;;;::::1;;::::0;;;:22:::1;:31;::::0;;;;:41;;-1:-1:-1;;16029:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15937:141::o;17687:289::-;9116:6;;-1:-1:-1;;;;;9116:6:0;196:10;9116:22;9108:52;;;;-1:-1:-1;;;9108:52:0;;;;;;;:::i;:::-;17887:16:::1;17867;17857:7;;:26;;;;:::i;:::-;17856:47;;;;:::i;:::-;17840:13;:63:::0;17928:7:::1;::::0;17955:13;;17928:23:::1;::::0;17938:13;;17928:23:::1;:::i;:::-;17927:41;;;;:::i;:::-;17914:10;:54:::0;-1:-1:-1;;;;17687:289:0:o;13045:309::-;-1:-1:-1;;;;;13139:20:0;;13131:52;;;;-1:-1:-1;;;13131:52:0;;10823:2:1;13131:52:0;;;10805:21:1;10862:2;10842:18;;;10835:30;-1:-1:-1;;;10881:18:1;;;10874:49;10940:18;;13131:52:0;10621:343:1;13131:52:0;-1:-1:-1;;;;;13202:21:0;;13194:53;;;;-1:-1:-1;;;13194:53:0;;10823:2:1;13194:53:0;;;10805:21:1;10862:2;10842:18;;;10835:30;-1:-1:-1;;;10881:18:1;;;10874:49;10940:18;;13194:53:0;10621:343:1;13194:53:0;-1:-1:-1;;;;;13260:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13313:33;;13280:25:1;;;13313:33:0;;13253:18:1;13313:33:0;;;;;;;13045:309;;;:::o;18708:1646::-;18787:4;-1:-1:-1;;;;;18812:18:0;;18804:51;;;;-1:-1:-1;;;18804:51:0;;9791:2:1;18804:51:0;;;9773:21:1;9830:2;9810:18;;;9803:30;-1:-1:-1;;;9849:18:1;;;9842:50;9909:18;;18804:51:0;9589:344:1;18804:51:0;-1:-1:-1;;;;;18874:16:0;;18866:49;;;;-1:-1:-1;;;18866:49:0;;9791:2:1;18866:49:0;;;9773:21:1;9830:2;9810:18;;;9803:30;-1:-1:-1;;;9849:18:1;;;9842:50;9909:18;;18866:49:0;9589:344:1;18866:49:0;18943:1;18934:6;:10;18926:31;;;;-1:-1:-1;;;18926:31:0;;10487:2:1;18926:31:0;;;10469:21:1;10526:1;10506:18;;;10499:29;-1:-1:-1;;;10544:18:1;;;10537:38;10592:18;;18926:31:0;10285:331:1;18926:31:0;18971:20;18982:4;18988:2;18971:10;:20::i;:::-;18968:707;;;19012:15;;;;19008:347;;;-1:-1:-1;;;;;19052:13:0;;;;;;:7;:13;;;;;;;;19048:292;;;-1:-1:-1;;;;;19097:13:0;;;;;;:9;:13;;;;;;19114:12;19097:29;;19089:38;;;;;;-1:-1:-1;;;;;19150:13:0;;;;;;:9;:13;;;;;19166:12;19150:28;;19048:292;;;-1:-1:-1;;;;;19235:15:0;;;;;;:9;:15;;;;;;19254:12;19235:31;;19227:40;;;;;;-1:-1:-1;;;;;19290:15:0;;;;;;:9;:15;;;;;19308:12;19290:30;;19048:292;-1:-1:-1;;;;;19372:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;19389:11:0;;;;;;:7;:11;;;;;;;;19372:28;19369:126;;;19438:12;;19428:6;:22;;19420:59;;;;-1:-1:-1;;;19420:59:0;;12553:2:1;19420:59:0;;;12535:21:1;12592:2;12572:18;;;12565:30;12631:26;12611:18;;;12604:54;12675:18;;19420:59:0;12351:348:1;19420:59:0;19518:14;;-1:-1:-1;;;;;19512:20:0;;;19518:14;;19512:20;;;;:36;;-1:-1:-1;;;;;;19537:11:0;;;;;;:7;:11;;;;;;;;19536:12;19512:36;19509:155;;;19603:14;;19593:6;19577:13;19587:2;19577:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;19569:79;;;;-1:-1:-1;;;19569:79:0;;11850:2:1;19569:79:0;;;11832:21:1;11889:2;11869:18;;;11862:30;11928:28;11908:18;;;11901:56;11974:18;;19569:79:0;11648:350:1;19569:79:0;-1:-1:-1;;;;;19720:25:0;;19687:12;19720:25;;;:19;:25;;;;;;19702:4;;19720:25;;;:52;;-1:-1:-1;;;;;;19749:23:0;;;;;;:19;:23;;;;;;;;19720:52;19717:98;;;-1:-1:-1;19798:5:0;19717:98;-1:-1:-1;;;;;19831:11:0;;;;;;:7;:11;;;;;;;;19827:457;;;19864:16;;-1:-1:-1;;;19864:16:0;;;;19863:17;:59;;;;-1:-1:-1;19901:21:0;;-1:-1:-1;;;19901:21:0;;;;19863:59;19859:408;;;19957:28;19988:24;20006:4;19988:9;:24::i;:::-;19957:55;;20059:13;;20035:20;:37;20031:221;;20124:10;;20100:20;:34;20097:77;;-1:-1:-1;20161:10:0;;20097:77;20196:36;20211:20;20196:14;:36::i;:::-;19938:329;19859:408;20302:44;20320:4;20326:2;20330:6;20338:7;20302:17;:44::i;:::-;20295:51;18708:1646;-1:-1:-1;;;;;18708:1646:0:o;18377:323::-;18445:4;10659:6;;-1:-1:-1;;;;;18469:15:0;;;10659:6;;18469:15;;;;:45;;-1:-1:-1;10632:7:0;10659:6;-1:-1:-1;;;;;18501:13:0;;;10659:6;;18501:13;;18469:45;:84;;;;-1:-1:-1;;;;;;18532:21:0;;;;;;:17;:21;;;;;;;;18531:22;18469:84;:125;;;;-1:-1:-1;;;;;;18571:23:0;;;;;;:17;:23;;;;;;;;18570:24;18469:125;:152;;;;-1:-1:-1;;;;;;18611:10:0;;7313:42;18611:10;;18469:152;:185;;;;-1:-1:-1;;;;;;18638:16:0;;;;18469:185;:223;;;;-1:-1:-1;;;;;;18671:21:0;;18687:4;18671:21;;18469:223;18462:230;18377:323;-1:-1:-1;;;18377:323:0:o;20362:1015::-;8990:16;:23;;-1:-1:-1;;;;8990:23:0;-1:-1:-1;;;8990:23:0;;;20487:9:::1;::::0;20469:15:::1;::::0;20451::::1;::::0;:33:::1;::::0;20469:15;20451:33:::1;:::i;:::-;:45;;;;:::i;:::-;20447:76;;20516:7;;20447:76;20533:17;20648:1;20634:9;;20616:15;;20598;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;20578:15;::::0;20555:38:::1;::::0;:20;:38:::1;:::i;:::-;20554:90;;;;:::i;:::-;20553:96;;;;:::i;:::-;20533:116:::0;-1:-1:-1;20662:20:0::1;20685:32;20533:116:::0;20685:20;:32:::1;:::i;:::-;20662:55;;20728:30;20745:12;20728:16;:30::i;:::-;20771:22;20796:21;20771:46;;20828:24;20944:1;20930:9;;20912:15;;20894;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;20874:15;::::0;20857:32:::1;::::0;:14;:32:::1;:::i;:::-;20856:84;;;;:::i;:::-;20855:90;;;;:::i;:::-;20828:117:::0;-1:-1:-1;20962:13:0;;20958:161:::1;;20992:41;21005:9;21016:16;20992:12;:41::i;:::-;21053:54;::::0;;14503:25:1;;;14559:2;14544:18;;14537:34;;;14587:18;;;14580:34;;;21053:54:0::1;::::0;14491:2:1;14476:18;21053:54:0::1;;;;;;;20958:161;21168:1;21133:32;21156:9:::0;21133:20;:32:::1;:::i;:::-;:36;21129:241;;;21186:16;::::0;21289:9:::1;::::0;21271:15:::1;::::0;-1:-1:-1;;;;;21186:16:0;;::::1;::::0;:114:::1;::::0;21271:27:::1;::::0;::::1;:::i;:::-;21251:15;::::0;21214:33:::1;21231:16:::0;21214:14;:33:::1;:::i;:::-;21213:53;;;;:::i;:::-;21212:87;;;;:::i;:::-;21186:114;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;21315:11:0::1;::::0;:43:::1;::::0;-1:-1:-1;;;;;21315:11:0;;::::1;::::0;21336:21:::1;21315:43:::0;::::1;;;::::0;:11:::1;:43:::0;:11;:43;21336:21;21315:11;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21129:241;20436:941;;;;9024:1;-1:-1:-1::0;9036:16:0;:24;;-1:-1:-1;;;;9036:24:0;;;20362:1015::o;22773:1216::-;22894:16;;22873:4;;22894:16;;22890:858;;;-1:-1:-1;;;;;15555:31:0;;15531:4;15555:31;;;:22;:31;;;;;;;;22930:56;;;-1:-1:-1;;;;;;15555:31:0;;15531:4;15555:31;;;:22;:31;;;;;;;;22961:25;22926:123;;;23007:26;;-1:-1:-1;;;23007:26:0;;11171:2:1;23007:26:0;;;11153:21:1;11210:2;11190:18;;;11183:30;-1:-1:-1;;;11229:18:1;;;11222:46;11285:18;;23007:26:0;10969:340:1;22926:123:0;23070:16;;;;;;;23065:672;;23107:28;23126:4;23132:2;23107:18;:28::i;:::-;23159:16;;;;;;;23158:17;:41;;;;;23179:20;23190:4;23196:2;23179:10;:20::i;:::-;23154:137;;;23224:47;;-1:-1:-1;;;23224:47:0;;8629:2:1;23224:47:0;;;8611:21:1;8668:2;8648:18;;;8641:30;8707:34;8687:18;;;8680:62;-1:-1:-1;;;8758:18:1;;;8751:35;8803:19;;23224:47:0;8427:401:1;23154:137:0;23065:672;;;23350:1;23335:12;;:16;:55;;;;-1:-1:-1;;;;;;23377:13:0;;;;;;:7;:13;;;;;;;;23335:55;:101;;;;;23416:20;23427:4;23433:2;23416:10;:20::i;:::-;23331:391;;;23513:13;;23498:12;;23483:27;;:12;:27;:::i;:::-;:43;23479:224;;;-1:-1:-1;;;;;23555:26:0;;;;;;:22;:26;;;;;:33;;-1:-1:-1;;23555:33:0;23584:4;23555:33;;;23615:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;23663:16:0;;-1:-1:-1;;;;;4926:32:1;;4908:51;;23663:16:0;;4896:2:1;4881:18;23663:16:0;;;;;;;23479:224;-1:-1:-1;;;;;23760:13:0;;;;;;:7;:13;;;;;:23;;23777:6;;23760:13;:23;;23777:6;;23760:23;:::i;:::-;;;;-1:-1:-1;23794:22:0;;-1:-1:-1;23820:7:0;23819:48;;23861:6;23819:48;;;23831:27;23841:4;23847:2;23851:6;23831:9;:27::i;:::-;-1:-1:-1;;;;;23878:11:0;;;;;;:7;:11;;;;;:29;;23794:73;;-1:-1:-1;23794:73:0;;23878:11;;;:29;;23794:73;;23878:29;:::i;:::-;;;;;;;;23940:2;-1:-1:-1;;;;;23925:34:0;23934:4;-1:-1:-1;;;;;23925:34:0;;23944:14;23925:34;;;;13280:25:1;;13268:2;13253:18;;13134:177;23925:34:0;;;;;;;;-1:-1:-1;23977:4:0;;22773:1216;-1:-1:-1;;;;;22773:1216:0:o;21385:417::-;21476:16;;;21490:1;21476:16;;;;;;;;21452:21;;21476:16;;;;;;;;;;-1:-1:-1;21476:16:0;21452:40;;21521:4;21503;21508:1;21503:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21503:23:0;;;:7;;;;;;;;;;:23;;;;21547:9;;:16;;;-1:-1:-1;;;21547:16:0;;;;:9;;;;;:14;;:16;;;;;21503:7;;21547:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21537:4;21542:1;21537:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21537:26:0;;;:7;;;;;;;;;:26;21576:9;;:218;;-1:-1:-1;;;21576:218:0;;:9;;;:60;;:218;;21651:11;;21576:9;;21721:4;;21748;;21768:15;;21576:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21441:361;21385:417;:::o;21810:332::-;21891:9;;:243;;-1:-1:-1;;;21891:243:0;;21957:4;21891:243;;;5620:34:1;5670:18;;;5663:34;;;21891:9:0;5713:18:1;;;5706:34;;;5756:18;;;5749:34;7313:42:0;5799:19:1;;;5792:44;22108:15:0;5852:19:1;;;5845:35;-1:-1:-1;;;;;21891:9:0;;;;:25;;21924:9;;5554:19:1;;21891:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21810:332;;:::o;22150:615::-;22232:16;;;;;;;22231:17;22223:65;;;;-1:-1:-1;;;22223:65:0;;8225:2:1;22223:65:0;;;8207:21:1;8264:2;8244:18;;;8237:30;8303:34;8283:18;;;8276:62;-1:-1:-1;;;8354:18:1;;;8347:33;8397:19;;22223:65:0;8023:399:1;22223:65:0;22304:20;22315:4;22321:2;22304:10;:20::i;:::-;22303:21;:37;;;;-1:-1:-1;22334:6:0;;-1:-1:-1;;;;;22328:12:0;;;22334:6;;22328:12;22303:37;22299:459;;;22361:13;;22378:1;22361:18;22357:161;;22415:19;:12;22430:4;22415:19;:::i;:::-;22400:12;:34;22357:161;;;22490:12;22475;:27;22357:161;-1:-1:-1;;;;;22534:23:0;;;;;;:17;:23;;;;;;;:30;;-1:-1:-1;;22534:30:0;22560:4;22534:30;;;;;;22579:16;:23;;-1:-1:-1;;22579:23:0;22534:30;22579:23;;;22632:15;22617:12;:30;22664:21;:28;;-1:-1:-1;;;;22664:28:0;-1:-1:-1;;;22664:28:0;;;22712:34;;;;;;6056:14:1;;6049:22;6031:41;;6019:2;6004:18;;5891:187;22712:34:0;;;;;;;;22150:615;;:::o;23997:899::-;24137:6;;24076:7;;;;-1:-1:-1;;;;;24129:14:0;;;24137:6;;24129:14;24125:383;;;24180:1;24164:13;24174:2;24164:9;:13::i;:::-;:17;24160:125;;;24241:11;;-1:-1:-1;;;;;24227:10:0;;;;;;:6;:10;;;;;;24209:28;;:15;:28;:::i;:::-;:43;;24201:68;;;;-1:-1:-1;;;24201:68:0;;7121:2:1;24201:68:0;;;7103:21:1;7160:2;7140:18;;;7133:30;-1:-1:-1;;;7179:18:1;;;7172:42;7231:18;;24201:68:0;6919:336:1;24201:68:0;-1:-1:-1;;;;;;24301:10:0;;;;;;:6;:10;;;;;24314:15;24301:28;;24357:7;;24125:383;;;24394:6;;-1:-1:-1;;;;;24388:12:0;;;24394:6;;24388:12;24384:124;;;-1:-1:-1;24430:8:0;;24384:124;;;-1:-1:-1;24484:12:0;;24384:124;24524:20;24535:4;24541:2;24524:10;:20::i;:::-;24520:156;;;24564:13;;:18;;:56;;;24618:2;24603:14;;:17;;;;:::i;:::-;24586:13;;:34;;24564:56;24560:105;;;24641:8;;;24560:105;24688:17;6902:6;24708:19;24717:10;24708:6;:19;:::i;:::-;:38;;;;:::i;:::-;24775:4;24759:22;;;;:7;:22;;;;;:35;;24688:58;;-1:-1:-1;24688:58:0;;24759:22;;;:35;;24688:58;;24759:35;:::i;:::-;;;;-1:-1:-1;;24810:40:0;;13280:25:1;;;24833:4:0;;-1:-1:-1;;;;;24810:40:0;;;;;13268:2:1;13253:18;24810:40:0;;;;;;;24870:18;24879:9;24870:6;:18;:::i;:::-;24863:25;23997:899;-1:-1:-1;;;;;;23997:899: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:404::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;-1:-1:-1;1013:2:1;998:18;;985:32;1026:33;985:32;1026:33;:::i;:::-;1078:7;1068:17;;;687:404;;;;;:::o;1489:456::-;1566:6;1574;1582;1635:2;1623:9;1614:7;1610:23;1606:32;1603:52;;;1651:1;1648;1641:12;1603:52;1690:9;1677:23;1709:31;1734:5;1709:31;:::i;:::-;1759:5;-1:-1:-1;1816:2:1;1801:18;;1788:32;1829:33;1788:32;1829:33;:::i;:::-;1489:456;;1881:7;;-1:-1:-1;;;1935:2:1;1920:18;;;;1907:32;;1489:456::o;1950:315::-;2015:6;2023;2076:2;2064:9;2055:7;2051:23;2047:32;2044:52;;;2092:1;2089;2082:12;2044:52;2131:9;2118:23;2150:31;2175:5;2150:31;:::i;:::-;2200:5;-1:-1:-1;2224:35:1;2255:2;2240:18;;2224:35;:::i;:::-;2214:45;;1950:315;;;;;:::o;2270:::-;2338:6;2346;2399:2;2387:9;2378:7;2374:23;2370:32;2367:52;;;2415:1;2412;2405:12;2367:52;2454:9;2441:23;2473:31;2498:5;2473:31;:::i;:::-;2523:5;2575:2;2560:18;;;;2547:32;;-1:-1:-1;;;2270:315:1:o;2590:180::-;2646:6;2699:2;2687:9;2678:7;2674:23;2670:32;2667:52;;;2715:1;2712;2705:12;2667:52;2738:26;2754:9;2738:26;:::i;2775:248::-;2837:6;2845;2898:2;2886:9;2877:7;2873:23;2869:32;2866:52;;;2914:1;2911;2904:12;2866:52;2937:26;2953:9;2937:26;:::i;3028:180::-;3087:6;3140:2;3128:9;3119:7;3115:23;3111:32;3108:52;;;3156:1;3153;3146:12;3108:52;-1:-1:-1;3179:23:1;;3028:180;-1:-1:-1;3028:180:1:o;3213:248::-;3281:6;3289;3342:2;3330:9;3321:7;3317:23;3313:32;3310:52;;;3358:1;3355;3348:12;3310:52;-1:-1:-1;;3381:23:1;;;3451:2;3436:18;;;3423:32;;-1:-1:-1;3213:248:1:o;3466:316::-;3543:6;3551;3559;3612:2;3600:9;3591:7;3587:23;3583:32;3580:52;;;3628:1;3625;3618:12;3580:52;-1:-1:-1;;3651:23:1;;;3721:2;3706:18;;3693:32;;-1:-1:-1;3772:2:1;3757:18;;;3744:32;;3466:316;-1:-1:-1;3466:316:1:o;3787:306::-;3875:6;3883;3891;3944:2;3932:9;3923:7;3919:23;3915:32;3912:52;;;3960:1;3957;3950:12;3912:52;3989:9;3983:16;3973:26;;4039:2;4028:9;4024:18;4018:25;4008:35;;4083:2;4072:9;4068:18;4062:25;4052:35;;3787:306;;;;;:::o;4098:385::-;4184:6;4192;4200;4208;4261:3;4249:9;4240:7;4236:23;4232:33;4229:53;;;4278:1;4275;4268:12;4229:53;-1:-1:-1;;4301:23:1;;;4371:2;4356:18;;4343:32;;-1:-1:-1;4422:2:1;4407:18;;4394:32;;4473:2;4458:18;4445:32;;-1:-1:-1;4098:385:1;-1:-1:-1;4098:385:1:o;4488:269::-;4545:6;4598:2;4586:9;4577:7;4573:23;4569:32;4566:52;;;4614:1;4611;4604:12;4566:52;4653:9;4640:23;4703:4;4696:5;4692:16;4685:5;4682:27;4672:55;;4723:1;4720;4713:12;6317:597;6429:4;6458:2;6487;6476:9;6469:21;6519:6;6513:13;6562:6;6557:2;6546:9;6542:18;6535:34;6587:1;6597:140;6611:6;6608:1;6605:13;6597:140;;;6706:14;;;6702:23;;6696:30;6672:17;;;6691:2;6668:26;6661:66;6626:10;;6597:140;;;6755:6;6752:1;6749:13;6746:91;;;6825:1;6820:2;6811:6;6800:9;6796:22;6792:31;6785:42;6746:91;-1:-1:-1;6898:2:1;6877:15;-1:-1:-1;;6873:29:1;6858:45;;;;6905:2;6854:54;;6317:597;-1:-1:-1;;;6317:597:1:o;7677:341::-;7879:2;7861:21;;;7918:2;7898:18;;;7891:30;-1:-1:-1;;;7952:2:1;7937:18;;7930:47;8009:2;7994:18;;7677:341::o;9185:399::-;9387:2;9369:21;;;9426:2;9406:18;;;9399:30;9465:34;9460:2;9445:18;;9438:62;-1:-1:-1;;;9531:2:1;9516:18;;9509:33;9574:3;9559:19;;9185:399::o;12704:425::-;12906:2;12888:21;;;12945:2;12925:18;;;12918:30;12984:34;12979:2;12964:18;;12957:62;13055:31;13050:2;13035:18;;13028:59;13119:3;13104:19;;12704:425::o;13316:980::-;13578:4;13626:3;13615:9;13611:19;13657:6;13646:9;13639:25;13683:2;13721:6;13716:2;13705:9;13701:18;13694:34;13764:3;13759:2;13748:9;13744:18;13737:31;13788:6;13823;13817:13;13854:6;13846;13839:22;13892:3;13881:9;13877:19;13870:26;;13931:2;13923:6;13919:15;13905:29;;13952:1;13962:195;13976:6;13973:1;13970:13;13962:195;;;14041:13;;-1:-1:-1;;;;;14037:39:1;14025:52;;14132:15;;;;14097:12;;;;14073:1;13991:9;13962:195;;;-1:-1:-1;;;;;;;14213:32:1;;;;14208:2;14193:18;;14186:60;-1:-1:-1;;;14277:3:1;14262:19;14255:35;14174:3;13316:980;-1:-1:-1;;;13316:980:1:o;14814:128::-;14854:3;14885:1;14881:6;14878:1;14875:13;14872:39;;;14891:18;;:::i;:::-;-1:-1:-1;14927:9:1;;14814:128::o;14947:217::-;14987:1;15013;15003:132;;15057:10;15052:3;15048:20;15045:1;15038:31;15092:4;15089:1;15082:15;15120:4;15117:1;15110:15;15003:132;-1:-1:-1;15149:9:1;;14947:217::o;15169:168::-;15209:7;15275:1;15271;15267:6;15263:14;15260:1;15257:21;15252:1;15245:9;15238:17;15234:45;15231:71;;;15282:18;;:::i;:::-;-1:-1:-1;15322:9:1;;15169:168::o;15342:125::-;15382:4;15410:1;15407;15404:8;15401:34;;;15415:18;;:::i;:::-;-1:-1:-1;15452:9:1;;15342:125::o;15472:380::-;15551:1;15547:12;;;;15594;;;15615:61;;15669:4;15661:6;15657:17;15647:27;;15615:61;15722:2;15714:6;15711:14;15691:18;15688:38;15685:161;;;15768:10;15763:3;15759:20;15756:1;15749:31;15803:4;15800:1;15793:15;15831:4;15828:1;15821:15;15685:161;;15472:380;;;:::o;15857:135::-;15896:3;-1:-1:-1;;15917:17:1;;15914:43;;;15937:18;;:::i;:::-;-1:-1:-1;15984:1:1;15973:13;;15857:135::o;15997:127::-;16058:10;16053:3;16049:20;16046:1;16039:31;16089:4;16086:1;16079:15;16113:4;16110:1;16103:15;16129:127;16190:10;16185:3;16181:20;16178:1;16171:31;16221:4;16218:1;16211:15;16245:4;16242:1;16235:15;16393:131;-1:-1:-1;;;;;16468:31:1;;16458:42;;16448:70;;16514:1;16511;16504:12;16448:70;16393:131;:::o

Swarm Source

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