ETH Price: $2,376.06 (+1.00%)

Token

Sleepy Dev (SLEEPY)
 

Overview

Max Total Supply

100,000,000 SLEEPY

Holders

62

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 SLEEPY

Value
$0.00
0xdf0afe69f12a0234e54db69225aba0f7b86e5b26
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:
narcolepsy

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-02
*/

/*
             << Telegram  >>
     Website : https://SleepyDev.art
     t.me/SleepyDevPortal
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;

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

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

interface IERC20 {
  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 IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

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

contract narcolepsy is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public isExcludedFromMaxWalletRestrictions;

    mapping (address => bool) private _isSniperOrBlacklisted;
    
    mapping (address => uint256) firstBuy;
    
    uint256 private startingSupply = 100_000_000;

    string private _name = "Sleepy Dev";
    string private _symbol = "SLEEPY";
//==========================
    // FEES
    struct taxes {
    uint buyFee;
    uint sellFee;
    uint transferFee;
    uint antiDumpLT;
    }

    taxes public Fees = taxes(
    {buyFee: 400, sellFee: 400, transferFee: 300, antiDumpLT: 400});
//==========================
    // Maxima

    struct Maxima {
    uint maxBuy;
    uint maxSell;
    uint maxTransfer;
    uint maxAntiDump;
    }

    Maxima public maxFees = Maxima(
    {maxBuy: 700, maxSell: 700, maxTransfer: 700, maxAntiDump: 700});
//==========================    
    //Proportions of Taxes
    struct feeProportions {
    uint liquidity;
    uint burn;
    uint narcoleptic;
    uint dev;
    }

    feeProportions public Ratios = feeProportions(
    { liquidity: 100, burn: 0, narcoleptic: 100, dev: 100});
//==========================
    // Anti-Dump
    struct jeetParameters {
    uint longTerm;
    bool enabled;
    }
    jeetParameters public terms = jeetParameters(
    {longTerm: 24 hours, enabled: true});
    // Anti-Dump
//==========================
    uint256 private constant masterTaxDivisor = 10000;
    uint256 private constant MAX = ~uint256(0);
    uint8 constant private _decimals = 9;
 
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _tFeeTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // UNI ROUTER
    address constant private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD; // Receives tokens, deflates supply, increases price floor.
    
    address payable public _sleepyDev = payable(0x52D7983dd22367d7c6747480416B62C3429dF00D);
    address payable public _narcolepsyWallet = payable(0x52D7983dd22367d7c6747480416B62C3429dF00D);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent = 2;
    uint256 private maxTxDivisor = 100;
    uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    
    uint256 private maxWalletPercent = 2;
    uint256 private maxWalletDivisor = 100;
    uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
    
    uint256 private swapThreshold = (_tTotal * 5) / 10_000;
    uint256 private swapAmount = (_tTotal * 5) / 1_000;

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0; // make constant
    uint256 private snipeBlockAmt = 0;
    uint256 public snipersCaught = 0;

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

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

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

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

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

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

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

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

    function getFirstBuy(address account) public view returns (uint256) {
        return firstBuy[account];
    }

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

        return _transfer(sender, recipient, amount);
    }

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

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

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

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

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

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


    function excludeFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = true;
    }

    function revokeExcludedFromWalletRestrictions(address excludedAddress) public onlyOwner{
        isExcludedFromMaxWalletRestrictions[excludedAddress] = false;
    }

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

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

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

    function setRatios(uint _liquidity, uint _narcoleptic, uint _dev, uint _burn) external onlyOwner {
        require ( (_liquidity+_narcoleptic+_dev+_burn) == 1000, "!(1K)");
        Ratios.liquidity = _liquidity;
        Ratios.narcoleptic = _narcoleptic;
        Ratios.dev = _dev;
        Ratios.burn = _burn;}

    function antiDumpParameters(bool _enabled, uint _longTerm) external onlyOwner {
        require(_longTerm <= 24);
        terms.longTerm = _longTerm * 1 hours;
        terms.enabled = _enabled;}

    function setTaxes(uint _buyFee, uint _sellFee, uint _transferFee, uint _antiDumpLT) external onlyOwner {
        require(_buyFee <= maxFees.maxBuy
                && _sellFee <= maxFees.maxSell
                && _transferFee <= maxFees.maxTransfer
                && _antiDumpLT <= maxFees.maxAntiDump,
                "Cannot exceed maximums.");
         Fees.buyFee = _buyFee;
         Fees.sellFee = _sellFee;
         Fees.transferFee = _transferFee;
         Fees.antiDumpLT= _antiDumpLT;

    }

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

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

    }

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

    function setWallets(address payable sleepyDev, address payable narcolepsyWallet) external onlyOwner {
        _sleepyDev = payable(sleepyDev);
        _narcolepsyWallet = payable(narcolepsyWallet);
    }

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

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

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

            }
            
        }


        if (_tOwned[to] == 0) {
            firstBuy[to] = block.timestamp;
        }

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

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

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        if (Ratios.liquidity + Ratios.narcoleptic + Ratios.dev == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.narcoleptic + Ratios.dev) ) / 2;

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

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.narcoleptic + Ratios.dev) ) / 2;

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {
            _sleepyDev.transfer(((currentBalance - liquidityBalance) * Ratios.narcoleptic) / (Ratios.narcoleptic + Ratios.dev));
            _narcolepsyWallet.transfer(address(this).balance);
        }
    }

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

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

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

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

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

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

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

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

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

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

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;

        if (to == lpPair) {
            if (terms.enabled){
                if (firstBuy[from] + terms.longTerm > block.timestamp) {currentFee = Fees.antiDumpLT;}

                else {currentFee = Fees.sellFee;}
            }
            else {currentFee=Fees.sellFee;}
            } 

        else if (from == lpPair) {currentFee = Fees.buyFee;} 

        else {currentFee = Fees.transferFee;}

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

        uint256 burnAmt = (amount * currentFee * Ratios.burn) / (Ratios.burn + Ratios.liquidity + Ratios.narcoleptic + Ratios.dev ) / masterTaxDivisor;
        uint256 feeAmount = (amount * currentFee / masterTaxDivisor) - burnAmt;
        _tOwned[DEAD] += burnAmt;
        _tOwned[address(this)] += (feeAmount);
        emit Transfer(from, DEAD, burnAmt);
        emit Transfer(from, address(this), feeAmount);
        return amount - feeAmount - burnAmt;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Fees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"},{"internalType":"uint256","name":"antiDumpLT","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ratios","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"narcoleptic","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_narcolepsyWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sleepyDev","outputs":[{"internalType":"address payable","name":"","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":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_longTerm","type":"uint256"}],"name":"antiDumpParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"excludeFromWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getFirstBuy","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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxWalletRestrictions","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rInitializer","type":"uint256"}],"name":"isProtected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniperOrBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxFees","outputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxTransfer","type":"uint256"},{"internalType":"uint256","name":"maxAntiDump","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedAddress","type":"address"}],"name":"revokeExcludedFromWalletRestrictions","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":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_narcoleptic","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_transferFee","type":"uint256"},{"internalType":"uint256","name":"_antiDumpLT","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"sleepyDev","type":"address"},{"internalType":"address payable","name":"narcolepsyWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"terms","outputs":[{"internalType":"uint256","name":"longTerm","type":"uint256"},{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006003556305f5e100600a556040518060400160405280600a81526020017f536c656570792044657600000000000000000000000000000000000000000000815250600b90805190602001906200005e92919062000c49565b506040518060400160405280600681526020017f534c454550590000000000000000000000000000000000000000000000000000815250600c9080519060200190620000ac92919062000c49565b5060405180608001604052806101908152602001610190815260200161012c8152602001610190815250600d60008201518160000155602082015181600101556040820151816002015560608201518160030155505060405180608001604052806102bc81526020016102bc81526020016102bc81526020016102bc815250601160008201518160000155602082015181600101556040820151816002015560608201518160030155505060405180608001604052806064815260200160008152602001606481526020016064815250601560008201518160000155602082015181600101556040820151816002015560608201518160030155505060405180604001604052806201518081526020016001151581525060196000820151816000015560208201518160010160006101000a81548160ff02191690831515021790555050506009600a62000201919062000e9b565b600a5462000210919062000fd8565b601b557352d7983dd22367d7c6747480416b62c3429df00d601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507352d7983dd22367d7c6747480416b62c3429df00d602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000602060156101000a81548160ff02191690831515021790555060026021556064602255602254602154601b54620002f7919062000fd8565b62000303919062000e08565b60235560026024556064602555602554602454601b5462000325919062000fd8565b62000331919062000e08565b6026556127106005601b5462000348919062000fd8565b62000354919062000e08565b6027556103e86005601b546200036b919062000fd8565b62000377919062000e08565b6028556001602960006101000a81548160ff0219169083151502179055506000602960016101000a81548160ff0219169083151502179055506000602a556000602b556000602c556000602d556000602e556000602f55601b5460016000620003e562000a4560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200052157600080fd5b505afa15801562000536573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055c919062000d10565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620005e057600080fd5b505afa158015620005f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061b919062000d10565b306040518363ffffffff1660e01b81526004016200063b92919062000d8b565b602060405180830381600087803b1580156200065657600080fd5b505af11580156200066b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000691919062000d10565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160026000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600660006200082462000a4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560006200093d62000a4d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620009c6620009a262000a4560201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d601b5462000a7660201b60201c565b620009d662000a4560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601b5460405162000a37919062000dda565b60405180910390a36200119c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000ae9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ae09062000db8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b539062000db8565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000c3c919062000dda565b60405180910390a3505050565b82805462000c579062001084565b90600052602060002090601f01602090048101928262000c7b576000855562000cc7565b82601f1062000c9657805160ff191683800117855562000cc7565b8280016001018555821562000cc7579182015b8281111562000cc657825182559160200191906001019062000ca9565b5b50905062000cd6919062000cda565b5090565b5b8082111562000cf557600081600090555060010162000cdb565b5090565b60008151905062000d0a8162001182565b92915050565b60006020828403121562000d295762000d2862001147565b5b600062000d398482850162000cf9565b91505092915050565b62000d4d8162001039565b82525050565b600062000d6260138362000df7565b915062000d6f8262001159565b602082019050919050565b62000d85816200106d565b82525050565b600060408201905062000da2600083018562000d42565b62000db1602083018462000d42565b9392505050565b6000602082019050818103600083015262000dd38162000d53565b9050919050565b600060208201905062000df1600083018462000d7a565b92915050565b600082825260208201905092915050565b600062000e15826200106d565b915062000e22836200106d565b92508262000e355762000e34620010e9565b5b828204905092915050565b6000808291508390505b600185111562000e925780860481111562000e6a5762000e69620010ba565b5b600185161562000e7a5780820291505b808102905062000e8a856200114c565b945062000e4a565b94509492505050565b600062000ea8826200106d565b915062000eb58362001077565b925062000ee47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000eec565b905092915050565b60008262000efe576001905062000fd1565b8162000f0e576000905062000fd1565b816001811462000f27576002811462000f325762000f68565b600191505062000fd1565b60ff84111562000f475762000f46620010ba565b5b8360020a91508482111562000f615762000f60620010ba565b5b5062000fd1565b5060208310610133831016604e8410600b841016171562000fa25782820a90508381111562000f9c5762000f9b620010ba565b5b62000fd1565b62000fb1848484600162000e40565b9250905081840481111562000fcb5762000fca620010ba565b5b81810290505b9392505050565b600062000fe5826200106d565b915062000ff2836200106d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200102e576200102d620010ba565b5b828202905092915050565b600062001046826200104d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200109d57607f821691505b60208210811415620010b457620010b362001118565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6200118d8162001039565b81146200119957600080fd5b50565b61562d80620011ac6000396000f3fe60806040526004361061028c5760003560e01c806380c581d11161015a578063bc1323e8116100c1578063dd62ed3e1161007a578063dd62ed3e14610a1a578063e79d416014610a57578063e83e34b114610a82578063eafb5a3c14610ab0578063eec2744e14610ad9578063fb78680d14610b0257610293565b8063bc1323e81461091f578063c49b9a8014610948578063ce8b79c914610971578063d2f7c31a1461099a578063d3f6a157146109c5578063d5025625146109ee57610293565b806395d89b411161011357806395d89b41146107e6578063a12a7d6114610811578063a13ce2c61461083a578063a457c2d714610877578063a9059cbb146108b4578063b5f7bfa2146108f157610293565b806380c581d1146106c457806381c6f11b146106ed578063893d20e81461071657806389fd9bc1146107415780638c7321ad1461077e5780638da5cb5b146107bb57610293565b806339509351116101fe5780634fbee193116101b75780634fbee193146105a257806350a8e016146105df578063571ac8b01461060a578063590ffdce1461064757806370a0823114610670578063715018a6146106ad57610293565b8063395093511461048f5780633aaa36e6146104cc5780633f3cf56c146104fa578063452ed4f1146105235780634a74bb021461054e5780634fb2e45d1461057957610293565b806318160ddd1161025057806318160ddd1461037f57806323b872dd146103aa57806324e81d0a146103e75780632600395714610412578063313ce5671461043b578063355b74de1461046657610293565b806303fd2a451461029857806306fdde03146102c35780630758d924146102ee578063095ea7b3146103195780631793fe4e1461035657610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b2b565b6040516102ba9190614aa7565b60405180910390f35b3480156102cf57600080fd5b506102d8610b31565b6040516102e59190614b9d565b60405180910390f35b3480156102fa57600080fd5b50610303610bc3565b6040516103109190614b82565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b919061459f565b610be9565b60405161034d9190614b67565b60405180910390f35b34801561036257600080fd5b5061037d6004803603810190610378919061470c565b610c07565b005b34801561038b57600080fd5b50610394610d2f565b6040516103a19190614d9f565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc919061450c565b610d39565b6040516103de9190614b67565b60405180910390f35b3480156103f357600080fd5b506103fc610e86565b6040516104099190614ac2565b60405180910390f35b34801561041e57600080fd5b5061043960048036038101906104349190614679565b610eac565b005b34801561044757600080fd5b50610450610fbc565b60405161045d9190614eb9565b60405180910390f35b34801561047257600080fd5b5061048d6004803603810190610488919061460c565b610fc5565b005b34801561049b57600080fd5b506104b660048036038101906104b1919061459f565b6110a0565b6040516104c39190614b67565b60405180910390f35b3480156104d857600080fd5b506104e161114c565b6040516104f19493929190614e74565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190614679565b61116a565b005b34801561052f57600080fd5b5061053861127a565b6040516105459190614aa7565b60405180910390f35b34801561055a57600080fd5b506105636112a0565b6040516105709190614b67565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b9190614432565b6112b3565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190614432565b611724565b6040516105d69190614b67565b60405180910390f35b3480156105eb57600080fd5b506105f461177a565b6040516106019190614b67565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190614432565b61178d565b60405161063e9190614b67565b60405180910390f35b34801561065357600080fd5b5061066e6004803603810190610669919061455f565b6117c0565b005b34801561067c57600080fd5b5061069760048036038101906106929190614432565b6118b0565b6040516106a49190614d9f565b60405180910390f35b3480156106b957600080fd5b506106c26118f9565b005b3480156106d057600080fd5b506106eb60048036038101906106e6919061455f565b611a77565b005b3480156106f957600080fd5b50610714600480360381019061070f919061464c565b611c37565b005b34801561072257600080fd5b5061072b611d23565b6040516107389190614aa7565b60405180910390f35b34801561074d57600080fd5b5061076860048036038101906107639190614432565b611d32565b6040516107759190614b67565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190614432565b611d88565b6040516107b29190614b67565b60405180910390f35b3480156107c757600080fd5b506107d0611da8565b6040516107dd9190614aa7565b60405180910390f35b3480156107f257600080fd5b506107fb611dd1565b6040516108089190614b9d565b60405180910390f35b34801561081d57600080fd5b506108386004803603810190610833919061470c565b611e63565b005b34801561084657600080fd5b50610861600480360381019061085c9190614432565b611fa1565b60405161086e9190614d9f565b60405180910390f35b34801561088357600080fd5b5061089e6004803603810190610899919061459f565b611fea565b6040516108ab9190614b67565b60405180910390f35b3480156108c057600080fd5b506108db60048036038101906108d6919061459f565b612096565b6040516108e89190614b67565b60405180910390f35b3480156108fd57600080fd5b506109066120b5565b6040516109169493929190614e74565b60405180910390f35b34801561092b57600080fd5b5061094660048036038101906109419190614432565b6120d3565b005b34801561095457600080fd5b5061096f600480360381019061096a91906145df565b6121c3565b005b34801561097d57600080fd5b5061099860048036038101906109939190614432565b6122ac565b005b3480156109a657600080fd5b506109af61239c565b6040516109bc9190614ac2565b60405180910390f35b3480156109d157600080fd5b506109ec60048036038101906109e7919061448c565b6123c2565b005b3480156109fa57600080fd5b50610a036124dd565b604051610a11929190614dba565b60405180910390f35b348015610a2657600080fd5b50610a416004803603810190610a3c91906144cc565b6124fc565b604051610a4e9190614d9f565b60405180910390f35b348015610a6357600080fd5b50610a6c612583565b604051610a799190614d9f565b60405180910390f35b348015610a8e57600080fd5b50610a97612589565b604051610aa79493929190614e74565b60405180910390f35b348015610abc57600080fd5b50610ad76004803603810190610ad29190614432565b6125a7565b005b348015610ae557600080fd5b50610b006004803603810190610afb919061455f565b612a53565b005b348015610b0e57600080fd5b50610b296004803603810190610b24919061470c565b612b43565b005b61dead81565b6060600b8054610b4090615120565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6c90615120565b8015610bb95780601f10610b8e57610100808354040283529160200191610bb9565b820191906000526020600020905b815481529060010190602001808311610b9c57829003601f168201915b5050505050905090565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bfd610bf6612c1c565b8484612c24565b6001905092915050565b610c0f612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390614bbf565b60405180910390fd5b6103e881838587610cad9190614f29565b610cb79190614f29565b610cc19190614f29565b14610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890614d7f565b60405180910390fd5b8360156000018190555082601560020181905550816015600301819055508060156001018190555050505050565b6000601b54905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e725781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6a919061500a565b925050819055505b610e7d848484612def565b90509392505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610eb4612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3890614bbf565b60405180910390fd5b60008183601b54610f529190614fb0565b610f5c9190614f7f565b905061012c601b54610f6e9190614f7f565b811015610fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa790614d3f565b60405180910390fd5b80602681905550505050565b60006009905090565b610fcd612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105190614bbf565b60405180910390fd5b601881111561106857600080fd5b610e10816110769190614fb0565b60196000018190555081601960010160006101000a81548160ff0219169083151502179055505050565b60006111426110ad612c1c565b8484600460006110bb612c1c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461113d9190614f29565b612c24565b6001905092915050565b600d8060000154908060010154908060020154908060030154905084565b611172612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f690614bbf565b60405180910390fd5b60008183601b546112109190614fb0565b61121a9190614f7f565b905061012c601b5461122c9190614f7f565b81101561126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126590614d3f565b60405180910390fd5b80602381905550505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602060159054906101000a900460ff1681565b6112bb612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f90614bbf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113af90614d5f565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142090614d5f565b60405180910390fd5b61145460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006117c0565b61145f8160016117c0565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115175780601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61154060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118b0565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061160c60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118b0565b11156116675761166560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261166060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118b0565b612def565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602960019054906101000a900460ff1681565b60006117b9827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610be9565b9050919050565b6117c8612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c90614bbf565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611901612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590614bbf565b60405180910390fd5b6119b960008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006117c0565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b611a7f612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0390614bbf565b60405180910390fd5b600015158115151415611b76576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c33565b600060035414611bd35762093a8060035442611b92919061500a565b11611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc990614c5f565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b611c3f612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc390614bbf565b60405180910390fd5b6000602a5414611d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0890614cdf565b60405180910390fd5b80602a819055506000602e8190555050565b6000611d2d611da8565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054611de090615120565b80601f0160208091040260200160405190810160405280929190818152602001828054611e0c90615120565b8015611e595780601f10611e2e57610100808354040283529160200191611e59565b820191906000526020600020905b815481529060010190602001808311611e3c57829003601f168201915b5050505050905090565b611e6b612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef90614bbf565b60405180910390fd5b6011600001548411158015611f1257506011600101548311155b8015611f2357506011600201548211155b8015611f3457506011600301548111155b611f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6a90614c1f565b60405180910390fd5b83600d6000018190555082600d6001018190555081600d6002018190555080600d6003018190555050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061208c611ff7612c1c565b848460046000612005612c1c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612087919061500a565b612c24565b6001905092915050565b60006120aa6120a3612c1c565b8484612def565b506001905092915050565b60158060000154908060010154908060020154908060030154905084565b6120db612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f90614bbf565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6121cb612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224f90614bbf565b60405180910390fd5b80602060156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516122a19190614b67565b60405180910390a150565b6122b4612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233890614bbf565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123ca612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244e90614bbf565b60405180910390fd5b81601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60198060000154908060010160009054906101000a900460ff16905082565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602f5481565b60118060000154908060010154908060020154908060030154905084565b6125af612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263390614bbf565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561268957600080fd5b505afa15801561269d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c1919061445f565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272357600080fd5b505afa158015612737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275b919061445f565b6040518363ffffffff1660e01b8152600401612778929190614add565b60206040518083038186803b15801561279057600080fd5b505afa1580156127a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c8919061445f565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129cb578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561284557600080fd5b505afa158015612859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287d919061445f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128df57600080fd5b505afa1580156128f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612917919061445f565b6040518363ffffffff1660e01b8152600401612934929190614add565b602060405180830381600087803b15801561294e57600080fd5b505af1158015612962573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612986919061445f565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612a0d565b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b612a5b612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adf90614bbf565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612b4b612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcf90614bbf565b60405180910390fd5b8284601b54612be79190614fb0565b612bf19190614f7f565b6027819055508082601b54612c069190614fb0565b612c109190614f7f565b60288190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8b90614c9f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfb90614c9f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612de29190614d9f565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5790614c3f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec790614c3f565b60405180910390fd5b60008211612f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0a90614c7f565b60405180910390fd5b612f1d84846133b3565b156131ad57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fc35750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6131ac57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130685750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130b3576023548211156130b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a990614d1f565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561314d5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131ab576026548261315f856118b0565b6131699190614f29565b11156131aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a190614cff565b60405180910390fd5b5b5b5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561323a5742600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132e15750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132eb57600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561339d57602060149054906101000a900460ff161580156133665750602060159054906101000a900460ff165b1561339c576000613376306118b0565b9050602754811061339a5760285481106133905760285490505b6133998161358a565b5b505b5b6133a98585858461382c565b9150509392505050565b60006133bd611da8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561342b57506133fb611da8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156134815750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134d75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613511575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561354a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561358257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001602060146101000a81548160ff02191690831515021790555060006015600301546015600201546015600001546135c39190614f29565b6135cd9190614f29565b14156135d85761380e565b600060026015600301546015600201546015600001546135f89190614f29565b6136029190614f29565b601560000154846136139190614fb0565b61361d9190614f7f565b6136279190614f7f565b905060008183613637919061500a565b905061364281613b8f565b6000479050600060026015600301546015600201546015600001546136679190614f29565b6136719190614f29565b601560000154846136829190614fb0565b61368c9190614f7f565b6136969190614f7f565b905060008411156136e7576136ab8482613db4565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482866040516136de93929190614e3d565b60405180910390a15b600084866136f5919061500a565b111561380957601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60156003015460156002015461374d9190614f29565b601560020154848661375f919061500a565b6137699190614fb0565b6137739190614f7f565b9081150290604051600060405180830381858888f1935050505015801561379e573d6000803e3d6000fd5b50602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613807573d6000803e3d6000fd5b505b505050505b6000602060146101000a81548160ff02191690831515021790555050565b6000602960009054906101000a900460ff1615613a565761384c85611d32565b8061385c575061385b84611d32565b5b1561389c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389390614cbf565b60405180910390fd5b602960019054906101000a900460ff16613922576138ba8585613e7b565b602960019054906101000a900460ff161580156138dd57506138dc85856133b3565b5b1561391d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161391490614bff565b60405180910390fd5b613a55565b6000602b5411801561397d5750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561398f575061398e85856133b3565b5b15613a5457602e54602b54436139a5919061500a565b1015613a53576001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602f6000815480929190613a1690615152565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e584604051613a4a9190614aa7565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613aa5919061500a565b92505081905550600082613ab95783613ac5565b613ac4868686614024565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b169190614f29565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b7a9190614d9f565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613bac57613bab615257565b5b604051908082528060200260200182016040528015613bda5781602001602082028036833780820191505090505b5090503081600081518110613bf257613bf1615228565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c9457600080fd5b505afa158015613ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ccc919061445f565b81600181518110613ce057613cdf615228565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d7e959493929190614de3565b600060405180830381600087803b158015613d9857600080fd5b505af1158015613dac573d6000803e3d6000fd5b505050505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613e00611da8565b426040518863ffffffff1660e01b8152600401613e2296959493929190614b06565b6060604051808303818588803b158015613e3b57600080fd5b505af1158015613e4f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e7491906146b9565b5050505050565b602960019054906101000a900460ff1615613ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ec290614bdf565b60405180910390fd5b613ed582826133b3565b158015613f2f5750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15614020576000602e5414613f4a5743602b81905550613f52565b43602b819055505b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602960016101000a81548160ff02191690831515021790555042602c819055506001602060156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15960016040516140179190614b67565b60405180910390a15b5050565b600080601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561411557601960010160009054906101000a900460ff16156141075742601960000154600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140e69190614f29565b11156140f957600d600301549050614102565b600d6001015490505b614110565b600d6001015490505b614182565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561417857600d600001549050614181565b600d6002015490505b5b60006127106015600301546015600201546015600001546015600101546141a99190614f29565b6141b39190614f29565b6141bd9190614f29565b60156001015484876141cf9190614fb0565b6141d99190614fb0565b6141e39190614f7f565b6141ed9190614f7f565b905060008161271084876142019190614fb0565b61420b9190614f7f565b614215919061500a565b9050816001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142689190614f29565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142be9190614f29565b9250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516143249190614d9f565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143899190614d9f565b60405180910390a381818661439e919061500a565b6143a8919061500a565b93505050509392505050565b6000813590506143c38161559b565b92915050565b6000815190506143d88161559b565b92915050565b6000813590506143ed816155b2565b92915050565b600081359050614402816155c9565b92915050565b600081359050614417816155e0565b92915050565b60008151905061442c816155e0565b92915050565b60006020828403121561444857614447615286565b5b6000614456848285016143b4565b91505092915050565b60006020828403121561447557614474615286565b5b6000614483848285016143c9565b91505092915050565b600080604083850312156144a3576144a2615286565b5b60006144b1858286016143de565b92505060206144c2858286016143de565b9150509250929050565b600080604083850312156144e3576144e2615286565b5b60006144f1858286016143b4565b9250506020614502858286016143b4565b9150509250929050565b60008060006060848603121561452557614524615286565b5b6000614533868287016143b4565b9350506020614544868287016143b4565b925050604061455586828701614408565b9150509250925092565b6000806040838503121561457657614575615286565b5b6000614584858286016143b4565b9250506020614595858286016143f3565b9150509250929050565b600080604083850312156145b6576145b5615286565b5b60006145c4858286016143b4565b92505060206145d585828601614408565b9150509250929050565b6000602082840312156145f5576145f4615286565b5b6000614603848285016143f3565b91505092915050565b6000806040838503121561462357614622615286565b5b6000614631858286016143f3565b925050602061464285828601614408565b9150509250929050565b60006020828403121561466257614661615286565b5b600061467084828501614408565b91505092915050565b600080604083850312156146905761468f615286565b5b600061469e85828601614408565b92505060206146af85828601614408565b9150509250929050565b6000806000606084860312156146d2576146d1615286565b5b60006146e08682870161441d565b93505060206146f18682870161441d565b92505060406147028682870161441d565b9150509250925092565b6000806000806080858703121561472657614725615286565b5b600061473487828801614408565b945050602061474587828801614408565b935050604061475687828801614408565b925050606061476787828801614408565b91505092959194509250565b600061477f838361479a565b60208301905092915050565b61479481615050565b82525050565b6147a38161503e565b82525050565b6147b28161503e565b82525050565b60006147c382614ee4565b6147cd8185614f07565b93506147d883614ed4565b8060005b838110156148095781516147f08882614773565b97506147fb83614efa565b9250506001810190506147dc565b5085935050505092915050565b61481f81615062565b82525050565b61482e816150a5565b82525050565b61483d816150b7565b82525050565b600061484e82614eef565b6148588185614f18565b93506148688185602086016150ed565b6148718161528b565b840191505092915050565b6000614889601083614f18565b91506148948261529c565b602082019050919050565b60006148ac602383614f18565b91506148b7826152c5565b604082019050919050565b60006148cf602583614f18565b91506148da82615314565b604082019050919050565b60006148f2601783614f18565b91506148fd82615363565b602082019050919050565b6000614915601483614f18565b91506149208261538c565b602082019050919050565b6000614938601283614f18565b9150614943826153b5565b602082019050919050565b600061495b600883614f18565b9150614966826153de565b602082019050919050565b600061497e601383614f18565b915061498982615407565b602082019050919050565b60006149a1601083614f18565b91506149ac82615430565b602082019050919050565b60006149c4600683614f18565b91506149cf82615459565b602082019050919050565b60006149e7601a83614f18565b91506149f282615482565b602082019050919050565b6000614a0a601883614f18565b9150614a15826154ab565b602082019050919050565b6000614a2d602583614f18565b9150614a38826154d4565b604082019050919050565b6000614a50603d83614f18565b9150614a5b82615523565b604082019050919050565b6000614a73600583614f18565b9150614a7e82615572565b602082019050919050565b614a928161508e565b82525050565b614aa181615098565b82525050565b6000602082019050614abc60008301846147a9565b92915050565b6000602082019050614ad7600083018461478b565b92915050565b6000604082019050614af260008301856147a9565b614aff60208301846147a9565b9392505050565b600060c082019050614b1b60008301896147a9565b614b286020830188614a89565b614b356040830187614834565b614b426060830186614834565b614b4f60808301856147a9565b614b5c60a0830184614a89565b979650505050505050565b6000602082019050614b7c6000830184614816565b92915050565b6000602082019050614b976000830184614825565b92915050565b60006020820190508181036000830152614bb78184614843565b905092915050565b60006020820190508181036000830152614bd88161487c565b9050919050565b60006020820190508181036000830152614bf88161489f565b9050919050565b60006020820190508181036000830152614c18816148c2565b9050919050565b60006020820190508181036000830152614c38816148e5565b9050919050565b60006020820190508181036000830152614c5881614908565b9050919050565b60006020820190508181036000830152614c788161492b565b9050919050565b60006020820190508181036000830152614c988161494e565b9050919050565b60006020820190508181036000830152614cb881614971565b9050919050565b60006020820190508181036000830152614cd881614994565b9050919050565b60006020820190508181036000830152614cf8816149b7565b9050919050565b60006020820190508181036000830152614d18816149da565b9050919050565b60006020820190508181036000830152614d38816149fd565b9050919050565b60006020820190508181036000830152614d5881614a20565b9050919050565b60006020820190508181036000830152614d7881614a43565b9050919050565b60006020820190508181036000830152614d9881614a66565b9050919050565b6000602082019050614db46000830184614a89565b92915050565b6000604082019050614dcf6000830185614a89565b614ddc6020830184614816565b9392505050565b600060a082019050614df86000830188614a89565b614e056020830187614834565b8181036040830152614e1781866147b8565b9050614e2660608301856147a9565b614e336080830184614a89565b9695505050505050565b6000606082019050614e526000830186614a89565b614e5f6020830185614a89565b614e6c6040830184614a89565b949350505050565b6000608082019050614e896000830187614a89565b614e966020830186614a89565b614ea36040830185614a89565b614eb06060830184614a89565b95945050505050565b6000602082019050614ece6000830184614a98565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614f348261508e565b9150614f3f8361508e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f7457614f7361519b565b5b828201905092915050565b6000614f8a8261508e565b9150614f958361508e565b925082614fa557614fa46151ca565b5b828204905092915050565b6000614fbb8261508e565b9150614fc68361508e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614fff57614ffe61519b565b5b828202905092915050565b60006150158261508e565b91506150208361508e565b9250828210156150335761503261519b565b5b828203905092915050565b60006150498261506e565b9050919050565b600061505b8261506e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006150b0826150c9565b9050919050565b60006150c28261508e565b9050919050565b60006150d4826150db565b9050919050565b60006150e68261506e565b9050919050565b60005b8381101561510b5780820151818401526020810190506150f0565b8381111561511a576000848401525b50505050565b6000600282049050600182168061513857607f821691505b6020821081141561514c5761514b6151f9565b5b50919050565b600061515d8261508e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156151905761518f61519b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f43616c6c657220213d206f776e65722e00000000000000000000000000000000600082015250565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b7f2128314b29000000000000000000000000000000000000000000000000000000600082015250565b6155a48161503e565b81146155af57600080fd5b50565b6155bb81615050565b81146155c657600080fd5b50565b6155d281615062565b81146155dd57600080fd5b50565b6155e98161508e565b81146155f457600080fd5b5056fea2646970667358221220e7e177615d7c74378a9e0eb5779da8d2efdf725fd981560ebb69fdf041b53c4964736f6c63430008070033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c806380c581d11161015a578063bc1323e8116100c1578063dd62ed3e1161007a578063dd62ed3e14610a1a578063e79d416014610a57578063e83e34b114610a82578063eafb5a3c14610ab0578063eec2744e14610ad9578063fb78680d14610b0257610293565b8063bc1323e81461091f578063c49b9a8014610948578063ce8b79c914610971578063d2f7c31a1461099a578063d3f6a157146109c5578063d5025625146109ee57610293565b806395d89b411161011357806395d89b41146107e6578063a12a7d6114610811578063a13ce2c61461083a578063a457c2d714610877578063a9059cbb146108b4578063b5f7bfa2146108f157610293565b806380c581d1146106c457806381c6f11b146106ed578063893d20e81461071657806389fd9bc1146107415780638c7321ad1461077e5780638da5cb5b146107bb57610293565b806339509351116101fe5780634fbee193116101b75780634fbee193146105a257806350a8e016146105df578063571ac8b01461060a578063590ffdce1461064757806370a0823114610670578063715018a6146106ad57610293565b8063395093511461048f5780633aaa36e6146104cc5780633f3cf56c146104fa578063452ed4f1146105235780634a74bb021461054e5780634fb2e45d1461057957610293565b806318160ddd1161025057806318160ddd1461037f57806323b872dd146103aa57806324e81d0a146103e75780632600395714610412578063313ce5671461043b578063355b74de1461046657610293565b806303fd2a451461029857806306fdde03146102c35780630758d924146102ee578063095ea7b3146103195780631793fe4e1461035657610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b2b565b6040516102ba9190614aa7565b60405180910390f35b3480156102cf57600080fd5b506102d8610b31565b6040516102e59190614b9d565b60405180910390f35b3480156102fa57600080fd5b50610303610bc3565b6040516103109190614b82565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b919061459f565b610be9565b60405161034d9190614b67565b60405180910390f35b34801561036257600080fd5b5061037d6004803603810190610378919061470c565b610c07565b005b34801561038b57600080fd5b50610394610d2f565b6040516103a19190614d9f565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc919061450c565b610d39565b6040516103de9190614b67565b60405180910390f35b3480156103f357600080fd5b506103fc610e86565b6040516104099190614ac2565b60405180910390f35b34801561041e57600080fd5b5061043960048036038101906104349190614679565b610eac565b005b34801561044757600080fd5b50610450610fbc565b60405161045d9190614eb9565b60405180910390f35b34801561047257600080fd5b5061048d6004803603810190610488919061460c565b610fc5565b005b34801561049b57600080fd5b506104b660048036038101906104b1919061459f565b6110a0565b6040516104c39190614b67565b60405180910390f35b3480156104d857600080fd5b506104e161114c565b6040516104f19493929190614e74565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190614679565b61116a565b005b34801561052f57600080fd5b5061053861127a565b6040516105459190614aa7565b60405180910390f35b34801561055a57600080fd5b506105636112a0565b6040516105709190614b67565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b9190614432565b6112b3565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190614432565b611724565b6040516105d69190614b67565b60405180910390f35b3480156105eb57600080fd5b506105f461177a565b6040516106019190614b67565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190614432565b61178d565b60405161063e9190614b67565b60405180910390f35b34801561065357600080fd5b5061066e6004803603810190610669919061455f565b6117c0565b005b34801561067c57600080fd5b5061069760048036038101906106929190614432565b6118b0565b6040516106a49190614d9f565b60405180910390f35b3480156106b957600080fd5b506106c26118f9565b005b3480156106d057600080fd5b506106eb60048036038101906106e6919061455f565b611a77565b005b3480156106f957600080fd5b50610714600480360381019061070f919061464c565b611c37565b005b34801561072257600080fd5b5061072b611d23565b6040516107389190614aa7565b60405180910390f35b34801561074d57600080fd5b5061076860048036038101906107639190614432565b611d32565b6040516107759190614b67565b60405180910390f35b34801561078a57600080fd5b506107a560048036038101906107a09190614432565b611d88565b6040516107b29190614b67565b60405180910390f35b3480156107c757600080fd5b506107d0611da8565b6040516107dd9190614aa7565b60405180910390f35b3480156107f257600080fd5b506107fb611dd1565b6040516108089190614b9d565b60405180910390f35b34801561081d57600080fd5b506108386004803603810190610833919061470c565b611e63565b005b34801561084657600080fd5b50610861600480360381019061085c9190614432565b611fa1565b60405161086e9190614d9f565b60405180910390f35b34801561088357600080fd5b5061089e6004803603810190610899919061459f565b611fea565b6040516108ab9190614b67565b60405180910390f35b3480156108c057600080fd5b506108db60048036038101906108d6919061459f565b612096565b6040516108e89190614b67565b60405180910390f35b3480156108fd57600080fd5b506109066120b5565b6040516109169493929190614e74565b60405180910390f35b34801561092b57600080fd5b5061094660048036038101906109419190614432565b6120d3565b005b34801561095457600080fd5b5061096f600480360381019061096a91906145df565b6121c3565b005b34801561097d57600080fd5b5061099860048036038101906109939190614432565b6122ac565b005b3480156109a657600080fd5b506109af61239c565b6040516109bc9190614ac2565b60405180910390f35b3480156109d157600080fd5b506109ec60048036038101906109e7919061448c565b6123c2565b005b3480156109fa57600080fd5b50610a036124dd565b604051610a11929190614dba565b60405180910390f35b348015610a2657600080fd5b50610a416004803603810190610a3c91906144cc565b6124fc565b604051610a4e9190614d9f565b60405180910390f35b348015610a6357600080fd5b50610a6c612583565b604051610a799190614d9f565b60405180910390f35b348015610a8e57600080fd5b50610a97612589565b604051610aa79493929190614e74565b60405180910390f35b348015610abc57600080fd5b50610ad76004803603810190610ad29190614432565b6125a7565b005b348015610ae557600080fd5b50610b006004803603810190610afb919061455f565b612a53565b005b348015610b0e57600080fd5b50610b296004803603810190610b24919061470c565b612b43565b005b61dead81565b6060600b8054610b4090615120565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6c90615120565b8015610bb95780601f10610b8e57610100808354040283529160200191610bb9565b820191906000526020600020905b815481529060010190602001808311610b9c57829003601f168201915b5050505050905090565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bfd610bf6612c1c565b8484612c24565b6001905092915050565b610c0f612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390614bbf565b60405180910390fd5b6103e881838587610cad9190614f29565b610cb79190614f29565b610cc19190614f29565b14610d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf890614d7f565b60405180910390fd5b8360156000018190555082601560020181905550816015600301819055508060156001018190555050505050565b6000601b54905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e725781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6a919061500a565b925050819055505b610e7d848484612def565b90509392505050565b601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610eb4612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3890614bbf565b60405180910390fd5b60008183601b54610f529190614fb0565b610f5c9190614f7f565b905061012c601b54610f6e9190614f7f565b811015610fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa790614d3f565b60405180910390fd5b80602681905550505050565b60006009905090565b610fcd612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105190614bbf565b60405180910390fd5b601881111561106857600080fd5b610e10816110769190614fb0565b60196000018190555081601960010160006101000a81548160ff0219169083151502179055505050565b60006111426110ad612c1c565b8484600460006110bb612c1c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461113d9190614f29565b612c24565b6001905092915050565b600d8060000154908060010154908060020154908060030154905084565b611172612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f690614bbf565b60405180910390fd5b60008183601b546112109190614fb0565b61121a9190614f7f565b905061012c601b5461122c9190614f7f565b81101561126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126590614d3f565b60405180910390fd5b80602381905550505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602060159054906101000a900460ff1681565b6112bb612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f90614bbf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113af90614d5f565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142090614d5f565b60405180910390fd5b61145460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006117c0565b61145f8160016117c0565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115175780601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61154060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118b0565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061160c60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118b0565b11156116675761166560008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261166060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166118b0565b612def565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602960019054906101000a900460ff1681565b60006117b9827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610be9565b9050919050565b6117c8612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184c90614bbf565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611901612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461198e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198590614bbf565b60405180910390fd5b6119b960008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006117c0565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b611a7f612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0390614bbf565b60405180910390fd5b600015158115151415611b76576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611c33565b600060035414611bd35762093a8060035442611b92919061500a565b11611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc990614c5f565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b611c3f612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc390614bbf565b60405180910390fd5b6000602a5414611d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0890614cdf565b60405180910390fd5b80602a819055506000602e8190555050565b6000611d2d611da8565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054611de090615120565b80601f0160208091040260200160405190810160405280929190818152602001828054611e0c90615120565b8015611e595780601f10611e2e57610100808354040283529160200191611e59565b820191906000526020600020905b815481529060010190602001808311611e3c57829003601f168201915b5050505050905090565b611e6b612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef90614bbf565b60405180910390fd5b6011600001548411158015611f1257506011600101548311155b8015611f2357506011600201548211155b8015611f3457506011600301548111155b611f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6a90614c1f565b60405180910390fd5b83600d6000018190555082600d6001018190555081600d6002018190555080600d6003018190555050505050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061208c611ff7612c1c565b848460046000612005612c1c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612087919061500a565b612c24565b6001905092915050565b60006120aa6120a3612c1c565b8484612def565b506001905092915050565b60158060000154908060010154908060020154908060030154905084565b6120db612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f90614bbf565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6121cb612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224f90614bbf565b60405180910390fd5b80602060156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516122a19190614b67565b60405180910390a150565b6122b4612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233890614bbf565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6123ca612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612457576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244e90614bbf565b60405180910390fd5b81601f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60198060000154908060010160009054906101000a900460ff16905082565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602f5481565b60118060000154908060010154908060020154908060030154905084565b6125af612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263390614bbf565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561268957600080fd5b505afa15801561269d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c1919061445f565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561272357600080fd5b505afa158015612737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275b919061445f565b6040518363ffffffff1660e01b8152600401612778929190614add565b60206040518083038186803b15801561279057600080fd5b505afa1580156127a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127c8919061445f565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129cb578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561284557600080fd5b505afa158015612859573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287d919061445f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156128df57600080fd5b505afa1580156128f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612917919061445f565b6040518363ffffffff1660e01b8152600401612934929190614add565b602060405180830381600087803b15801561294e57600080fd5b505af1158015612962573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612986919061445f565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612a0d565b80601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b612a5b612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adf90614bbf565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612b4b612c1c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bcf90614bbf565b60405180910390fd5b8284601b54612be79190614fb0565b612bf19190614f7f565b6027819055508082601b54612c069190614fb0565b612c109190614f7f565b60288190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8b90614c9f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfb90614c9f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612de29190614d9f565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5790614c3f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec790614c3f565b60405180910390fd5b60008211612f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0a90614c7f565b60405180910390fd5b612f1d84846133b3565b156131ad57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fc35750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6131ac57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130685750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130b3576023548211156130b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a990614d1f565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561314d5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131ab576026548261315f856118b0565b6131699190614f29565b11156131aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a190614cff565b60405180910390fd5b5b5b5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561323a5742600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132e15750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132eb57600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561339d57602060149054906101000a900460ff161580156133665750602060159054906101000a900460ff165b1561339c576000613376306118b0565b9050602754811061339a5760285481106133905760285490505b6133998161358a565b5b505b5b6133a98585858461382c565b9150509392505050565b60006133bd611da8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561342b57506133fb611da8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156134815750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134d75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613511575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561354a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561358257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001602060146101000a81548160ff02191690831515021790555060006015600301546015600201546015600001546135c39190614f29565b6135cd9190614f29565b14156135d85761380e565b600060026015600301546015600201546015600001546135f89190614f29565b6136029190614f29565b601560000154846136139190614fb0565b61361d9190614f7f565b6136279190614f7f565b905060008183613637919061500a565b905061364281613b8f565b6000479050600060026015600301546015600201546015600001546136679190614f29565b6136719190614f29565b601560000154846136829190614fb0565b61368c9190614f7f565b6136969190614f7f565b905060008411156136e7576136ab8482613db4565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482866040516136de93929190614e3d565b60405180910390a15b600084866136f5919061500a565b111561380957601f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60156003015460156002015461374d9190614f29565b601560020154848661375f919061500a565b6137699190614fb0565b6137739190614f7f565b9081150290604051600060405180830381858888f1935050505015801561379e573d6000803e3d6000fd5b50602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613807573d6000803e3d6000fd5b505b505050505b6000602060146101000a81548160ff02191690831515021790555050565b6000602960009054906101000a900460ff1615613a565761384c85611d32565b8061385c575061385b84611d32565b5b1561389c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161389390614cbf565b60405180910390fd5b602960019054906101000a900460ff16613922576138ba8585613e7b565b602960019054906101000a900460ff161580156138dd57506138dc85856133b3565b5b1561391d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161391490614bff565b60405180910390fd5b613a55565b6000602b5411801561397d5750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561398f575061398e85856133b3565b5b15613a5457602e54602b54436139a5919061500a565b1015613a53576001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602f6000815480929190613a1690615152565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e584604051613a4a9190614aa7565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613aa5919061500a565b92505081905550600082613ab95783613ac5565b613ac4868686614024565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613b169190614f29565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b7a9190614d9f565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613bac57613bab615257565b5b604051908082528060200260200182016040528015613bda5781602001602082028036833780820191505090505b5090503081600081518110613bf257613bf1615228565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c9457600080fd5b505afa158015613ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ccc919061445f565b81600181518110613ce057613cdf615228565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d7e959493929190614de3565b600060405180830381600087803b158015613d9857600080fd5b505af1158015613dac573d6000803e3d6000fd5b505050505050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613e00611da8565b426040518863ffffffff1660e01b8152600401613e2296959493929190614b06565b6060604051808303818588803b158015613e3b57600080fd5b505af1158015613e4f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613e7491906146b9565b5050505050565b602960019054906101000a900460ff1615613ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ec290614bdf565b60405180910390fd5b613ed582826133b3565b158015613f2f5750601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15614020576000602e5414613f4a5743602b81905550613f52565b43602b819055505b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602960016101000a81548160ff02191690831515021790555042602c819055506001602060156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15960016040516140179190614b67565b60405180910390a15b5050565b600080601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561411557601960010160009054906101000a900460ff16156141075742601960000154600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546140e69190614f29565b11156140f957600d600301549050614102565b600d6001015490505b614110565b600d6001015490505b614182565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561417857600d600001549050614181565b600d6002015490505b5b60006127106015600301546015600201546015600001546015600101546141a99190614f29565b6141b39190614f29565b6141bd9190614f29565b60156001015484876141cf9190614fb0565b6141d99190614fb0565b6141e39190614f7f565b6141ed9190614f7f565b905060008161271084876142019190614fb0565b61420b9190614f7f565b614215919061500a565b9050816001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142689190614f29565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142be9190614f29565b9250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516143249190614d9f565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516143899190614d9f565b60405180910390a381818661439e919061500a565b6143a8919061500a565b93505050509392505050565b6000813590506143c38161559b565b92915050565b6000815190506143d88161559b565b92915050565b6000813590506143ed816155b2565b92915050565b600081359050614402816155c9565b92915050565b600081359050614417816155e0565b92915050565b60008151905061442c816155e0565b92915050565b60006020828403121561444857614447615286565b5b6000614456848285016143b4565b91505092915050565b60006020828403121561447557614474615286565b5b6000614483848285016143c9565b91505092915050565b600080604083850312156144a3576144a2615286565b5b60006144b1858286016143de565b92505060206144c2858286016143de565b9150509250929050565b600080604083850312156144e3576144e2615286565b5b60006144f1858286016143b4565b9250506020614502858286016143b4565b9150509250929050565b60008060006060848603121561452557614524615286565b5b6000614533868287016143b4565b9350506020614544868287016143b4565b925050604061455586828701614408565b9150509250925092565b6000806040838503121561457657614575615286565b5b6000614584858286016143b4565b9250506020614595858286016143f3565b9150509250929050565b600080604083850312156145b6576145b5615286565b5b60006145c4858286016143b4565b92505060206145d585828601614408565b9150509250929050565b6000602082840312156145f5576145f4615286565b5b6000614603848285016143f3565b91505092915050565b6000806040838503121561462357614622615286565b5b6000614631858286016143f3565b925050602061464285828601614408565b9150509250929050565b60006020828403121561466257614661615286565b5b600061467084828501614408565b91505092915050565b600080604083850312156146905761468f615286565b5b600061469e85828601614408565b92505060206146af85828601614408565b9150509250929050565b6000806000606084860312156146d2576146d1615286565b5b60006146e08682870161441d565b93505060206146f18682870161441d565b92505060406147028682870161441d565b9150509250925092565b6000806000806080858703121561472657614725615286565b5b600061473487828801614408565b945050602061474587828801614408565b935050604061475687828801614408565b925050606061476787828801614408565b91505092959194509250565b600061477f838361479a565b60208301905092915050565b61479481615050565b82525050565b6147a38161503e565b82525050565b6147b28161503e565b82525050565b60006147c382614ee4565b6147cd8185614f07565b93506147d883614ed4565b8060005b838110156148095781516147f08882614773565b97506147fb83614efa565b9250506001810190506147dc565b5085935050505092915050565b61481f81615062565b82525050565b61482e816150a5565b82525050565b61483d816150b7565b82525050565b600061484e82614eef565b6148588185614f18565b93506148688185602086016150ed565b6148718161528b565b840191505092915050565b6000614889601083614f18565b91506148948261529c565b602082019050919050565b60006148ac602383614f18565b91506148b7826152c5565b604082019050919050565b60006148cf602583614f18565b91506148da82615314565b604082019050919050565b60006148f2601783614f18565b91506148fd82615363565b602082019050919050565b6000614915601483614f18565b91506149208261538c565b602082019050919050565b6000614938601283614f18565b9150614943826153b5565b602082019050919050565b600061495b600883614f18565b9150614966826153de565b602082019050919050565b600061497e601383614f18565b915061498982615407565b602082019050919050565b60006149a1601083614f18565b91506149ac82615430565b602082019050919050565b60006149c4600683614f18565b91506149cf82615459565b602082019050919050565b60006149e7601a83614f18565b91506149f282615482565b602082019050919050565b6000614a0a601883614f18565b9150614a15826154ab565b602082019050919050565b6000614a2d602583614f18565b9150614a38826154d4565b604082019050919050565b6000614a50603d83614f18565b9150614a5b82615523565b604082019050919050565b6000614a73600583614f18565b9150614a7e82615572565b602082019050919050565b614a928161508e565b82525050565b614aa181615098565b82525050565b6000602082019050614abc60008301846147a9565b92915050565b6000602082019050614ad7600083018461478b565b92915050565b6000604082019050614af260008301856147a9565b614aff60208301846147a9565b9392505050565b600060c082019050614b1b60008301896147a9565b614b286020830188614a89565b614b356040830187614834565b614b426060830186614834565b614b4f60808301856147a9565b614b5c60a0830184614a89565b979650505050505050565b6000602082019050614b7c6000830184614816565b92915050565b6000602082019050614b976000830184614825565b92915050565b60006020820190508181036000830152614bb78184614843565b905092915050565b60006020820190508181036000830152614bd88161487c565b9050919050565b60006020820190508181036000830152614bf88161489f565b9050919050565b60006020820190508181036000830152614c18816148c2565b9050919050565b60006020820190508181036000830152614c38816148e5565b9050919050565b60006020820190508181036000830152614c5881614908565b9050919050565b60006020820190508181036000830152614c788161492b565b9050919050565b60006020820190508181036000830152614c988161494e565b9050919050565b60006020820190508181036000830152614cb881614971565b9050919050565b60006020820190508181036000830152614cd881614994565b9050919050565b60006020820190508181036000830152614cf8816149b7565b9050919050565b60006020820190508181036000830152614d18816149da565b9050919050565b60006020820190508181036000830152614d38816149fd565b9050919050565b60006020820190508181036000830152614d5881614a20565b9050919050565b60006020820190508181036000830152614d7881614a43565b9050919050565b60006020820190508181036000830152614d9881614a66565b9050919050565b6000602082019050614db46000830184614a89565b92915050565b6000604082019050614dcf6000830185614a89565b614ddc6020830184614816565b9392505050565b600060a082019050614df86000830188614a89565b614e056020830187614834565b8181036040830152614e1781866147b8565b9050614e2660608301856147a9565b614e336080830184614a89565b9695505050505050565b6000606082019050614e526000830186614a89565b614e5f6020830185614a89565b614e6c6040830184614a89565b949350505050565b6000608082019050614e896000830187614a89565b614e966020830186614a89565b614ea36040830185614a89565b614eb06060830184614a89565b95945050505050565b6000602082019050614ece6000830184614a98565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614f348261508e565b9150614f3f8361508e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f7457614f7361519b565b5b828201905092915050565b6000614f8a8261508e565b9150614f958361508e565b925082614fa557614fa46151ca565b5b828204905092915050565b6000614fbb8261508e565b9150614fc68361508e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614fff57614ffe61519b565b5b828202905092915050565b60006150158261508e565b91506150208361508e565b9250828210156150335761503261519b565b5b828203905092915050565b60006150498261506e565b9050919050565b600061505b8261506e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006150b0826150c9565b9050919050565b60006150c28261508e565b9050919050565b60006150d4826150db565b9050919050565b60006150e68261506e565b9050919050565b60005b8381101561510b5780820151818401526020810190506150f0565b8381111561511a576000848401525b50505050565b6000600282049050600182168061513857607f821691505b6020821081141561514c5761514b6151f9565b5b50919050565b600061515d8261508e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156151905761518f61519b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f43616c6c657220213d206f776e65722e00000000000000000000000000000000600082015250565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b7f2128314b29000000000000000000000000000000000000000000000000000000600082015250565b6155a48161503e565b81146155af57600080fd5b50565b6155bb81615050565b81146155c657600080fd5b50565b6155d281615062565b81146155dd57600080fd5b50565b6155e98161508e565b81146155f457600080fd5b5056fea2646970667358221220e7e177615d7c74378a9e0eb5779da8d2efdf725fd981560ebb69fdf041b53c4964736f6c63430008070033

Deployed Bytecode Sourcemap

3733:20397:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6047:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11013:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5859:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11626:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15156:316;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10748:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12359:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6193:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16465:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10837:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15480:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12673:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4686:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;16205:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5901:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6422:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9437:749;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14056:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6983:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12112:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14189:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11326:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10194:195;;;;;;;;;;;;;:::i;:::-;;13638:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14813:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11099:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14673:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4201:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9350:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10923:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15685:512;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12240:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12896:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11451:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5231:107;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;14499:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17241:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14333:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6287:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17027:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5468:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;11185:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7251:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4948:101;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;13129:501;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15007:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16730:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6047:73;6078:42;6047:73;:::o;11013:80::-;11061:13;11085:5;11078:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11013:80;:::o;5859:35::-;;;;;;;;;;;;;:::o;11626:161::-;11701:4;11718:39;11727:12;:10;:12::i;:::-;11741:7;11750:6;11718:8;:39::i;:::-;11775:4;11768:11;;11626:161;;;;:::o;15156:316::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15314:4:::1;15304:5;15299:4;15286:12;15275:10;:23;;;;:::i;:::-;:28;;;;:::i;:::-;:34;;;;:::i;:::-;15274:44;15264:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15358:10;15339:6;:16;;:29;;;;15400:12;15379:6;:18;;:33;;;;15436:4;15423:6;:10;;:17;;;;15465:5;15451:6;:11;;:19;;;;15156:316:::0;;;;:::o;10748:83::-;10803:7;10821;;10814:14;;10748:83;:::o;12359:306::-;12459:4;12515:17;12480:11;:19;12492:6;12480:19;;;;;;;;;;;;;;;:31;12500:10;12480:31;;;;;;;;;;;;;;;;:52;12476:126;;12584:6;12549:11;:19;12561:6;12549:19;;;;;;;;;;;;;;;:31;12569:10;12549:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;12476:126;12621:36;12631:6;12639:9;12650:6;12621:9;:36::i;:::-;12614:43;;12359:306;;;;;:::o;6193:87::-;;;;;;;;;;;;;:::o;16465:257::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16549:13:::1;16587:7;16576;16566;;:17;;;;:::i;:::-;16565:29;;;;:::i;:::-;16549:45;;16633:3;16623:7;;:13;;;;:::i;:::-;16613:5;:24;;16605:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16707:5;16690:14;:22;;;;16538:184;16465:257:::0;;:::o;10837:80::-;10889:5;5750:1;10898:16;;10837:80;:::o;15480:197::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15590:2:::1;15577:9;:15;;15569:24;;;::::0;::::1;;15633:7;15621:9;:19;;;;:::i;:::-;15604:5;:14;;:36;;;;15667:8;15651:5;:13;;;:24;;;;;;;;;;;;;;;;;;15480:197:::0;;:::o;12673:215::-;12761:4;12778:80;12787:12;:10;:12::i;:::-;12801:7;12847:10;12810:11;:25;12822:12;:10;:12::i;:::-;12810:25;;;;;;;;;;;;;;;:34;12836:7;12810:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12778:8;:80::i;:::-;12876:4;12869:11;;12673:215;;;;:::o;4686:95::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;16205:252::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16288:13:::1;16326:7;16315;16305;;:17;;;;:::i;:::-;16304:29;;;;:::i;:::-;16288:45;;16372:3;16362:7;;:13;;;;:::i;:::-;16352:5;:24;;16344:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;16444:5;16429:12;:20;;;;16277:180;16205:252:::0;;:::o;5901:21::-;;;;;;;;;;;;;:::o;6422:41::-;;;;;;;;;;;;;:::o;9437:749::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;9538:1:::1;9518:22;;:8;:22;;;;9510:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;6078:42;9625:16;;:8;:16;;;;9617:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;9718:34;9738:6;::::0;::::1;;;;;;;;9746:5;9718:19;:34::i;:::-;9763:35;9783:8;9793:4;9763:19;:35::i;:::-;9845:6;::::0;::::1;;;;;;;;9823:29;;:10;;;;;;;;;;;:29;;;9819:78;;;9888:8;9867:10;;:30;;;;;;;;;;;;;;;;;;9819:78;9950:17;9960:6;::::0;::::1;;;;;;;;9950:9;:17::i;:::-;9918:11;:19;9930:6:::0;::::1;;;;;;;;;;9918:19;;;;;;;;;;;;;;;:29;9938:8;9918:29;;;;;;;;;;;;;;;:49;;;;10001:1;9981:17;9991:6;::::0;::::1;;;;;;;;9981:9;:17::i;:::-;:21;9978:99;;;10019:46;10029:6;::::0;::::1;;;;;;;;10037:8;10047:17;10057:6;::::0;::::1;;;;;;;;10047:9;:17::i;:::-;10019:9;:46::i;:::-;;9978:99;10106:8;10097:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;10159:8;10130:38;;10151:6;::::0;::::1;;;;;;;;10130:38;;;;;;;;;;;;9437:749:::0;:::o;14056:125::-;14121:4;14145:19;:28;14165:7;14145:28;;;;;;;;;;;;;;;;;;;;;;;;;14138:35;;14056:125;;;:::o;6983:36::-;;;;;;;;;;;;;:::o;12112:120::-;12165:4;12189:35;12197:7;12206:17;12189:7;:35::i;:::-;12182:42;;12112:120;;;:::o;14189:134::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14308:7:::1;14277:19;:28;14297:7;14277:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;14189:134:::0;;:::o;11326:117::-;11392:7;11419;:16;11427:7;11419:16;;;;;;;;;;;;;;;;11412:23;;11326:117;;;:::o;10194:195::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;10261:34:::1;10281:6;::::0;::::1;;;;;;;;10289:5;10261:19;:34::i;:::-;10323:1;10306:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;10378:1;10341:40;;10362:6;::::0;::::1;;;;;;;;10341:40;;;;;;;;;;;;10194:195::o:0;13638:410::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13730:5:::1;13719:16;;:7;:16;;;13715:326;;;13768:5;13752:7;:13;13760:4;13752:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13715:326;;;13831:1;13810:17;;:22;13806:139;;13899:7;13879:17;;13861:15;:35;;;;:::i;:::-;:45;13853:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;13806:139;13975:4;13959:7;:13;13967:4;13959:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;14014:15;13994:17;:35;;;;13715:326;13638:410:::0;;:::o;14813:186::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14912:1:::1;14895:13;;:18;14886:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14951:12;14935:13;:28;;;;14990:1;14974:13;:17;;;;14813:186:::0;:::o;11099:80::-;11151:7;11169;:5;:7::i;:::-;11162:14;;11099:80;:::o;14673:132::-;14742:4;14766:22;:31;14789:7;14766:31;;;;;;;;;;;;;;;;;;;;;;;;;14759:38;;14673:132;;;:::o;4201:68::-;;;;;;;;;;;;;;;;;;;;;;:::o;9350:79::-;9388:7;9415:6;;;;;;;;;;;9408:13;;9350:79;:::o;10923:84::-;10973:13;10997:7;10990:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10923:84;:::o;15685:512::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15818:7:::1;:14;;;15807:7;:25;;:73;;;;;15865:7;:15;;;15853:8;:27;;15807:73;:129;;;;;15917:7;:19;;;15901:12;:35;;15807:129;:184;;;;;15972:7;:19;;;15957:11;:34;;15807:184;15799:237;;;;;;;;;;;;:::i;:::-;;;;;;;;;16062:7;16048:4;:11;;:21;;;;16096:8;16081:4;:12;;:23;;;;16135:12;16116:4;:16;;:31;;;;16176:11;16159:4;:15;;:28;;;;15685:512:::0;;;;:::o;12240:111::-;12299:7;12326:8;:17;12335:7;12326:17;;;;;;;;;;;;;;;;12319:24;;12240:111;;;:::o;12896:225::-;12989:4;13006:85;13015:12;:10;:12::i;:::-;13029:7;13075:15;13038:11;:25;13050:12;:10;:12::i;:::-;13038:25;;;;;;;;;;;;;;;:34;13064:7;13038:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;13006:8;:85::i;:::-;13109:4;13102:11;;12896:225;;;;:::o;11451:167::-;11529:4;11546:42;11556:12;:10;:12::i;:::-;11570:9;11581:6;11546:9;:42::i;:::-;;11606:4;11599:11;;11451:167;;;;:::o;5231:107::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14499:166::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14652:5:::1;14597:35;:52;14633:15;14597:52;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;14499:166:::0;:::o;17241:171::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17342:8:::1;17318:21;;:32;;;;;;;;;;;;;;;;;;17366:38;17395:8;17366:38;;;;;;:::i;:::-;;;;;;;;17241:171:::0;:::o;14333:158::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14479:4:::1;14424:35;:52;14460:15;14424:52;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;14333:158:::0;:::o;6287:94::-;;;;;;;;;;;;;:::o;17027:206::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17159:9:::1;17138:10;;:31;;;;;;;;;;;;;;;;;;17208:16;17180:17;;:45;;;;;;;;;;;;;;;;;;17027:206:::0;;:::o;5468:87::-;;;;;;;;;;;;;;;;;;;;;;;:::o;11185:133::-;11269:7;11287:11;:19;11299:6;11287:19;;;;;;;;;;;;;;;:28;11307:7;11287:28;;;;;;;;;;;;;;;;11280:35;;11185:133;;;;:::o;7251:32::-;;;;:::o;4948:101::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;13129:501::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13200:29:::1;13251:9;13200:61;;13272:16;13309:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13291:47;;;13347:4;13354:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13291:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13272:100;;13407:1;13387:22;;:8;:22;;;13383:207;;;13453:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13435:50;;;13494:4;13501:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13435:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13426:6;;:93;;;;;;;;;;;;;;;;;;13383:207;;;13570:8;13561:6;;:17;;;;;;;;;;;;;;;;;;13383:207;13612:10;13600:9;;:22;;;;;;;;;;;;;;;;;;13189:441;;13129:501:::0;:::o;15007:141::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15133:7:::1;15099:22;:31;15122:7;15099:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;15007:141:::0;;:::o;16730:289::-;7860:12;:10;:12::i;:::-;7850:22;;:6;;;;;;;;;;:22;;;7842:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16930:16:::1;16910;16900:7;;:26;;;;:::i;:::-;16899:47;;;;:::i;:::-;16883:13;:63;;;;16998:13;16981;16971:7;;:23;;;;:::i;:::-;16970:41;;;;:::i;:::-;16957:10;:54;;;;16730:289:::0;;;;:::o;197:107::-;242:15;285:10;270:26;;197:107;:::o;11795:309::-;11907:1;11889:20;;:6;:20;;;;11881:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11971:1;11952:21;;:7;:21;;;;11944:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12041:6;12010:11;:19;12022:6;12010:19;;;;;;;;;;;;;;;:28;12030:7;12010:28;;;;;;;;;;;;;;;:37;;;;12080:7;12063:33;;12072:6;12063:33;;;12089:6;12063:33;;;;;;:::i;:::-;;;;;;;;11795:309;;;:::o;17751:1536::-;17830:4;17871:1;17855:18;;:4;:18;;;;17847:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17931:1;17917:16;;:2;:16;;;;17909:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17986:1;17977:6;:10;17969:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;18014:20;18025:4;18031:2;18014:10;:20::i;:::-;18011:504;;;18056:35;:41;18092:4;18056:41;;;;;;;;;;;;;;;;;;;;;;;;;:84;;;;18101:35;:39;18137:2;18101:39;;;;;;;;;;;;;;;;;;;;;;;;;18056:84;18051:439;;18165:7;:13;18173:4;18165:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;18182:7;:11;18190:2;18182:11;;;;;;;;;;;;;;;;;;;;;;;;;18165:28;18162:130;;;18231:12;;18221:6;:22;;18213:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;18162:130;5992:42;18313:20;;:2;:20;;;;:36;;;;;18338:7;:11;18346:2;18338:11;;;;;;;;;;;;;;;;;;;;;;;;;18337:12;18313:36;18310:163;;;18408:14;;18398:6;18382:13;18392:2;18382:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18374:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;18310:163;18051:439;18011:504;18548:1;18533:7;:11;18541:2;18533:11;;;;;;;;;;;;;;;;:16;18529:79;;;18581:15;18566:8;:12;18575:2;18566:12;;;;;;;;;;;;;;;:30;;;;18529:79;18620:12;18635:4;18620:19;;18653;:25;18673:4;18653:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;18682:19;:23;18702:2;18682:23;;;;;;;;;;;;;;;;;;;;;;;;;18653:52;18650:98;;;18731:5;18721:15;;18650:98;18764:7;:11;18772:2;18764:11;;;;;;;;;;;;;;;;;;;;;;;;;18760:457;;;18797:16;;;;;;;;;;;18796:17;:59;;;;;18834:21;;;;;;;;;;;18796:59;18792:408;;;18890:28;18921:24;18939:4;18921:9;:24::i;:::-;18890:55;;18992:13;;18968:20;:37;18964:221;;19057:10;;19033:20;:34;19030:77;;19094:10;;19071:33;;19030:77;19129:36;19144:20;19129:14;:36::i;:::-;18964:221;18871:329;18792:408;18760:457;19235:44;19253:4;19259:2;19263:6;19271:7;19235:17;:44::i;:::-;19228:51;;;17751:1536;;;;;:::o;17420:323::-;17488:4;17520:7;:5;:7::i;:::-;17512:15;;:4;:15;;;;:45;;;;;17550:7;:5;:7::i;:::-;17544:13;;:2;:13;;;;17512:45;:84;;;;;17575:17;:21;17593:2;17575:21;;;;;;;;;;;;;;;;;;;;;;;;;17574:22;17512:84;:125;;;;;17614:17;:23;17632:4;17614:23;;;;;;;;;;;;;;;;;;;;;;;;;17613:24;17512:125;:152;;;;;6078:42;17654:10;;:2;:10;;;;17512:152;:185;;;;;17695:1;17681:16;;:2;:16;;;;17512:185;:223;;;;;17730:4;17714:21;;:4;:21;;;;17512:223;17505:230;;17420:323;;;;:::o;19295:1041::-;7743:4;7724:16;;:23;;;;;;;;;;;;;;;;;;19438:1:::1;19424:6;:10;;;19403:6;:18;;;19384:6;:16;;;:37;;;;:::i;:::-;:50;;;;:::i;:::-;:55;19380:81;;;19454:7;;19380:81;19471:17;19593:1;19577:6;:10;;;19556:6;:18;;;19537:6;:16;;;:37;;;;:::i;:::-;:50;;;;:::i;:::-;19516:6;:16;;;19493:20;:39;;;;:::i;:::-;19492:96;;;;:::i;:::-;19491:103;;;;:::i;:::-;19471:123;;19607:20;19653:9;19630:20;:32;;;;:::i;:::-;19607:55;;19673:30;19690:12;19673:16;:30::i;:::-;19716:22;19741:21;19716:46;;19773:24;19896:1;19880:6;:10;;;19859:6;:18;;;19840:6;:16;;;:37;;;;:::i;:::-;:50;;;;:::i;:::-;19819:6;:16;;;19802:14;:33;;;;:::i;:::-;19801:90;;;;:::i;:::-;19800:97;;;;:::i;:::-;19773:124;;19926:1;19914:9;:13;19910:161;;;19944:41;19957:9;19968:16;19944:12;:41::i;:::-;20005:54;20020:9;20031:16;20049:9;20005:54;;;;;;;;:::i;:::-;;;;;;;;19910:161;20120:1;20108:9;20085:20;:32;;;;:::i;:::-;:36;20081:248;;;20138:10;;;;;;;;;;;:19;;:115;20241:6;:10;;;20220:6;:18;;;:31;;;;:::i;:::-;20197:6;:18;;;20177:16;20160:14;:33;;;;:::i;:::-;20159:56;;;;:::i;:::-;20158:94;;;;:::i;:::-;20138:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20268:17;;;;;;;;;;;:26;;:49;20295:21;20268:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20081:248;19369:967;;;;7758:1;7789:5:::0;7770:16;;:24;;;;;;;;;;;;;;;;;;19295:1041;:::o;21728:1220::-;21828:4;21849:16;;;;;;;;;;;21845:858;;;21885:27;21907:4;21885:21;:27::i;:::-;:56;;;;21916:25;21938:2;21916:21;:25::i;:::-;21885:56;21881:123;;;21962:26;;;;;;;;;;:::i;:::-;;;;;;;;21881:123;22025:16;;;;;;;;;;;22020:672;;22062:28;22081:4;22087:2;22062:18;:28::i;:::-;22114:16;;;;;;;;;;;22113:17;:41;;;;;22134:20;22145:4;22151:2;22134:10;:20::i;:::-;22113:41;22109:137;;;22179:47;;;;;;;;;;:::i;:::-;;;;;;;;22109:137;22020:672;;;22305:1;22290:12;;:16;:55;;;;;22332:7;:13;22340:4;22332:13;;;;;;;;;;;;;;;;;;;;;;;;;22290:55;:101;;;;;22371:20;22382:4;22388:2;22371:10;:20::i;:::-;22290:101;22286:391;;;22468:13;;22453:12;;22438;:27;;;;:::i;:::-;:43;22434:224;;;22539:4;22510:22;:26;22533:2;22510:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;22570:13;;:16;;;;;;;;;:::i;:::-;;;;;;22618;22631:2;22618:16;;;;;;:::i;:::-;;;;;;;;22434:224;22286:391;22020:672;21845:858;22732:6;22715:7;:13;22723:4;22715:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;22749:22;22775:7;22774:48;;22816:6;22774:48;;;22786:27;22796:4;22802:2;22806:6;22786:9;:27::i;:::-;22774:48;22749:73;;22852:14;22837:7;:11;22845:2;22837:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;22899:2;22884:34;;22893:4;22884:34;;;22903:14;22884:34;;;;;;:::i;:::-;;;;;;;;22936:4;22929:11;;;21728:1220;;;;;;:::o;20344:417::-;20411:21;20449:1;20435:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20411:40;;20480:4;20462;20467:1;20462:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20506:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20496:4;20501:1;20496:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;20535:9;;;;;;;;;;;:60;;;20610:11;20636:1;20680:4;20707;20727:15;20535:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20400:361;20344:417;:::o;20769:335::-;20850:9;;;;;;;;;;;:25;;;20883:9;20916:4;20936:11;20962:1;21005;21048:7;:5;:7::i;:::-;21070:15;20850:246;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20769:335;;:::o;21112:608::-;21194:16;;;;;;;;;;;21193:17;21185:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;21266:20;21277:4;21283:2;21266:10;:20::i;:::-;21265:21;:37;;;;;21296:6;;;;;;;;;;;21290:12;;:2;:12;;;21265:37;21261:452;;;21340:1;21323:13;;:18;21319:154;;21377:12;21362;:27;;;;21319:154;;;21445:12;21430;:27;;;;21319:154;21515:4;21489:17;:23;21507:4;21489:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;21553:4;21534:16;;:23;;;;;;;;;;;;;;;;;;21587:15;21572:12;:30;;;;21643:4;21619:21;;:28;;;;;;;;;;;;;;;;;;21667:34;21696:4;21667:34;;;;;;:::i;:::-;;;;;;;;21261:452;21112:608;;:::o;22956:1171::-;23035:7;23055:18;23096:6;;;;;;;;;;;23090:12;;:2;:12;;;23086:399;;;23123:5;:13;;;;;;;;;;;;23119:236;;;23194:15;23177:5;:14;;;23160:8;:14;23169:4;23160:14;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;:49;23156:139;;;23225:4;:15;;;23212:28;;23156:139;;;23281:4;:12;;;23268:25;;23156:139;23119:236;;;23341:4;:12;;;23330:23;;23119:236;23086:399;;;23400:6;;;;;;;;;;;23392:14;;:4;:14;;;23388:97;;;23422:4;:11;;;23409:24;;23388:97;;;23467:4;:16;;;23454:29;;23388:97;23086:399;23666:15;5654:5;23777:6;:10;;;23756:6;:18;;;23737:6;:16;;;23723:6;:11;;;:30;;;;:::i;:::-;:51;;;;:::i;:::-;:64;;;;:::i;:::-;23707:6;:11;;;23694:10;23685:6;:19;;;;:::i;:::-;:33;;;;:::i;:::-;23684:105;;;;:::i;:::-;:124;;;;:::i;:::-;23666:142;;23819:17;23882:7;5654:5;23849:10;23840:6;:19;;;;:::i;:::-;:38;;;;:::i;:::-;23839:50;;;;:::i;:::-;23819:70;;23917:7;23900;:13;6078:42;23900:13;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;23962:9;23935:7;:22;23951:4;23935:22;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;6078:42;23988:29;;23997:4;23988:29;;;24009:7;23988:29;;;;;;:::i;:::-;;;;;;;;24056:4;24033:40;;24042:4;24033:40;;;24063:9;24033:40;;;;;;:::i;:::-;;;;;;;;24112:7;24100:9;24091:6;:18;;;;:::i;:::-;:28;;;;:::i;:::-;24084:35;;;;;22956:1171;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:139::-;647:5;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;601:139;;;;:::o;746:143::-;803:5;834:6;828:13;819:22;;850:33;877:5;850:33;:::i;:::-;746:143;;;;:::o;895:329::-;954:6;1003:2;991:9;982:7;978:23;974:32;971:119;;;1009:79;;:::i;:::-;971:119;1129:1;1154:53;1199:7;1190:6;1179:9;1175:22;1154:53;:::i;:::-;1144:63;;1100:117;895:329;;;;:::o;1230:351::-;1300:6;1349:2;1337:9;1328:7;1324:23;1320:32;1317:119;;;1355:79;;:::i;:::-;1317:119;1475:1;1500:64;1556:7;1547:6;1536:9;1532:22;1500:64;:::i;:::-;1490:74;;1446:128;1230:351;;;;:::o;1587:506::-;1671:6;1679;1728:2;1716:9;1707:7;1703:23;1699:32;1696:119;;;1734:79;;:::i;:::-;1696:119;1854:1;1879:61;1932:7;1923:6;1912:9;1908:22;1879:61;:::i;:::-;1869:71;;1825:125;1989:2;2015:61;2068:7;2059:6;2048:9;2044:22;2015:61;:::i;:::-;2005:71;;1960:126;1587:506;;;;;:::o;2099:474::-;2167:6;2175;2224:2;2212:9;2203:7;2199:23;2195:32;2192:119;;;2230:79;;:::i;:::-;2192:119;2350:1;2375:53;2420:7;2411:6;2400:9;2396:22;2375:53;:::i;:::-;2365:63;;2321:117;2477:2;2503:53;2548:7;2539:6;2528:9;2524:22;2503:53;:::i;:::-;2493:63;;2448:118;2099:474;;;;;:::o;2579:619::-;2656:6;2664;2672;2721:2;2709:9;2700:7;2696:23;2692:32;2689:119;;;2727:79;;:::i;:::-;2689:119;2847:1;2872:53;2917:7;2908:6;2897:9;2893:22;2872:53;:::i;:::-;2862:63;;2818:117;2974:2;3000:53;3045:7;3036:6;3025:9;3021:22;3000:53;:::i;:::-;2990:63;;2945:118;3102:2;3128:53;3173:7;3164:6;3153:9;3149:22;3128:53;:::i;:::-;3118:63;;3073:118;2579:619;;;;;:::o;3204:468::-;3269:6;3277;3326:2;3314:9;3305:7;3301:23;3297:32;3294:119;;;3332:79;;:::i;:::-;3294:119;3452:1;3477:53;3522:7;3513:6;3502:9;3498:22;3477:53;:::i;:::-;3467:63;;3423:117;3579:2;3605:50;3647:7;3638:6;3627:9;3623:22;3605:50;:::i;:::-;3595:60;;3550:115;3204:468;;;;;:::o;3678:474::-;3746:6;3754;3803:2;3791:9;3782:7;3778:23;3774:32;3771:119;;;3809:79;;:::i;:::-;3771:119;3929:1;3954:53;3999:7;3990:6;3979:9;3975:22;3954:53;:::i;:::-;3944:63;;3900:117;4056:2;4082:53;4127:7;4118:6;4107:9;4103:22;4082:53;:::i;:::-;4072:63;;4027:118;3678:474;;;;;:::o;4158:323::-;4214:6;4263:2;4251:9;4242:7;4238:23;4234:32;4231:119;;;4269:79;;:::i;:::-;4231:119;4389:1;4414:50;4456:7;4447:6;4436:9;4432:22;4414:50;:::i;:::-;4404:60;;4360:114;4158:323;;;;:::o;4487:468::-;4552:6;4560;4609:2;4597:9;4588:7;4584:23;4580:32;4577:119;;;4615:79;;:::i;:::-;4577:119;4735:1;4760:50;4802:7;4793:6;4782:9;4778:22;4760:50;:::i;:::-;4750:60;;4706:114;4859:2;4885:53;4930:7;4921:6;4910:9;4906:22;4885:53;:::i;:::-;4875:63;;4830:118;4487:468;;;;;:::o;4961:329::-;5020:6;5069:2;5057:9;5048:7;5044:23;5040:32;5037:119;;;5075:79;;:::i;:::-;5037:119;5195:1;5220:53;5265:7;5256:6;5245:9;5241:22;5220:53;:::i;:::-;5210:63;;5166:117;4961:329;;;;:::o;5296:474::-;5364:6;5372;5421:2;5409:9;5400:7;5396:23;5392:32;5389:119;;;5427:79;;:::i;:::-;5389:119;5547:1;5572:53;5617:7;5608:6;5597:9;5593:22;5572:53;:::i;:::-;5562:63;;5518:117;5674:2;5700:53;5745:7;5736:6;5725:9;5721:22;5700:53;:::i;:::-;5690:63;;5645:118;5296:474;;;;;:::o;5776:663::-;5864:6;5872;5880;5929:2;5917:9;5908:7;5904:23;5900:32;5897:119;;;5935:79;;:::i;:::-;5897:119;6055:1;6080:64;6136:7;6127:6;6116:9;6112:22;6080:64;:::i;:::-;6070:74;;6026:128;6193:2;6219:64;6275:7;6266:6;6255:9;6251:22;6219:64;:::i;:::-;6209:74;;6164:129;6332:2;6358:64;6414:7;6405:6;6394:9;6390:22;6358:64;:::i;:::-;6348:74;;6303:129;5776:663;;;;;:::o;6445:765::-;6531:6;6539;6547;6555;6604:3;6592:9;6583:7;6579:23;6575:33;6572:120;;;6611:79;;:::i;:::-;6572:120;6731:1;6756:53;6801:7;6792:6;6781:9;6777:22;6756:53;:::i;:::-;6746:63;;6702:117;6858:2;6884:53;6929:7;6920:6;6909:9;6905:22;6884:53;:::i;:::-;6874:63;;6829:118;6986:2;7012:53;7057:7;7048:6;7037:9;7033:22;7012:53;:::i;:::-;7002:63;;6957:118;7114:2;7140:53;7185:7;7176:6;7165:9;7161:22;7140:53;:::i;:::-;7130:63;;7085:118;6445:765;;;;;;;:::o;7216:179::-;7285:10;7306:46;7348:3;7340:6;7306:46;:::i;:::-;7384:4;7379:3;7375:14;7361:28;;7216:179;;;;:::o;7401:142::-;7504:32;7530:5;7504:32;:::i;:::-;7499:3;7492:45;7401:142;;:::o;7549:108::-;7626:24;7644:5;7626:24;:::i;:::-;7621:3;7614:37;7549:108;;:::o;7663:118::-;7750:24;7768:5;7750:24;:::i;:::-;7745:3;7738:37;7663:118;;:::o;7817:732::-;7936:3;7965:54;8013:5;7965:54;:::i;:::-;8035:86;8114:6;8109:3;8035:86;:::i;:::-;8028:93;;8145:56;8195:5;8145:56;:::i;:::-;8224:7;8255:1;8240:284;8265:6;8262:1;8259:13;8240:284;;;8341:6;8335:13;8368:63;8427:3;8412:13;8368:63;:::i;:::-;8361:70;;8454:60;8507:6;8454:60;:::i;:::-;8444:70;;8300:224;8287:1;8284;8280:9;8275:14;;8240:284;;;8244:14;8540:3;8533:10;;7941:608;;;7817:732;;;;:::o;8555:109::-;8636:21;8651:5;8636:21;:::i;:::-;8631:3;8624:34;8555:109;;:::o;8670:183::-;8783:63;8840:5;8783:63;:::i;:::-;8778:3;8771:76;8670:183;;:::o;8859:147::-;8954:45;8993:5;8954:45;:::i;:::-;8949:3;8942:58;8859:147;;:::o;9012:364::-;9100:3;9128:39;9161:5;9128:39;:::i;:::-;9183:71;9247:6;9242:3;9183:71;:::i;:::-;9176:78;;9263:52;9308:6;9303:3;9296:4;9289:5;9285:16;9263:52;:::i;:::-;9340:29;9362:6;9340:29;:::i;:::-;9335:3;9331:39;9324:46;;9104:272;9012:364;;;;:::o;9382:366::-;9524:3;9545:67;9609:2;9604:3;9545:67;:::i;:::-;9538:74;;9621:93;9710:3;9621:93;:::i;:::-;9739:2;9734:3;9730:12;9723:19;;9382:366;;;:::o;9754:::-;9896:3;9917:67;9981:2;9976:3;9917:67;:::i;:::-;9910:74;;9993:93;10082:3;9993:93;:::i;:::-;10111:2;10106:3;10102:12;10095:19;;9754:366;;;:::o;10126:::-;10268:3;10289:67;10353:2;10348:3;10289:67;:::i;:::-;10282:74;;10365:93;10454:3;10365:93;:::i;:::-;10483:2;10478:3;10474:12;10467:19;;10126:366;;;:::o;10498:::-;10640:3;10661:67;10725:2;10720:3;10661:67;:::i;:::-;10654:74;;10737:93;10826:3;10737:93;:::i;:::-;10855:2;10850:3;10846:12;10839:19;;10498:366;;;:::o;10870:::-;11012:3;11033:67;11097:2;11092:3;11033:67;:::i;:::-;11026:74;;11109:93;11198:3;11109:93;:::i;:::-;11227:2;11222:3;11218:12;11211:19;;10870:366;;;:::o;11242:::-;11384:3;11405:67;11469:2;11464:3;11405:67;:::i;:::-;11398:74;;11481:93;11570:3;11481:93;:::i;:::-;11599:2;11594:3;11590:12;11583:19;;11242:366;;;:::o;11614:365::-;11756:3;11777:66;11841:1;11836:3;11777:66;:::i;:::-;11770:73;;11852:93;11941:3;11852:93;:::i;:::-;11970:2;11965:3;11961:12;11954:19;;11614:365;;;:::o;11985:366::-;12127:3;12148:67;12212:2;12207:3;12148:67;:::i;:::-;12141:74;;12224:93;12313:3;12224:93;:::i;:::-;12342:2;12337:3;12333:12;12326:19;;11985:366;;;:::o;12357:::-;12499:3;12520:67;12584:2;12579:3;12520:67;:::i;:::-;12513:74;;12596:93;12685:3;12596:93;:::i;:::-;12714:2;12709:3;12705:12;12698:19;;12357:366;;;:::o;12729:365::-;12871:3;12892:66;12956:1;12951:3;12892:66;:::i;:::-;12885:73;;12967:93;13056:3;12967:93;:::i;:::-;13085:2;13080:3;13076:12;13069:19;;12729:365;;;:::o;13100:366::-;13242:3;13263:67;13327:2;13322:3;13263:67;:::i;:::-;13256:74;;13339:93;13428:3;13339:93;:::i;:::-;13457:2;13452:3;13448:12;13441:19;;13100:366;;;:::o;13472:::-;13614:3;13635:67;13699:2;13694:3;13635:67;:::i;:::-;13628:74;;13711:93;13800:3;13711:93;:::i;:::-;13829:2;13824:3;13820:12;13813:19;;13472:366;;;:::o;13844:::-;13986:3;14007:67;14071:2;14066:3;14007:67;:::i;:::-;14000:74;;14083:93;14172:3;14083:93;:::i;:::-;14201:2;14196:3;14192:12;14185:19;;13844:366;;;:::o;14216:::-;14358:3;14379:67;14443:2;14438:3;14379:67;:::i;:::-;14372:74;;14455:93;14544:3;14455:93;:::i;:::-;14573:2;14568:3;14564:12;14557:19;;14216:366;;;:::o;14588:365::-;14730:3;14751:66;14815:1;14810:3;14751:66;:::i;:::-;14744:73;;14826:93;14915:3;14826:93;:::i;:::-;14944:2;14939:3;14935:12;14928:19;;14588:365;;;:::o;14959:118::-;15046:24;15064:5;15046:24;:::i;:::-;15041:3;15034:37;14959:118;;:::o;15083:112::-;15166:22;15182:5;15166:22;:::i;:::-;15161:3;15154:35;15083:112;;:::o;15201:222::-;15294:4;15332:2;15321:9;15317:18;15309:26;;15345:71;15413:1;15402:9;15398:17;15389:6;15345:71;:::i;:::-;15201:222;;;;:::o;15429:254::-;15538:4;15576:2;15565:9;15561:18;15553:26;;15589:87;15673:1;15662:9;15658:17;15649:6;15589:87;:::i;:::-;15429:254;;;;:::o;15689:332::-;15810:4;15848:2;15837:9;15833:18;15825:26;;15861:71;15929:1;15918:9;15914:17;15905:6;15861:71;:::i;:::-;15942:72;16010:2;15999:9;15995:18;15986:6;15942:72;:::i;:::-;15689:332;;;;;:::o;16027:807::-;16276:4;16314:3;16303:9;16299:19;16291:27;;16328:71;16396:1;16385:9;16381:17;16372:6;16328:71;:::i;:::-;16409:72;16477:2;16466:9;16462:18;16453:6;16409:72;:::i;:::-;16491:80;16567:2;16556:9;16552:18;16543:6;16491:80;:::i;:::-;16581;16657:2;16646:9;16642:18;16633:6;16581:80;:::i;:::-;16671:73;16739:3;16728:9;16724:19;16715:6;16671:73;:::i;:::-;16754;16822:3;16811:9;16807:19;16798:6;16754:73;:::i;:::-;16027:807;;;;;;;;;:::o;16840:210::-;16927:4;16965:2;16954:9;16950:18;16942:26;;16978:65;17040:1;17029:9;17025:17;17016:6;16978:65;:::i;:::-;16840:210;;;;:::o;17056:274::-;17175:4;17213:2;17202:9;17198:18;17190:26;;17226:97;17320:1;17309:9;17305:17;17296:6;17226:97;:::i;:::-;17056:274;;;;:::o;17336:313::-;17449:4;17487:2;17476:9;17472:18;17464:26;;17536:9;17530:4;17526:20;17522:1;17511:9;17507:17;17500:47;17564:78;17637:4;17628:6;17564:78;:::i;:::-;17556:86;;17336:313;;;;:::o;17655:419::-;17821:4;17859:2;17848:9;17844:18;17836:26;;17908:9;17902:4;17898:20;17894:1;17883:9;17879:17;17872:47;17936:131;18062:4;17936:131;:::i;:::-;17928:139;;17655:419;;;:::o;18080:::-;18246:4;18284:2;18273:9;18269:18;18261:26;;18333:9;18327:4;18323:20;18319:1;18308:9;18304:17;18297:47;18361:131;18487:4;18361:131;:::i;:::-;18353:139;;18080:419;;;:::o;18505:::-;18671:4;18709:2;18698:9;18694:18;18686:26;;18758:9;18752:4;18748:20;18744:1;18733:9;18729:17;18722:47;18786:131;18912:4;18786:131;:::i;:::-;18778:139;;18505:419;;;:::o;18930:::-;19096:4;19134:2;19123:9;19119:18;19111:26;;19183:9;19177:4;19173:20;19169:1;19158:9;19154:17;19147:47;19211:131;19337:4;19211:131;:::i;:::-;19203:139;;18930:419;;;:::o;19355:::-;19521:4;19559:2;19548:9;19544:18;19536:26;;19608:9;19602:4;19598:20;19594:1;19583:9;19579:17;19572:47;19636:131;19762:4;19636:131;:::i;:::-;19628:139;;19355:419;;;:::o;19780:::-;19946:4;19984:2;19973:9;19969:18;19961:26;;20033:9;20027:4;20023:20;20019:1;20008:9;20004:17;19997:47;20061:131;20187:4;20061:131;:::i;:::-;20053:139;;19780:419;;;:::o;20205:::-;20371:4;20409:2;20398:9;20394:18;20386:26;;20458:9;20452:4;20448:20;20444:1;20433:9;20429:17;20422:47;20486:131;20612:4;20486:131;:::i;:::-;20478:139;;20205:419;;;:::o;20630:::-;20796:4;20834:2;20823:9;20819:18;20811:26;;20883:9;20877:4;20873:20;20869:1;20858:9;20854:17;20847:47;20911:131;21037:4;20911:131;:::i;:::-;20903:139;;20630:419;;;:::o;21055:::-;21221:4;21259:2;21248:9;21244:18;21236:26;;21308:9;21302:4;21298:20;21294:1;21283:9;21279:17;21272:47;21336:131;21462:4;21336:131;:::i;:::-;21328:139;;21055:419;;;:::o;21480:::-;21646:4;21684:2;21673:9;21669:18;21661:26;;21733:9;21727:4;21723:20;21719:1;21708:9;21704:17;21697:47;21761:131;21887:4;21761:131;:::i;:::-;21753:139;;21480:419;;;:::o;21905:::-;22071:4;22109:2;22098:9;22094:18;22086:26;;22158:9;22152:4;22148:20;22144:1;22133:9;22129:17;22122:47;22186:131;22312:4;22186:131;:::i;:::-;22178:139;;21905:419;;;:::o;22330:::-;22496:4;22534:2;22523:9;22519:18;22511:26;;22583:9;22577:4;22573:20;22569:1;22558:9;22554:17;22547:47;22611:131;22737:4;22611:131;:::i;:::-;22603:139;;22330:419;;;:::o;22755:::-;22921:4;22959:2;22948:9;22944:18;22936:26;;23008:9;23002:4;22998:20;22994:1;22983:9;22979:17;22972:47;23036:131;23162:4;23036:131;:::i;:::-;23028:139;;22755:419;;;:::o;23180:::-;23346:4;23384:2;23373:9;23369:18;23361:26;;23433:9;23427:4;23423:20;23419:1;23408:9;23404:17;23397:47;23461:131;23587:4;23461:131;:::i;:::-;23453:139;;23180:419;;;:::o;23605:::-;23771:4;23809:2;23798:9;23794:18;23786:26;;23858:9;23852:4;23848:20;23844:1;23833:9;23829:17;23822:47;23886:131;24012:4;23886:131;:::i;:::-;23878:139;;23605:419;;;:::o;24030:222::-;24123:4;24161:2;24150:9;24146:18;24138:26;;24174:71;24242:1;24231:9;24227:17;24218:6;24174:71;:::i;:::-;24030:222;;;;:::o;24258:320::-;24373:4;24411:2;24400:9;24396:18;24388:26;;24424:71;24492:1;24481:9;24477:17;24468:6;24424:71;:::i;:::-;24505:66;24567:2;24556:9;24552:18;24543:6;24505:66;:::i;:::-;24258:320;;;;;:::o;24584:831::-;24847:4;24885:3;24874:9;24870:19;24862:27;;24899:71;24967:1;24956:9;24952:17;24943:6;24899:71;:::i;:::-;24980:80;25056:2;25045:9;25041:18;25032:6;24980:80;:::i;:::-;25107:9;25101:4;25097:20;25092:2;25081:9;25077:18;25070:48;25135:108;25238:4;25229:6;25135:108;:::i;:::-;25127:116;;25253:72;25321:2;25310:9;25306:18;25297:6;25253:72;:::i;:::-;25335:73;25403:3;25392:9;25388:19;25379:6;25335:73;:::i;:::-;24584:831;;;;;;;;:::o;25421:442::-;25570:4;25608:2;25597:9;25593:18;25585:26;;25621:71;25689:1;25678:9;25674:17;25665:6;25621:71;:::i;:::-;25702:72;25770:2;25759:9;25755:18;25746:6;25702:72;:::i;:::-;25784;25852:2;25841:9;25837:18;25828:6;25784:72;:::i;:::-;25421:442;;;;;;:::o;25869:553::-;26046:4;26084:3;26073:9;26069:19;26061:27;;26098:71;26166:1;26155:9;26151:17;26142:6;26098:71;:::i;:::-;26179:72;26247:2;26236:9;26232:18;26223:6;26179:72;:::i;:::-;26261;26329:2;26318:9;26314:18;26305:6;26261:72;:::i;:::-;26343;26411:2;26400:9;26396:18;26387:6;26343:72;:::i;:::-;25869:553;;;;;;;:::o;26428:214::-;26517:4;26555:2;26544:9;26540:18;26532:26;;26568:67;26632:1;26621:9;26617:17;26608:6;26568:67;:::i;:::-;26428:214;;;;:::o;26729:132::-;26796:4;26819:3;26811:11;;26849:4;26844:3;26840:14;26832:22;;26729:132;;;:::o;26867:114::-;26934:6;26968:5;26962:12;26952:22;;26867:114;;;:::o;26987:99::-;27039:6;27073:5;27067:12;27057:22;;26987:99;;;:::o;27092:113::-;27162:4;27194;27189:3;27185:14;27177:22;;27092:113;;;:::o;27211:184::-;27310:11;27344:6;27339:3;27332:19;27384:4;27379:3;27375:14;27360:29;;27211:184;;;;:::o;27401:169::-;27485:11;27519:6;27514:3;27507:19;27559:4;27554:3;27550:14;27535:29;;27401:169;;;;:::o;27576:305::-;27616:3;27635:20;27653:1;27635:20;:::i;:::-;27630:25;;27669:20;27687:1;27669:20;:::i;:::-;27664:25;;27823:1;27755:66;27751:74;27748:1;27745:81;27742:107;;;27829:18;;:::i;:::-;27742:107;27873:1;27870;27866:9;27859:16;;27576:305;;;;:::o;27887:185::-;27927:1;27944:20;27962:1;27944:20;:::i;:::-;27939:25;;27978:20;27996:1;27978:20;:::i;:::-;27973:25;;28017:1;28007:35;;28022:18;;:::i;:::-;28007:35;28064:1;28061;28057:9;28052:14;;27887:185;;;;:::o;28078:348::-;28118:7;28141:20;28159:1;28141:20;:::i;:::-;28136:25;;28175:20;28193:1;28175:20;:::i;:::-;28170:25;;28363:1;28295:66;28291:74;28288:1;28285:81;28280:1;28273:9;28266:17;28262:105;28259:131;;;28370:18;;:::i;:::-;28259:131;28418:1;28415;28411:9;28400:20;;28078:348;;;;:::o;28432:191::-;28472:4;28492:20;28510:1;28492:20;:::i;:::-;28487:25;;28526:20;28544:1;28526:20;:::i;:::-;28521:25;;28565:1;28562;28559:8;28556:34;;;28570:18;;:::i;:::-;28556:34;28615:1;28612;28608:9;28600:17;;28432:191;;;;:::o;28629:96::-;28666:7;28695:24;28713:5;28695:24;:::i;:::-;28684:35;;28629:96;;;:::o;28731:104::-;28776:7;28805:24;28823:5;28805:24;:::i;:::-;28794:35;;28731:104;;;:::o;28841:90::-;28875:7;28918:5;28911:13;28904:21;28893:32;;28841:90;;;:::o;28937:126::-;28974:7;29014:42;29007:5;29003:54;28992:65;;28937:126;;;:::o;29069:77::-;29106:7;29135:5;29124:16;;29069:77;;;:::o;29152:86::-;29187:7;29227:4;29220:5;29216:16;29205:27;;29152:86;;;:::o;29244:152::-;29320:9;29353:37;29384:5;29353:37;:::i;:::-;29340:50;;29244:152;;;:::o;29402:121::-;29460:9;29493:24;29511:5;29493:24;:::i;:::-;29480:37;;29402:121;;;:::o;29529:126::-;29579:9;29612:37;29643:5;29612:37;:::i;:::-;29599:50;;29529:126;;;:::o;29661:113::-;29711:9;29744:24;29762:5;29744:24;:::i;:::-;29731:37;;29661:113;;;:::o;29780:307::-;29848:1;29858:113;29872:6;29869:1;29866:13;29858:113;;;29957:1;29952:3;29948:11;29942:18;29938:1;29933:3;29929:11;29922:39;29894:2;29891:1;29887:10;29882:15;;29858:113;;;29989:6;29986:1;29983:13;29980:101;;;30069:1;30060:6;30055:3;30051:16;30044:27;29980:101;29829:258;29780:307;;;:::o;30093:320::-;30137:6;30174:1;30168:4;30164:12;30154:22;;30221:1;30215:4;30211:12;30242:18;30232:81;;30298:4;30290:6;30286:17;30276:27;;30232:81;30360:2;30352:6;30349:14;30329:18;30326:38;30323:84;;;30379:18;;:::i;:::-;30323:84;30144:269;30093:320;;;:::o;30419:233::-;30458:3;30481:24;30499:5;30481:24;:::i;:::-;30472:33;;30527:66;30520:5;30517:77;30514:103;;;30597:18;;:::i;:::-;30514:103;30644:1;30637:5;30633:13;30626:20;;30419:233;;;:::o;30658:180::-;30706:77;30703:1;30696:88;30803:4;30800:1;30793:15;30827:4;30824:1;30817:15;30844:180;30892:77;30889:1;30882:88;30989:4;30986:1;30979:15;31013:4;31010:1;31003:15;31030:180;31078:77;31075:1;31068:88;31175:4;31172:1;31165:15;31199:4;31196:1;31189:15;31216:180;31264:77;31261:1;31254:88;31361:4;31358:1;31351:15;31385:4;31382:1;31375:15;31402:180;31450:77;31447:1;31440:88;31547:4;31544:1;31537:15;31571:4;31568:1;31561:15;31711:117;31820:1;31817;31810:12;31834:102;31875:6;31926:2;31922:7;31917:2;31910:5;31906:14;31902:28;31892:38;;31834:102;;;:::o;31942:166::-;32082:18;32078:1;32070:6;32066:14;32059:42;31942:166;:::o;32114:222::-;32254:34;32250:1;32242:6;32238:14;32231:58;32323:5;32318:2;32310:6;32306:15;32299:30;32114:222;:::o;32342:224::-;32482:34;32478:1;32470:6;32466:14;32459:58;32551:7;32546:2;32538:6;32534:15;32527:32;32342:224;:::o;32572:173::-;32712:25;32708:1;32700:6;32696:14;32689:49;32572:173;:::o;32751:170::-;32891:22;32887:1;32879:6;32875:14;32868:46;32751:170;:::o;32927:168::-;33067:20;33063:1;33055:6;33051:14;33044:44;32927:168;:::o;33101:158::-;33241:10;33237:1;33229:6;33225:14;33218:34;33101:158;:::o;33265:169::-;33405:21;33401:1;33393:6;33389:14;33382:45;33265:169;:::o;33440:166::-;33580:18;33576:1;33568:6;33564:14;33557:42;33440:166;:::o;33612:156::-;33752:8;33748:1;33740:6;33736:14;33729:32;33612:156;:::o;33774:176::-;33914:28;33910:1;33902:6;33898:14;33891:52;33774:176;:::o;33956:174::-;34096:26;34092:1;34084:6;34080:14;34073:50;33956:174;:::o;34136:224::-;34276:34;34272:1;34264:6;34260:14;34253:58;34345:7;34340:2;34332:6;34328:15;34321:32;34136:224;:::o;34366:248::-;34506:34;34502:1;34494:6;34490:14;34483:58;34575:31;34570:2;34562:6;34558:15;34551:56;34366:248;:::o;34620:155::-;34760:7;34756:1;34748:6;34744:14;34737:31;34620:155;:::o;34781:122::-;34854:24;34872:5;34854:24;:::i;:::-;34847:5;34844:35;34834:63;;34893:1;34890;34883:12;34834:63;34781:122;:::o;34909:138::-;34990:32;35016:5;34990:32;:::i;:::-;34983:5;34980:43;34970:71;;35037:1;35034;35027:12;34970:71;34909:138;:::o;35053:116::-;35123:21;35138:5;35123:21;:::i;:::-;35116:5;35113:32;35103:60;;35159:1;35156;35149:12;35103:60;35053:116;:::o;35175:122::-;35248:24;35266:5;35248:24;:::i;:::-;35241:5;35238:35;35228:63;;35287:1;35284;35277:12;35228:63;35175:122;:::o

Swarm Source

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