ETH Price: $3,111.62 (-0.13%)
Gas: 7.79 Gwei

Token

Shiku (SHIKU)
 

Overview

Max Total Supply

100,000,000,000 SHIKU

Holders

119

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
76,690,642.650082457 SHIKU

Value
$0.00
0x6c07d8fb00aa6504246a598e2ffe625c68b6acf8
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:
SHIKU

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// TELEGRAM : https://t.me/StealthEntryPortalETH
// WEBSITE : ShikuETH.com

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.8.11;

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 SHIKU 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;
    
    bool private sameBlockActive = false;
    mapping (address => uint256) private lastTrade;    

    uint256 private startingSupply = 100_000_000_000;

    string private _name = "Shiku";
    string private _symbol = "SHIKU";
//==========================
    // FEES
    struct taxes {
    uint buyFee;
    uint sellFee;
    uint transferFee;
    }

    taxes public Fees = taxes(
    {buyFee: 777, sellFee: 600, transferFee: 600});
//==========================
    // Maxima

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

    Maxima public maxFees = Maxima(
    {maxBuy: 1000, maxSell: 1000, maxTransfer: 1000});
//==========================    
    //Proportions of Taxes
    struct feeProportions {
    uint liquidity;
    uint burn;
    uint operationsFee;
    }

    feeProportions public Ratios = feeProportions(
    { liquidity: 0, burn: 0, operationsFee: 1000});

    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 _operationsFeeWallet = payable(0xA6627850e661ffbb26fF06C785dD099e2dd07C25);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent = 1;
    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);
        

        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

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

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

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

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

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

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


    function 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 = 1;
    }

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

    function setRatios(uint _liquidity, uint _operationsFee, uint _burn) external onlyOwner {
        require ( (_liquidity+_operationsFee+_burn) == 1000, "!= 1k");
        Ratios.liquidity = _liquidity;
        Ratios.operationsFee = _operationsFee;
        Ratios.burn = _burn;}

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

    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 operationsFeeWallet) external onlyOwner {
        _operationsFeeWallet = payable(operationsFeeWallet);
    }

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

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

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: Zero address.");
        require(to != address(0), "ERC20: Zero address.");
        require(amount > 0, "Must >0.");
        if(_hasLimits(from, to)) {
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                    } 
                else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                    }
            }
            if(!(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.");
                }

            }
            
        }
        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.operationsFee == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * Ratios.liquidity) / (Ratios.liquidity + Ratios.operationsFee) ) / 2;

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

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

        if (toLiquify > 0) {
            addLiquidity(toLiquify, liquidityBalance);
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {
            _operationsFeeWallet.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 != 1) {
                _liqAddBlock = block.number + 5000;
            } else {
                _liqAddBlock = block.number;
            }
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

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

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

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

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount; //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) {currentFee = Fees.sellFee;}

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

        else {currentFee = Fees.transferFee;}

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != (_decimals)) {
                revert();
            }
        }
        uint256 burnAmt = (amount * currentFee * Ratios.burn) / (Ratios.burn + Ratios.liquidity + Ratios.operationsFee ) / 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"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Ratios","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"operationsFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_operationsFeeWallet","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":"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":[],"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"}],"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":"_operationsFee","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"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"operationsFeeWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006003556000600960006101000a81548160ff02191690831515021790555064174876e800600b556040518060400160405280600581526020017f5368696b75000000000000000000000000000000000000000000000000000000815250600c90805190602001906200007a92919062000b63565b506040518060400160405280600581526020017f5348494b55000000000000000000000000000000000000000000000000000000815250600d9080519060200190620000c892919062000b63565b50604051806060016040528061030981526020016102588152602001610258815250600e600082015181600001556020820151816001015560408201518160020155505060405180606001604052806103e881526020016103e881526020016103e881525060116000820151816000015560208201518160010155604082015181600201555050604051806060016040528060008152602001600081526020016103e8815250601460008201518160000155602082015181600101556040820151816002015550506009600a620001a0919062000dad565b600b54620001af919062000dfe565b60175573a6627850e661ffbb26ff06c785dd099e2dd07c25601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601b60156101000a81548160ff0219169083151502179055506001601c556064601d55601d54601c5460175462000241919062000dfe565b6200024d919062000e8e565b601e556002601f556064602055602054601f546017546200026f919062000dfe565b6200027b919062000e8e565b602155612710600560175462000292919062000dfe565b6200029e919062000e8e565b6022556103e86005601754620002b5919062000dfe565b620002c1919062000e8e565b6023556001602460006101000a81548160ff0219169083151502179055506000602460016101000a81548160ff021916908315150217905550600060255560006026556000602755600060285560006029556000602a55601754600160006200032f6200095f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000470573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000496919062000f30565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000545919062000f30565b306040518363ffffffff1660e01b81526004016200056592919062000f73565b6020604051808303816000875af115801562000585573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ab919062000f30565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160026000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600660006200073e6200096760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000620008576200096760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620008e0620008bc6200095f60201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d6017546200099060201b60201c565b620008f06200095f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60175460405162000951919062000fb1565b60405180910390a3620010b6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000a03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009fa906200102f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a6d906200102f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000b56919062000fb1565b60405180910390a3505050565b82805462000b719062001080565b90600052602060002090601f01602090048101928262000b95576000855562000be1565b82601f1062000bb057805160ff191683800117855562000be1565b8280016001018555821562000be1579182015b8281111562000be057825182559160200191906001019062000bc3565b5b50905062000bf0919062000bf4565b5090565b5b8082111562000c0f57600081600090555060010162000bf5565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ca15780860481111562000c795762000c7862000c13565b5b600185161562000c895780820291505b808102905062000c998562000c42565b945062000c59565b94509492505050565b60008262000cbc576001905062000d8f565b8162000ccc576000905062000d8f565b816001811462000ce5576002811462000cf05762000d26565b600191505062000d8f565b60ff84111562000d055762000d0462000c13565b5b8360020a91508482111562000d1f5762000d1e62000c13565b5b5062000d8f565b5060208310610133831016604e8410600b841016171562000d605782820a90508381111562000d5a5762000d5962000c13565b5b62000d8f565b62000d6f848484600162000c4f565b9250905081840481111562000d895762000d8862000c13565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000dba8262000d96565b915062000dc78362000da0565b925062000df67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000caa565b905092915050565b600062000e0b8262000d96565b915062000e188362000d96565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e545762000e5362000c13565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e9b8262000d96565b915062000ea88362000d96565b92508262000ebb5762000eba62000e5f565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ef88262000ecb565b9050919050565b62000f0a8162000eeb565b811462000f1657600080fd5b50565b60008151905062000f2a8162000eff565b92915050565b60006020828403121562000f495762000f4862000ec6565b5b600062000f598482850162000f19565b91505092915050565b62000f6d8162000eeb565b82525050565b600060408201905062000f8a600083018562000f62565b62000f99602083018462000f62565b9392505050565b62000fab8162000d96565b82525050565b600060208201905062000fc8600083018462000fa0565b92915050565b600082825260208201905092915050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b60006200101760138362000fce565b9150620010248262000fdf565b602082019050919050565b600060208201905081810360008301526200104a8162001008565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200109957607f821691505b60208210811415620010b057620010af62001051565b5b50919050565b6151b880620010c66000396000f3fe6080604052600436106102605760003560e01c806381c6f11b11610144578063c49b9a80116100b6578063e83e34b11161007a578063e83e34b114610945578063e9dae5ed14610972578063eafb5a3c1461099b578063eb50e70e146109c4578063eec2744e146109ed578063fb78680d14610a1657610267565b8063c49b9a8014610862578063cdfdb7dc1461088b578063ce8b79c9146108b4578063dd62ed3e146108dd578063e79d41601461091a57610267565b806395d89b411161010857806395d89b411461073c578063a457c2d714610767578063a9059cbb146107a4578063b5f7bfa2146107e1578063bc1323e81461080e578063c157326d1461083757610267565b806381c6f11b14610643578063893d20e81461066c57806389fd9bc1146106975780638c7321ad146106d45780638da5cb5b1461071157610267565b80633f3cf56c116101dd57806350a8e016116101a157806350a8e01614610535578063571ac8b014610560578063590ffdce1461059d57806370a08231146105c6578063715018a61461060357806380c581d11461061a57610267565b80633f3cf56c14610450578063452ed4f1146104795780634a74bb02146104a45780634fb2e45d146104cf5780634fbee193146104f857610267565b806323b872dd1161022457806323b872dd146103555780632600395714610392578063313ce567146103bb57806339509351146103e65780633aaa36e61461042357610267565b806303fd2a451461026c57806306fdde03146102975780630758d924146102c2578063095ea7b3146102ed57806318160ddd1461032a57610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a3f565b60405161028e9190613fba565b60405180910390f35b3480156102a357600080fd5b506102ac610a45565b6040516102b9919061406e565b60405180910390f35b3480156102ce57600080fd5b506102d7610ad7565b6040516102e491906140ef565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f9190614171565b610afd565b60405161032191906141cc565b60405180910390f35b34801561033657600080fd5b5061033f610b1b565b60405161034c91906141f6565b60405180910390f35b34801561036157600080fd5b5061037c60048036038101906103779190614211565b610b25565b60405161038991906141cc565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b49190614264565b610c72565b005b3480156103c757600080fd5b506103d0610d82565b6040516103dd91906142c0565b60405180910390f35b3480156103f257600080fd5b5061040d60048036038101906104089190614171565b610d8b565b60405161041a91906141cc565b60405180910390f35b34801561042f57600080fd5b50610438610e37565b604051610447939291906142db565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190614264565b610e4f565b005b34801561048557600080fd5b5061048e610f5f565b60405161049b9190613fba565b60405180910390f35b3480156104b057600080fd5b506104b9610f85565b6040516104c691906141cc565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190614312565b610f98565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614312565b611351565b60405161052c91906141cc565b60405180910390f35b34801561054157600080fd5b5061054a6113a7565b60405161055791906141cc565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190614312565b6113ba565b60405161059491906141cc565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf919061436b565b6113ed565b005b3480156105d257600080fd5b506105ed60048036038101906105e89190614312565b6114dd565b6040516105fa91906141f6565b60405180910390f35b34801561060f57600080fd5b50610618611526565b005b34801561062657600080fd5b50610641600480360381019061063c919061436b565b6116a4565b005b34801561064f57600080fd5b5061066a600480360381019061066591906143ab565b611864565b005b34801561067857600080fd5b50610681611950565b60405161068e9190613fba565b60405180910390f35b3480156106a357600080fd5b506106be60048036038101906106b99190614312565b61195f565b6040516106cb91906141cc565b60405180910390f35b3480156106e057600080fd5b506106fb60048036038101906106f69190614312565b6119b5565b60405161070891906141cc565b60405180910390f35b34801561071d57600080fd5b506107266119d5565b6040516107339190613fba565b60405180910390f35b34801561074857600080fd5b506107516119fe565b60405161075e919061406e565b60405180910390f35b34801561077357600080fd5b5061078e60048036038101906107899190614171565b611a90565b60405161079b91906141cc565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c69190614171565b611b3c565b6040516107d891906141cc565b60405180910390f35b3480156107ed57600080fd5b506107f6611b5b565b604051610805939291906142db565b60405180910390f35b34801561081a57600080fd5b5061083560048036038101906108309190614312565b611b73565b005b34801561084357600080fd5b5061084c611c63565b60405161085991906143f9565b60405180910390f35b34801561086e57600080fd5b5061088960048036038101906108849190614414565b611c89565b005b34801561089757600080fd5b506108b260048036038101906108ad9190614441565b611d72565b005b3480156108c057600080fd5b506108db60048036038101906108d69190614312565b611e84565b005b3480156108e957600080fd5b5061090460048036038101906108ff9190614494565b611f74565b60405161091191906141f6565b60405180910390f35b34801561092657600080fd5b5061092f611ffb565b60405161093c91906141f6565b60405180910390f35b34801561095157600080fd5b5061095a612001565b604051610969939291906142db565b60405180910390f35b34801561097e57600080fd5b5061099960048036038101906109949190614441565b612019565b005b3480156109a757600080fd5b506109c260048036038101906109bd9190614312565b61213b565b005b3480156109d057600080fd5b506109eb60048036038101906109e69190614500565b61258d565b005b3480156109f957600080fd5b50610a146004803603810190610a0f919061436b565b612666565b005b348015610a2257600080fd5b50610a3d6004803603810190610a38919061452d565b612756565b005b61dead81565b6060600c8054610a54906145c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610a80906145c3565b8015610acd5780601f10610aa257610100808354040283529160200191610acd565b820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b5050505050905090565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b11610b0a61282f565b8484612837565b6001905092915050565b6000601754905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c5e5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c569190614624565b925050819055505b610c69848484612a02565b90509392505050565b610c7a61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfe906146a4565b60405180910390fd5b60008183601754610d1891906146c4565b610d22919061474d565b905061012c601754610d34919061474d565b811015610d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6d906147f0565b60405180910390fd5b80602181905550505050565b60006009905090565b6000610e2d610d9861282f565b848460046000610da661282f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e289190614810565b612837565b6001905092915050565b600e8060000154908060010154908060020154905083565b610e5761282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edb906146a4565b60405180910390fd5b60008183601754610ef591906146c4565b610eff919061474d565b905061012c601754610f11919061474d565b811015610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a906147f0565b60405180910390fd5b80601e81905550505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60159054906101000a900460ff1681565b610fa061282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611024906146a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561109d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611094906148d8565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561110e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611105906148d8565b60405180910390fd5b61113960008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006113ed565b6111448160016113ed565b61116d60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114dd565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061123960008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114dd565b11156112945761129260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261128d60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114dd565b612a02565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602460019054906101000a900460ff1681565b60006113e6827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610afd565b9050919050565b6113f561282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611479906146a4565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61152e61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b2906146a4565b60405180910390fd5b6115e660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006113ed565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b6116ac61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611739576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611730906146a4565b60405180910390fd5b6000151581151514156117a3576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611860565b6000600354146118005762093a80600354426117bf9190614624565b116117ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f690614944565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b61186c61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f0906146a4565b60405180910390fd5b60006025541461193e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611935906149b0565b60405180910390fd5b80602581905550600160298190555050565b600061195a6119d5565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054611a0d906145c3565b80601f0160208091040260200160405190810160405280929190818152602001828054611a39906145c3565b8015611a865780601f10611a5b57610100808354040283529160200191611a86565b820191906000526020600020905b815481529060010190602001808311611a6957829003601f168201915b5050505050905090565b6000611b32611a9d61282f565b848460046000611aab61282f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2d9190614624565b612837565b6001905092915050565b6000611b50611b4961282f565b8484612a02565b506001905092915050565b60148060000154908060010154908060020154905083565b611b7b61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff906146a4565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c9161282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d15906146a4565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611d6791906141cc565b60405180910390a150565b611d7a61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfe906146a4565b60405180910390fd5b6103e8818385611e179190614810565b611e219190614810565b14611e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5890614a1c565b60405180910390fd5b826014600001819055508160146002018190555080601460010181905550505050565b611e8c61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f10906146a4565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602a5481565b60118060000154908060010154908060020154905083565b61202161282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a5906146a4565b60405180910390fd5b60116000015483111580156120c857506011600101548211155b80156120d957506011600201548111155b612118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210f90614a88565b60405180910390fd5b82600e6000018190555081600e6001018190555080600e60020181905550505050565b61214361282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c7906146a4565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122469190614abd565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d19190614abd565b6040518363ffffffff1660e01b81526004016122ee929190614aea565b602060405180830381865afa15801561230b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232f9190614abd565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612505578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d59190614abd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561243c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124609190614abd565b6040518363ffffffff1660e01b815260040161247d929190614aea565b6020604051808303816000875af115801561249c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c09190614abd565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612547565b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b61259561282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612622576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612619906146a4565b60405180910390fd5b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61266e61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f2906146a4565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61275e61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e2906146a4565b60405180910390fd5b82846017546127fa91906146c4565b612804919061474d565b602281905550808260175461281991906146c4565b612823919061474d565b60238190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289e90614b5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290e90614b5f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129f591906141f6565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6a90614bcb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ada90614bcb565b60405180910390fd5b60008211612b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1d90614c37565b60405180910390fd5b612b3084846130c7565b15612f4e57600960009054906101000a900460ff1615612cc357600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c315743600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612be857600080fd5b43600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cc2565b43600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612c7d57600080fd5b43600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d645750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4d57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e095750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e5457601e54821115612e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4a90614ca3565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612eee5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f4c5760215482612f00856114dd565b612f0a9190614810565b1115612f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4290614d0f565b60405180910390fd5b5b5b5b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ff55750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612fff57600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156130b157601b60149054906101000a900460ff1615801561307a5750601b60159054906101000a900460ff165b156130b057600061308a306114dd565b905060225481106130ae5760235481106130a45760235490505b6130ad8161329e565b5b505b5b6130bd8585858461346c565b9150509392505050565b60006130d16119d5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561313f575061310f6119d5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131955750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131eb5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613225575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561325e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561329657503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601b60146101000a81548160ff02191690831515021790555060006014600201546014600001546132d19190614810565b14156132dc5761344e565b600060026014600201546014600001546132f69190614810565b6014600001548461330791906146c4565b613311919061474d565b61331b919061474d565b90506000818361332b9190614624565b9050613336816137cf565b6000479050600060026014600201546014600001546133559190614810565b6014600001548461336691906146c4565b613370919061474d565b61337a919061474d565b905060008411156133cb5761338f84826139e5565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482866040516133c2939291906142db565b60405180910390a15b600084866133d99190614624565b111561344957601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613447573d6000803e3d6000fd5b505b505050505b6000601b60146101000a81548160ff02191690831515021790555050565b6000602460009054906101000a900460ff16156136965761348c8561195f565b8061349c575061349b8461195f565b5b156134dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d390614d7b565b60405180910390fd5b602460019054906101000a900460ff16613562576134fa8585613a9d565b602460019054906101000a900460ff1615801561351d575061351c85856130c7565b5b1561355d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355490614e0d565b60405180910390fd5b613695565b60006026541180156135bd5750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156135cf57506135ce85856130c7565b5b1561369457602954602654436135e59190614624565b1015613693576001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602a600081548092919061365690614e2d565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e58460405161368a9190613fba565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136e59190614624565b925050819055506000826136f95783613705565b613704868686613c53565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546137569190614810565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137ba91906141f6565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff8111156137ec576137eb614e76565b5b60405190808252806020026020018201604052801561381a5781602001602082028036833780820191505090505b509050308160008151811061383257613831614ea5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138fd9190614abd565b8160018151811061391157613910614ea5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016139af959493929190614fcd565b600060405180830381600087803b1580156139c957600080fd5b505af11580156139dd573d6000803e3d6000fd5b505050505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613a316119d5565b426040518863ffffffff1660e01b8152600401613a5396959493929190615027565b60606040518083038185885af1158015613a71573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a96919061509d565b5050505050565b602460019054906101000a900460ff1615613aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ae490615162565b60405180910390fd5b613af782826130c7565b158015613b515750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613c4f57600160295414613b795761138843613b6e9190614810565b602681905550613b81565b436026819055505b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602460016101000a81548160ff021916908315150217905550426027819055506001601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1596001604051613c4691906141cc565b60405180910390a15b5050565b600080601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613cb957600e600101549050613d26565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613d1c57600e600001549050613d25565b600e6002015490505b5b613d3085856130c7565b15613d575760006025541480613d4c5750600960ff1660255414155b15613d5657600080fd5b5b6000612710601460020154601460000154601460010154613d789190614810565b613d829190614810565b6014600101548487613d9491906146c4565b613d9e91906146c4565b613da8919061474d565b613db2919061474d565b90506000816127108487613dc691906146c4565b613dd0919061474d565b613dda9190614624565b9050816001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613e2d9190614810565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613e839190614810565b9250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613ee991906141f6565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613f4e91906141f6565b60405180910390a3818186613f639190614624565b613f6d9190614624565b93505050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613fa482613f79565b9050919050565b613fb481613f99565b82525050565b6000602082019050613fcf6000830184613fab565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561400f578082015181840152602081019050613ff4565b8381111561401e576000848401525b50505050565b6000601f19601f8301169050919050565b600061404082613fd5565b61404a8185613fe0565b935061405a818560208601613ff1565b61406381614024565b840191505092915050565b600060208201905081810360008301526140888184614035565b905092915050565b6000819050919050565b60006140b56140b06140ab84613f79565b614090565b613f79565b9050919050565b60006140c78261409a565b9050919050565b60006140d9826140bc565b9050919050565b6140e9816140ce565b82525050565b600060208201905061410460008301846140e0565b92915050565b600080fd5b61411881613f99565b811461412357600080fd5b50565b6000813590506141358161410f565b92915050565b6000819050919050565b61414e8161413b565b811461415957600080fd5b50565b60008135905061416b81614145565b92915050565b600080604083850312156141885761418761410a565b5b600061419685828601614126565b92505060206141a78582860161415c565b9150509250929050565b60008115159050919050565b6141c6816141b1565b82525050565b60006020820190506141e160008301846141bd565b92915050565b6141f08161413b565b82525050565b600060208201905061420b60008301846141e7565b92915050565b60008060006060848603121561422a5761422961410a565b5b600061423886828701614126565b935050602061424986828701614126565b925050604061425a8682870161415c565b9150509250925092565b6000806040838503121561427b5761427a61410a565b5b60006142898582860161415c565b925050602061429a8582860161415c565b9150509250929050565b600060ff82169050919050565b6142ba816142a4565b82525050565b60006020820190506142d560008301846142b1565b92915050565b60006060820190506142f060008301866141e7565b6142fd60208301856141e7565b61430a60408301846141e7565b949350505050565b6000602082840312156143285761432761410a565b5b600061433684828501614126565b91505092915050565b614348816141b1565b811461435357600080fd5b50565b6000813590506143658161433f565b92915050565b600080604083850312156143825761438161410a565b5b600061439085828601614126565b92505060206143a185828601614356565b9150509250929050565b6000602082840312156143c1576143c061410a565b5b60006143cf8482850161415c565b91505092915050565b60006143e382613f79565b9050919050565b6143f3816143d8565b82525050565b600060208201905061440e60008301846143ea565b92915050565b60006020828403121561442a5761442961410a565b5b600061443884828501614356565b91505092915050565b60008060006060848603121561445a5761445961410a565b5b60006144688682870161415c565b93505060206144798682870161415c565b925050604061448a8682870161415c565b9150509250925092565b600080604083850312156144ab576144aa61410a565b5b60006144b985828601614126565b92505060206144ca85828601614126565b9150509250929050565b6144dd816143d8565b81146144e857600080fd5b50565b6000813590506144fa816144d4565b92915050565b6000602082840312156145165761451561410a565b5b6000614524848285016144eb565b91505092915050565b600080600080608085870312156145475761454661410a565b5b60006145558782880161415c565b94505060206145668782880161415c565b93505060406145778782880161415c565b92505060606145888782880161415c565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145db57607f821691505b602082108114156145ef576145ee614594565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061462f8261413b565b915061463a8361413b565b92508282101561464d5761464c6145f5565b5b828203905092915050565b7f43616c6c657220213d206f776e65722e00000000000000000000000000000000600082015250565b600061468e601083613fe0565b915061469982614658565b602082019050919050565b600060208201905081810360008301526146bd81614681565b9050919050565b60006146cf8261413b565b91506146da8361413b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614713576147126145f5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147588261413b565b91506147638361413b565b9250826147735761477261471e565b5b828204905092915050565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b60006147da602583613fe0565b91506147e58261477e565b604082019050919050565b60006020820190508181036000830152614809816147cd565b9050919050565b600061481b8261413b565b91506148268361413b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561485b5761485a6145f5565b5b828201905092915050565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b60006148c2603d83613fe0565b91506148cd82614866565b604082019050919050565b600060208201905081810360008301526148f1816148b5565b9050919050565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b600061492e601283613fe0565b9150614939826148f8565b602082019050919050565b6000602082019050818103600083015261495d81614921565b9050919050565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b600061499a600683613fe0565b91506149a582614964565b602082019050919050565b600060208201905081810360008301526149c98161498d565b9050919050565b7f213d20316b000000000000000000000000000000000000000000000000000000600082015250565b6000614a06600583613fe0565b9150614a11826149d0565b602082019050919050565b60006020820190508181036000830152614a35816149f9565b9050919050565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b6000614a72601783613fe0565b9150614a7d82614a3c565b602082019050919050565b60006020820190508181036000830152614aa181614a65565b9050919050565b600081519050614ab78161410f565b92915050565b600060208284031215614ad357614ad261410a565b5b6000614ae184828501614aa8565b91505092915050565b6000604082019050614aff6000830185613fab565b614b0c6020830184613fab565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000614b49601383613fe0565b9150614b5482614b13565b602082019050919050565b60006020820190508181036000830152614b7881614b3c565b9050919050565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b6000614bb5601483613fe0565b9150614bc082614b7f565b602082019050919050565b60006020820190508181036000830152614be481614ba8565b9050919050565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b6000614c21600883613fe0565b9150614c2c82614beb565b602082019050919050565b60006020820190508181036000830152614c5081614c14565b9050919050565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b6000614c8d601883613fe0565b9150614c9882614c57565b602082019050919050565b60006020820190508181036000830152614cbc81614c80565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000614cf9601a83613fe0565b9150614d0482614cc3565b602082019050919050565b60006020820190508181036000830152614d2881614cec565b9050919050565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b6000614d65601083613fe0565b9150614d7082614d2f565b602082019050919050565b60006020820190508181036000830152614d9481614d58565b9050919050565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b6000614df7602583613fe0565b9150614e0282614d9b565b604082019050919050565b60006020820190508181036000830152614e2681614dea565b9050919050565b6000614e388261413b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614e6b57614e6a6145f5565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614ef9614ef4614eef84614ed4565b614090565b61413b565b9050919050565b614f0981614ede565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f4481613f99565b82525050565b6000614f568383614f3b565b60208301905092915050565b6000602082019050919050565b6000614f7a82614f0f565b614f848185614f1a565b9350614f8f83614f2b565b8060005b83811015614fc0578151614fa78882614f4a565b9750614fb283614f62565b925050600181019050614f93565b5085935050505092915050565b600060a082019050614fe260008301886141e7565b614fef6020830187614f00565b81810360408301526150018186614f6f565b90506150106060830185613fab565b61501d60808301846141e7565b9695505050505050565b600060c08201905061503c6000830189613fab565b61504960208301886141e7565b6150566040830187614f00565b6150636060830186614f00565b6150706080830185613fab565b61507d60a08301846141e7565b979650505050505050565b60008151905061509781614145565b92915050565b6000806000606084860312156150b6576150b561410a565b5b60006150c486828701615088565b93505060206150d586828701615088565b92505060406150e686828701615088565b9150509250925092565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b600061514c602383613fe0565b9150615157826150f0565b604082019050919050565b6000602082019050818103600083015261517b8161513f565b905091905056fea2646970667358221220389f773974cfe351e10b45f59884ea2cb9b2d409091ba7238afe010c8f1f87ef64736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106102605760003560e01c806381c6f11b11610144578063c49b9a80116100b6578063e83e34b11161007a578063e83e34b114610945578063e9dae5ed14610972578063eafb5a3c1461099b578063eb50e70e146109c4578063eec2744e146109ed578063fb78680d14610a1657610267565b8063c49b9a8014610862578063cdfdb7dc1461088b578063ce8b79c9146108b4578063dd62ed3e146108dd578063e79d41601461091a57610267565b806395d89b411161010857806395d89b411461073c578063a457c2d714610767578063a9059cbb146107a4578063b5f7bfa2146107e1578063bc1323e81461080e578063c157326d1461083757610267565b806381c6f11b14610643578063893d20e81461066c57806389fd9bc1146106975780638c7321ad146106d45780638da5cb5b1461071157610267565b80633f3cf56c116101dd57806350a8e016116101a157806350a8e01614610535578063571ac8b014610560578063590ffdce1461059d57806370a08231146105c6578063715018a61461060357806380c581d11461061a57610267565b80633f3cf56c14610450578063452ed4f1146104795780634a74bb02146104a45780634fb2e45d146104cf5780634fbee193146104f857610267565b806323b872dd1161022457806323b872dd146103555780632600395714610392578063313ce567146103bb57806339509351146103e65780633aaa36e61461042357610267565b806303fd2a451461026c57806306fdde03146102975780630758d924146102c2578063095ea7b3146102ed57806318160ddd1461032a57610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a3f565b60405161028e9190613fba565b60405180910390f35b3480156102a357600080fd5b506102ac610a45565b6040516102b9919061406e565b60405180910390f35b3480156102ce57600080fd5b506102d7610ad7565b6040516102e491906140ef565b60405180910390f35b3480156102f957600080fd5b50610314600480360381019061030f9190614171565b610afd565b60405161032191906141cc565b60405180910390f35b34801561033657600080fd5b5061033f610b1b565b60405161034c91906141f6565b60405180910390f35b34801561036157600080fd5b5061037c60048036038101906103779190614211565b610b25565b60405161038991906141cc565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b49190614264565b610c72565b005b3480156103c757600080fd5b506103d0610d82565b6040516103dd91906142c0565b60405180910390f35b3480156103f257600080fd5b5061040d60048036038101906104089190614171565b610d8b565b60405161041a91906141cc565b60405180910390f35b34801561042f57600080fd5b50610438610e37565b604051610447939291906142db565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190614264565b610e4f565b005b34801561048557600080fd5b5061048e610f5f565b60405161049b9190613fba565b60405180910390f35b3480156104b057600080fd5b506104b9610f85565b6040516104c691906141cc565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190614312565b610f98565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614312565b611351565b60405161052c91906141cc565b60405180910390f35b34801561054157600080fd5b5061054a6113a7565b60405161055791906141cc565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190614312565b6113ba565b60405161059491906141cc565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf919061436b565b6113ed565b005b3480156105d257600080fd5b506105ed60048036038101906105e89190614312565b6114dd565b6040516105fa91906141f6565b60405180910390f35b34801561060f57600080fd5b50610618611526565b005b34801561062657600080fd5b50610641600480360381019061063c919061436b565b6116a4565b005b34801561064f57600080fd5b5061066a600480360381019061066591906143ab565b611864565b005b34801561067857600080fd5b50610681611950565b60405161068e9190613fba565b60405180910390f35b3480156106a357600080fd5b506106be60048036038101906106b99190614312565b61195f565b6040516106cb91906141cc565b60405180910390f35b3480156106e057600080fd5b506106fb60048036038101906106f69190614312565b6119b5565b60405161070891906141cc565b60405180910390f35b34801561071d57600080fd5b506107266119d5565b6040516107339190613fba565b60405180910390f35b34801561074857600080fd5b506107516119fe565b60405161075e919061406e565b60405180910390f35b34801561077357600080fd5b5061078e60048036038101906107899190614171565b611a90565b60405161079b91906141cc565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c69190614171565b611b3c565b6040516107d891906141cc565b60405180910390f35b3480156107ed57600080fd5b506107f6611b5b565b604051610805939291906142db565b60405180910390f35b34801561081a57600080fd5b5061083560048036038101906108309190614312565b611b73565b005b34801561084357600080fd5b5061084c611c63565b60405161085991906143f9565b60405180910390f35b34801561086e57600080fd5b5061088960048036038101906108849190614414565b611c89565b005b34801561089757600080fd5b506108b260048036038101906108ad9190614441565b611d72565b005b3480156108c057600080fd5b506108db60048036038101906108d69190614312565b611e84565b005b3480156108e957600080fd5b5061090460048036038101906108ff9190614494565b611f74565b60405161091191906141f6565b60405180910390f35b34801561092657600080fd5b5061092f611ffb565b60405161093c91906141f6565b60405180910390f35b34801561095157600080fd5b5061095a612001565b604051610969939291906142db565b60405180910390f35b34801561097e57600080fd5b5061099960048036038101906109949190614441565b612019565b005b3480156109a757600080fd5b506109c260048036038101906109bd9190614312565b61213b565b005b3480156109d057600080fd5b506109eb60048036038101906109e69190614500565b61258d565b005b3480156109f957600080fd5b50610a146004803603810190610a0f919061436b565b612666565b005b348015610a2257600080fd5b50610a3d6004803603810190610a38919061452d565b612756565b005b61dead81565b6060600c8054610a54906145c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610a80906145c3565b8015610acd5780601f10610aa257610100808354040283529160200191610acd565b820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b5050505050905090565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610b11610b0a61282f565b8484612837565b6001905092915050565b6000601754905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c5e5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c569190614624565b925050819055505b610c69848484612a02565b90509392505050565b610c7a61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfe906146a4565b60405180910390fd5b60008183601754610d1891906146c4565b610d22919061474d565b905061012c601754610d34919061474d565b811015610d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6d906147f0565b60405180910390fd5b80602181905550505050565b60006009905090565b6000610e2d610d9861282f565b848460046000610da661282f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e289190614810565b612837565b6001905092915050565b600e8060000154908060010154908060020154905083565b610e5761282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edb906146a4565b60405180910390fd5b60008183601754610ef591906146c4565b610eff919061474d565b905061012c601754610f11919061474d565b811015610f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4a906147f0565b60405180910390fd5b80601e81905550505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60159054906101000a900460ff1681565b610fa061282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611024906146a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561109d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611094906148d8565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561110e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611105906148d8565b60405180910390fd5b61113960008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006113ed565b6111448160016113ed565b61116d60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114dd565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061123960008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114dd565b11156112945761129260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261128d60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114dd565b612a02565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602460019054906101000a900460ff1681565b60006113e6827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610afd565b9050919050565b6113f561282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611479906146a4565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61152e61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b2906146a4565b60405180910390fd5b6115e660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006113ed565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b6116ac61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611739576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611730906146a4565b60405180910390fd5b6000151581151514156117a3576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611860565b6000600354146118005762093a80600354426117bf9190614624565b116117ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f690614944565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b61186c61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f0906146a4565b60405180910390fd5b60006025541461193e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611935906149b0565b60405180910390fd5b80602581905550600160298190555050565b600061195a6119d5565b905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d8054611a0d906145c3565b80601f0160208091040260200160405190810160405280929190818152602001828054611a39906145c3565b8015611a865780601f10611a5b57610100808354040283529160200191611a86565b820191906000526020600020905b815481529060010190602001808311611a6957829003601f168201915b5050505050905090565b6000611b32611a9d61282f565b848460046000611aab61282f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b2d9190614624565b612837565b6001905092915050565b6000611b50611b4961282f565b8484612a02565b506001905092915050565b60148060000154908060010154908060020154905083565b611b7b61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bff906146a4565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c9161282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d15906146a4565b60405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611d6791906141cc565b60405180910390a150565b611d7a61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfe906146a4565b60405180910390fd5b6103e8818385611e179190614810565b611e219190614810565b14611e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5890614a1c565b60405180910390fd5b826014600001819055508160146002018190555080601460010181905550505050565b611e8c61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f10906146a4565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602a5481565b60118060000154908060010154908060020154905083565b61202161282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a5906146a4565b60405180910390fd5b60116000015483111580156120c857506011600101548211155b80156120d957506011600201548111155b612118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210f90614a88565b60405180910390fd5b82600e6000018190555081600e6001018190555080600e60020181905550505050565b61214361282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c7906146a4565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122469190614abd565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d19190614abd565b6040518363ffffffff1660e01b81526004016122ee929190614aea565b602060405180830381865afa15801561230b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232f9190614abd565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612505578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d59190614abd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561243c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124609190614abd565b6040518363ffffffff1660e01b815260040161247d929190614aea565b6020604051808303816000875af115801561249c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c09190614abd565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612547565b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b61259561282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612622576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612619906146a4565b60405180910390fd5b80601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61266e61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f2906146a4565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61275e61282f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e2906146a4565b60405180910390fd5b82846017546127fa91906146c4565b612804919061474d565b602281905550808260175461281991906146c4565b612823919061474d565b60238190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289e90614b5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290e90614b5f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129f591906141f6565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6a90614bcb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ada90614bcb565b60405180910390fd5b60008211612b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1d90614c37565b60405180910390fd5b612b3084846130c7565b15612f4e57600960009054906101000a900460ff1615612cc357600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c315743600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612be857600080fd5b43600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612cc2565b43600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612c7d57600080fd5b43600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d645750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4d57600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e095750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e5457601e54821115612e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4a90614ca3565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612eee5750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f4c5760215482612f00856114dd565b612f0a9190614810565b1115612f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4290614d0f565b60405180910390fd5b5b5b5b600060019050600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ff55750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612fff57600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156130b157601b60149054906101000a900460ff1615801561307a5750601b60159054906101000a900460ff165b156130b057600061308a306114dd565b905060225481106130ae5760235481106130a45760235490505b6130ad8161329e565b5b505b5b6130bd8585858461346c565b9150509392505050565b60006130d16119d5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561313f575061310f6119d5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131955750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131eb5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613225575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561325e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561329657503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601b60146101000a81548160ff02191690831515021790555060006014600201546014600001546132d19190614810565b14156132dc5761344e565b600060026014600201546014600001546132f69190614810565b6014600001548461330791906146c4565b613311919061474d565b61331b919061474d565b90506000818361332b9190614624565b9050613336816137cf565b6000479050600060026014600201546014600001546133559190614810565b6014600001548461336691906146c4565b613370919061474d565b61337a919061474d565b905060008411156133cb5761338f84826139e5565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482866040516133c2939291906142db565b60405180910390a15b600084866133d99190614624565b111561344957601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613447573d6000803e3d6000fd5b505b505050505b6000601b60146101000a81548160ff02191690831515021790555050565b6000602460009054906101000a900460ff16156136965761348c8561195f565b8061349c575061349b8461195f565b5b156134dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d390614d7b565b60405180910390fd5b602460019054906101000a900460ff16613562576134fa8585613a9d565b602460019054906101000a900460ff1615801561351d575061351c85856130c7565b5b1561355d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355490614e0d565b60405180910390fd5b613695565b60006026541180156135bd5750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156135cf57506135ce85856130c7565b5b1561369457602954602654436135e59190614624565b1015613693576001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602a600081548092919061365690614e2d565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e58460405161368a9190613fba565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136e59190614624565b925050819055506000826136f95783613705565b613704868686613c53565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546137569190614810565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137ba91906141f6565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff8111156137ec576137eb614e76565b5b60405190808252806020026020018201604052801561381a5781602001602082028036833780820191505090505b509050308160008151811061383257613831614ea5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138fd9190614abd565b8160018151811061391157613910614ea5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016139af959493929190614fcd565b600060405180830381600087803b1580156139c957600080fd5b505af11580156139dd573d6000803e3d6000fd5b505050505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613a316119d5565b426040518863ffffffff1660e01b8152600401613a5396959493929190615027565b60606040518083038185885af1158015613a71573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613a96919061509d565b5050505050565b602460019054906101000a900460ff1615613aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ae490615162565b60405180910390fd5b613af782826130c7565b158015613b515750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613c4f57600160295414613b795761138843613b6e9190614810565b602681905550613b81565b436026819055505b6001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602460016101000a81548160ff021916908315150217905550426027819055506001601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1596001604051613c4691906141cc565b60405180910390a15b5050565b600080601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613cb957600e600101549050613d26565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613d1c57600e600001549050613d25565b600e6002015490505b5b613d3085856130c7565b15613d575760006025541480613d4c5750600960ff1660255414155b15613d5657600080fd5b5b6000612710601460020154601460000154601460010154613d789190614810565b613d829190614810565b6014600101548487613d9491906146c4565b613d9e91906146c4565b613da8919061474d565b613db2919061474d565b90506000816127108487613dc691906146c4565b613dd0919061474d565b613dda9190614624565b9050816001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613e2d9190614810565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613e839190614810565b9250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613ee991906141f6565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613f4e91906141f6565b60405180910390a3818186613f639190614624565b613f6d9190614624565b93505050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613fa482613f79565b9050919050565b613fb481613f99565b82525050565b6000602082019050613fcf6000830184613fab565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561400f578082015181840152602081019050613ff4565b8381111561401e576000848401525b50505050565b6000601f19601f8301169050919050565b600061404082613fd5565b61404a8185613fe0565b935061405a818560208601613ff1565b61406381614024565b840191505092915050565b600060208201905081810360008301526140888184614035565b905092915050565b6000819050919050565b60006140b56140b06140ab84613f79565b614090565b613f79565b9050919050565b60006140c78261409a565b9050919050565b60006140d9826140bc565b9050919050565b6140e9816140ce565b82525050565b600060208201905061410460008301846140e0565b92915050565b600080fd5b61411881613f99565b811461412357600080fd5b50565b6000813590506141358161410f565b92915050565b6000819050919050565b61414e8161413b565b811461415957600080fd5b50565b60008135905061416b81614145565b92915050565b600080604083850312156141885761418761410a565b5b600061419685828601614126565b92505060206141a78582860161415c565b9150509250929050565b60008115159050919050565b6141c6816141b1565b82525050565b60006020820190506141e160008301846141bd565b92915050565b6141f08161413b565b82525050565b600060208201905061420b60008301846141e7565b92915050565b60008060006060848603121561422a5761422961410a565b5b600061423886828701614126565b935050602061424986828701614126565b925050604061425a8682870161415c565b9150509250925092565b6000806040838503121561427b5761427a61410a565b5b60006142898582860161415c565b925050602061429a8582860161415c565b9150509250929050565b600060ff82169050919050565b6142ba816142a4565b82525050565b60006020820190506142d560008301846142b1565b92915050565b60006060820190506142f060008301866141e7565b6142fd60208301856141e7565b61430a60408301846141e7565b949350505050565b6000602082840312156143285761432761410a565b5b600061433684828501614126565b91505092915050565b614348816141b1565b811461435357600080fd5b50565b6000813590506143658161433f565b92915050565b600080604083850312156143825761438161410a565b5b600061439085828601614126565b92505060206143a185828601614356565b9150509250929050565b6000602082840312156143c1576143c061410a565b5b60006143cf8482850161415c565b91505092915050565b60006143e382613f79565b9050919050565b6143f3816143d8565b82525050565b600060208201905061440e60008301846143ea565b92915050565b60006020828403121561442a5761442961410a565b5b600061443884828501614356565b91505092915050565b60008060006060848603121561445a5761445961410a565b5b60006144688682870161415c565b93505060206144798682870161415c565b925050604061448a8682870161415c565b9150509250925092565b600080604083850312156144ab576144aa61410a565b5b60006144b985828601614126565b92505060206144ca85828601614126565b9150509250929050565b6144dd816143d8565b81146144e857600080fd5b50565b6000813590506144fa816144d4565b92915050565b6000602082840312156145165761451561410a565b5b6000614524848285016144eb565b91505092915050565b600080600080608085870312156145475761454661410a565b5b60006145558782880161415c565b94505060206145668782880161415c565b93505060406145778782880161415c565b92505060606145888782880161415c565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145db57607f821691505b602082108114156145ef576145ee614594565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061462f8261413b565b915061463a8361413b565b92508282101561464d5761464c6145f5565b5b828203905092915050565b7f43616c6c657220213d206f776e65722e00000000000000000000000000000000600082015250565b600061468e601083613fe0565b915061469982614658565b602082019050919050565b600060208201905081810360008301526146bd81614681565b9050919050565b60006146cf8261413b565b91506146da8361413b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614713576147126145f5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147588261413b565b91506147638361413b565b9250826147735761477261471e565b5b828204905092915050565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b60006147da602583613fe0565b91506147e58261477e565b604082019050919050565b60006020820190508181036000830152614809816147cd565b9050919050565b600061481b8261413b565b91506148268361413b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561485b5761485a6145f5565b5b828201905092915050565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b60006148c2603d83613fe0565b91506148cd82614866565b604082019050919050565b600060208201905081810360008301526148f1816148b5565b9050919050565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b600061492e601283613fe0565b9150614939826148f8565b602082019050919050565b6000602082019050818103600083015261495d81614921565b9050919050565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b600061499a600683613fe0565b91506149a582614964565b602082019050919050565b600060208201905081810360008301526149c98161498d565b9050919050565b7f213d20316b000000000000000000000000000000000000000000000000000000600082015250565b6000614a06600583613fe0565b9150614a11826149d0565b602082019050919050565b60006020820190508181036000830152614a35816149f9565b9050919050565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b6000614a72601783613fe0565b9150614a7d82614a3c565b602082019050919050565b60006020820190508181036000830152614aa181614a65565b9050919050565b600081519050614ab78161410f565b92915050565b600060208284031215614ad357614ad261410a565b5b6000614ae184828501614aa8565b91505092915050565b6000604082019050614aff6000830185613fab565b614b0c6020830184613fab565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000614b49601383613fe0565b9150614b5482614b13565b602082019050919050565b60006020820190508181036000830152614b7881614b3c565b9050919050565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b6000614bb5601483613fe0565b9150614bc082614b7f565b602082019050919050565b60006020820190508181036000830152614be481614ba8565b9050919050565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b6000614c21600883613fe0565b9150614c2c82614beb565b602082019050919050565b60006020820190508181036000830152614c5081614c14565b9050919050565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b6000614c8d601883613fe0565b9150614c9882614c57565b602082019050919050565b60006020820190508181036000830152614cbc81614c80565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000614cf9601a83613fe0565b9150614d0482614cc3565b602082019050919050565b60006020820190508181036000830152614d2881614cec565b9050919050565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b6000614d65601083613fe0565b9150614d7082614d2f565b602082019050919050565b60006020820190508181036000830152614d9481614d58565b9050919050565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b6000614df7602583613fe0565b9150614e0282614d9b565b604082019050919050565b60006020820190508181036000830152614e2681614dea565b9050919050565b6000614e388261413b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614e6b57614e6a6145f5565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614ef9614ef4614eef84614ed4565b614090565b61413b565b9050919050565b614f0981614ede565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f4481613f99565b82525050565b6000614f568383614f3b565b60208301905092915050565b6000602082019050919050565b6000614f7a82614f0f565b614f848185614f1a565b9350614f8f83614f2b565b8060005b83811015614fc0578151614fa78882614f4a565b9750614fb283614f62565b925050600181019050614f93565b5085935050505092915050565b600060a082019050614fe260008301886141e7565b614fef6020830187614f00565b81810360408301526150018186614f6f565b90506150106060830185613fab565b61501d60808301846141e7565b9695505050505050565b600060c08201905061503c6000830189613fab565b61504960208301886141e7565b6150566040830187614f00565b6150636060830186614f00565b6150706080830185613fab565b61507d60a08301846141e7565b979650505050505050565b60008151905061509781614145565b92915050565b6000806000606084860312156150b6576150b561410a565b5b60006150c486828701615088565b93505060206150d586828701615088565b92505060406150e686828701615088565b9150509250925092565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b600061514c602383613fe0565b9150615157826150f0565b604082019050919050565b6000602082019050818103600083015261517b8161513f565b905091905056fea2646970667358221220389f773974cfe351e10b45f59884ea2cb9b2d409091ba7238afe010c8f1f87ef64736f6c634300080b0033

Deployed Bytecode Sourcemap

3715:19235:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5712:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10490:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5524:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11103:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10225:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11717:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15467:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10314:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12031:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4691:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;15207:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5566:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5996:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9011:652;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13414:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6557:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11589:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13547:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10803:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9671:195;;;;;;;;;;;;;:::i;:::-;;12996:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14171:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10576:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14031:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4178:68;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8924:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10400:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12254:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10928:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5168:98;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13857:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5858:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16183:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14514:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13691:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10662:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6825:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4913:86;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;14802:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12487:501;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16029:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14365:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15732:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5712:73;5743:42;5712:73;:::o;10490:80::-;10538:13;10562:5;10555:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10490:80;:::o;5524:35::-;;;;;;;;;;;;;:::o;11103:161::-;11178:4;11195:39;11204:12;:10;:12::i;:::-;11218:7;11227:6;11195:8;:39::i;:::-;11252:4;11245:11;;11103:161;;;;:::o;10225:83::-;10280:7;10298;;10291:14;;10225:83;:::o;11717:306::-;11817:4;11873:17;11838:11;:19;11850:6;11838:19;;;;;;;;;;;;;;;:31;11858:10;11838:31;;;;;;;;;;;;;;;;:52;11834:126;;11942:6;11907:11;:19;11919:6;11907:19;;;;;;;;;;;;;;;:31;11927:10;11907:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;11834:126;11979:36;11989:6;11997:9;12008:6;11979:9;:36::i;:::-;11972:43;;11717:306;;;;;:::o;15467:257::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15551:13:::1;15589:7;15578;15568;;:17;;;;:::i;:::-;15567:29;;;;:::i;:::-;15551:45;;15635:3;15625:7;;:13;;;;:::i;:::-;15615:5;:24;;15607:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15709:5;15692:14;:22;;;;15540:184;15467:257:::0;;:::o;10314:80::-;10366:5;5415:1;10375:16;;10314:80;:::o;12031:215::-;12119:4;12136:80;12145:12;:10;:12::i;:::-;12159:7;12205:10;12168:11;:25;12180:12;:10;:12::i;:::-;12168:25;;;;;;;;;;;;;;;:34;12194:7;12168:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12136:8;:80::i;:::-;12234:4;12227:11;;12031:215;;;;:::o;4691:78::-;;;;;;;;;;;;;;;;;;;:::o;15207:252::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15290:13:::1;15328:7;15317;15307;;:17;;;;:::i;:::-;15306:29;;;;:::i;:::-;15290:45;;15374:3;15364:7;;:13;;;;:::i;:::-;15354:5;:24;;15346:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15446:5;15431:12;:20;;;;15279:180;15207:252:::0;;:::o;5566:21::-;;;;;;;;;;;;;:::o;5996:41::-;;;;;;;;;;;;;:::o;9011:652::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;9112:1:::1;9092:22;;:8;:22;;;;9084:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;5743:42;9199:16;;:8;:16;;;;9191:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;9292:34;9312:6;::::0;::::1;;;;;;;;9320:5;9292:19;:34::i;:::-;9337:35;9357:8;9367:4;9337:19;:35::i;:::-;9427:17;9437:6;::::0;::::1;;;;;;;;9427:9;:17::i;:::-;9395:11;:19;9407:6:::0;::::1;;;;;;;;;;9395:19;;;;;;;;;;;;;;;:29;9415:8;9395:29;;;;;;;;;;;;;;;:49;;;;9478:1;9458:17;9468:6;::::0;::::1;;;;;;;;9458:9;:17::i;:::-;:21;9455:99;;;9496:46;9506:6;::::0;::::1;;;;;;;;9514:8;9524:17;9534:6;::::0;::::1;;;;;;;;9524:9;:17::i;:::-;9496:9;:46::i;:::-;;9455:99;9583:8;9574:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;9636:8;9607:38;;9628:6;::::0;::::1;;;;;;;;9607:38;;;;;;;;;;;;9011:652:::0;:::o;13414:125::-;13479:4;13503:19;:28;13523:7;13503:28;;;;;;;;;;;;;;;;;;;;;;;;;13496:35;;13414:125;;;:::o;6557:36::-;;;;;;;;;;;;;:::o;11589:120::-;11642:4;11666:35;11674:7;11683:17;11666:7;:35::i;:::-;11659:42;;11589:120;;;:::o;13547:134::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13666:7:::1;13635:19;:28;13655:7;13635:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;13547:134:::0;;:::o;10803:117::-;10869:7;10896;:16;10904:7;10896:16;;;;;;;;;;;;;;;;10889:23;;10803:117;;;:::o;9671:195::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;9738:34:::1;9758:6;::::0;::::1;;;;;;;;9766:5;9738:19;:34::i;:::-;9800:1;9783:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;9855:1;9818:40;;9839:6;::::0;::::1;;;;;;;;9818:40;;;;;;;;;;;;9671:195::o:0;12996:410::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13088:5:::1;13077:16;;:7;:16;;;13073:326;;;13126:5;13110:7;:13;13118:4;13110:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13073:326;;;13189:1;13168:17;;:22;13164:139;;13257:7;13237:17;;13219:15;:35;;;;:::i;:::-;:45;13211:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;13164:139;13333:4;13317:7;:13;13325:4;13317:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13372:15;13352:17;:35;;;;13073:326;12996:410:::0;;:::o;14171:186::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14270:1:::1;14253:13;;:18;14244:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14309:12;14293:13;:28;;;;14348:1;14332:13;:17;;;;14171:186:::0;:::o;10576:80::-;10628:7;10646;:5;:7::i;:::-;10639:14;;10576:80;:::o;14031:132::-;14100:4;14124:22;:31;14147:7;14124:31;;;;;;;;;;;;;;;;;;;;;;;;;14117:38;;14031:132;;;:::o;4178:68::-;;;;;;;;;;;;;;;;;;;;;;:::o;8924:79::-;8962:7;8989:6;;;;;;;;;;;8982:13;;8924:79;:::o;10400:84::-;10450:13;10474:7;10467:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:84;:::o;12254:225::-;12347:4;12364:85;12373:12;:10;:12::i;:::-;12387:7;12433:15;12396:11;:25;12408:12;:10;:12::i;:::-;12396:25;;;;;;;;;;;;;;;:34;12422:7;12396:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;12364:8;:85::i;:::-;12467:4;12460:11;;12254:225;;;;:::o;10928:167::-;11006:4;11023:42;11033:12;:10;:12::i;:::-;11047:9;11058:6;11023:9;:42::i;:::-;;11083:4;11076:11;;10928:167;;;;:::o;5168:98::-;;;;;;;;;;;;;;;;;;;:::o;13857:166::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14010:5:::1;13955:35;:52;13991:15;13955:52;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;13857:166:::0;:::o;5858:97::-;;;;;;;;;;;;;:::o;16183:171::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16284:8:::1;16260:21;;:32;;;;;;;;;;;;;;;;;;16308:38;16337:8;16308:38;;;;;;:::i;:::-;;;;;;;;16183:171:::0;:::o;14514:280::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14660:4:::1;14650:5;14635:14;14624:10;:25;;;;:::i;:::-;:31;;;;:::i;:::-;14623:41;14613:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14704:10;14685:6;:16;;:29;;;;14748:14;14725:6;:20;;:37;;;;14787:5;14773:6;:11;;:19;;;;14514:280:::0;;;:::o;13691:158::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;13837:4:::1;13782:35;:52;13818:15;13782:52;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;13691:158:::0;:::o;10662:133::-;10746:7;10764:11;:19;10776:6;10764:19;;;;;;;;;;;;;;;:28;10784:7;10764:28;;;;;;;;;;;;;;;;10757:35;;10662:133;;;;:::o;6825:32::-;;;;:::o;4913:86::-;;;;;;;;;;;;;;;;;;;:::o;14802:397::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14917:7:::1;:14;;;14906:7;:25;;:73;;;;;14964:7;:15;;;14952:8;:27;;14906:73;:129;;;;;15016:7;:19;;;15000:12;:35;;14906:129;14898:182;;;;;;;;;;;;:::i;:::-;;;;;;;;;15106:7;15092:4;:11;;:21;;;;15140:8;15125:4;:12;;:23;;;;15179:12;15160:4;:16;;:31;;;;14802:397:::0;;;:::o;12487:501::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;12558:29:::1;12609:9;12558:61;;12630:16;12667:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12649:47;;;12705:4;12712:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12649:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12630:100;;12765:1;12745:22;;:8;:22;;;12741:207;;;12811:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12793:50;;;12852:4;12859:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12793:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12784:6;;:93;;;;;;;;;;;;;;;;;;12741:207;;;12928:8;12919:6;;:17;;;;;;;;;;;;;;;;;;12741:207;12970:10;12958:9;;:22;;;;;;;;;;;;;;;;;;12547:441;;12487:501:::0;:::o;16029:146::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16147:19:::1;16116:20;;:51;;;;;;;;;;;;;;;;;;16029:146:::0;:::o;14365:141::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;14491:7:::1;14457:22;:31;14480:7;14457:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;14365:141:::0;;:::o;15732:289::-;7434:12;:10;:12::i;:::-;7424:22;;:6;;;;;;;;;;:22;;;7416:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;15932:16:::1;15912;15902:7;;:26;;;;:::i;:::-;15901:47;;;;:::i;:::-;15885:13;:63;;;;16000:13;15983;15973:7;;:23;;;;:::i;:::-;15972:41;;;;:::i;:::-;15959:10;:54;;;;15732:289:::0;;;;:::o;179:107::-;224:15;267:10;252:26;;179:107;:::o;11272:309::-;11384:1;11366:20;;:6;:20;;;;11358:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11448:1;11429:21;;:7;:21;;;;11421:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;11518:6;11487:11;:19;11499:6;11487:19;;;;;;;;;;;;;;;:28;11507:7;11487:28;;;;;;;;;;;;;;;:37;;;;11557:7;11540:33;;11549:6;11540:33;;;11566:6;11540:33;;;;;;:::i;:::-;;;;;;;;11272:309;;;:::o;16693:1828::-;16772:4;16813:1;16797:18;;:4;:18;;;;16789:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16873:1;16859:16;;:2;:16;;;;16851:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;16928:1;16919:6;:10;16911:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;16956:20;16967:4;16973:2;16956:10;:20::i;:::-;16953:891;;;16997:15;;;;;;;;;;;16993:373;;;17037:7;:13;17045:4;17037:13;;;;;;;;;;;;;;;;;;;;;;;;;17033:318;;;17099:12;17082:9;:13;17092:2;17082:13;;;;;;;;;;;;;;;;:29;;17074:38;;;;;;17151:12;17135:9;:13;17145:2;17135:13;;;;;;;;;;;;;;;:28;;;;17033:318;;;17261:12;17242:9;:15;17252:4;17242:15;;;;;;;;;;;;;;;;:31;;17234:40;;;;;;17315:12;17297:9;:15;17307:4;17297:15;;;;;;;;;;;;;;;:30;;;;17033:318;16993:373;17385:35;:41;17421:4;17385:41;;;;;;;;;;;;;;;;;;;;;;;;;:84;;;;17430:35;:39;17466:2;17430:39;;;;;;;;;;;;;;;;;;;;;;;;;17385:84;17380:439;;17494:7;:13;17502:4;17494:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;17511:7;:11;17519:2;17511:11;;;;;;;;;;;;;;;;;;;;;;;;;17494:28;17491:130;;;17560:12;;17550:6;:22;;17542:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;17491:130;5657:42;17642:20;;:2;:20;;;;:36;;;;;17667:7;:11;17675:2;17667:11;;;;;;;;;;;;;;;;;;;;;;;;;17666:12;17642:36;17639:163;;;17737:14;;17727:6;17711:13;17721:2;17711:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17703:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;17639:163;17380:439;16953:891;17854:12;17869:4;17854:19;;17887;:25;17907:4;17887:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17916:19;:23;17936:2;17916:23;;;;;;;;;;;;;;;;;;;;;;;;;17887:52;17884:98;;;17965:5;17955:15;;17884:98;17998:7;:11;18006:2;17998:11;;;;;;;;;;;;;;;;;;;;;;;;;17994:457;;;18031:16;;;;;;;;;;;18030:17;:59;;;;;18068:21;;;;;;;;;;;18030:59;18026:408;;;18124:28;18155:24;18173:4;18155:9;:24::i;:::-;18124:55;;18226:13;;18202:20;:37;18198:221;;18291:10;;18267:20;:34;18264:77;;18328:10;;18305:33;;18264:77;18363:36;18378:20;18363:14;:36::i;:::-;18198:221;18105:329;18026:408;17994:457;18469:44;18487:4;18493:2;18497:6;18505:7;18469:17;:44::i;:::-;18462:51;;;16693:1828;;;;;:::o;16362:323::-;16430:4;16462:7;:5;:7::i;:::-;16454:15;;:4;:15;;;;:45;;;;;16492:7;:5;:7::i;:::-;16486:13;;:2;:13;;;;16454:45;:84;;;;;16517:17;:21;16535:2;16517:21;;;;;;;;;;;;;;;;;;;;;;;;;16516:22;16454:84;:125;;;;;16556:17;:23;16574:4;16556:23;;;;;;;;;;;;;;;;;;;;;;;;;16555:24;16454:125;:152;;;;;5743:42;16596:10;;:2;:10;;;;16454:152;:185;;;;;16637:1;16623:16;;:2;:16;;;;16454:185;:223;;;;;16672:4;16656:21;;:4;:21;;;;16454:223;16447:230;;16362:323;;;;:::o;18529:881::-;7317:4;7298:16;;:23;;;;;;;;;;;;;;;;;;18661:1:::1;18637:6;:20;;;18618:6;:16;;;:39;;;;:::i;:::-;:44;18614:70;;;18677:7;;18614:70;18694:17;18805:1;18779:6;:20;;;18760:6;:16;;;:39;;;;:::i;:::-;18739:6;:16;;;18716:20;:39;;;;:::i;:::-;18715:85;;;;:::i;:::-;18714:92;;;;:::i;:::-;18694:112;;18819:20;18865:9;18842:20;:32;;;;:::i;:::-;18819:55;;18885:30;18902:12;18885:16;:30::i;:::-;18928:22;18953:21;18928:46;;18985:24;19097:1;19071:6;:20;;;19052:6;:16;;;:39;;;;:::i;:::-;19031:6;:16;;;19014:14;:33;;;;:::i;:::-;19013:79;;;;:::i;:::-;19012:86;;;;:::i;:::-;18985:113;;19127:1;19115:9;:13;19111:161;;;19145:41;19158:9;19169:16;19145:12;:41::i;:::-;19206:54;19221:9;19232:16;19250:9;19206:54;;;;;;;;:::i;:::-;;;;;;;;19111:161;19321:1;19309:9;19286:20;:32;;;;:::i;:::-;:36;19282:121;;;19339:20;;;;;;;;;;;:29;;:52;19369:21;19339:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19282:121;18603:807;;;;7332:1;7363:5:::0;7344:16;;:24;;;;;;;;;;;;;;;;;;18529:881;:::o;20807:1220::-;20907:4;20928:16;;;;;;;;;;;20924:858;;;20964:27;20986:4;20964:21;:27::i;:::-;:56;;;;20995:25;21017:2;20995:21;:25::i;:::-;20964:56;20960:123;;;21041:26;;;;;;;;;;:::i;:::-;;;;;;;;20960:123;21104:16;;;;;;;;;;;21099:672;;21141:28;21160:4;21166:2;21141:18;:28::i;:::-;21193:16;;;;;;;;;;;21192:17;:41;;;;;21213:20;21224:4;21230:2;21213:10;:20::i;:::-;21192:41;21188:137;;;21258:47;;;;;;;;;;:::i;:::-;;;;;;;;21188:137;21099:672;;;21384:1;21369:12;;:16;:55;;;;;21411:7;:13;21419:4;21411:13;;;;;;;;;;;;;;;;;;;;;;;;;21369:55;:101;;;;;21450:20;21461:4;21467:2;21450:10;:20::i;:::-;21369:101;21365:391;;;21547:13;;21532:12;;21517;:27;;;;:::i;:::-;:43;21513:224;;;21618:4;21589:22;:26;21612:2;21589:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;21649:13;;:16;;;;;;;;;:::i;:::-;;;;;;21697;21710:2;21697:16;;;;;;:::i;:::-;;;;;;;;21513:224;21365:391;21099:672;20924:858;21811:6;21794:7;:13;21802:4;21794:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;21828:22;21854:7;21853:48;;21895:6;21853:48;;;21865:27;21875:4;21881:2;21885:6;21865:9;:27::i;:::-;21853:48;21828:73;;21931:14;21916:7;:11;21924:2;21916:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;21978:2;21963:34;;21972:4;21963:34;;;21982:14;21963:34;;;;;;:::i;:::-;;;;;;;;22015:4;22008:11;;;20807:1220;;;;;;:::o;19418:417::-;19485:21;19523:1;19509:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19485:40;;19554:4;19536;19541:1;19536:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19580:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19570:4;19575:1;19570:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;19609:9;;;;;;;;;;;:60;;;19684:11;19710:1;19754:4;19781;19801:15;19609:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19474:361;19418:417;:::o;19843:335::-;19924:9;;;;;;;;;;;:25;;;19957:9;19990:4;20010:11;20036:1;20079;20122:7;:5;:7::i;:::-;20144:15;19924:246;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19843:335;;:::o;20186:613::-;20268:16;;;;;;;;;;;20267:17;20259:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;20340:20;20351:4;20357:2;20340:10;:20::i;:::-;20339:21;:37;;;;;20370:6;;;;;;;;;;;20364:12;;:2;:12;;;20339:37;20335:457;;;20414:1;20397:13;;:18;20393:161;;20466:4;20451:12;:19;;;;:::i;:::-;20436:12;:34;;;;20393:161;;;20526:12;20511;:27;;;;20393:161;20594:4;20568:17;:23;20586:4;20568:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;20632:4;20613:16;;:23;;;;;;;;;;;;;;;;;;20666:15;20651:12;:30;;;;20722:4;20698:21;;:28;;;;;;;;;;;;;;;;;;20746:34;20775:4;20746:34;;;;;;:::i;:::-;;;;;;;;20335:457;20186:613;;:::o;22035:912::-;22114:7;22134:18;22175:6;;;;;;;;;;;22169:12;;:2;:12;;;22165:160;;;22197:4;:12;;;22184:25;;22165:160;;;22240:6;;;;;;;;;;;22232:14;;:4;:14;;;22228:97;;;22262:4;:11;;;22249:24;;22228:97;;;22307:4;:16;;;22294:29;;22228:97;22165:160;22341:20;22352:4;22358:2;22341:10;:20::i;:::-;22337:150;;;22398:1;22381:13;;:18;:50;;;;5415:1;22403:28;;:13;;:28;;22381:50;22377:99;;;22452:8;;;22377:99;22337:150;22497:15;5319:5;22587:6;:20;;;22568:6;:16;;;22554:6;:11;;;:30;;;;:::i;:::-;:53;;;;:::i;:::-;22538:6;:11;;;22525:10;22516:6;:19;;;;:::i;:::-;:33;;;;:::i;:::-;22515:94;;;;:::i;:::-;:113;;;;:::i;:::-;22497:131;;22639:17;22702:7;5319:5;22669:10;22660:6;:19;;;;:::i;:::-;:38;;;;:::i;:::-;22659:50;;;;:::i;:::-;22639:70;;22737:7;22720;:13;5743:42;22720:13;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;22782:9;22755:7;:22;22771:4;22755:22;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;5743:42;22808:29;;22817:4;22808:29;;;22829:7;22808:29;;;;;;:::i;:::-;;;;;;;;22876:4;22853:40;;22862:4;22853:40;;;22883:9;22853:40;;;;;;:::i;:::-;;;;;;;;22932:7;22920:9;22911:6;:18;;;;:::i;:::-;:28;;;;:::i;:::-;22904:35;;;;;22035:912;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:307::-;941:1;951:113;965:6;962:1;959:13;951:113;;;1050:1;1045:3;1041:11;1035:18;1031:1;1026:3;1022:11;1015:39;987:2;984:1;980:10;975:15;;951:113;;;1082:6;1079:1;1076:13;1073:101;;;1162:1;1153:6;1148:3;1144:16;1137:27;1073:101;922:258;873:307;;;:::o;1186:102::-;1227:6;1278:2;1274:7;1269:2;1262:5;1258:14;1254:28;1244:38;;1186:102;;;:::o;1294:364::-;1382:3;1410:39;1443:5;1410:39;:::i;:::-;1465:71;1529:6;1524:3;1465:71;:::i;:::-;1458:78;;1545:52;1590:6;1585:3;1578:4;1571:5;1567:16;1545:52;:::i;:::-;1622:29;1644:6;1622:29;:::i;:::-;1617:3;1613:39;1606:46;;1386:272;1294:364;;;;:::o;1664:313::-;1777:4;1815:2;1804:9;1800:18;1792:26;;1864:9;1858:4;1854:20;1850:1;1839:9;1835:17;1828:47;1892:78;1965:4;1956:6;1892:78;:::i;:::-;1884:86;;1664:313;;;;:::o;1983:60::-;2011:3;2032:5;2025:12;;1983:60;;;:::o;2049:142::-;2099:9;2132:53;2150:34;2159:24;2177:5;2159:24;:::i;:::-;2150:34;:::i;:::-;2132:53;:::i;:::-;2119:66;;2049:142;;;:::o;2197:126::-;2247:9;2280:37;2311:5;2280:37;:::i;:::-;2267:50;;2197:126;;;:::o;2329:152::-;2405:9;2438:37;2469:5;2438:37;:::i;:::-;2425:50;;2329:152;;;:::o;2487:183::-;2600:63;2657:5;2600:63;:::i;:::-;2595:3;2588:76;2487:183;;:::o;2676:274::-;2795:4;2833:2;2822:9;2818:18;2810:26;;2846:97;2940:1;2929:9;2925:17;2916:6;2846:97;:::i;:::-;2676:274;;;;:::o;3037:117::-;3146:1;3143;3136:12;3283:122;3356:24;3374:5;3356:24;:::i;:::-;3349:5;3346:35;3336:63;;3395:1;3392;3385:12;3336:63;3283:122;:::o;3411:139::-;3457:5;3495:6;3482:20;3473:29;;3511:33;3538:5;3511:33;:::i;:::-;3411:139;;;;:::o;3556:77::-;3593:7;3622:5;3611:16;;3556:77;;;:::o;3639:122::-;3712:24;3730:5;3712:24;:::i;:::-;3705:5;3702:35;3692:63;;3751:1;3748;3741:12;3692:63;3639:122;:::o;3767:139::-;3813:5;3851:6;3838:20;3829:29;;3867:33;3894:5;3867:33;:::i;:::-;3767:139;;;;:::o;3912:474::-;3980:6;3988;4037:2;4025:9;4016:7;4012:23;4008:32;4005:119;;;4043:79;;:::i;:::-;4005:119;4163:1;4188:53;4233:7;4224:6;4213:9;4209:22;4188:53;:::i;:::-;4178:63;;4134:117;4290:2;4316:53;4361:7;4352:6;4341:9;4337:22;4316:53;:::i;:::-;4306:63;;4261:118;3912:474;;;;;:::o;4392:90::-;4426:7;4469:5;4462:13;4455:21;4444:32;;4392:90;;;:::o;4488:109::-;4569:21;4584:5;4569:21;:::i;:::-;4564:3;4557:34;4488:109;;:::o;4603:210::-;4690:4;4728:2;4717:9;4713:18;4705:26;;4741:65;4803:1;4792:9;4788:17;4779:6;4741:65;:::i;:::-;4603:210;;;;:::o;4819:118::-;4906:24;4924:5;4906:24;:::i;:::-;4901:3;4894:37;4819:118;;:::o;4943:222::-;5036:4;5074:2;5063:9;5059:18;5051:26;;5087:71;5155:1;5144:9;5140:17;5131:6;5087:71;:::i;:::-;4943:222;;;;:::o;5171:619::-;5248:6;5256;5264;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5566:2;5592:53;5637:7;5628:6;5617:9;5613:22;5592:53;:::i;:::-;5582:63;;5537:118;5694:2;5720:53;5765:7;5756:6;5745:9;5741:22;5720:53;:::i;:::-;5710:63;;5665:118;5171:619;;;;;:::o;5796:474::-;5864:6;5872;5921:2;5909:9;5900:7;5896:23;5892:32;5889:119;;;5927:79;;:::i;:::-;5889:119;6047:1;6072:53;6117:7;6108:6;6097:9;6093:22;6072:53;:::i;:::-;6062:63;;6018:117;6174:2;6200:53;6245:7;6236:6;6225:9;6221:22;6200:53;:::i;:::-;6190:63;;6145:118;5796:474;;;;;:::o;6276:86::-;6311:7;6351:4;6344:5;6340:16;6329:27;;6276:86;;;:::o;6368:112::-;6451:22;6467:5;6451:22;:::i;:::-;6446:3;6439:35;6368:112;;:::o;6486:214::-;6575:4;6613:2;6602:9;6598:18;6590:26;;6626:67;6690:1;6679:9;6675:17;6666:6;6626:67;:::i;:::-;6486:214;;;;:::o;6706:442::-;6855:4;6893:2;6882:9;6878:18;6870:26;;6906:71;6974:1;6963:9;6959:17;6950:6;6906:71;:::i;:::-;6987:72;7055:2;7044:9;7040:18;7031:6;6987:72;:::i;:::-;7069;7137:2;7126:9;7122:18;7113:6;7069:72;:::i;:::-;6706:442;;;;;;:::o;7154:329::-;7213:6;7262:2;7250:9;7241:7;7237:23;7233:32;7230:119;;;7268:79;;:::i;:::-;7230:119;7388:1;7413:53;7458:7;7449:6;7438:9;7434:22;7413:53;:::i;:::-;7403:63;;7359:117;7154:329;;;;:::o;7489:116::-;7559:21;7574:5;7559:21;:::i;:::-;7552:5;7549:32;7539:60;;7595:1;7592;7585:12;7539:60;7489:116;:::o;7611:133::-;7654:5;7692:6;7679:20;7670:29;;7708:30;7732:5;7708:30;:::i;:::-;7611:133;;;;:::o;7750:468::-;7815:6;7823;7872:2;7860:9;7851:7;7847:23;7843:32;7840:119;;;7878:79;;:::i;:::-;7840:119;7998:1;8023:53;8068:7;8059:6;8048:9;8044:22;8023:53;:::i;:::-;8013:63;;7969:117;8125:2;8151:50;8193:7;8184:6;8173:9;8169:22;8151:50;:::i;:::-;8141:60;;8096:115;7750:468;;;;;:::o;8224:329::-;8283:6;8332:2;8320:9;8311:7;8307:23;8303:32;8300:119;;;8338:79;;:::i;:::-;8300:119;8458:1;8483:53;8528:7;8519:6;8508:9;8504:22;8483:53;:::i;:::-;8473:63;;8429:117;8224:329;;;;:::o;8559:104::-;8604:7;8633:24;8651:5;8633:24;:::i;:::-;8622:35;;8559:104;;;:::o;8669:142::-;8772:32;8798:5;8772:32;:::i;:::-;8767:3;8760:45;8669:142;;:::o;8817:254::-;8926:4;8964:2;8953:9;8949:18;8941:26;;8977:87;9061:1;9050:9;9046:17;9037:6;8977:87;:::i;:::-;8817:254;;;;:::o;9077:323::-;9133:6;9182:2;9170:9;9161:7;9157:23;9153:32;9150:119;;;9188:79;;:::i;:::-;9150:119;9308:1;9333:50;9375:7;9366:6;9355:9;9351:22;9333:50;:::i;:::-;9323:60;;9279:114;9077:323;;;;:::o;9406:619::-;9483:6;9491;9499;9548:2;9536:9;9527:7;9523:23;9519:32;9516:119;;;9554:79;;:::i;:::-;9516:119;9674:1;9699:53;9744:7;9735:6;9724:9;9720:22;9699:53;:::i;:::-;9689:63;;9645:117;9801:2;9827:53;9872:7;9863:6;9852:9;9848:22;9827:53;:::i;:::-;9817:63;;9772:118;9929:2;9955:53;10000:7;9991:6;9980:9;9976:22;9955:53;:::i;:::-;9945:63;;9900:118;9406:619;;;;;:::o;10031:474::-;10099:6;10107;10156:2;10144:9;10135:7;10131:23;10127:32;10124:119;;;10162:79;;:::i;:::-;10124:119;10282:1;10307:53;10352:7;10343:6;10332:9;10328:22;10307:53;:::i;:::-;10297:63;;10253:117;10409:2;10435:53;10480:7;10471:6;10460:9;10456:22;10435:53;:::i;:::-;10425:63;;10380:118;10031:474;;;;;:::o;10511:138::-;10592:32;10618:5;10592:32;:::i;:::-;10585:5;10582:43;10572:71;;10639:1;10636;10629:12;10572:71;10511:138;:::o;10655:155::-;10709:5;10747:6;10734:20;10725:29;;10763:41;10798:5;10763:41;:::i;:::-;10655:155;;;;:::o;10816:345::-;10883:6;10932:2;10920:9;10911:7;10907:23;10903:32;10900:119;;;10938:79;;:::i;:::-;10900:119;11058:1;11083:61;11136:7;11127:6;11116:9;11112:22;11083:61;:::i;:::-;11073:71;;11029:125;10816:345;;;;:::o;11167:765::-;11253:6;11261;11269;11277;11326:3;11314:9;11305:7;11301:23;11297:33;11294:120;;;11333:79;;:::i;:::-;11294:120;11453:1;11478:53;11523:7;11514:6;11503:9;11499:22;11478:53;:::i;:::-;11468:63;;11424:117;11580:2;11606:53;11651:7;11642:6;11631:9;11627:22;11606:53;:::i;:::-;11596:63;;11551:118;11708:2;11734:53;11779:7;11770:6;11759:9;11755:22;11734:53;:::i;:::-;11724:63;;11679:118;11836:2;11862:53;11907:7;11898:6;11887:9;11883:22;11862:53;:::i;:::-;11852:63;;11807:118;11167:765;;;;;;;:::o;11938:180::-;11986:77;11983:1;11976:88;12083:4;12080:1;12073:15;12107:4;12104:1;12097:15;12124:320;12168:6;12205:1;12199:4;12195:12;12185:22;;12252:1;12246:4;12242:12;12273:18;12263:81;;12329:4;12321:6;12317:17;12307:27;;12263:81;12391:2;12383:6;12380:14;12360:18;12357:38;12354:84;;;12410:18;;:::i;:::-;12354:84;12175:269;12124:320;;;:::o;12450:180::-;12498:77;12495:1;12488:88;12595:4;12592:1;12585:15;12619:4;12616:1;12609:15;12636:191;12676:4;12696:20;12714:1;12696:20;:::i;:::-;12691:25;;12730:20;12748:1;12730:20;:::i;:::-;12725:25;;12769:1;12766;12763:8;12760:34;;;12774:18;;:::i;:::-;12760:34;12819:1;12816;12812:9;12804:17;;12636:191;;;;:::o;12833:166::-;12973:18;12969:1;12961:6;12957:14;12950:42;12833:166;:::o;13005:366::-;13147:3;13168:67;13232:2;13227:3;13168:67;:::i;:::-;13161:74;;13244:93;13333:3;13244:93;:::i;:::-;13362:2;13357:3;13353:12;13346:19;;13005:366;;;:::o;13377:419::-;13543:4;13581:2;13570:9;13566:18;13558:26;;13630:9;13624:4;13620:20;13616:1;13605:9;13601:17;13594:47;13658:131;13784:4;13658:131;:::i;:::-;13650:139;;13377:419;;;:::o;13802:348::-;13842:7;13865:20;13883:1;13865:20;:::i;:::-;13860:25;;13899:20;13917:1;13899:20;:::i;:::-;13894:25;;14087:1;14019:66;14015:74;14012:1;14009:81;14004:1;13997:9;13990:17;13986:105;13983:131;;;14094:18;;:::i;:::-;13983:131;14142:1;14139;14135:9;14124:20;;13802:348;;;;:::o;14156:180::-;14204:77;14201:1;14194:88;14301:4;14298:1;14291:15;14325:4;14322:1;14315:15;14342:185;14382:1;14399:20;14417:1;14399:20;:::i;:::-;14394:25;;14433:20;14451:1;14433:20;:::i;:::-;14428:25;;14472:1;14462:35;;14477:18;;:::i;:::-;14462:35;14519:1;14516;14512:9;14507:14;;14342:185;;;;:::o;14533:224::-;14673:34;14669:1;14661:6;14657:14;14650:58;14742:7;14737:2;14729:6;14725:15;14718:32;14533:224;:::o;14763:366::-;14905:3;14926:67;14990:2;14985:3;14926:67;:::i;:::-;14919:74;;15002:93;15091:3;15002:93;:::i;:::-;15120:2;15115:3;15111:12;15104:19;;14763:366;;;:::o;15135:419::-;15301:4;15339:2;15328:9;15324:18;15316:26;;15388:9;15382:4;15378:20;15374:1;15363:9;15359:17;15352:47;15416:131;15542:4;15416:131;:::i;:::-;15408:139;;15135:419;;;:::o;15560:305::-;15600:3;15619:20;15637:1;15619:20;:::i;:::-;15614:25;;15653:20;15671:1;15653:20;:::i;:::-;15648:25;;15807:1;15739:66;15735:74;15732:1;15729:81;15726:107;;;15813:18;;:::i;:::-;15726:107;15857:1;15854;15850:9;15843:16;;15560:305;;;;:::o;15871:248::-;16011:34;16007:1;15999:6;15995:14;15988:58;16080:31;16075:2;16067:6;16063:15;16056:56;15871:248;:::o;16125:366::-;16267:3;16288:67;16352:2;16347:3;16288:67;:::i;:::-;16281:74;;16364:93;16453:3;16364:93;:::i;:::-;16482:2;16477:3;16473:12;16466:19;;16125:366;;;:::o;16497:419::-;16663:4;16701:2;16690:9;16686:18;16678:26;;16750:9;16744:4;16740:20;16736:1;16725:9;16721:17;16714:47;16778:131;16904:4;16778:131;:::i;:::-;16770:139;;16497:419;;;:::o;16922:168::-;17062:20;17058:1;17050:6;17046:14;17039:44;16922:168;:::o;17096:366::-;17238:3;17259:67;17323:2;17318:3;17259:67;:::i;:::-;17252:74;;17335:93;17424:3;17335:93;:::i;:::-;17453:2;17448:3;17444:12;17437:19;;17096:366;;;:::o;17468:419::-;17634:4;17672:2;17661:9;17657:18;17649:26;;17721:9;17715:4;17711:20;17707:1;17696:9;17692:17;17685:47;17749:131;17875:4;17749:131;:::i;:::-;17741:139;;17468:419;;;:::o;17893:156::-;18033:8;18029:1;18021:6;18017:14;18010:32;17893:156;:::o;18055:365::-;18197:3;18218:66;18282:1;18277:3;18218:66;:::i;:::-;18211:73;;18293:93;18382:3;18293:93;:::i;:::-;18411:2;18406:3;18402:12;18395:19;;18055:365;;;:::o;18426:419::-;18592:4;18630:2;18619:9;18615:18;18607:26;;18679:9;18673:4;18669:20;18665:1;18654:9;18650:17;18643:47;18707:131;18833:4;18707:131;:::i;:::-;18699:139;;18426:419;;;:::o;18851:155::-;18991:7;18987:1;18979:6;18975:14;18968:31;18851:155;:::o;19012:365::-;19154:3;19175:66;19239:1;19234:3;19175:66;:::i;:::-;19168:73;;19250:93;19339:3;19250:93;:::i;:::-;19368:2;19363:3;19359:12;19352:19;;19012:365;;;:::o;19383:419::-;19549:4;19587:2;19576:9;19572:18;19564:26;;19636:9;19630:4;19626:20;19622:1;19611:9;19607:17;19600:47;19664:131;19790:4;19664:131;:::i;:::-;19656:139;;19383:419;;;:::o;19808:173::-;19948:25;19944:1;19936:6;19932:14;19925:49;19808:173;:::o;19987:366::-;20129:3;20150:67;20214:2;20209:3;20150:67;:::i;:::-;20143:74;;20226:93;20315:3;20226:93;:::i;:::-;20344:2;20339:3;20335:12;20328:19;;19987:366;;;:::o;20359:419::-;20525:4;20563:2;20552:9;20548:18;20540:26;;20612:9;20606:4;20602:20;20598:1;20587:9;20583:17;20576:47;20640:131;20766:4;20640:131;:::i;:::-;20632:139;;20359:419;;;:::o;20784:143::-;20841:5;20872:6;20866:13;20857:22;;20888:33;20915:5;20888:33;:::i;:::-;20784:143;;;;:::o;20933:351::-;21003:6;21052:2;21040:9;21031:7;21027:23;21023:32;21020:119;;;21058:79;;:::i;:::-;21020:119;21178:1;21203:64;21259:7;21250:6;21239:9;21235:22;21203:64;:::i;:::-;21193:74;;21149:128;20933:351;;;;:::o;21290:332::-;21411:4;21449:2;21438:9;21434:18;21426:26;;21462:71;21530:1;21519:9;21515:17;21506:6;21462:71;:::i;:::-;21543:72;21611:2;21600:9;21596:18;21587:6;21543:72;:::i;:::-;21290:332;;;;;:::o;21628:169::-;21768:21;21764:1;21756:6;21752:14;21745:45;21628:169;:::o;21803:366::-;21945:3;21966:67;22030:2;22025:3;21966:67;:::i;:::-;21959:74;;22042:93;22131:3;22042:93;:::i;:::-;22160:2;22155:3;22151:12;22144:19;;21803:366;;;:::o;22175:419::-;22341:4;22379:2;22368:9;22364:18;22356:26;;22428:9;22422:4;22418:20;22414:1;22403:9;22399:17;22392:47;22456:131;22582:4;22456:131;:::i;:::-;22448:139;;22175:419;;;:::o;22600:170::-;22740:22;22736:1;22728:6;22724:14;22717:46;22600:170;:::o;22776:366::-;22918:3;22939:67;23003:2;22998:3;22939:67;:::i;:::-;22932:74;;23015:93;23104:3;23015:93;:::i;:::-;23133:2;23128:3;23124:12;23117:19;;22776:366;;;:::o;23148:419::-;23314:4;23352:2;23341:9;23337:18;23329:26;;23401:9;23395:4;23391:20;23387:1;23376:9;23372:17;23365:47;23429:131;23555:4;23429:131;:::i;:::-;23421:139;;23148:419;;;:::o;23573:158::-;23713:10;23709:1;23701:6;23697:14;23690:34;23573:158;:::o;23737:365::-;23879:3;23900:66;23964:1;23959:3;23900:66;:::i;:::-;23893:73;;23975:93;24064:3;23975:93;:::i;:::-;24093:2;24088:3;24084:12;24077:19;;23737:365;;;:::o;24108:419::-;24274:4;24312:2;24301:9;24297:18;24289:26;;24361:9;24355:4;24351:20;24347:1;24336:9;24332:17;24325:47;24389:131;24515:4;24389:131;:::i;:::-;24381:139;;24108:419;;;:::o;24533:174::-;24673:26;24669:1;24661:6;24657:14;24650:50;24533:174;:::o;24713:366::-;24855:3;24876:67;24940:2;24935:3;24876:67;:::i;:::-;24869:74;;24952:93;25041:3;24952:93;:::i;:::-;25070:2;25065:3;25061:12;25054:19;;24713:366;;;:::o;25085:419::-;25251:4;25289:2;25278:9;25274:18;25266:26;;25338:9;25332:4;25328:20;25324:1;25313:9;25309:17;25302:47;25366:131;25492:4;25366:131;:::i;:::-;25358:139;;25085:419;;;:::o;25510:176::-;25650:28;25646:1;25638:6;25634:14;25627:52;25510:176;:::o;25692:366::-;25834:3;25855:67;25919:2;25914:3;25855:67;:::i;:::-;25848:74;;25931:93;26020:3;25931:93;:::i;:::-;26049:2;26044:3;26040:12;26033:19;;25692:366;;;:::o;26064:419::-;26230:4;26268:2;26257:9;26253:18;26245:26;;26317:9;26311:4;26307:20;26303:1;26292:9;26288:17;26281:47;26345:131;26471:4;26345:131;:::i;:::-;26337:139;;26064:419;;;:::o;26489:166::-;26629:18;26625:1;26617:6;26613:14;26606:42;26489:166;:::o;26661:366::-;26803:3;26824:67;26888:2;26883:3;26824:67;:::i;:::-;26817:74;;26900:93;26989:3;26900:93;:::i;:::-;27018:2;27013:3;27009:12;27002:19;;26661:366;;;:::o;27033:419::-;27199:4;27237:2;27226:9;27222:18;27214:26;;27286:9;27280:4;27276:20;27272:1;27261:9;27257:17;27250:47;27314:131;27440:4;27314:131;:::i;:::-;27306:139;;27033:419;;;:::o;27458:224::-;27598:34;27594:1;27586:6;27582:14;27575:58;27667:7;27662:2;27654:6;27650:15;27643:32;27458:224;:::o;27688:366::-;27830:3;27851:67;27915:2;27910:3;27851:67;:::i;:::-;27844:74;;27927:93;28016:3;27927:93;:::i;:::-;28045:2;28040:3;28036:12;28029:19;;27688:366;;;:::o;28060:419::-;28226:4;28264:2;28253:9;28249:18;28241:26;;28313:9;28307:4;28303:20;28299:1;28288:9;28284:17;28277:47;28341:131;28467:4;28341:131;:::i;:::-;28333:139;;28060:419;;;:::o;28485:233::-;28524:3;28547:24;28565:5;28547:24;:::i;:::-;28538:33;;28593:66;28586:5;28583:77;28580:103;;;28663:18;;:::i;:::-;28580:103;28710:1;28703:5;28699:13;28692:20;;28485:233;;;:::o;28724:180::-;28772:77;28769:1;28762:88;28869:4;28866:1;28859:15;28893:4;28890:1;28883:15;28910:180;28958:77;28955:1;28948:88;29055:4;29052:1;29045:15;29079:4;29076:1;29069:15;29096:85;29141:7;29170:5;29159:16;;29096:85;;;:::o;29187:158::-;29245:9;29278:61;29296:42;29305:32;29331:5;29305:32;:::i;:::-;29296:42;:::i;:::-;29278:61;:::i;:::-;29265:74;;29187:158;;;:::o;29351:147::-;29446:45;29485:5;29446:45;:::i;:::-;29441:3;29434:58;29351:147;;:::o;29504:114::-;29571:6;29605:5;29599:12;29589:22;;29504:114;;;:::o;29624:184::-;29723:11;29757:6;29752:3;29745:19;29797:4;29792:3;29788:14;29773:29;;29624:184;;;;:::o;29814:132::-;29881:4;29904:3;29896:11;;29934:4;29929:3;29925:14;29917:22;;29814:132;;;:::o;29952:108::-;30029:24;30047:5;30029:24;:::i;:::-;30024:3;30017:37;29952:108;;:::o;30066:179::-;30135:10;30156:46;30198:3;30190:6;30156:46;:::i;:::-;30234:4;30229:3;30225:14;30211:28;;30066:179;;;;:::o;30251:113::-;30321:4;30353;30348:3;30344:14;30336:22;;30251:113;;;:::o;30400:732::-;30519:3;30548:54;30596:5;30548:54;:::i;:::-;30618:86;30697:6;30692:3;30618:86;:::i;:::-;30611:93;;30728:56;30778:5;30728:56;:::i;:::-;30807:7;30838:1;30823:284;30848:6;30845:1;30842:13;30823:284;;;30924:6;30918:13;30951:63;31010:3;30995:13;30951:63;:::i;:::-;30944:70;;31037:60;31090:6;31037:60;:::i;:::-;31027:70;;30883:224;30870:1;30867;30863:9;30858:14;;30823:284;;;30827:14;31123:3;31116:10;;30524:608;;;30400:732;;;;:::o;31138:831::-;31401:4;31439:3;31428:9;31424:19;31416:27;;31453:71;31521:1;31510:9;31506:17;31497:6;31453:71;:::i;:::-;31534:80;31610:2;31599:9;31595:18;31586:6;31534:80;:::i;:::-;31661:9;31655:4;31651:20;31646:2;31635:9;31631:18;31624:48;31689:108;31792:4;31783:6;31689:108;:::i;:::-;31681:116;;31807:72;31875:2;31864:9;31860:18;31851:6;31807:72;:::i;:::-;31889:73;31957:3;31946:9;31942:19;31933:6;31889:73;:::i;:::-;31138:831;;;;;;;;:::o;31975:807::-;32224:4;32262:3;32251:9;32247:19;32239:27;;32276:71;32344:1;32333:9;32329:17;32320:6;32276:71;:::i;:::-;32357:72;32425:2;32414:9;32410:18;32401:6;32357:72;:::i;:::-;32439:80;32515:2;32504:9;32500:18;32491:6;32439:80;:::i;:::-;32529;32605:2;32594:9;32590:18;32581:6;32529:80;:::i;:::-;32619:73;32687:3;32676:9;32672:19;32663:6;32619:73;:::i;:::-;32702;32770:3;32759:9;32755:19;32746:6;32702:73;:::i;:::-;31975:807;;;;;;;;;:::o;32788:143::-;32845:5;32876:6;32870:13;32861:22;;32892:33;32919:5;32892:33;:::i;:::-;32788:143;;;;:::o;32937:663::-;33025:6;33033;33041;33090:2;33078:9;33069:7;33065:23;33061:32;33058:119;;;33096:79;;:::i;:::-;33058:119;33216:1;33241:64;33297:7;33288:6;33277:9;33273:22;33241:64;:::i;:::-;33231:74;;33187:128;33354:2;33380:64;33436:7;33427:6;33416:9;33412:22;33380:64;:::i;:::-;33370:74;;33325:129;33493:2;33519:64;33575:7;33566:6;33555:9;33551:22;33519:64;:::i;:::-;33509:74;;33464:129;32937:663;;;;;:::o;33606:222::-;33746:34;33742:1;33734:6;33730:14;33723:58;33815:5;33810:2;33802:6;33798:15;33791:30;33606:222;:::o;33834:366::-;33976:3;33997:67;34061:2;34056:3;33997:67;:::i;:::-;33990:74;;34073:93;34162:3;34073:93;:::i;:::-;34191:2;34186:3;34182:12;34175:19;;33834:366;;;:::o;34206:419::-;34372:4;34410:2;34399:9;34395:18;34387:26;;34459:9;34453:4;34449:20;34445:1;34434:9;34430:17;34423:47;34487:131;34613:4;34487:131;:::i;:::-;34479:139;;34206:419;;;:::o

Swarm Source

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