ETH Price: $3,068.08 (+1.40%)
Gas: 6 Gwei

Token

Cosmic Kiss (CKISS)
 

Overview

Max Total Supply

1,000,000,000 CKISS

Holders

216

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
cryptoninja.eth
Balance
517,241.900642048562269974 CKISS

Value
$0.00
0x1de2418f4ac0124bd1cfb7d84043bd8279a5fe90
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:
CosmicKiss

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-07
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

interface IERC20 {
  function totalSupply() external view returns (uint256);
  function decimals() external view returns (uint8);
  function symbol() external view returns (string memory);
  function name() external view returns (string memory);
  function getOwner() external view returns (address);
  function balanceOf(address account) external view returns (uint256);
  function transfer(address recipient, uint256 amount) external returns (bool);
  function allowance(address _owner, address spender) external view returns (uint256);
  function approve(address spender, uint256 amount) external returns (bool);
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IFactoryV2 {
    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 IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface AntiSnipe {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ab) external;
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
    function getTax() external returns (uint256);
}

contract CosmicKiss is 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 _isExcludedFromLimits;
    mapping (address => bool) private _liquidityHolders;
   
    uint256 constant private startingSupply = 1_000_000_000;
    string constant private _name = "Cosmic Kiss";
    string constant private _symbol = "CKISS";
    uint8 constant private _decimals = 18;

    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    struct Ratios {
        uint16 liquidity;
        uint16 marketing;
        uint16 team;
        uint16 staking;
        uint16 charity;
        uint16 total;
    }

    Fees public _taxRates = Fees({
        buyFee: 1000,
        sellFee: 2000,
        transferFee: 1000
        });

    Ratios public _ratios = Ratios({
        liquidity: 9,
        marketing: 9,
        team: 6,
        staking: 3,
        charity: 3,
        total: 27
        });

    uint256 constant public maxBuyTaxes = 2000;
    uint256 constant public maxSellTaxes = 2000;
    uint256 constant public maxTransferTaxes = 2000;
    uint256 constant masterTaxDivisor = 10000;

    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable team;
        address payable charity;
        address staking;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0xE4f153c5f1F5617AEfe1Aaabd8e454ED8D1E1d26),
        team: payable(0x2db977CC42Cd090B1e95D96eF441789B815f659a),
        charity: payable(0x4EC35b761BBA1E3A5d321712a5A9c6188287F738),
        staking: 0xc4dC9263bb7E5D292F2e8A925a7797187e4fb791
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public contractSwapTimer = 0 seconds;
    uint256 private lastSwap;
    uint256 public swapThreshold;
    uint256 public swapAmount;

    uint256 private _maxTxAmountBuy = (_tTotal * 75) / 10000;
    uint256 private _maxTxAmountSell = (_tTotal * 5) / 1000;
    uint256 private _maxWalletSize = (_tTotal * 1) / 100;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    AntiSnipe antiSnipe;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[msg.sender] = _tTotal;
        emit Transfer(address(0), msg.sender, _tTotal);

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

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else {
            revert();
        }

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

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

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.
    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(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 pure override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure 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(msg.sender, recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(msg.sender, 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 approveContractContingency() public onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

    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 setNewRouter(address newRouter) public onlyOwner {
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

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

    function setInitializer(address initializer) external onlyOwner {
        require(!_hasLiqBeenAdded);
        require(initializer != address(this), "Can't be self.");
        antiSnipe = AntiSnipe(initializer);
    }

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner {
        antiSnipe.setBlacklistEnabled(account, enabled);
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        antiSnipe.setBlacklistEnabledMultiple(accounts, enabled);
    }

    function isBlacklisted(address account) public view returns (bool) {
        return antiSnipe.isBlacklisted(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        antiSnipe.setProtections(_antiSnipe, _antiBlock);
    }

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

    function setRatios(uint16 liquidity, uint16 marketing, uint16 team, uint16 staking, uint16 charity) external onlyOwner {
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.team = team;
        _ratios.staking = staking;
        _ratios.charity = charity;
        _ratios.total = liquidity + marketing + team + charity;
    }

    function setMaxTxPercents(uint256 percentBuy, uint256 divisorBuy, uint256 percentSell, uint256 divisorSell) external onlyOwner {
        require((_tTotal * percentBuy) / divisorBuy >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply.");
        require((_tTotal * percentSell) / divisorSell >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply.");
        _maxTxAmountBuy = (_tTotal * percentBuy) / divisorBuy;
        _maxTxAmountSell = (_tTotal * percentSell) / divisorSell;
    }

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

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

    function isExcludedFromLimits(address account) public view returns (bool) {
        return _isExcludedFromLimits[account];
    }

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

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

    function getMaxTXs() public view returns (uint256, uint256) {
        return (_maxTxAmountBuy / (10**_decimals), _maxTxAmountSell / (10**_decimals));
    }

    function getMaxWallet() public view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }

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

    function setWallets(address payable marketing, address payable team, address payable charity, address staking) external onlyOwner {
        _taxWallets.marketing = payable(marketing);
        _taxWallets.team = payable(team);
        _taxWallets.charity = payable(charity);
        _taxWallets.staking = staking;
    }

    function setContractSwapEnabled(bool enabled) external onlyOwner {
        contractSwapEnabled = enabled;
        emit ContractSwapEnabledUpdated(enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _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: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if(buy){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmountBuy, "Transfer amount exceeds the maxTxAmount.");
                }
            } else if (sell) {
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmountSell, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if(to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

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

        if (sell) {
            if (!inSwap
                && contractSwapEnabled
            ) {
                if (lastSwap + contractSwapTimer < block.timestamp) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                        contractSwap(contractTokenBalance);
                        lastSwap = block.timestamp;
                    }
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) private lockTheSwap {
        Ratios memory ratios = _ratios;
        if (ratios.total == 0) {
            return;
        }

        if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / ratios.total) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapAmt,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amtBalance = address(this).balance;
        uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt;

        if (toLiquify > 0) {
            dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                DEAD,
                block.timestamp
            );
            emit AutoLiquify(liquidityBalance, toLiquify);
        }

        amtBalance -= liquidityBalance;
        ratios.total -= ratios.liquidity;
        uint256 teamBalance = (amtBalance * ratios.team) / ratios.total;
        uint256 charityBalance = (amtBalance * ratios.charity) / ratios.total;
        uint256 marketingBalance = amtBalance - (teamBalance + charityBalance);
        if (ratios.team > 0) {
            _taxWallets.team.transfer(teamBalance);
        }
        if (ratios.charity > 0) {
            _taxWallets.charity.transfer(charityBalance);
        }
        if (ratios.marketing > 0) {
            _taxWallets.marketing.transfer(marketingBalance);
        }
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            if(address(antiSnipe) == address(0)){
                antiSnipe = AntiSnipe(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if(address(antiSnipe) == address(0)){
            antiSnipe = AntiSnipe(address(this));
        }
        try antiSnipe.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        tradingEnabled = true;
        swapThreshold = balanceOf(lpPair) / 10000;
        swapAmount = (balanceOf(lpPair) * 15) / 10000;
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(_owner).transfer(address(this).balance);
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint8 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]);
            _transfer(msg.sender, accounts[i], amounts[i]*10**_decimals);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee, bool buy, bool sell, bool other) private returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        }

        if (_hasLimits(from, to)) {
            bool checked;
            try antiSnipe.checkUser(from, to, amount) returns (bool check) {
                checked = check;
            } catch {
                revert();
            }

            if(!checked) {
                revert();
            }
        }

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

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

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        uint256 currentFee = antiSnipe.getTax();
        if (currentFee == 0) {
            if (buy) {
                currentFee = _taxRates.buyFee;
            } else if (sell) {
                currentFee = _taxRates.sellFee;
            } else {
                currentFee = _taxRates.transferFee;
            }
        }

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        uint256 stakingAmount;
        if (_ratios.staking > 0) {
            stakingAmount = (feeAmount * _ratios.staking) / (_ratios.total + _ratios.staking);
            _tOwned[_taxWallets.staking] += stakingAmount;
            emit Transfer(from, _taxWallets.staking, stakingAmount);
            feeAmount -= stakingAmount;
        }

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

        return amount - (feeAmount + stakingAmount);
    }
}

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":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"staking","type":"uint16"},{"internalType":"uint16","name":"charity","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"team","type":"address"},{"internalType":"address payable","name":"charity","type":"address"},{"internalType":"address","name":"staking","type":"address"}],"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":[],"name":"approveContractContingency","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":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMaxTXs","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","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":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setContractSwapEnabled","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":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","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":"percentBuy","type":"uint256"},{"internalType":"uint256","name":"divisorBuy","type":"uint256"},{"internalType":"uint256","name":"percentSell","type":"uint256"},{"internalType":"uint256","name":"divisorSell","type":"uint256"}],"name":"setMaxTxPercents","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":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"staking","type":"uint16"},{"internalType":"uint16","name":"charity","type":"uint16"}],"name":"setRatios","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"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"team","type":"address"},{"internalType":"address payable","name":"charity","type":"address"},{"internalType":"address","name":"staking","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"}]

600060038181556103e860808190526107d060a05260c0526008805465ffffffffffff19166503e807d003e8179055600960e081905261010081905260066101205261014082905261016091909152601b6101805280546001600160601b0319166a1b0003000300060009000917905561022060405273e4f153c5f1f5617aefe1aaabd8e454ed8d1e1d266101a0819052732db977cc42cd090b1e95d96ef441789b815f659a6101c0819052734ec35b761bba1e3a5d321712a5a9c6188287f7386101e081905273c4dc9263bb7e5d292f2e8a925a7797187e4fb791610200819052600c80546001600160a01b03199081169095179055600d80548516909317909255600e805484169091179055600f80549092161790556010805461ff0019169055601155612710620001366012600a6200081e565b6200014690633b9aca0062000836565b6200015390604b62000836565b6200015f919062000858565b6015556103e8620001736012600a6200081e565b6200018390633b9aca0062000836565b6200019090600562000836565b6200019c919062000858565b6016556064620001af6012600a6200081e565b620001bf90633b9aca0062000836565b620001cc90600162000836565b620001d8919062000858565b6017556018805461ffff19169055620001f46012600a6200081e565b6200020490633b9aca0062000836565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002476012600a6200081e565b6200025790633b9aca0062000836565b60405190815260200160405180910390a3600080546001600160a01b031916331790556038461415620002b057600a80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620003a6565b4660611415620002e657600a80546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c3179055620003a6565b4660011480620002f65750466004145b80620003025750466003145b156200033457600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620003a6565b4661a86a14156200036b57600a80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d4179055620003a6565b4660fa1415620003a157600a80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c29179055620003a6565b600080fd5b600a60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042091906200087b565b6001600160a01b031663c9c65396600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000482573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a891906200087b565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620004f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200051b91906200087b565b600b80546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600a546200056a92918216911660001962000608565b600a54620005869030906001600160a01b031660001962000608565b600080546001600160a01b0390811682526005602090815260408084208054600160ff19918216811790925530865282862080548216831790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805482168317905585549094168552600790925290922080549091169091179055620008a6565b6001600160a01b0383166200065a5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620006a85760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000651565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200076057816000190482111562000744576200074462000709565b808516156200075257918102915b93841c939080029062000724565b509250929050565b600082620007795750600162000818565b81620007885750600062000818565b8160018114620007a15760028114620007ac57620007cc565b600191505062000818565b60ff841115620007c057620007c062000709565b50506001821b62000818565b5060208310610133831016604e8410600b8410161715620007f1575081810a62000818565b620007fd83836200071f565b806000190482111562000814576200081462000709565b0290505b92915050565b60006200082f60ff84168362000768565b9392505050565b600081600019048311821515161562000853576200085362000709565b500290565b6000826200087657634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200088e57600080fd5b81516001600160a01b03811681146200082f57600080fd5b6141a180620008b66000396000f3fe6080604052600436106103385760003560e01c80635c24b074116101b0578063b3d514fb116100ec578063eafb5a3c11610095578063f08f43a21161006f578063f08f43a214610a1d578063f94aa1b414610a3d578063fdb78c0e14610aa3578063fe575a8714610ac257600080fd5b8063eafb5a3c146109c8578063ee5d9c2d146109e8578063eec2744e146109fd57600080fd5b8063cf847706116100c6578063cf847706146108d2578063dd62ed3e1461096c578063e4fcfd18146109b257600080fd5b8063b3d514fb1461055c578063c0488b5614610892578063cab5ebea146108b257600080fd5b8063893d20e81161015957806395d89b411161013357806395d89b4114610802578063a9059cbb14610848578063adba5bca14610868578063b1b08f711461055c57600080fd5b8063893d20e8146107ba5780638a63bd9b146107d85780638a8c523c146107ed57600080fd5b8063715018a61161018a578063715018a61461076557806380c581d11461077a57806383672f3e1461079a57600080fd5b80635c24b074146106d65780635cce86cd146106f657806370a082311461072f57600080fd5b80632610eaca1161027f57806336fddb04116102285780634fb2e45d116102025780634fb2e45d1461063e5780634fbee1931461065e57806350a8e01614610697578063590ffdce146106b657600080fd5b806336fddb04146105e4578063452ed4f1146106045780634ada218b1461062457600080fd5b8063313ce56711610259578063313ce5671461058857806332cde664146105a457806334cd8260146105c457600080fd5b80632610eaca1461053c5780632b28fc7a1461055c5780632e8fa8211461057257600080fd5b80630758d924116102e157806318160ddd116102bb57806318160ddd146104e757806323b872dd146104fc578063260039571461051c57600080fd5b80630758d92414610482578063095ea7b3146104a25780630fa604e4146104d257600080fd5b806305bbedb61161031257806305bbedb6146103bd578063069d955f146103dd57806306fdde031461043357600080fd5b806303fd2a45146103445780630445b66714610377578063044df7261461039b57600080fd5b3661033f57005b600080fd5b34801561035057600080fd5b5061035a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038357600080fd5b5061038d60135481565b60405190815260200161036e565b3480156103a757600080fd5b506103bb6103b63660046138c9565b610ae2565b005b3480156103c957600080fd5b506103bb6103d8366004613a0f565b610bbf565b3480156103e957600080fd5b5060085461040e9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161036e565b34801561043f57600080fd5b5060408051808201909152600b81527f436f736d6963204b69737300000000000000000000000000000000000000000060208201525b60405161036e9190613a56565b34801561048e57600080fd5b50600a5461035a906001600160a01b031681565b3480156104ae57600080fd5b506104c26104bd366004613aab565b610c5d565b604051901515815260200161036e565b3480156104de57600080fd5b5061038d610c74565b3480156104f357600080fd5b5061038d610c94565b34801561050857600080fd5b506104c2610517366004613ad7565b610cd3565b34801561052857600080fd5b506103bb610537366004613b18565b610d4b565b34801561054857600080fd5b506103bb610557366004613b3a565b610e9b565b34801561056857600080fd5b5061038d6107d081565b34801561057e57600080fd5b5061038d60145481565b34801561059457600080fd5b506040516012815260200161036e565b3480156105b057600080fd5b506103bb6105bf366004613c0c565b610fb5565b3480156105d057600080fd5b506103bb6105df366004613c4f565b6110f0565b3480156105f057600080fd5b506103bb6105ff366004613c8a565b6111ad565b34801561061057600080fd5b50600b5461035a906001600160a01b031681565b34801561063057600080fd5b506018546104c29060ff1681565b34801561064a57600080fd5b506103bb610659366004613ca8565b611226565b34801561066a57600080fd5b506104c2610679366004613ca8565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106a357600080fd5b506018546104c290610100900460ff1681565b3480156106c257600080fd5b506103bb6106d1366004613c8a565b61143f565b3480156106e257600080fd5b506103bb6106f1366004613ca8565b6114b8565b34801561070257600080fd5b506104c2610711366004613ca8565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561073b57600080fd5b5061038d61074a366004613ca8565b6001600160a01b031660009081526001602052604090205490565b34801561077157600080fd5b506103bb6115b4565b34801561078657600080fd5b506103bb610795366004613c8a565b61166f565b3480156107a657600080fd5b506103bb6107b5366004613cc5565b611819565b3480156107c657600080fd5b506000546001600160a01b031661035a565b3480156107e457600080fd5b506104c26118cf565b3480156107f957600080fd5b506103bb61193e565b34801561080e57600080fd5b5060408051808201909152600581527f434b4953530000000000000000000000000000000000000000000000000000006020820152610475565b34801561085457600080fd5b506104c2610863366004613aab565b611b9b565b34801561087457600080fd5b5061087d611bb2565b6040805192835260208301919091520161036e565b34801561089e57600080fd5b506103bb6108ad366004613d21565b611bef565b3480156108be57600080fd5b506103bb6108cd366004613d53565b611e3f565b3480156108de57600080fd5b5060095461092f9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000090041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c00161036e565b34801561097857600080fd5b5061038d610987366004613d70565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156109be57600080fd5b5061038d60115481565b3480156109d457600080fd5b506103bb6109e3366004613ca8565b611ee1565b3480156109f457600080fd5b506103bb6122b1565b348015610a0957600080fd5b506103bb610a18366004613c8a565b612394565b348015610a2957600080fd5b506103bb610a38366004613d9e565b61243c565b348015610a4957600080fd5b50600c54600d54600e54600f54610a70936001600160a01b03908116938116928116911684565b604080516001600160a01b039586168152938516602085015291841691830191909152909116606082015260800161036e565b348015610aaf57600080fd5b506010546104c290610100900460ff1681565b348015610ace57600080fd5b506104c2610add366004613ca8565b6125c0565b6000546001600160a01b03163314610b355760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6018546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610ba357600080fd5b505af1158015610bb7573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610c0d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6018546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610b899085908590600401613e47565b6000610c6a33848461264e565b5060015b92915050565b6000610c826012600a613f7e565b601754610c8f9190613f8d565b905090565b6000610ca26012600a613f7e565b610cb090633b9aca00613fc8565b610cb957600080fd5b610cc56012600a613f7e565b610c8f90633b9aca00613fc8565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610d38576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610d32908490613fe7565b90915550505b610d4384848461275b565b949350505050565b6000546001600160a01b03163314610d995760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6103e8610da86012600a613f7e565b610db690633b9aca00613fc8565b610dc09190613f8d565b8183610dce6012600a613f7e565b610ddc90633b9aca00613fc8565b610de69190613fc8565b610df09190613f8d565b1015610e645760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610b2c565b8082610e726012600a613f7e565b610e8090633b9aca00613fc8565b610e8a9190613fc8565b610e949190613f8d565b6017555050565b8051825114610eec5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b2c565b60005b82518160ff161015610fb057818160ff1681518110610f1057610f10613ffe565b6020026020010151610f37336001600160a01b031660009081526001602052604090205490565b1015610f4257600080fd5b610f9d33848360ff1681518110610f5b57610f5b613ffe565b60200260200101516012600a610f719190613f7e565b858560ff1681518110610f8657610f86613ffe565b6020026020010151610f989190613fc8565b61275b565b5080610fa88161402d565b915050610eef565b505050565b6000546001600160a01b031633146110035760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6107d08361ffff161115801561101f57506107d08261ffff1611155b801561103157506107d08161ffff1611155b61107d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b2c565b6008805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b0316331461113e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b838561114c6012600a613f7e565b61115a90633b9aca00613fc8565b6111649190613fc8565b61116e9190613f8d565b601355818361117f6012600a613f7e565b61118d90633b9aca00613fc8565b6111979190613fc8565b6111a19190613f8d565b60145560115550505050565b6000546001600160a01b031633146111fb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112745760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6001600160a01b0381166112f05760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b2c565b6001600160a01b03811661dead14156113715760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b2c565b6000805461138a916001600160a01b039091169061143f565b61139581600161143f565b600080546001600160a01b0316815260016020526040902054156113dc57600080546001600160a01b031680825260016020526040909120546113da9190839061275b565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b0316331461148d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b601854610100900460ff161561151b57600080fd5b6001600160a01b0381163014156115745760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b2c565b601880546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000546001600160a01b031633146116025760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6000805461161b916001600160a01b039091169061143f565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146116bd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b80611734576001600160a01b03828116600081815260026020526040808220805460ff1916905560185490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610b89565b6003541561179b576203f4806003544261174e9190613fe7565b1161179b5760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610b2c565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560185491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610b89565b5050565b6000546001600160a01b031633146118675760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b600c80546001600160a01b039586167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600d805494861694821694909417909355600e805492851692841692909217909155600f8054919093169116179055565b600080546001600160a01b0316331461191e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b600a546119389030906001600160a01b031660001961264e565b50600190565b6000546001600160a01b0316331461198c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b60185460ff16156119df5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b2c565b601854610100900460ff16611a365760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b2c565b6018546201000090046001600160a01b0316611a7c57601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601854600b546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611b0757600080fd5b505af1925050508015611b18575060015b506018805460ff19166001179055600b5461271090611b55906001600160a01b03166001600160a01b031660009081526001602052604090205490565b611b5f9190613f8d565b601355600b546001600160a01b031660009081526001602052604090205461271090611b8c90600f613fc8565b611b969190613f8d565b601455565b6000611ba833848461275b565b5060019392505050565b600080611bc16012600a613f7e565b601554611bce9190613f8d565b611bda6012600a613f7e565b601654611be79190613f8d565b915091509091565b6000546001600160a01b03163314611c3d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6103e8611c4c6012600a613f7e565b611c5a90633b9aca00613fc8565b611c649190613f8d565b8385611c726012600a613f7e565b611c8090633b9aca00613fc8565b611c8a9190613fc8565b611c949190613f8d565b1015611d085760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b2c565b6103e8611d176012600a613f7e565b611d2590633b9aca00613fc8565b611d2f9190613f8d565b8183611d3d6012600a613f7e565b611d4b90633b9aca00613fc8565b611d559190613fc8565b611d5f9190613f8d565b1015611dd35760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b2c565b8284611de16012600a613f7e565b611def90633b9aca00613fc8565b611df99190613fc8565b611e039190613f8d565b6015558082611e146012600a613f7e565b611e2290633b9aca00613fc8565b611e2c9190613fc8565b611e369190613f8d565b60165550505050565b6000546001600160a01b03163314611e8d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b601080548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611ed690831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611f2f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f98919061404d565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612009919061404d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561206c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612090919061404d565b90506001600160a01b03811661223957816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612102919061404d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612173919061404d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156121d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fc919061404d565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905561226d565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155610fb090309060001961264e565b6000546001600160a01b031633146122ff5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b601854610100900460ff16156123575760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b2c565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612391573d6000803e3d6000fd5b50565b6000546001600160a01b031633146123e25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6018546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610b89565b6000546001600160a01b0316331461248a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6009805461ffff8781167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000087831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000868316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1617660100000000000085831602177fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff1668010000000000000000918416919091021790558083612563868861406a565b61256d919061406a565b612577919061406a565b6009805461ffff929092166a0100000000000000000000027fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff9092169190911790555050505050565b6018546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa15801561262a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6e9190614090565b6001600160a01b0383166126a45760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b2c565b6001600160a01b0382166126fa5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b2c565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166127d95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b2c565b6001600160a01b0383166128555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610b2c565b600082116128cb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610b2c565b6001600160a01b0384166000908152600260205260408120548190819060ff16156128f95760019250612927565b6001600160a01b03861660009081526002602052604090205460ff16156129235760019150612927565b5060015b6129318787612cd2565b15612bf95760185460ff166129885760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b2c565b8215612a52576001600160a01b03871660009081526006602052604090205460ff161580156129d057506001600160a01b03861660009081526006602052604090205460ff16155b15612a4d57601554851115612a4d5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610b2c565b612b17565b8115612b17576001600160a01b03871660009081526006602052604090205460ff16158015612a9a57506001600160a01b03861660009081526006602052604090205460ff16155b15612b1757601654851115612b175760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610b2c565b600a546001600160a01b03878116911614801590612b33575081155b15612bf9576001600160a01b03861660009081526006602052604090205460ff16612bf95760175485612b7b886001600160a01b031660009081526001602052604090205490565b612b8591906140ad565b1115612bf95760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610b2c565b6001600160a01b03871660009081526005602052604090205460019060ff1680612c3b57506001600160a01b03871660009081526005602052604090205460ff165b15612c44575060005b8215612cb75760105460ff16158015612c645750601054610100900460ff165b15612cb75742601154601254612c7a91906140ad565b1015612cb757306000908152600160205260409020546013548110612cb5576014548110612ca757506014545b612cb081612da7565b426012555b505b612cc6888888848888886132d6565b98975050505050505050565b600080546001600160a01b03848116911614801590612cff57506000546001600160a01b03838116911614155b8015612d1657506000546001600160a01b03163214155b8015612d3b57506001600160a01b03821660009081526007602052604090205460ff16155b8015612d6057506001600160a01b03831660009081526007602052604090205460ff16155b8015612d7757506001600160a01b03821661dead14155b8015612d8b57506001600160a01b03821615155b8015612da057506001600160a01b0383163014155b9392505050565b6010805460ff191660011790556040805160c08101825260095461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000008104831660808301526a0100000000000000000000900490911660a08201819052612e2d57506132c9565b306000908152600460209081526040808320600a546001600160a01b0316845290915290205460001914612e8657306000908152600460209081526040808320600a546001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836000015161ffff1685612ea79190613fc8565b612eb19190613f8d565b612ebb9190613f8d565b90506000612ec98285613fe7565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612f0357612f03613ffe565b6001600160a01b03928316602091820292909201810191909152600a54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f99919061404d565b81600181518110612fac57612fac613ffe565b6001600160a01b039283166020918202929092010152600a546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac9479061300b9085906000908690309042906004016140c5565b600060405180830381600087803b15801561302557600080fd5b505af1158015613039573d6000803e3d6000fd5b504792506000915084905061304e8684613fc8565b6130589190613f8d565b9050841561314957600a546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156130e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061310c9190614101565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6131538183613fe7565b915085600001518660a00181815161316b919061412f565b61ffff90811690915260a088015160408901516000935090821691613191911685613fc8565b61319b9190613f8d565b905060008760a0015161ffff16886080015161ffff16856131bc9190613fc8565b6131c69190613f8d565b905060006131d482846140ad565b6131de9086613fe7565b60408a015190915061ffff161561322b57600d546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015613229573d6000803e3d6000fd5b505b608089015161ffff161561327557600e546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015613273573d6000803e3d6000fd5b505b602089015161ffff16156132bf57600c546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156132bd573d6000803e3d6000fd5b505b5050505050505050505b506010805460ff19169055565b601854600090610100900460ff16613382576132f28888613516565b601854610100900460ff1615801561330f575061330f8888612cd2565b156133825760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610b2c565b61338c8888612cd2565b1561343f576018546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613428575060408051601f3d908101601f1916820190925261342591810190614090565b60015b61343157600080fd5b90508061343d57600080fd5b505b6001600160a01b03881660009081526001602052604081208054889290613467908490613fe7565b90915550600090508561347a5786613486565b6134868986868a613674565b6001600160a01b0389166000908152600160205260408120805492935083929091906134b39084906140ad565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134ff91815260200190565b60405180910390a350600198975050505050505050565b601854610100900460ff16156135945760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610b2c565b61359e8282612cd2565b1580156135b85750600b546001600160a01b038281169116145b15611815576001600160a01b038083166000908152600760205260409020805460ff191660011790556018805461ff00191661010017908190556201000090041661362d57601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6010805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b600080601860029054906101000a90046001600160a01b03166001600160a01b03166354b762a66040518163ffffffff1660e01b81526004016020604051808303816000875af11580156136cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f09190614152565b90508061373457841561370a575060085461ffff16613734565b8315613723575060085462010000900461ffff16613734565b50600854640100000000900461ffff165b60006127106137438386613fc8565b61374d9190613f8d565b6009549091506000906601000000000000900461ffff1615613843576009546137949061ffff660100000000000082048116916a010000000000000000000090041661406a565b60095461ffff918216916137b391660100000000000090041684613fc8565b6137bd9190613f8d565b600f546001600160a01b03166000908152600160205260408120805492935083929091906137ec9084906140ad565b9091555050600f546040518281526001600160a01b03918216918a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36138408183613fe7565b91505b30600090815260016020526040812080548492906138629084906140ad565b909155505060405182815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36138b181836140ad565b612cc69086613fe7565b801515811461239157600080fd5b600080604083850312156138dc57600080fd5b82356138e7816138bb565b915060208301356138f7816138bb565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561395a5761395a613902565b604052919050565b600067ffffffffffffffff82111561397c5761397c613902565b5060051b60200190565b6001600160a01b038116811461239157600080fd5b600082601f8301126139ac57600080fd5b813560206139c16139bc83613962565b613931565b82815260059290921b840181019181810190868411156139e057600080fd5b8286015b84811015613a045780356139f781613986565b83529183019183016139e4565b509695505050505050565b60008060408385031215613a2257600080fd5b823567ffffffffffffffff811115613a3957600080fd5b613a458582860161399b565b92505060208301356138f7816138bb565b600060208083528351808285015260005b81811015613a8357858101830151858201604001528201613a67565b81811115613a95576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215613abe57600080fd5b8235613ac981613986565b946020939093013593505050565b600080600060608486031215613aec57600080fd5b8335613af781613986565b92506020840135613b0781613986565b929592945050506040919091013590565b60008060408385031215613b2b57600080fd5b50508035926020909101359150565b60008060408385031215613b4d57600080fd5b823567ffffffffffffffff80821115613b6557600080fd5b613b718683870161399b565b9350602091508185013581811115613b8857600080fd5b85019050601f81018613613b9b57600080fd5b8035613ba96139bc82613962565b81815260059190911b82018301908381019088831115613bc857600080fd5b928401925b82841015613be657833582529284019290840190613bcd565b80955050505050509250929050565b803561ffff81168114613c0757600080fd5b919050565b600080600060608486031215613c2157600080fd5b613c2a84613bf5565b9250613c3860208501613bf5565b9150613c4660408501613bf5565b90509250925092565b600080600080600060a08688031215613c6757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215613c9d57600080fd5b82356138e781613986565b600060208284031215613cba57600080fd5b8135612da081613986565b60008060008060808587031215613cdb57600080fd5b8435613ce681613986565b93506020850135613cf681613986565b92506040850135613d0681613986565b91506060850135613d1681613986565b939692955090935050565b60008060008060808587031215613d3757600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215613d6557600080fd5b8135612da0816138bb565b60008060408385031215613d8357600080fd5b8235613d8e81613986565b915060208301356138f781613986565b600080600080600060a08688031215613db657600080fd5b613dbf86613bf5565b9450613dcd60208701613bf5565b9350613ddb60408701613bf5565b9250613de960608701613bf5565b9150613df760808701613bf5565b90509295509295909350565b600081518084526020808501945080840160005b83811015613e3c5781516001600160a01b031687529582019590820190600101613e17565b509495945050505050565b604081526000613e5a6040830185613e03565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613ed5578160001904821115613ebb57613ebb613e6b565b80851615613ec857918102915b93841c9390800290613e9f565b509250929050565b600082613eec57506001610c6e565b81613ef957506000610c6e565b8160018114613f0f5760028114613f1957613f35565b6001915050610c6e565b60ff841115613f2a57613f2a613e6b565b50506001821b610c6e565b5060208310610133831016604e8410600b8410161715613f58575081810a610c6e565b613f628383613e9a565b8060001904821115613f7657613f76613e6b565b029392505050565b6000612da060ff841683613edd565b600082613fc3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000816000190483118215151615613fe257613fe2613e6b565b500290565b600082821015613ff957613ff9613e6b565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81141561404457614044613e6b565b60010192915050565b60006020828403121561405f57600080fd5b8151612da081613986565b600061ffff80831681851680830382111561408757614087613e6b565b01949350505050565b6000602082840312156140a257600080fd5b8151612da0816138bb565b600082198211156140c0576140c0613e6b565b500190565b85815284602082015260a0604082015260006140e460a0830186613e03565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561411657600080fd5b8351925060208401519150604084015190509250925092565b600061ffff8381169083168181101561414a5761414a613e6b565b039392505050565b60006020828403121561416457600080fd5b505191905056fea2646970667358221220430ad67ad8ab6b453d0ed5a27efa73d6ca208f9cb009d6f52f0960881d46053f64736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106103385760003560e01c80635c24b074116101b0578063b3d514fb116100ec578063eafb5a3c11610095578063f08f43a21161006f578063f08f43a214610a1d578063f94aa1b414610a3d578063fdb78c0e14610aa3578063fe575a8714610ac257600080fd5b8063eafb5a3c146109c8578063ee5d9c2d146109e8578063eec2744e146109fd57600080fd5b8063cf847706116100c6578063cf847706146108d2578063dd62ed3e1461096c578063e4fcfd18146109b257600080fd5b8063b3d514fb1461055c578063c0488b5614610892578063cab5ebea146108b257600080fd5b8063893d20e81161015957806395d89b411161013357806395d89b4114610802578063a9059cbb14610848578063adba5bca14610868578063b1b08f711461055c57600080fd5b8063893d20e8146107ba5780638a63bd9b146107d85780638a8c523c146107ed57600080fd5b8063715018a61161018a578063715018a61461076557806380c581d11461077a57806383672f3e1461079a57600080fd5b80635c24b074146106d65780635cce86cd146106f657806370a082311461072f57600080fd5b80632610eaca1161027f57806336fddb04116102285780634fb2e45d116102025780634fb2e45d1461063e5780634fbee1931461065e57806350a8e01614610697578063590ffdce146106b657600080fd5b806336fddb04146105e4578063452ed4f1146106045780634ada218b1461062457600080fd5b8063313ce56711610259578063313ce5671461058857806332cde664146105a457806334cd8260146105c457600080fd5b80632610eaca1461053c5780632b28fc7a1461055c5780632e8fa8211461057257600080fd5b80630758d924116102e157806318160ddd116102bb57806318160ddd146104e757806323b872dd146104fc578063260039571461051c57600080fd5b80630758d92414610482578063095ea7b3146104a25780630fa604e4146104d257600080fd5b806305bbedb61161031257806305bbedb6146103bd578063069d955f146103dd57806306fdde031461043357600080fd5b806303fd2a45146103445780630445b66714610377578063044df7261461039b57600080fd5b3661033f57005b600080fd5b34801561035057600080fd5b5061035a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038357600080fd5b5061038d60135481565b60405190815260200161036e565b3480156103a757600080fd5b506103bb6103b63660046138c9565b610ae2565b005b3480156103c957600080fd5b506103bb6103d8366004613a0f565b610bbf565b3480156103e957600080fd5b5060085461040e9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161036e565b34801561043f57600080fd5b5060408051808201909152600b81527f436f736d6963204b69737300000000000000000000000000000000000000000060208201525b60405161036e9190613a56565b34801561048e57600080fd5b50600a5461035a906001600160a01b031681565b3480156104ae57600080fd5b506104c26104bd366004613aab565b610c5d565b604051901515815260200161036e565b3480156104de57600080fd5b5061038d610c74565b3480156104f357600080fd5b5061038d610c94565b34801561050857600080fd5b506104c2610517366004613ad7565b610cd3565b34801561052857600080fd5b506103bb610537366004613b18565b610d4b565b34801561054857600080fd5b506103bb610557366004613b3a565b610e9b565b34801561056857600080fd5b5061038d6107d081565b34801561057e57600080fd5b5061038d60145481565b34801561059457600080fd5b506040516012815260200161036e565b3480156105b057600080fd5b506103bb6105bf366004613c0c565b610fb5565b3480156105d057600080fd5b506103bb6105df366004613c4f565b6110f0565b3480156105f057600080fd5b506103bb6105ff366004613c8a565b6111ad565b34801561061057600080fd5b50600b5461035a906001600160a01b031681565b34801561063057600080fd5b506018546104c29060ff1681565b34801561064a57600080fd5b506103bb610659366004613ca8565b611226565b34801561066a57600080fd5b506104c2610679366004613ca8565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106a357600080fd5b506018546104c290610100900460ff1681565b3480156106c257600080fd5b506103bb6106d1366004613c8a565b61143f565b3480156106e257600080fd5b506103bb6106f1366004613ca8565b6114b8565b34801561070257600080fd5b506104c2610711366004613ca8565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561073b57600080fd5b5061038d61074a366004613ca8565b6001600160a01b031660009081526001602052604090205490565b34801561077157600080fd5b506103bb6115b4565b34801561078657600080fd5b506103bb610795366004613c8a565b61166f565b3480156107a657600080fd5b506103bb6107b5366004613cc5565b611819565b3480156107c657600080fd5b506000546001600160a01b031661035a565b3480156107e457600080fd5b506104c26118cf565b3480156107f957600080fd5b506103bb61193e565b34801561080e57600080fd5b5060408051808201909152600581527f434b4953530000000000000000000000000000000000000000000000000000006020820152610475565b34801561085457600080fd5b506104c2610863366004613aab565b611b9b565b34801561087457600080fd5b5061087d611bb2565b6040805192835260208301919091520161036e565b34801561089e57600080fd5b506103bb6108ad366004613d21565b611bef565b3480156108be57600080fd5b506103bb6108cd366004613d53565b611e3f565b3480156108de57600080fd5b5060095461092f9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000090041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c00161036e565b34801561097857600080fd5b5061038d610987366004613d70565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156109be57600080fd5b5061038d60115481565b3480156109d457600080fd5b506103bb6109e3366004613ca8565b611ee1565b3480156109f457600080fd5b506103bb6122b1565b348015610a0957600080fd5b506103bb610a18366004613c8a565b612394565b348015610a2957600080fd5b506103bb610a38366004613d9e565b61243c565b348015610a4957600080fd5b50600c54600d54600e54600f54610a70936001600160a01b03908116938116928116911684565b604080516001600160a01b039586168152938516602085015291841691830191909152909116606082015260800161036e565b348015610aaf57600080fd5b506010546104c290610100900460ff1681565b348015610ace57600080fd5b506104c2610add366004613ca8565b6125c0565b6000546001600160a01b03163314610b355760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6018546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610ba357600080fd5b505af1158015610bb7573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610c0d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6018546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610b899085908590600401613e47565b6000610c6a33848461264e565b5060015b92915050565b6000610c826012600a613f7e565b601754610c8f9190613f8d565b905090565b6000610ca26012600a613f7e565b610cb090633b9aca00613fc8565b610cb957600080fd5b610cc56012600a613f7e565b610c8f90633b9aca00613fc8565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610d38576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610d32908490613fe7565b90915550505b610d4384848461275b565b949350505050565b6000546001600160a01b03163314610d995760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6103e8610da86012600a613f7e565b610db690633b9aca00613fc8565b610dc09190613f8d565b8183610dce6012600a613f7e565b610ddc90633b9aca00613fc8565b610de69190613fc8565b610df09190613f8d565b1015610e645760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610b2c565b8082610e726012600a613f7e565b610e8090633b9aca00613fc8565b610e8a9190613fc8565b610e949190613f8d565b6017555050565b8051825114610eec5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b2c565b60005b82518160ff161015610fb057818160ff1681518110610f1057610f10613ffe565b6020026020010151610f37336001600160a01b031660009081526001602052604090205490565b1015610f4257600080fd5b610f9d33848360ff1681518110610f5b57610f5b613ffe565b60200260200101516012600a610f719190613f7e565b858560ff1681518110610f8657610f86613ffe565b6020026020010151610f989190613fc8565b61275b565b5080610fa88161402d565b915050610eef565b505050565b6000546001600160a01b031633146110035760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6107d08361ffff161115801561101f57506107d08261ffff1611155b801561103157506107d08161ffff1611155b61107d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b2c565b6008805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b0316331461113e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b838561114c6012600a613f7e565b61115a90633b9aca00613fc8565b6111649190613fc8565b61116e9190613f8d565b601355818361117f6012600a613f7e565b61118d90633b9aca00613fc8565b6111979190613fc8565b6111a19190613f8d565b60145560115550505050565b6000546001600160a01b031633146111fb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112745760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6001600160a01b0381166112f05760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b2c565b6001600160a01b03811661dead14156113715760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b2c565b6000805461138a916001600160a01b039091169061143f565b61139581600161143f565b600080546001600160a01b0316815260016020526040902054156113dc57600080546001600160a01b031680825260016020526040909120546113da9190839061275b565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b0316331461148d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b601854610100900460ff161561151b57600080fd5b6001600160a01b0381163014156115745760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b2c565b601880546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000546001600160a01b031633146116025760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6000805461161b916001600160a01b039091169061143f565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146116bd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b80611734576001600160a01b03828116600081815260026020526040808220805460ff1916905560185490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610b89565b6003541561179b576203f4806003544261174e9190613fe7565b1161179b5760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610b2c565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560185491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610b89565b5050565b6000546001600160a01b031633146118675760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b600c80546001600160a01b039586167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600d805494861694821694909417909355600e805492851692841692909217909155600f8054919093169116179055565b600080546001600160a01b0316331461191e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b600a546119389030906001600160a01b031660001961264e565b50600190565b6000546001600160a01b0316331461198c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b60185460ff16156119df5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b2c565b601854610100900460ff16611a365760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b2c565b6018546201000090046001600160a01b0316611a7c57601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601854600b546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611b0757600080fd5b505af1925050508015611b18575060015b506018805460ff19166001179055600b5461271090611b55906001600160a01b03166001600160a01b031660009081526001602052604090205490565b611b5f9190613f8d565b601355600b546001600160a01b031660009081526001602052604090205461271090611b8c90600f613fc8565b611b969190613f8d565b601455565b6000611ba833848461275b565b5060019392505050565b600080611bc16012600a613f7e565b601554611bce9190613f8d565b611bda6012600a613f7e565b601654611be79190613f8d565b915091509091565b6000546001600160a01b03163314611c3d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6103e8611c4c6012600a613f7e565b611c5a90633b9aca00613fc8565b611c649190613f8d565b8385611c726012600a613f7e565b611c8090633b9aca00613fc8565b611c8a9190613fc8565b611c949190613f8d565b1015611d085760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b2c565b6103e8611d176012600a613f7e565b611d2590633b9aca00613fc8565b611d2f9190613f8d565b8183611d3d6012600a613f7e565b611d4b90633b9aca00613fc8565b611d559190613fc8565b611d5f9190613f8d565b1015611dd35760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b2c565b8284611de16012600a613f7e565b611def90633b9aca00613fc8565b611df99190613fc8565b611e039190613f8d565b6015558082611e146012600a613f7e565b611e2290633b9aca00613fc8565b611e2c9190613fc8565b611e369190613f8d565b60165550505050565b6000546001600160a01b03163314611e8d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b601080548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611ed690831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611f2f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f98919061404d565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612009919061404d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561206c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612090919061404d565b90506001600160a01b03811661223957816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612102919061404d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612173919061404d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156121d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fc919061404d565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905561226d565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155610fb090309060001961264e565b6000546001600160a01b031633146122ff5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b601854610100900460ff16156123575760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b2c565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612391573d6000803e3d6000fd5b50565b6000546001600160a01b031633146123e25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6018546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610b89565b6000546001600160a01b0316331461248a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b2c565b6009805461ffff8781167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000087831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000868316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1617660100000000000085831602177fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff1668010000000000000000918416919091021790558083612563868861406a565b61256d919061406a565b612577919061406a565b6009805461ffff929092166a0100000000000000000000027fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff9092169190911790555050505050565b6018546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa15801561262a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6e9190614090565b6001600160a01b0383166126a45760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b2c565b6001600160a01b0382166126fa5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b2c565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166127d95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b2c565b6001600160a01b0383166128555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610b2c565b600082116128cb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610b2c565b6001600160a01b0384166000908152600260205260408120548190819060ff16156128f95760019250612927565b6001600160a01b03861660009081526002602052604090205460ff16156129235760019150612927565b5060015b6129318787612cd2565b15612bf95760185460ff166129885760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b2c565b8215612a52576001600160a01b03871660009081526006602052604090205460ff161580156129d057506001600160a01b03861660009081526006602052604090205460ff16155b15612a4d57601554851115612a4d5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610b2c565b612b17565b8115612b17576001600160a01b03871660009081526006602052604090205460ff16158015612a9a57506001600160a01b03861660009081526006602052604090205460ff16155b15612b1757601654851115612b175760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610b2c565b600a546001600160a01b03878116911614801590612b33575081155b15612bf9576001600160a01b03861660009081526006602052604090205460ff16612bf95760175485612b7b886001600160a01b031660009081526001602052604090205490565b612b8591906140ad565b1115612bf95760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610b2c565b6001600160a01b03871660009081526005602052604090205460019060ff1680612c3b57506001600160a01b03871660009081526005602052604090205460ff165b15612c44575060005b8215612cb75760105460ff16158015612c645750601054610100900460ff165b15612cb75742601154601254612c7a91906140ad565b1015612cb757306000908152600160205260409020546013548110612cb5576014548110612ca757506014545b612cb081612da7565b426012555b505b612cc6888888848888886132d6565b98975050505050505050565b600080546001600160a01b03848116911614801590612cff57506000546001600160a01b03838116911614155b8015612d1657506000546001600160a01b03163214155b8015612d3b57506001600160a01b03821660009081526007602052604090205460ff16155b8015612d6057506001600160a01b03831660009081526007602052604090205460ff16155b8015612d7757506001600160a01b03821661dead14155b8015612d8b57506001600160a01b03821615155b8015612da057506001600160a01b0383163014155b9392505050565b6010805460ff191660011790556040805160c08101825260095461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000008104831660808301526a0100000000000000000000900490911660a08201819052612e2d57506132c9565b306000908152600460209081526040808320600a546001600160a01b0316845290915290205460001914612e8657306000908152600460209081526040808320600a546001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836000015161ffff1685612ea79190613fc8565b612eb19190613f8d565b612ebb9190613f8d565b90506000612ec98285613fe7565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110612f0357612f03613ffe565b6001600160a01b03928316602091820292909201810191909152600a54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f99919061404d565b81600181518110612fac57612fac613ffe565b6001600160a01b039283166020918202929092010152600a546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac9479061300b9085906000908690309042906004016140c5565b600060405180830381600087803b15801561302557600080fd5b505af1158015613039573d6000803e3d6000fd5b504792506000915084905061304e8684613fc8565b6130589190613f8d565b9050841561314957600a546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156130e7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061310c9190614101565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6131538183613fe7565b915085600001518660a00181815161316b919061412f565b61ffff90811690915260a088015160408901516000935090821691613191911685613fc8565b61319b9190613f8d565b905060008760a0015161ffff16886080015161ffff16856131bc9190613fc8565b6131c69190613f8d565b905060006131d482846140ad565b6131de9086613fe7565b60408a015190915061ffff161561322b57600d546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015613229573d6000803e3d6000fd5b505b608089015161ffff161561327557600e546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015613273573d6000803e3d6000fd5b505b602089015161ffff16156132bf57600c546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156132bd573d6000803e3d6000fd5b505b5050505050505050505b506010805460ff19169055565b601854600090610100900460ff16613382576132f28888613516565b601854610100900460ff1615801561330f575061330f8888612cd2565b156133825760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610b2c565b61338c8888612cd2565b1561343f576018546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613428575060408051601f3d908101601f1916820190925261342591810190614090565b60015b61343157600080fd5b90508061343d57600080fd5b505b6001600160a01b03881660009081526001602052604081208054889290613467908490613fe7565b90915550600090508561347a5786613486565b6134868986868a613674565b6001600160a01b0389166000908152600160205260408120805492935083929091906134b39084906140ad565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134ff91815260200190565b60405180910390a350600198975050505050505050565b601854610100900460ff16156135945760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610b2c565b61359e8282612cd2565b1580156135b85750600b546001600160a01b038281169116145b15611815576001600160a01b038083166000908152600760205260409020805460ff191660011790556018805461ff00191661010017908190556201000090041661362d57601880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6010805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b600080601860029054906101000a90046001600160a01b03166001600160a01b03166354b762a66040518163ffffffff1660e01b81526004016020604051808303816000875af11580156136cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136f09190614152565b90508061373457841561370a575060085461ffff16613734565b8315613723575060085462010000900461ffff16613734565b50600854640100000000900461ffff165b60006127106137438386613fc8565b61374d9190613f8d565b6009549091506000906601000000000000900461ffff1615613843576009546137949061ffff660100000000000082048116916a010000000000000000000090041661406a565b60095461ffff918216916137b391660100000000000090041684613fc8565b6137bd9190613f8d565b600f546001600160a01b03166000908152600160205260408120805492935083929091906137ec9084906140ad565b9091555050600f546040518281526001600160a01b03918216918a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36138408183613fe7565b91505b30600090815260016020526040812080548492906138629084906140ad565b909155505060405182815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36138b181836140ad565b612cc69086613fe7565b801515811461239157600080fd5b600080604083850312156138dc57600080fd5b82356138e7816138bb565b915060208301356138f7816138bb565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561395a5761395a613902565b604052919050565b600067ffffffffffffffff82111561397c5761397c613902565b5060051b60200190565b6001600160a01b038116811461239157600080fd5b600082601f8301126139ac57600080fd5b813560206139c16139bc83613962565b613931565b82815260059290921b840181019181810190868411156139e057600080fd5b8286015b84811015613a045780356139f781613986565b83529183019183016139e4565b509695505050505050565b60008060408385031215613a2257600080fd5b823567ffffffffffffffff811115613a3957600080fd5b613a458582860161399b565b92505060208301356138f7816138bb565b600060208083528351808285015260005b81811015613a8357858101830151858201604001528201613a67565b81811115613a95576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215613abe57600080fd5b8235613ac981613986565b946020939093013593505050565b600080600060608486031215613aec57600080fd5b8335613af781613986565b92506020840135613b0781613986565b929592945050506040919091013590565b60008060408385031215613b2b57600080fd5b50508035926020909101359150565b60008060408385031215613b4d57600080fd5b823567ffffffffffffffff80821115613b6557600080fd5b613b718683870161399b565b9350602091508185013581811115613b8857600080fd5b85019050601f81018613613b9b57600080fd5b8035613ba96139bc82613962565b81815260059190911b82018301908381019088831115613bc857600080fd5b928401925b82841015613be657833582529284019290840190613bcd565b80955050505050509250929050565b803561ffff81168114613c0757600080fd5b919050565b600080600060608486031215613c2157600080fd5b613c2a84613bf5565b9250613c3860208501613bf5565b9150613c4660408501613bf5565b90509250925092565b600080600080600060a08688031215613c6757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215613c9d57600080fd5b82356138e781613986565b600060208284031215613cba57600080fd5b8135612da081613986565b60008060008060808587031215613cdb57600080fd5b8435613ce681613986565b93506020850135613cf681613986565b92506040850135613d0681613986565b91506060850135613d1681613986565b939692955090935050565b60008060008060808587031215613d3757600080fd5b5050823594602084013594506040840135936060013592509050565b600060208284031215613d6557600080fd5b8135612da0816138bb565b60008060408385031215613d8357600080fd5b8235613d8e81613986565b915060208301356138f781613986565b600080600080600060a08688031215613db657600080fd5b613dbf86613bf5565b9450613dcd60208701613bf5565b9350613ddb60408701613bf5565b9250613de960608701613bf5565b9150613df760808701613bf5565b90509295509295909350565b600081518084526020808501945080840160005b83811015613e3c5781516001600160a01b031687529582019590820190600101613e17565b509495945050505050565b604081526000613e5a6040830185613e03565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613ed5578160001904821115613ebb57613ebb613e6b565b80851615613ec857918102915b93841c9390800290613e9f565b509250929050565b600082613eec57506001610c6e565b81613ef957506000610c6e565b8160018114613f0f5760028114613f1957613f35565b6001915050610c6e565b60ff841115613f2a57613f2a613e6b565b50506001821b610c6e565b5060208310610133831016604e8410600b8410161715613f58575081810a610c6e565b613f628383613e9a565b8060001904821115613f7657613f76613e6b565b029392505050565b6000612da060ff841683613edd565b600082613fc3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000816000190483118215151615613fe257613fe2613e6b565b500290565b600082821015613ff957613ff9613e6b565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81141561404457614044613e6b565b60010192915050565b60006020828403121561405f57600080fd5b8151612da081613986565b600061ffff80831681851680830382111561408757614087613e6b565b01949350505050565b6000602082840312156140a257600080fd5b8151612da0816138bb565b600082198211156140c0576140c0613e6b565b500190565b85815284602082015260a0604082015260006140e460a0830186613e03565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561411657600080fd5b8351925060208401519150604084015190509250925092565b600061ffff8381169083168181101561414a5761414a613e6b565b039392505050565b60006020828403121561416457600080fd5b505191905056fea2646970667358221220430ad67ad8ab6b453d0ed5a27efa73d6ca208f9cb009d6f52f0960881d46053f64736f6c634300080c0033

Deployed Bytecode Sourcemap

4031:21598:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5691:73;;;;;;;;;;;;5722:42;5691:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5691:73:0;;;;;;;;6422:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6422:28:0;245:177:1;13939:151:0;;;;;;;;;;-1:-1:-1;13939:151:0;;;;;:::i;:::-;;:::i;:::-;;13626:172;;;;;;;;;;-1:-1:-1;13626:172:0;;;;;:::i;:::-;;:::i;5124:116::-;;;;;;;;;;-1:-1:-1;5124:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;3236:6:1;3269:15;;;3251:34;;3321:15;;;3316:2;3301:18;;3294:43;3373:15;;3353:18;;;3346:43;;;;3214:2;3199:18;5124:116:0;3030:365:1;10600:80:0;;;;;;;;;;-1:-1:-1;10672:5:0;;;;;;;;;;;;;;;;;10600:80;;;;;;;:::i;5630:26::-;;;;;;;;;;-1:-1:-1;5630:26:0;;;;-1:-1:-1;;;;;5630:26:0;;;11210:159;;;;;;;;;;-1:-1:-1;11210:159:0;;;;;:::i;:::-;;:::i;:::-;;;4794:14:1;;4787:22;4769:41;;4757:2;4742:18;11210:159:0;4629:187:1;16430:112:0;;;;;;;;;;;;;:::i;10303:115::-;;;;;;;;;;;;;:::i;11875:306::-;;;;;;;;;;-1:-1:-1;11875:306:0;;;;;:::i;:::-;;:::i;15429:267::-;;;;;;;;;;-1:-1:-1;15429:267:0;;;;;:::i;:::-;;:::i;23274:373::-;;;;;;;;;;-1:-1:-1;23274:373:0;;;;;:::i;:::-;;:::i;5427:42::-;;;;;;;;;;;;5465:4;5427:42;;6457:25;;;;;;;;;;;;;;;;10424:80;;;;;;;;;;-1:-1:-1;10424:80:0;;4754:2;6820:36:1;;6808:2;6793:18;10424:80:0;6678:184:1;14098:397:0;;;;;;;;;;-1:-1:-1;14098:397:0;;;;;:::i;:::-;;:::i;16550:338::-;;;;;;;;;;-1:-1:-1;16550:338:0;;;;;:::i;:::-;;:::i;15704:140::-;;;;;;;;;;-1:-1:-1;15704:140:0;;;;;:::i;:::-;;:::i;5663:21::-;;;;;;;;;;-1:-1:-1;5663:21:0;;;;-1:-1:-1;;;;;5663:21:0;;;6677:34;;;;;;;;;;-1:-1:-1;6677:34:0;;;;;;;;9161:588;;;;;;;;;;-1:-1:-1;9161:588:0;;;;;:::i;:::-;;:::i;15990:125::-;;;;;;;;;;-1:-1:-1;15990:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;16079:28:0;16055:4;16079:28;;;:19;:28;;;;;;;;;15990:125;6718:36;;;;;;;;;;-1:-1:-1;6718:36:0;;;;;;;;;;;16123:134;;;;;;;;;;-1:-1:-1;16123:134:0;;;;;:::i;:::-;;:::i;13245:220::-;;;;;;;;;;-1:-1:-1;13245:220:0;;;;;:::i;:::-;;:::i;15852:130::-;;;;;;;;;;-1:-1:-1;15852:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;15944:30:0;15920:4;15944:30;;;:21;:30;;;;;;;;;15852:130;10912:117;;;;;;;;;;-1:-1:-1;10912:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;11005:16:0;10978:7;11005:16;;;:7;:16;;;;;;;10912:117;9757:193;;;;;;;;;;;;;:::i;12737:500::-;;;;;;;;;;-1:-1:-1;12737:500:0;;;;;:::i;:::-;;:::i;16896:323::-;;;;;;;;;;-1:-1:-1;16896:323:0;;;;;:::i;:::-;;:::i;10686:79::-;;;;;;;;;;-1:-1:-1;10738:7:0;10756:6;-1:-1:-1;;;;;10756:6:0;10686:79;;11694:173;;;;;;;;;;;;;:::i;22539:537::-;;;;;;;;;;;;;:::i;10510:84::-;;;;;;;;;;-1:-1:-1;10584:7:0;;;;;;;;;;;;;;;;;10510:84;;11037:165;;;;;;;;;;-1:-1:-1;11037:165:0;;;;;:::i;:::-;;:::i;16265:157::-;;;;;;;;;;;;;:::i;:::-;;;;9336:25:1;;;9392:2;9377:18;;9370:34;;;;9309:18;16265:157:0;9162:248:1;14885:536:0;;;;;;;;;;-1:-1:-1;14885:536:0;;;;;:::i;:::-;;:::i;17227:164::-;;;;;;;;;;-1:-1:-1;17227:164:0;;;;;:::i;:::-;;:::i;5249:169::-;;;;;;;;;;-1:-1:-1;5249:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10336:6:1;10369:15;;;10351:34;;10421:15;;;10416:2;10401:18;;10394:43;10473:15;;;10453:18;;;10446:43;;;;10525:15;;;10520:2;10505:18;;10498:43;10578:15;;10572:3;10557:19;;10550:44;10631:15;;;10625:3;10610:19;;10603:44;10313:3;10298:19;5249:169:0;10051:602:1;10771:133:0;;;;;;;;;;-1:-1:-1;10771:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10873:19:0;;;10855:7;10873:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10771:133;6340:44;;;;;;;;;;;;;;;;12189:540;;;;;;;;;;-1:-1:-1;12189:540:0;;;;;:::i;:::-;;:::i;23084:182::-;;;;;;;;;;;;;:::i;13473:145::-;;;;;;;;;;-1:-1:-1;13473:145:0;;;;;:::i;:::-;;:::i;14503:374::-;;;;;;;;;;-1:-1:-1;14503:374:0;;;;;:::i;:::-;;:::i;5934:329::-;;;;;;;;;;-1:-1:-1;5934:329:0;;;;;;;;;;-1:-1:-1;;;;;5934:329:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11888:15:1;;;11870:34;;11940:15;;;11935:2;11920:18;;11913:43;11992:15;;;11972:18;;;11965:43;;;;12044:15;;;12039:2;12024:18;;12017:43;11796:3;11781:19;5934:329:0;11530:536:1;6294:39:0;;;;;;;;;;-1:-1:-1;6294:39:0;;;;;;;;;;;13806:125;;;;;;;;;;-1:-1:-1;13806:125:0;;;;;:::i;:::-;;:::i;13939:151::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;;;;;;;;;14034:9:::1;::::0;:48:::1;::::0;;;;12604:14:1;;12597:22;14034:48:0::1;::::0;::::1;12579:41:1::0;12663:14;;12656:22;12636:18;;;12629:50;14034:9:0;;;::::1;-1:-1:-1::0;;;;;14034:9:0::1;::::0;:24:::1;::::0;12552:18:1;;14034:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13939:151:::0;;:::o;13626:172::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;13734:9:::1;::::0;:56:::1;::::0;;;;:9;;;::::1;-1:-1:-1::0;;;;;13734:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;13772:8;;13782:7;;13734:56:::1;;;:::i;11210:159::-:0;11285:4;11302:37;11311:10;11323:7;11332:6;11302:8;:37::i;:::-;-1:-1:-1;11357:4:0;11210:159;;;;;:::o;16430:112::-;16475:7;16520:13;4754:2;16520;:13;:::i;:::-;16502:14;;:32;;;;:::i;:::-;16495:39;;16430:112;:::o;10303:115::-;10358:7;4817:13;4754:2;4817;:13;:::i;:::-;4800:30;;4599:13;4800:30;:::i;:::-;10369:31;;10389:8;;;10369:31;4817:13;4754:2;4817;:13;:::i;:::-;4800:30;;4599:13;4800:30;:::i;11875:306::-;-1:-1:-1;;;;;11996:19:0;;11975:4;11996:19;;;:11;:19;;;;;;;;12016:10;11996:31;;;;;;;;-1:-1:-1;;11996:52:0;11992:126;;-1:-1:-1;;;;;12065:19:0;;;;;;:11;:19;;;;;;;;12085:10;12065:31;;;;;;;:41;;12100:6;;12065:19;:41;;12100:6;;12065:41;:::i;:::-;;;;-1:-1:-1;;11992:126:0;12137:36;12147:6;12155:9;12166:6;12137:9;:36::i;:::-;12130:43;11875:306;-1:-1:-1;;;;11875:306:0:o;15429:267::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;15571:4:::1;4817:13;4754:2;4817;:13;:::i;:::-;4800:30;::::0;4599:13:::1;4800:30;:::i;:::-;15561:14;;;;:::i;:::-;15549:7:::0;15538;4817:13:::1;4754:2;4817;:13;:::i;:::-;4800:30;::::0;4599:13:::1;4800:30;:::i;:::-;15528:17;;;;:::i;:::-;15527:29;;;;:::i;:::-;:49;;15519:112;;;::::0;-1:-1:-1;;;15519:112:0;;16062:2:1;15519:112:0::1;::::0;::::1;16044:21:1::0;16101:2;16081:18;;;16074:30;16140:34;16120:18;;;16113:62;16211:20;16191:18;;;16184:48;16249:19;;15519:112:0::1;15860:414:1::0;15519:112:0::1;15681:7:::0;15670;4817:13:::1;4754:2;4817;:13;:::i;:::-;4800:30;::::0;4599:13:::1;4800:30;:::i;:::-;15660:17;;;;:::i;:::-;15659:29;;;;:::i;:::-;15642:14;:46:::0;-1:-1:-1;;15429:267:0:o;23274:373::-;23399:7;:14;23380:8;:15;:33;23372:67;;;;-1:-1:-1;;;23372:67:0;;16481:2:1;23372:67:0;;;16463:21:1;16520:2;16500:18;;;16493:30;16559:23;16539:18;;;16532:51;16600:18;;23372:67:0;16279:345:1;23372:67:0;23455:7;23450:190;23472:8;:15;23468:1;:19;;;23450:190;;;23542:7;23550:1;23542:10;;;;;;;;;;:::i;:::-;;;;;;;23517:21;23527:10;-1:-1:-1;;;;;11005:16:0;10978:7;11005:16;;;:7;:16;;;;;;;10912:117;23517:21;:35;;23509:44;;;;;;23568:60;23578:10;23590:8;23599:1;23590:11;;;;;;;;;;:::i;:::-;;;;;;;4754:2;23614;:13;;;;:::i;:::-;23603:7;23611:1;23603:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23568:9;:60::i;:::-;-1:-1:-1;23489:3:0;;;;:::i;:::-;;;;23450:190;;;;23274:373;;:::o;14098:397::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;5465:4:::1;14205:6;:21;;;;:65;;;;;5515:4;14247:7;:23;;;;14205:65;:117;;;;;5569:4;14291:11;:31;;;;14205:117;14197:170;;;::::0;-1:-1:-1;;;14197:170:0;;17200:2:1;14197:170:0::1;::::0;::::1;17182:21:1::0;17239:2;17219:18;;;17212:30;17278:25;17258:18;;;17251:53;17321:18;;14197:170:0::1;16998:347:1::0;14197:170:0::1;14378:9;:25:::0;;::::1;::::0;;::::1;14414:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;14452:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;14098:397::o;16550:338::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;16764:16;16744;4817:13:::1;4754:2;4817;:13;:::i;:::-;4800:30;::::0;4599:13:::1;4800:30;:::i;:::-;16734:26;;;;:::i;:::-;16733:47;;;;:::i;:::-;16717:13;:63:::0;16832:13;16815;4817::::1;4754:2;4817;:13;:::i;:::-;4800:30;::::0;4599:13:::1;4800:30;:::i;:::-;16805:23;;;;:::i;:::-;16804:41;;;;:::i;:::-;16791:10;:54:::0;16856:17:::1;:24:::0;-1:-1:-1;;;;16550:338:0:o;15704:140::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;-1:-1:-1;;;;;15796:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;15796:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15704:140::o;9161:588::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;-1:-1:-1;;;;;9240:22:0;::::1;9232:96;;;::::0;-1:-1:-1;;;9232:96:0;;17552:2:1;9232:96:0::1;::::0;::::1;17534:21:1::0;17591:2;17571:18;;;17564:30;17630:34;17610:18;;;17603:62;17701:31;17681:18;;;17674:59;17750:19;;9232:96:0::1;17350:425:1::0;9232:96:0::1;-1:-1:-1::0;;;;;9347:16:0;::::1;5722:42;9347:16;;9339:90;;;::::0;-1:-1:-1;;;9339:90:0;;17552:2:1;9339:90:0::1;::::0;::::1;17534:21:1::0;17591:2;17571:18;;;17564:30;17630:34;17610:18;;;17603:62;17701:31;17681:18;;;17674:59;17750:19;;9339:90:0::1;17350:425:1::0;9339:90:0::1;9460:6;::::0;;9440:34:::1;::::0;-1:-1:-1;;;;;9460:6:0;;::::1;::::0;9440:19:::1;:34::i;:::-;9485:35;9505:8;9515:4;9485:19;:35::i;:::-;9564:1;9554:6:::0;;-1:-1:-1;;;;;9554:6:0::1;11005:16:::0;;:7;:16;;;;;;9544:21;9541:99:::1;;9592:6;::::0;;-1:-1:-1;;;;;9592:6:0::1;11005:16:::0;;;:7;:16;;;;;;;9582:46:::1;::::0;9592:6;9600:8;;23568:9;:60::i;9582:46::-:1;;9541:99;9660:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;9660:17:0;::::1;::::0;;::::1;::::0;;9693:38:::1;::::0;9660:17;;;;9693:38:::1;::::0;9660:6;9693:38:::1;9161:588:::0;:::o;16123:134::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;-1:-1:-1;;;;;16211:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;16211:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16123:134::o;13245:220::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;13329:16:::1;::::0;::::1;::::0;::::1;;;13328:17;13320:26;;;::::0;::::1;;-1:-1:-1::0;;;;;13365:28:0;::::1;13388:4;13365:28;;13357:55;;;::::0;-1:-1:-1;;;13357:55:0;;17982:2:1;13357:55:0::1;::::0;::::1;17964:21:1::0;18021:2;18001:18;;;17994:30;18060:16;18040:18;;;18033:44;18094:18;;13357:55:0::1;17780:338:1::0;13357:55:0::1;13423:9;:34:::0;;-1:-1:-1;;;;;13423:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;13245:220::o;9757:193::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;9842:6:::1;::::0;;9822:34:::1;::::0;-1:-1:-1;;;;;9842:6:0;;::::1;::::0;9822:19:::1;:34::i;:::-;9884:1;9867:19:::0;;;::::1;::::0;;9902:40:::1;::::0;9884:1;;9902:40:::1;::::0;9884:1;;9902:40:::1;9757:193::o:0;12737:500::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;12818:16;12814:416:::1;;-1:-1:-1::0;;;;;12851:13:0;;::::1;12867:5;12851:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12851:21:0::1;::::0;;12887:9:::1;::::0;:32;;;;;::::1;::::0;::::1;18291:74:1::0;;;;18381:18;;;18374:50;;;;12887:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;18264:18:1;;12887:32:0::1;18123:307:1::0;12814:416:0::1;12956:17;::::0;:22;12952:136:::1;;13045:6;13025:17;;13007:15;:35;;;;:::i;:::-;:44;12999:73;;;::::0;-1:-1:-1;;;12999:73:0;;18637:2:1;12999:73:0::1;::::0;::::1;18619:21:1::0;18676:2;18656:18;;;18649:30;18715:18;18695;;;18688:46;18751:18;;12999:73:0::1;18435:340:1::0;12999:73:0::1;-1:-1:-1::0;;;;;13102:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;13102:20:0::1;13118:4;13102:20:::0;;::::1;::::0;;;13157:15:::1;13137:17;:35:::0;13187:9:::1;::::0;:31;;;;;::::1;::::0;::::1;18291:74:1::0;;;;18381:18;;;18374:50;13187:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;18264:18:1;;13187:31:0::1;18123:307:1::0;12814:416:0::1;12737:500:::0;;:::o;16896:323::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;17037:11:::1;:42:::0;;-1:-1:-1;;;;;17037:42:0;;::::1;::::0;;;::::1;;::::0;;;17090:16;:32;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17133:19;:38;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17182:19;:29;;;;;::::1;::::0;::::1;;::::0;;16896:323::o;11694:173::-;11758:4;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;11807:9:::1;::::0;11775:62:::1;::::0;11792:4:::1;::::0;-1:-1:-1;;;;;11807:9:0::1;-1:-1:-1::0;;11775:8:0::1;:62::i;:::-;-1:-1:-1::0;11855:4:0::1;11694:173:::0;:::o;22539:537::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;22601:14:::1;::::0;::::1;;22600:15;22592:52;;;::::0;-1:-1:-1;;;22592:52:0;;18982:2:1;22592:52:0::1;::::0;::::1;18964:21:1::0;19021:2;19001:18;;;18994:30;19060:26;19040:18;;;19033:54;19104:18;;22592:52:0::1;18780:348:1::0;22592:52:0::1;22663:16;::::0;::::1;::::0;::::1;;;22655:53;;;::::0;-1:-1:-1;;;22655:53:0;;19335:2:1;22655:53:0::1;::::0;::::1;19317:21:1::0;19374:2;19354:18;;;19347:30;19413:26;19393:18;;;19386:54;19457:18;;22655:53:0::1;19133:348:1::0;22655:53:0::1;22730:9;::::0;;;::::1;-1:-1:-1::0;;;;;22730:9:0::1;22719:99;;22770:9;:36:::0;;;::::1;22800:4;22770:36:::0;::::1;;::::0;;22719:99:::1;22832:9;::::0;22852:6:::1;::::0;22832:85:::1;::::0;;;;-1:-1:-1;;;;;22852:6:0;;::::1;22832:85;::::0;::::1;19709:74:1::0;19831:10;22867:12:0::1;19819:23:1::0;19799:18;;;19792:51;19891:18;22889:15:0::1;19879:31:1::0;19859:18;;;19852:59;4754:2:0::1;19927:18:1::0;;;19920:45;22832:9:0;;;::::1;;::::0;:19:::1;::::0;19681::1;;22832:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;22828:101:::0;22939:14:::1;:21:::0;;-1:-1:-1;;22939:21:0::1;22956:4;22939:21;::::0;;22997:6:::1;::::0;23007:5:::1;::::0;22987:17:::1;::::0;-1:-1:-1;;;;;22997:6:0::1;-1:-1:-1::0;;;;;11005:16:0;10978:7;11005:16;;;:7;:16;;;;;;;10912:117;22987:17:::1;:25;;;;:::i;:::-;22971:13;:41:::0;23047:6:::1;::::0;-1:-1:-1;;;;;23047:6:0::1;10978:7:::0;11005:16;;;:7;:16;;;;;;23063:5:::1;::::0;23037:22:::1;::::0;23057:2:::1;23037:22;:::i;:::-;23036:32;;;;:::i;:::-;23023:10;:45:::0;22539:537::o;11037:165::-;11115:4;11132:40;11142:10;11154:9;11165:6;11132:9;:40::i;:::-;-1:-1:-1;11190:4:0;;11037:165;-1:-1:-1;;;11037:165:0:o;16265:157::-;16307:7;;16363:13;4754:2;16363;:13;:::i;:::-;16344:15;;:33;;;;:::i;:::-;16399:13;4754:2;16399;:13;:::i;:::-;16379:16;;:34;;;;:::i;:::-;16336:78;;;;16265:157;;:::o;14885:536::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;15081:4:::1;4817:13;4754:2;4817;:13;:::i;:::-;4800:30;::::0;4599:13:::1;4800:30;:::i;:::-;15071:14;;;;:::i;:::-;15056:10:::0;15042;4817:13:::1;4754:2;4817;:13;:::i;:::-;4800:30;::::0;4599:13:::1;4800:30;:::i;:::-;15032:20;;;;:::i;:::-;15031:35;;;;:::i;:::-;:55;;15023:123;;;::::0;-1:-1:-1;;;15023:123:0;;20178:2:1;15023:123:0::1;::::0;::::1;20160:21:1::0;20217:2;20197:18;;;20190:30;20256:34;20236:18;;;20229:62;20327:25;20307:18;;;20300:53;20370:19;;15023:123:0::1;19976:419:1::0;15023:123:0::1;15217:4;4817:13;4754:2;4817;:13;:::i;:::-;4800:30;::::0;4599:13:::1;4800:30;:::i;:::-;15207:14;;;;:::i;:::-;15191:11:::0;15176;4817:13:::1;4754:2;4817;:13;:::i;:::-;4800:30;::::0;4599:13:::1;4800:30;:::i;:::-;15166:21;;;;:::i;:::-;15165:37;;;;:::i;:::-;:57;;15157:125;;;::::0;-1:-1:-1;;;15157:125:0;;20178:2:1;15157:125:0::1;::::0;::::1;20160:21:1::0;20217:2;20197:18;;;20190:30;20256:34;20236:18;;;20229:62;20327:25;20307:18;;;20300:53;20370:19;;15157:125:0::1;19976:419:1::0;15157:125:0::1;15336:10:::0;15322;4817:13:::1;4754:2;4817;:13;:::i;:::-;4800:30;::::0;4599:13:::1;4800:30;:::i;:::-;15312:20;;;;:::i;:::-;15311:35;;;;:::i;:::-;15293:15;:53:::0;15402:11;15387;4817:13:::1;4754:2;4817;:13;:::i;:::-;4800:30;::::0;4599:13:::1;4800:30;:::i;:::-;15377:21;;;;:::i;:::-;15376:37;;;;:::i;:::-;15357:16;:56:::0;-1:-1:-1;;;;14885:536:0:o;17227:164::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;17303:19:::1;:29:::0;;;::::1;;;;-1:-1:-1::0;;17303:29:0;;::::1;;::::0;;17348:35:::1;::::0;::::1;::::0;::::1;::::0;17325:7;4794:14:1;4787:22;4769:41;;4757:2;4742:18;;4629:187;17348:35:0::1;;;;;;;;17227:164:::0;:::o;12189:540::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;12258:20:::1;12291:9;12258:43;;12312:16;12342:10;-1:-1:-1::0;;;;;12342:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12331:40:0::1;;12380:4;12387:10;-1:-1:-1::0;;;;;12387:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12331:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;20909:15:1;;;12331:74:0::1;::::0;::::1;20891:34:1::0;20961:15;;20941:18;;;20934:43;20803:18;;12331:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12312:93:::0;-1:-1:-1;;;;;;12420:22:0;::::1;12416:200;;12479:10;-1:-1:-1::0;;;;;12479:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12468:43:0::1;;12520:4;12527:10;-1:-1:-1::0;;;;;12527:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12468:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;20909:15:1;;;12468:77:0::1;::::0;::::1;20891:34:1::0;20961:15;;20941:18;;;20934:43;20803:18;;12468:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12459:6;:86:::0;;;::::1;-1:-1:-1::0;;;;;12459:86:0;;;::::1;::::0;;;::::1;::::0;;12416:200:::1;;;12587:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;12587:17:0;::::1;;::::0;;12416:200:::1;12626:9;:22:::0;;;::::1;-1:-1:-1::0;;;;;12626:22:0;::::1;::::0;;::::1;::::0;;;12659:62:::1;::::0;12676:4:::1;::::0;-1:-1:-1;;12659:8:0::1;:62::i;23084:182::-:0;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;23151:16:::1;::::0;::::1;::::0;::::1;;;23150:17;23142:58;;;::::0;-1:-1:-1;;;23142:58:0;;21190:2:1;23142:58:0::1;::::0;::::1;21172:21:1::0;21229:2;21209:18;;;21202:30;21268;21248:18;;;21241:58;21316:18;;23142:58:0::1;20988:352:1::0;23142:58:0::1;23219:6;::::0;;23211:47:::1;::::0;-1:-1:-1;;;;;23219:6:0;;::::1;::::0;23236:21:::1;23211:47:::0;::::1;;;::::0;23236:21;;23211:47;23219:6;23211:47;23236:21;23219:6;23211:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23084:182::o:0;13473:145::-;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;13563:9:::1;::::0;:47:::1;::::0;;;;-1:-1:-1;;;;;18309:55:1;;;13563:47:0::1;::::0;::::1;18291:74:1::0;18408:14;;18401:22;18381:18;;;18374:50;13563:9:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;18264:18:1;;13563:47:0::1;18123:307:1::0;14503:374:0;7146:6;;-1:-1:-1;;;;;7146:6:0;7156:10;7146:20;7138:50;;;;-1:-1:-1;;;7138:50:0;;12273:2:1;7138:50:0;;;12255:21:1;12312:2;12292:18;;;12285:30;-1:-1:-1;;;12331:18:1;;;12324:47;12388:18;;7138:50:0;12071:341:1;7138:50:0;14633:7:::1;:29:::0;;::::1;::::0;;::::1;14673::::0;;;;;;;;;;;::::1;;;14743:25:::0;;14713:19;;;::::1;;14743:25:::0;;;;;;::::1;;;14779::::0;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;;14713:19;14831:21:::1;14673:29:::0;14633;14831:21:::1;:::i;:::-;:28;;;;:::i;:::-;:38;;;;:::i;:::-;14815:7;:54:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;14503:374:0:o;13806:125::-;13891:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;13891:32:0;;;160:74:1;13867:4:0;;13891:9;;;;;:23;;133:18:1;;13891:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11377:309::-;-1:-1:-1;;;;;11471:20:0;;11463:52;;;;-1:-1:-1;;;11463:52:0;;22026:2:1;11463:52:0;;;22008:21:1;22065:2;22045:18;;;22038:30;22104:21;22084:18;;;22077:49;22143:18;;11463:52:0;21824:343:1;11463:52:0;-1:-1:-1;;;;;11534:21:0;;11526:53;;;;-1:-1:-1;;;11526:53:0;;22026:2:1;11526:53:0;;;22008:21:1;22065:2;22045:18;;;22038:30;22104:21;22084:18;;;22077:49;22143:18;;11526:53:0;21824:343:1;11526:53:0;-1:-1:-1;;;;;11592:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11645:33;;391:25:1;;;11645:33:0;;364:18:1;11645:33:0;;;;;;;11377:309;;;:::o;17764:2292::-;17843:4;-1:-1:-1;;;;;17868:18:0;;17860:68;;;;-1:-1:-1;;;17860:68:0;;22374:2:1;17860:68:0;;;22356:21:1;22413:2;22393:18;;;22386:30;22452:34;22432:18;;;22425:62;22523:7;22503:18;;;22496:35;22548:19;;17860:68:0;22172:401:1;17860:68:0;-1:-1:-1;;;;;17947:16:0;;17939:64;;;;-1:-1:-1;;;17939:64:0;;22780:2:1;17939:64:0;;;22762:21:1;22819:2;22799:18;;;22792:30;22858:34;22838:18;;;22831:62;22929:5;22909:18;;;22902:33;22952:19;;17939:64:0;22578:399:1;17939:64:0;18031:1;18022:6;:10;18014:64;;;;-1:-1:-1;;;18014:64:0;;23184:2:1;18014:64:0;;;23166:21:1;23223:2;23203:18;;;23196:30;23262:34;23242:18;;;23235:62;23333:11;23313:18;;;23306:39;23362:19;;18014:64:0;22982:405:1;18014:64:0;-1:-1:-1;;;;;18177:13:0;;18089:8;18177:13;;;:7;:13;;;;;;18089:8;;;;18177:13;;18173:162;;;18213:4;18207:10;;18173:162;;;-1:-1:-1;;;;;18239:11:0;;;;;;:7;:11;;;;;;;;18235:100;;;18274:4;18267:11;;18235:100;;;-1:-1:-1;18319:4:0;18235:100;18348:20;18359:4;18365:2;18348:10;:20::i;:::-;18345:872;;;18389:14;;;;18385:89;;18424:34;;-1:-1:-1;;;18424:34:0;;23594:2:1;18424:34:0;;;23576:21:1;23633:2;23613:18;;;23606:30;23672:26;23652:18;;;23645:54;23716:18;;18424:34:0;23392:348:1;18385:89:0;18491:3;18488:462;;;-1:-1:-1;;;;;18519:27:0;;;;;;:21;:27;;;;;;;;18518:28;:58;;;;-1:-1:-1;;;;;;18551:25:0;;;;;;:21;:25;;;;;;;;18550:26;18518:58;18514:185;;;18619:15;;18609:6;:25;;18601:78;;;;-1:-1:-1;;;18601:78:0;;23947:2:1;18601:78:0;;;23929:21:1;23986:2;23966:18;;;23959:30;24025:34;24005:18;;;23998:62;24096:10;24076:18;;;24069:38;24124:19;;18601:78:0;23745:404:1;18601:78:0;18488:462;;;18724:4;18720:230;;;-1:-1:-1;;;;;18754:27:0;;;;;;:21;:27;;;;;;;;18753:28;:58;;;;-1:-1:-1;;;;;;18786:25:0;;;;;;:21;:25;;;;;;;;18785:26;18753:58;18749:186;;;18854:16;;18844:6;:26;;18836:79;;;;-1:-1:-1;;;18836:79:0;;23947:2:1;18836:79:0;;;23929:21:1;23986:2;23966:18;;;23959:30;24025:34;24005:18;;;23998:62;24096:10;24076:18;;;24069:38;24124:19;;18836:79:0;23745:404:1;18836:79:0;18981:9;;-1:-1:-1;;;;;18967:24:0;;;18981:9;;18967:24;;;;:33;;;18996:4;18995:5;18967:33;18964:242;;;-1:-1:-1;;;;;19026:25:0;;;;;;:21;:25;;;;;;;;19021:170;;19110:14;;19100:6;19084:13;19094:2;-1:-1:-1;;;;;11005:16:0;10978:7;11005:16;;;:7;:16;;;;;;;10912:117;19084:13;:22;;;;:::i;:::-;:40;;19076:95;;;;-1:-1:-1;;;19076:95:0;;24489:2:1;19076:95:0;;;24471:21:1;24528:2;24508:18;;;24501:30;24567:34;24547:18;;;24540:62;24638:12;24618:18;;;24611:40;24668:19;;19076:95:0;24287:406:1;19076:95:0;-1:-1:-1;;;;;19262:25:0;;19229:12;19262:25;;;:19;:25;;;;;;19244:4;;19262:25;;;:52;;-1:-1:-1;;;;;;19291:23:0;;;;;;:19;:23;;;;;;;;19262:52;19259:98;;;-1:-1:-1;19340:5:0;19259:98;19373:4;19369:599;;;19399:6;;;;19398:7;:47;;;;-1:-1:-1;19426:19:0;;;;;;;19398:47;19394:557;;;19515:15;19495:17;;19484:8;;:28;;;;:::i;:::-;:46;19480:456;;;19604:4;19555:28;11005:16;;;:7;:16;;;;;;19661:13;;19637:37;;19633:284;;19730:10;;19706:20;:34;19703:77;;-1:-1:-1;19767:10:0;;19703:77;19806:34;19819:20;19806:12;:34::i;:::-;19878:15;19867:8;:26;19633:284;19532:404;19480:456;19986:62;20004:4;20010:2;20014:6;20022:7;20031:3;20036:4;20042:5;19986:17;:62::i;:::-;19979:69;17764:2292;-1:-1:-1;;;;;;;;17764:2292:0:o;17399:357::-;17467:4;17499:6;;-1:-1:-1;;;;;17491:14:0;;;17499:6;;17491:14;;;;:43;;-1:-1:-1;17528:6:0;;-1:-1:-1;;;;;17522:12:0;;;17528:6;;17522:12;;17491:43;:79;;;;-1:-1:-1;17564:6:0;;-1:-1:-1;;;;;17564:6:0;17551:9;:19;;17491:79;:118;;;;-1:-1:-1;;;;;;17588:21:0;;;;;;:17;:21;;;;;;;;17587:22;17491:118;:159;;;;-1:-1:-1;;;;;;17627:23:0;;;;;;:17;:23;;;;;;;;17626:24;17491:159;:186;;;;-1:-1:-1;;;;;;17667:10:0;;5722:42;17667:10;;17491:186;:219;;;;-1:-1:-1;;;;;;17694:16:0;;;;17491:219;:257;;;;-1:-1:-1;;;;;;17727:21:0;;17743:4;17727:21;;17491:257;17484:264;17399:357;-1:-1:-1;;;17399:357:0:o;20064:1951::-;7040:6;:13;;-1:-1:-1;;7040:13:0;7049:4;7040:13;;;20147:30:::1;::::0;;::::1;::::0;::::1;::::0;;20170:7:::1;20147:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;;;20188:56:::1;;20226:7;;;20188:56;20279:4;20259:26;::::0;;;:11:::1;:26;::::0;;;;;;;20294:9:::1;::::0;-1:-1:-1;;;;;20294:9:0::1;20259:46:::0;;;;;;;;-1:-1:-1;;20259:67:0::1;20256:165;;20363:4;20343:26;::::0;;;:11:::1;:26;::::0;;;;;;;20378:9:::1;::::0;-1:-1:-1;;;;;20378:9:0::1;20343:46:::0;;;;;;;-1:-1:-1;;20343:66:0;;20256:165:::1;20433:17;20514:1;20498:6;:12;;;20454:56;;20478:6;:16;;;20455:39;;:20;:39;;;;:::i;:::-;20454:56;;;;:::i;:::-;20453:62;;;;:::i;:::-;20433:82:::0;-1:-1:-1;20526:15:0::1;20544:32;20433:82:::0;20544:20;:32:::1;:::i;:::-;20621:16;::::0;;20635:1:::1;20621:16:::0;;;;;::::1;::::0;;20526:50;;-1:-1:-1;20597:21:0::1;::::0;20621:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20621:16:0::1;20597:40;;20666:4;20648;20653:1;20648:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20648:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;20692:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;20648:7;;20692:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20682:4;20687:1;20682:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20682:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;20721:9:::1;::::0;:186:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:186:::1;::::0;20796:7;;20721:9:::1;::::0;20834:4;;20861::::1;::::0;20881:15:::1;::::0;20721:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;20941:21:0::1;::::0;-1:-1:-1;20920:18:0::1;::::0;-1:-1:-1;21027:7:0;;-1:-1:-1;21001:22:0::1;21014:9:::0;20941:21;21001:22:::1;:::i;:::-;21000:34;;;;:::i;:::-;20973:61:::0;-1:-1:-1;21051:13:0;;21047:328:::1;;21081:9;::::0;:222:::1;::::0;;;;21158:4:::1;21081:222;::::0;::::1;25672:34:1::0;25722:18;;;25715:34;;;21081:9:0::1;25765:18:1::0;;;25758:34;;;25808:18;;;25801:34;5722:42:0::1;25851:19:1::0;;;25844:44;21273:15:0::1;25904:19:1::0;;;25897:35;-1:-1:-1;;;;;21081:9:0;;::::1;::::0;:25:::1;::::0;21114:16;;25583:19:1;;21081:222:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;21323:40:0::1;::::0;;9336:25:1;;;9392:2;9377:18;;9370:34;;;21323:40:0::1;::::0;-1:-1:-1;9309:18:1;21323:40:0::1;;;;;;;21047:328;21387:30;21401:16:::0;21387:30;::::1;:::i;:::-;;;21444:6;:16;;;21428:6;:12;;:32;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;21522:12:::1;::::0;::::1;::::0;21507:11:::1;::::0;::::1;::::0;21471:19:::1;::::0;-1:-1:-1;21493:41:0;;::::1;::::0;21494:24:::1;::::0;::::1;:10:::0;:24:::1;:::i;:::-;21493:41;;;;:::i;:::-;21471:63;;21545:22;21602:6;:12;;;21570:44;;21584:6;:14;;;21571:27;;:10;:27;;;;:::i;:::-;21570:44;;;;:::i;:::-;21545:69:::0;-1:-1:-1;21625:24:0::1;21666:28;21545:69:::0;21666:11;:28:::1;:::i;:::-;21652:43;::::0;:10;:43:::1;:::i;:::-;21710:11;::::0;::::1;::::0;21625:70;;-1:-1:-1;21710:15:0::1;;::::0;21706:86:::1;;21742:16:::0;;:38:::1;::::0;-1:-1:-1;;;;;21742:16:0;;::::1;::::0;:38;::::1;;;::::0;21768:11;;21742:16:::1;:38:::0;:16;:38;21768:11;21742:16;:38;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21706:86;21806:14;::::0;::::1;::::0;:18:::1;;::::0;21802:95:::1;;21841:19:::0;;:44:::1;::::0;-1:-1:-1;;;;;21841:19:0;;::::1;::::0;:44;::::1;;;::::0;21870:14;;21841:19:::1;:44:::0;:19;:44;21870:14;21841:19;:44;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21802:95;21911:16;::::0;::::1;::::0;:20:::1;;::::0;21907:101:::1;;21948:11;:21:::0;:48:::1;::::0;-1:-1:-1;;;;;21948:21:0;;::::1;::::0;:48;::::1;;;::::0;21979:16;;21948:21:::1;:48:::0;:21;:48;21979:16;21948:21;:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21907:101;20136:1879;;;;;;;;;7064:1;-1:-1:-1::0;7076:6:0;:14;;-1:-1:-1;;7076:14:0;;;20064:1951::o;23655:945::-;23810:16;;23788:4;;23810:16;;;;;23805:221;;23843:28;23862:4;23868:2;23843:18;:28::i;:::-;23891:16;;;;;;;23890:17;:41;;;;;23911:20;23922:4;23928:2;23911:10;:20::i;:::-;23886:129;;;23952:47;;-1:-1:-1;;;23952:47:0;;26678:2:1;23952:47:0;;;26660:21:1;26717:2;26697:18;;;26690:30;26756:34;26736:18;;;26729:62;26827:7;26807:18;;;26800:35;26852:19;;23952:47:0;26476:401:1;23886:129:0;24042:20;24053:4;24059:2;24042:10;:20::i;:::-;24038:314;;;24110:9;;:37;;;;;-1:-1:-1;;;;;27163:15:1;;;24110:37:0;;;27145:34:1;27215:15;;;27195:18;;;27188:43;27247:18;;;27240:34;;;24079:12:0;;24110:9;;;;;:19;;27057:18:1;;24110:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;24110:37:0;;;;;;;;-1:-1:-1;;24110:37:0;;;;;;;;;;;;:::i;:::-;;;24106:163;;24245:8;;;24106:163;24198:5;-1:-1:-1;24289:7:0;24285:56;;24317:8;;;24285:56;24064:288;24038:314;-1:-1:-1;;;;;24364:13:0;;;;;;:7;:13;;;;;:23;;24381:6;;24364:13;:23;;24381:6;;24364:23;:::i;:::-;;;;-1:-1:-1;24398:22:0;;-1:-1:-1;24424:7:0;24423:55;;24472:6;24423:55;;;24435:34;24445:4;24451:3;24456:4;24462:6;24435:9;:34::i;:::-;-1:-1:-1;;;;;24489:11:0;;;;;;:7;:11;;;;;:29;;24398:80;;-1:-1:-1;24398:80:0;;24489:11;;;:29;;24398:80;;24489:29;:::i;:::-;;;;;;;;24551:2;-1:-1:-1;;;;;24536:34:0;24545:4;-1:-1:-1;;;;;24536:34:0;;24555:14;24536:34;;;;391:25:1;;379:2;364:18;;245:177;24536:34:0;;;;;;;;-1:-1:-1;24588:4:0;;23655:945;-1:-1:-1;;;;;;;;23655:945:0:o;22023:508::-;22105:16;;;;;;;22104:17;22096:65;;;;-1:-1:-1;;;22096:65:0;;27487:2:1;22096:65:0;;;27469:21:1;27526:2;27506:18;;;27499:30;27565:34;27545:18;;;27538:62;27636:5;27616:18;;;27609:33;27659:19;;22096:65:0;27285:399:1;22096:65:0;22177:20;22188:4;22194:2;22177:10;:20::i;:::-;22176:21;:37;;;;-1:-1:-1;22207:6:0;;-1:-1:-1;;;;;22201:12:0;;;22207:6;;22201:12;22176:37;22172:352;;;-1:-1:-1;;;;;22230:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;22230:30:0;22256:4;22230:30;;;22275:16;:23;;-1:-1:-1;;22275:23:0;22230:30;22275:23;;;;;22324:9;;;;22313:107;;22368:9;:36;;;;22398:4;22368:36;;;;;22313:107;22434:19;:26;;-1:-1:-1;;22434:26:0;;;;;22480:32;;-1:-1:-1;4769:41:1;;22480:32:0;;4757:2:1;4742:18;22480:32:0;;;;;;;22023:508;;:::o;24608:1018::-;24696:7;24716:18;24737:9;;;;;;;;;-1:-1:-1;;;;;24737:9:0;-1:-1:-1;;;;;24737:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24716:39;-1:-1:-1;24770:15:0;24766:276;;24806:3;24802:229;;;-1:-1:-1;24843:9:0;:16;;;24802:229;;;24885:4;24881:150;;;-1:-1:-1;24923:9:0;:17;;;;;;24881:150;;;-1:-1:-1;24994:9:0;:21;;;;;;24881:150;25054:17;5616:5;25074:19;25083:10;25074:6;:19;:::i;:::-;:38;;;;:::i;:::-;25159:7;:15;25054:58;;-1:-1:-1;25123:21:0;;25159:15;;;;;:19;25155:304;;25260:7;:15;25244:31;;25260:15;;;;;;;25244:13;;;;:31;:::i;:::-;25224:7;:15;25211:65;;;;;25212:27;;25224:15;;;;25212:9;:27;:::i;:::-;25211:65;;;;:::i;:::-;25299:19;;-1:-1:-1;;;;;25299:19:0;25291:28;;;;:7;:28;;;;;:45;;25195:81;;-1:-1:-1;25195:81:0;;25291:28;;;:45;;25195:81;;25291:45;:::i;:::-;;;;-1:-1:-1;;25371:19:0;;25356:50;;391:25:1;;;-1:-1:-1;;;;;25371:19:0;;;;25356:50;;;;;379:2:1;364:18;25356:50:0;;;;;;;25421:26;25434:13;25421:26;;:::i;:::-;;;25155:304;25487:4;25471:22;;;;:7;:22;;;;;:35;;25497:9;;25471:22;:35;;25497:9;;25471:35;:::i;:::-;;;;-1:-1:-1;;25522:40:0;;391:25:1;;;25545:4:0;;-1:-1:-1;;;;;25522:40:0;;;;;379:2:1;364:18;25522:40:0;;;;;;;25592:25;25604:13;25592:9;:25;:::i;:::-;25582:36;;:6;:36;:::i;427:118:1:-;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;931:184::-;983:77;980:1;973:88;1080:4;1077:1;1070:15;1104:4;1101:1;1094:15;1120:334;1191:2;1185:9;1247:2;1237:13;;-1:-1:-1;;1233:86:1;1221:99;;1350:18;1335:34;;1371:22;;;1332:62;1329:88;;;1397:18;;:::i;:::-;1433:2;1426:22;1120:334;;-1:-1:-1;1120:334:1:o;1459:183::-;1519:4;1552:18;1544:6;1541:30;1538:56;;;1574:18;;:::i;:::-;-1:-1:-1;1619:1:1;1615:14;1631:4;1611:25;;1459:183::o;1647:154::-;-1:-1:-1;;;;;1726:5:1;1722:54;1715:5;1712:65;1702:93;;1791:1;1788;1781:12;1806:737;1860:5;1913:3;1906:4;1898:6;1894:17;1890:27;1880:55;;1931:1;1928;1921:12;1880:55;1967:6;1954:20;1993:4;2017:60;2033:43;2073:2;2033:43;:::i;:::-;2017:60;:::i;:::-;2111:15;;;2197:1;2193:10;;;;2181:23;;2177:32;;;2142:12;;;;2221:15;;;2218:35;;;2249:1;2246;2239:12;2218:35;2285:2;2277:6;2273:15;2297:217;2313:6;2308:3;2305:15;2297:217;;;2393:3;2380:17;2410:31;2435:5;2410:31;:::i;:::-;2454:18;;2492:12;;;;2330;;2297:217;;;-1:-1:-1;2532:5:1;1806:737;-1:-1:-1;;;;;;1806:737:1:o;2548:477::-;2638:6;2646;2699:2;2687:9;2678:7;2674:23;2670:32;2667:52;;;2715:1;2712;2705:12;2667:52;2755:9;2742:23;2788:18;2780:6;2777:30;2774:50;;;2820:1;2817;2810:12;2774:50;2843:61;2896:7;2887:6;2876:9;2872:22;2843:61;:::i;:::-;2833:71;;;2954:2;2943:9;2939:18;2926:32;2967:28;2989:5;2967:28;:::i;3400:656::-;3512:4;3541:2;3570;3559:9;3552:21;3602:6;3596:13;3645:6;3640:2;3629:9;3625:18;3618:34;3670:1;3680:140;3694:6;3691:1;3688:13;3680:140;;;3789:14;;;3785:23;;3779:30;3755:17;;;3774:2;3751:26;3744:66;3709:10;;3680:140;;;3838:6;3835:1;3832:13;3829:91;;;3908:1;3903:2;3894:6;3883:9;3879:22;3875:31;3868:42;3829:91;-1:-1:-1;3972:2:1;3960:15;-1:-1:-1;;3956:88:1;3941:104;;;;4047:2;3937:113;;3400:656;-1:-1:-1;;;3400:656:1:o;4309:315::-;4377:6;4385;4438:2;4426:9;4417:7;4413:23;4409:32;4406:52;;;4454:1;4451;4444:12;4406:52;4493:9;4480:23;4512:31;4537:5;4512:31;:::i;:::-;4562:5;4614:2;4599:18;;;;4586:32;;-1:-1:-1;;;4309:315:1:o;4821:456::-;4898:6;4906;4914;4967:2;4955:9;4946:7;4942:23;4938:32;4935:52;;;4983:1;4980;4973:12;4935:52;5022:9;5009:23;5041:31;5066:5;5041:31;:::i;:::-;5091:5;-1:-1:-1;5148:2:1;5133:18;;5120:32;5161:33;5120:32;5161:33;:::i;:::-;4821:456;;5213:7;;-1:-1:-1;;;5267:2:1;5252:18;;;;5239:32;;4821:456::o;5282:248::-;5350:6;5358;5411:2;5399:9;5390:7;5386:23;5382:32;5379:52;;;5427:1;5424;5417:12;5379:52;-1:-1:-1;;5450:23:1;;;5520:2;5505:18;;;5492:32;;-1:-1:-1;5282:248:1:o;5535:1138::-;5653:6;5661;5714:2;5702:9;5693:7;5689:23;5685:32;5682:52;;;5730:1;5727;5720:12;5682:52;5770:9;5757:23;5799:18;5840:2;5832:6;5829:14;5826:34;;;5856:1;5853;5846:12;5826:34;5879:61;5932:7;5923:6;5912:9;5908:22;5879:61;:::i;:::-;5869:71;;5959:2;5949:12;;6014:2;6003:9;5999:18;5986:32;6043:2;6033:8;6030:16;6027:36;;;6059:1;6056;6049:12;6027:36;6082:24;;;-1:-1:-1;6137:4:1;6129:13;;6125:27;-1:-1:-1;6115:55:1;;6166:1;6163;6156:12;6115:55;6202:2;6189:16;6225:60;6241:43;6281:2;6241:43;:::i;6225:60::-;6319:15;;;6401:1;6397:10;;;;6389:19;;6385:28;;;6350:12;;;;6425:19;;;6422:39;;;6457:1;6454;6447:12;6422:39;6481:11;;;;6501:142;6517:6;6512:3;6509:15;6501:142;;;6583:17;;6571:30;;6534:12;;;;6621;;;;6501:142;;;6662:5;6652:15;;;;;;;5535:1138;;;;;:::o;6867:159::-;6934:20;;6994:6;6983:18;;6973:29;;6963:57;;7016:1;7013;7006:12;6963:57;6867:159;;;:::o;7031:328::-;7105:6;7113;7121;7174:2;7162:9;7153:7;7149:23;7145:32;7142:52;;;7190:1;7187;7180:12;7142:52;7213:28;7231:9;7213:28;:::i;:::-;7203:38;;7260:37;7293:2;7282:9;7278:18;7260:37;:::i;:::-;7250:47;;7316:37;7349:2;7338:9;7334:18;7316:37;:::i;:::-;7306:47;;7031:328;;;;;:::o;7364:454::-;7459:6;7467;7475;7483;7491;7544:3;7532:9;7523:7;7519:23;7515:33;7512:53;;;7561:1;7558;7551:12;7512:53;-1:-1:-1;;7584:23:1;;;7654:2;7639:18;;7626:32;;-1:-1:-1;7705:2:1;7690:18;;7677:32;;7756:2;7741:18;;7728:32;;-1:-1:-1;7807:3:1;7792:19;7779:33;;-1:-1:-1;7364:454:1;-1:-1:-1;7364:454:1:o;7823:382::-;7888:6;7896;7949:2;7937:9;7928:7;7924:23;7920:32;7917:52;;;7965:1;7962;7955:12;7917:52;8004:9;7991:23;8023:31;8048:5;8023:31;:::i;8210:247::-;8269:6;8322:2;8310:9;8301:7;8297:23;8293:32;8290:52;;;8338:1;8335;8328:12;8290:52;8377:9;8364:23;8396:31;8421:5;8396:31;:::i;8462:695::-;8572:6;8580;8588;8596;8649:3;8637:9;8628:7;8624:23;8620:33;8617:53;;;8666:1;8663;8656:12;8617:53;8705:9;8692:23;8724:31;8749:5;8724:31;:::i;:::-;8774:5;-1:-1:-1;8831:2:1;8816:18;;8803:32;8844:33;8803:32;8844:33;:::i;:::-;8896:7;-1:-1:-1;8955:2:1;8940:18;;8927:32;8968:33;8927:32;8968:33;:::i;:::-;9020:7;-1:-1:-1;9079:2:1;9064:18;;9051:32;9092:33;9051:32;9092:33;:::i;:::-;8462:695;;;;-1:-1:-1;8462:695:1;;-1:-1:-1;;8462:695:1:o;9415:385::-;9501:6;9509;9517;9525;9578:3;9566:9;9557:7;9553:23;9549:33;9546:53;;;9595:1;9592;9585:12;9546:53;-1:-1:-1;;9618:23:1;;;9688:2;9673:18;;9660:32;;-1:-1:-1;9739:2:1;9724:18;;9711:32;;9790:2;9775:18;9762:32;;-1:-1:-1;9415:385:1;-1:-1:-1;9415:385:1:o;9805:241::-;9861:6;9914:2;9902:9;9893:7;9889:23;9885:32;9882:52;;;9930:1;9927;9920:12;9882:52;9969:9;9956:23;9988:28;10010:5;9988:28;:::i;10658:388::-;10726:6;10734;10787:2;10775:9;10766:7;10762:23;10758:32;10755:52;;;10803:1;10800;10793:12;10755:52;10842:9;10829:23;10861:31;10886:5;10861:31;:::i;:::-;10911:5;-1:-1:-1;10968:2:1;10953:18;;10940:32;10981:33;10940:32;10981:33;:::i;11051:474::-;11141:6;11149;11157;11165;11173;11226:3;11214:9;11205:7;11201:23;11197:33;11194:53;;;11243:1;11240;11233:12;11194:53;11266:28;11284:9;11266:28;:::i;:::-;11256:38;;11313:37;11346:2;11335:9;11331:18;11313:37;:::i;:::-;11303:47;;11369:37;11402:2;11391:9;11387:18;11369:37;:::i;:::-;11359:47;;11425:37;11458:2;11447:9;11443:18;11425:37;:::i;:::-;11415:47;;11481:38;11514:3;11503:9;11499:19;11481:38;:::i;:::-;11471:48;;11051:474;;;;;;;;:::o;12690:484::-;12743:3;12781:5;12775:12;12808:6;12803:3;12796:19;12834:4;12863:2;12858:3;12854:12;12847:19;;12900:2;12893:5;12889:14;12921:1;12931:218;12945:6;12942:1;12939:13;12931:218;;;13010:13;;-1:-1:-1;;;;;13006:62:1;12994:75;;13089:12;;;;13124:15;;;;12967:1;12960:9;12931:218;;;-1:-1:-1;13165:3:1;;12690:484;-1:-1:-1;;;;;12690:484:1:o;13179:342::-;13380:2;13369:9;13362:21;13343:4;13400:56;13452:2;13441:9;13437:18;13429:6;13400:56;:::i;:::-;13392:64;;13506:6;13499:14;13492:22;13487:2;13476:9;13472:18;13465:50;13179:342;;;;;:::o;13526:184::-;13578:77;13575:1;13568:88;13675:4;13672:1;13665:15;13699:4;13696:1;13689:15;13715:482;13804:1;13847:5;13804:1;13861:330;13882:7;13872:8;13869:21;13861:330;;;14001:4;-1:-1:-1;;13929:77:1;13923:4;13920:87;13917:113;;;14010:18;;:::i;:::-;14060:7;14050:8;14046:22;14043:55;;;14080:16;;;;14043:55;14159:22;;;;14119:15;;;;13861:330;;;13865:3;13715:482;;;;;:::o;14202:866::-;14251:5;14281:8;14271:80;;-1:-1:-1;14322:1:1;14336:5;;14271:80;14370:4;14360:76;;-1:-1:-1;14407:1:1;14421:5;;14360:76;14452:4;14470:1;14465:59;;;;14538:1;14533:130;;;;14445:218;;14465:59;14495:1;14486:10;;14509:5;;;14533:130;14570:3;14560:8;14557:17;14554:43;;;14577:18;;:::i;:::-;-1:-1:-1;;14633:1:1;14619:16;;14648:5;;14445:218;;14747:2;14737:8;14734:16;14728:3;14722:4;14719:13;14715:36;14709:2;14699:8;14696:16;14691:2;14685:4;14682:12;14678:35;14675:77;14672:159;;;-1:-1:-1;14784:19:1;;;14816:5;;14672:159;14863:34;14888:8;14882:4;14863:34;:::i;:::-;14993:6;-1:-1:-1;;14921:79:1;14912:7;14909:92;14906:118;;;15004:18;;:::i;:::-;15042:20;;14202:866;-1:-1:-1;;;14202:866:1:o;15073:140::-;15131:5;15160:47;15201:4;15191:8;15187:19;15181:4;15160:47;:::i;15218:274::-;15258:1;15284;15274:189;;15319:77;15316:1;15309:88;15420:4;15417:1;15410:15;15448:4;15445:1;15438:15;15274:189;-1:-1:-1;15477:9:1;;15218:274::o;15497:228::-;15537:7;15663:1;-1:-1:-1;;15591:74:1;15588:1;15585:81;15580:1;15573:9;15566:17;15562:105;15559:131;;;15670:18;;:::i;:::-;-1:-1:-1;15710:9:1;;15497:228::o;15730:125::-;15770:4;15798:1;15795;15792:8;15789:34;;;15803:18;;:::i;:::-;-1:-1:-1;15840:9:1;;15730:125::o;16629:184::-;16681:77;16678:1;16671:88;16778:4;16775:1;16768:15;16802:4;16799:1;16792:15;16818:175;16855:3;16899:4;16892:5;16888:16;16928:4;16919:7;16916:17;16913:43;;;16936:18;;:::i;:::-;16985:1;16972:15;;16818:175;-1:-1:-1;;16818:175:1:o;20400:251::-;20470:6;20523:2;20511:9;20502:7;20498:23;20494:32;20491:52;;;20539:1;20536;20529:12;20491:52;20571:9;20565:16;20590:31;20615:5;20590:31;:::i;21345:224::-;21384:3;21412:6;21445:2;21442:1;21438:10;21475:2;21472:1;21468:10;21506:3;21502:2;21498:12;21493:3;21490:21;21487:47;;;21514:18;;:::i;:::-;21550:13;;21345:224;-1:-1:-1;;;;21345:224:1:o;21574:245::-;21641:6;21694:2;21682:9;21673:7;21669:23;21665:32;21662:52;;;21710:1;21707;21700:12;21662:52;21742:9;21736:16;21761:28;21783:5;21761:28;:::i;24154:128::-;24194:3;24225:1;24221:6;24218:1;24215:13;24212:39;;;24231:18;;:::i;:::-;-1:-1:-1;24267:9:1;;24154:128::o;24698:605::-;24997:6;24986:9;24979:25;25040:6;25035:2;25024:9;25020:18;25013:34;25083:3;25078:2;25067:9;25063:18;25056:31;24960:4;25104:57;25156:3;25145:9;25141:19;25133:6;25104:57;:::i;:::-;-1:-1:-1;;;;;25197:55:1;;;;25192:2;25177:18;;25170:83;-1:-1:-1;25284:3:1;25269:19;25262:35;25096:65;24698:605;-1:-1:-1;;;24698:605:1:o;25943:306::-;26031:6;26039;26047;26100:2;26088:9;26079:7;26075:23;26071:32;26068:52;;;26116:1;26113;26106:12;26068:52;26145:9;26139:16;26129:26;;26195:2;26184:9;26180:18;26174:25;26164:35;;26239:2;26228:9;26224:18;26218:25;26208:35;;25943:306;;;;;:::o;26254:217::-;26293:4;26322:6;26378:10;;;;26348;;26400:12;;;26397:38;;;26415:18;;:::i;:::-;26452:13;;26254:217;-1:-1:-1;;;26254:217:1:o;27689:184::-;27759:6;27812:2;27800:9;27791:7;27787:23;27783:32;27780:52;;;27828:1;27825;27818:12;27780:52;-1:-1:-1;27851:16:1;;27689:184;-1:-1:-1;27689:184:1:o

Swarm Source

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