ETH Price: $2,408.41 (-0.28%)

Token

McPepe (MCPEPE)
 

Overview

Max Total Supply

1,000,000,000 MCPEPE

Holders

68 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,450,000 MCPEPE

Value
$0.00
0x3fc056dafc1d38dba334ca105f17f7008c8ce9c5
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

McPepe is a meme token inspired by the recent twitter posts by the official McDonalds and Elon Musk accounts, creating a craze in the DeFi space, and McPepe believes he can take the lead, or he'll die trying.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MCPEPE

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-31
*/

// WEBSITE  :  https://McPepe.cash
// TWITTER  :  https://twitter.com/McPepeETH
// TELEGRAM : 
// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isSniperOrBlacklisted;
    mapping (address => bool) private _liquidityHolders;

    mapping (address=>uint256) buyLog;
    uint256 buyCoolDown = 25 seconds;

    uint256 private startingSupply = 1_000_000_000;

    string private _name = "McPepe";
    string private _symbol = "MCPEPE";

    uint256 public _buyFee = 1100;
    uint256 public _sellFee = 2500;
    uint256 public _transferFee = 2500;

    uint256 constant public maxBuyTaxes = 1200;
    uint256 constant public maxSellTaxes = 2500;
    uint256 constant public maxTransferTaxes = 2500;
    
    // ratios
    uint256 private _liquidityRatio = 325;
    uint256 private _marketingRatio = 500;
    uint256 private _devRatio = 125;
    uint256 private _dev2Ratio = 125;
    uint256 private _burnRatio = 25;
    // ratios


    uint256 private _liquidityWalletRatios = _dev2Ratio + _devRatio + _liquidityRatio + _marketingRatio;
    uint256 private _WalletRatios = _devRatio + _dev2Ratio + _marketingRatio;

    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 generated liquidity from fees.

    address payable private _marketingWallet = payable(0x72a3f8923349207C250552737223c9ACA1914efB);
    address payable private _Dev1Wallet = payable(0x9586cDB874d3593dB5a6436AcF1c3EaEBb82dcbb);
    address payable private _Dev2Wallet = payable(0xAB5E81A928d7571fA03d68166F7d5D858b7Aa1ce);
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    
    uint256 private maxTxPercent = 5;
    uint256 private maxTxDivisor = 1000;
    uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    

    uint256 private maxWalletPercent = 15;
    uint256 private maxWalletDivisor = 1_000;
    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;
    bool private sameBlockActive = true;
    mapping (address => uint256) private lastTrade;

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

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

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

    function setRatios(uint256 liquidity, uint256 marketing, uint256 dev1, uint256 dev2, uint256 burnRatio) external onlyOwner {
        require ( (liquidity + marketing + dev1 + dev2 + burnRatio) == 1100, "Must add up to 1000");
        _liquidityRatio = liquidity;
        _marketingRatio = marketing;
        _devRatio = dev1;
        _dev2Ratio = dev2;
        _burnRatio = burnRatio;
    }

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


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

    function setMaxWalletSize(uint256 percent, uint256 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 marketingWallet, address payable Dev1Wallet, address payable Dev2Wallet) external onlyOwner {
        _marketingWallet = payable(marketingWallet);
        _Dev1Wallet = payable(Dev1Wallet);
        _Dev2Wallet = payable(Dev2Wallet);
    }

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

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

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

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

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

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

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

        uint256 currentBalance = address(this).balance;
        uint256 liquidityBalance = ((currentBalance * _liquidityRatio) / _liquidityWalletRatios) / 2;

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

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

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

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

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

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

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

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

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

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

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

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

        if (from == lpPair) {

            if (balanceOf(to) > 0){
                require(block.timestamp - buyLog[to] >= buyCoolDown,"Buy cooldown");
            }
            buyLog[to]=block.timestamp;
            //----------------------------------------------------------------------
            
            currentFee = _buyFee;
        } else if (to == lpPair) {
            currentFee = _sellFee;
        } else {
            currentFee = _transferFee;
        }

        if (_hasLimits(from, to)){
            if (_liqAddStatus == 0 || _liqAddStatus != 69_420) {
                revert();
            }
        }
        uint256 burnAmt = (amount * currentFee * _burnRatio) / (_burnRatio + _liquidityWalletRatios) / 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":"_buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rInitializer","type":"uint256"}],"name":"isProtected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniperOrBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Seconds","type":"uint256"}],"name":"setBuyCoolDownTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"antiSnipe","type":"bool"},{"internalType":"bool","name":"antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev1","type":"uint256"},{"internalType":"uint256","name":"dev2","type":"uint256"},{"internalType":"uint256","name":"burnRatio","type":"uint256"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_block","type":"uint8"}],"name":"setStartingProtections","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWallet","type":"address"},{"internalType":"address payable","name":"Dev1Wallet","type":"address"},{"internalType":"address payable","name":"Dev2Wallet","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"}]

608060405260006003556019600955633b9aca00600a556040518060400160405280600681526020017f4d63506570650000000000000000000000000000000000000000000000000000815250600b90805190602001906200006392919062000c00565b506040518060400160405280600681526020017f4d43504550450000000000000000000000000000000000000000000000000000815250600c9080519060200190620000b192919062000c00565b5061044c600d556109c4600e556109c4600f556101456010556101f4601155607d601255607d6013556019601455601154601054601254601354620000f7919062000dbf565b62000103919062000dbf565b6200010f919062000dbf565b60155560115460135460125462000127919062000dbf565b62000133919062000dbf565b6016556009600a62000146919062000eaf565b600a5462000155919062000fec565b6017557372a3f8923349207c250552737223c9aca1914efb601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739586cdb874d3593db5a6436acf1c3eaebb82dcbb601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ab5e81a928d7571fa03d68166f7d5d858b7aa1ce601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601d60156101000a81548160ff0219169083151502179055506005601e556103e8601f55601f54601e5460175462000292919062000fec565b6200029e919062000e1c565b602055600f6021556103e8602255602254602154601754620002c1919062000fec565b620002cd919062000e1c565b6023556127106005601754620002e4919062000fec565b620002f0919062000e1c565b6024556103e8600560175462000307919062000fec565b62000313919062000e1c565b6025556001602660006101000a81548160ff0219169083151502179055506000602660016101000a81548160ff0219169083151502179055506000602755600060285560006029556000602a556000602b556000602c556001602d60006101000a81548160ff021916908315150217905550601754600160006200039c620009fc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620004d857600080fd5b505afa158015620004ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000513919062000cc7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200059757600080fd5b505afa158015620005ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d2919062000cc7565b306040518363ffffffff1660e01b8152600401620005f292919062000d42565b602060405180830381600087803b1580156200060d57600080fd5b505af115801562000622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000648919062000cc7565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160026000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620007db62000a0460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000620008f462000a0460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200097d62000959620009fc60201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d60175462000a2d60201b60201c565b6200098d620009fc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601754604051620009ee919062000d91565b60405180910390a3620011b0565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000aa0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a979062000d6f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b0a9062000d6f565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000bf3919062000d91565b60405180910390a3505050565b82805462000c0e9062001098565b90600052602060002090601f01602090048101928262000c32576000855562000c7e565b82601f1062000c4d57805160ff191683800117855562000c7e565b8280016001018555821562000c7e579182015b8281111562000c7d57825182559160200191906001019062000c60565b5b50905062000c8d919062000c91565b5090565b5b8082111562000cac57600081600090555060010162000c92565b5090565b60008151905062000cc18162001196565b92915050565b60006020828403121562000ce05762000cdf6200115b565b5b600062000cf08482850162000cb0565b91505092915050565b62000d04816200104d565b82525050565b600062000d1960138362000dae565b915062000d26826200116d565b602082019050919050565b62000d3c8162001081565b82525050565b600060408201905062000d59600083018562000cf9565b62000d68602083018462000cf9565b9392505050565b6000602082019050818103600083015262000d8a8162000d0a565b9050919050565b600060208201905062000da8600083018462000d31565b92915050565b600082825260208201905092915050565b600062000dcc8262001081565b915062000dd98362001081565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e115762000e10620010ce565b5b828201905092915050565b600062000e298262001081565b915062000e368362001081565b92508262000e495762000e48620010fd565b5b828204905092915050565b6000808291508390505b600185111562000ea65780860481111562000e7e5762000e7d620010ce565b5b600185161562000e8e5780820291505b808102905062000e9e8562001160565b945062000e5e565b94509492505050565b600062000ebc8262001081565b915062000ec9836200108b565b925062000ef87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f00565b905092915050565b60008262000f12576001905062000fe5565b8162000f22576000905062000fe5565b816001811462000f3b576002811462000f465762000f7c565b600191505062000fe5565b60ff84111562000f5b5762000f5a620010ce565b5b8360020a91508482111562000f755762000f74620010ce565b5b5062000fe5565b5060208310610133831016604e8410600b841016171562000fb65782820a90508381111562000fb05762000faf620010ce565b5b62000fe5565b62000fc5848484600162000e54565b9250905081840481111562000fdf5762000fde620010ce565b5b81810290505b9392505050565b600062000ff98262001081565b9150620010068362001081565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620010425762001041620010ce565b5b828202905092915050565b60006200105a8262001061565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006002820490506001821680620010b157607f821691505b60208210811415620010c857620010c76200112c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b620011a1816200104d565b8114620011ad57600080fd5b50565b6156dd80620011c06000396000f3fe6080604052600436106102765760003560e01c8063590f897e1161014f578063a457c2d7116100c1578063e078e9f71161007a578063e078e9f714610999578063e79d4160146109c2578063e9dae5ed146109ed578063eafb5a3c14610a16578063eec2744e14610a3f578063fb78680d14610a685761027d565b8063a457c2d714610863578063a9059cbb146108a0578063b1b08f71146108dd578063b3d514fb14610908578063c49b9a8014610933578063dd62ed3e1461095c5761027d565b806380c581d11161011357806380c581d11461075357806381c6f11b1461077c578063893d20e8146107a557806389fd9bc1146107d05780638da5cb5b1461080d57806395d89b41146108385761027d565b8063590f897e14610682578063590ffdce146106ad57806370a08231146106d6578063715018a61461071357806375cb1bd11461072a5761027d565b80633df9a8d2116101e8578063469c0ef5116101ac578063469c0ef5146105605780634a74bb02146105895780634fb2e45d146105b45780634fbee193146105dd57806350a8e0161461061a578063571ac8b0146106455761027d565b80633df9a8d21461048d5780633f3cf56c146104b857806340b9a54b146104e15780634129ecee1461050c578063452ed4f1146105355761027d565b806318160ddd1161023a57806318160ddd1461036957806323b872dd1461039457806326003957146103d15780632b28fc7a146103fa578063313ce5671461042557806339509351146104505761027d565b806303fd2a4514610282578063044df726146102ad57806306fdde03146102d65780630758d92414610301578063095ea7b31461032c5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a91565b6040516102a49190614b11565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190614544565b610a97565b005b3480156102e257600080fd5b506102eb610b64565b6040516102f89190614bec565b60405180910390f35b34801561030d57600080fd5b50610316610bf6565b6040516103239190614bd1565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e91906144d7565b610c1c565b6040516103609190614bb6565b60405180910390f35b34801561037557600080fd5b5061037e610c3a565b60405161038b9190614e2e565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b69190614444565b610c44565b6040516103c89190614bb6565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f391906145b1565b610d91565b005b34801561040657600080fd5b5061040f610ea1565b60405161041c9190614e2e565b60405180910390f35b34801561043157600080fd5b5061043a610ea7565b6040516104479190614eda565b60405180910390f35b34801561045c57600080fd5b50610477600480360381019061047291906144d7565b610eb0565b6040516104849190614bb6565b60405180910390f35b34801561049957600080fd5b506104a2610f5c565b6040516104af9190614e2e565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da91906145b1565b610f62565b005b3480156104ed57600080fd5b506104f6611072565b6040516105039190614e2e565b60405180910390f35b34801561051857600080fd5b50610533600480360381019061052e9190614779565b611078565b005b34801561054157600080fd5b5061054a611178565b6040516105579190614b11565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190614584565b61119e565b005b34801561059557600080fd5b5061059e61124f565b6040516105ab9190614bb6565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d69190614357565b611262565b005b3480156105e957600080fd5b5061060460048036038101906105ff9190614357565b6116d3565b6040516106119190614bb6565b60405180910390f35b34801561062657600080fd5b5061062f611729565b60405161063c9190614bb6565b60405180910390f35b34801561065157600080fd5b5061066c60048036038101906106679190614357565b61173c565b6040516106799190614bb6565b60405180910390f35b34801561068e57600080fd5b5061069761176f565b6040516106a49190614e2e565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf9190614497565b611775565b005b3480156106e257600080fd5b506106fd60048036038101906106f89190614357565b611865565b60405161070a9190614e2e565b60405180910390f35b34801561071f57600080fd5b506107286118ae565b005b34801561073657600080fd5b50610751600480360381019061074c91906143b1565b611a2c565b005b34801561075f57600080fd5b5061077a60048036038101906107759190614497565b611b89565b005b34801561078857600080fd5b506107a3600480360381019061079e9190614584565b611d49565b005b3480156107b157600080fd5b506107ba611e2d565b6040516107c79190614b11565b60405180910390f35b3480156107dc57600080fd5b506107f760048036038101906107f29190614357565b611e3c565b6040516108049190614bb6565b60405180910390f35b34801561081957600080fd5b50610822611e92565b60405161082f9190614b11565b60405180910390f35b34801561084457600080fd5b5061084d611ebb565b60405161085a9190614bec565b60405180910390f35b34801561086f57600080fd5b5061088a600480360381019061088591906144d7565b611f4d565b6040516108979190614bb6565b60405180910390f35b3480156108ac57600080fd5b506108c760048036038101906108c291906144d7565b611ff9565b6040516108d49190614bb6565b60405180910390f35b3480156108e957600080fd5b506108f2612018565b6040516108ff9190614e2e565b60405180910390f35b34801561091457600080fd5b5061091d61201e565b60405161092a9190614e2e565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190614517565b612024565b005b34801561096857600080fd5b50610983600480360381019061097e9190614404565b61210d565b6040516109909190614e2e565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb91906146fe565b612194565b005b3480156109ce57600080fd5b506109d76122c3565b6040516109e49190614e2e565b60405180910390f35b3480156109f957600080fd5b50610a146004803603810190610a0f91906145f1565b6122c9565b005b348015610a2257600080fd5b50610a3d6004803603810190610a389190614357565b6123d9565b005b348015610a4b57600080fd5b50610a666004803603810190610a619190614497565b612885565b005b348015610a7457600080fd5b50610a8f6004803603810190610a8a9190614697565b612975565b005b61dead81565b610a9f612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2390614c4e565b60405180910390fd5b81602660006101000a81548160ff02191690831515021790555080602d60006101000a81548160ff0219169083151502179055505050565b6060600b8054610b7390615141565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9f90615141565b8015610bec5780601f10610bc157610100808354040283529160200191610bec565b820191906000526020600020905b815481529060010190602001808311610bcf57829003601f168201915b5050505050905090565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c30610c29612a4e565b8484612a56565b6001905092915050565b6000601754905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d7d5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d75919061502b565b925050819055505b610d88848484612c21565b90509392505050565b610d99612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d90614c4e565b60405180910390fd5b60008183601754610e379190614fd1565b610e419190614fa0565b905061012c601754610e539190614fa0565b811015610e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8c90614dee565b60405180910390fd5b80602381905550505050565b6104b081565b60006009905090565b6000610f52610ebd612a4e565b848460046000610ecb612a4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4d9190614f4a565b612a56565b6001905092915050565b600f5481565b610f6a612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fee90614c4e565b60405180910390fd5b600081836017546110089190614fd1565b6110129190614fa0565b905061012c6017546110249190614fa0565b811015611066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105d90614dee565b60405180910390fd5b80602081905550505050565b600d5481565b611080612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490614c4e565b60405180910390fd5b6000602b5414801561112c5750602660019054906101000a900460ff16155b61116b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116290614c2e565b60405180910390fd5b8060ff16602b8190555050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111a6612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122a90614c4e565b60405180910390fd5b60006001826112429190614fd1565b9050806009819055505050565b601d60159054906101000a900460ff1681565b61126a612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee90614c4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e90614e0e565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf90614e0e565b60405180910390fd5b61140360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611775565b61140e816001611775565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156114c65780601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6114ef60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611865565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006115bb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611865565b11156116165761161460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261160f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611865565b612c21565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602660019054906101000a900460ff1681565b6000611768827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610c1c565b9050919050565b600e5481565b61177d612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190614c4e565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118b6612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a90614c4e565b60405180910390fd5b61196e60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611775565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b611a34612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab890614c4e565b60405180910390fd5b82601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b611b91612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1590614c4e565b60405180910390fd5b600015158115151415611c88576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611d45565b600060035414611ce55762093a8060035442611ca4919061502b565b11611ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdb90614d0e565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b611d51612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd590614c4e565b60405180910390fd5b600060275414611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1a90614d8e565b60405180910390fd5b8060278190555050565b6000611e37611e92565b905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054611eca90615141565b80601f0160208091040260200160405190810160405280929190818152602001828054611ef690615141565b8015611f435780601f10611f1857610100808354040283529160200191611f43565b820191906000526020600020905b815481529060010190602001808311611f2657829003601f168201915b5050505050905090565b6000611fef611f5a612a4e565b848460046000611f68612a4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fea919061502b565b612a56565b6001905092915050565b600061200d612006612a4e565b8484612c21565b506001905092915050565b6109c481565b6109c481565b61202c612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b090614c4e565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516121029190614bb6565b60405180910390a150565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61219c612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222090614c4e565b60405180910390fd5b61044c818385878961223b9190614f4a565b6122459190614f4a565b61224f9190614f4a565b6122599190614f4a565b14612299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229090614cce565b60405180910390fd5b84601081905550836011819055508260128190555081601381905550806014819055505050505050565b602c5481565b6122d1612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461235e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235590614c4e565b60405180910390fd5b6104b0831115801561237257506109c48211155b801561238057506109c48111155b6123bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b690614cae565b60405180910390fd5b82600d8190555081600e8190555080600f81905550505050565b6123e1612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461246e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246590614c4e565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156124bb57600080fd5b505afa1580156124cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f39190614384565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561255557600080fd5b505afa158015612569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258d9190614384565b6040518363ffffffff1660e01b81526004016125aa929190614b2c565b60206040518083038186803b1580156125c257600080fd5b505afa1580156125d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fa9190614384565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127fd578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561267757600080fd5b505afa15801561268b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126af9190614384565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561271157600080fd5b505afa158015612725573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127499190614384565b6040518363ffffffff1660e01b8152600401612766929190614b2c565b602060405180830381600087803b15801561278057600080fd5b505af1158015612794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b89190614384565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061283f565b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b61288d612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190614c4e565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61297d612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0190614c4e565b60405180910390fd5b8284601754612a199190614fd1565b612a239190614fa0565b6024819055508082601754612a389190614fd1565b612a429190614fa0565b60258190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612abd90614d4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2d90614d4e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c149190614e2e565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8990614cee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf990614cee565b60405180910390fd5b60008211612d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3c90614d2e565b60405180910390fd5b612d4f8484613240565b156130c757602d60009054906101000a900460ff1615612ee257600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e505743602e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612e0757600080fd5b43602e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ee1565b43602e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612e9c57600080fd5b43602e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f835750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612fce57602054821115612fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc490614dce565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130685750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130c6576023548261307a85611865565b6130849190614f4a565b11156130c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130bc90614dae565b60405180910390fd5b5b5b600060019050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061316e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561317857600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561322a57601d60149054906101000a900460ff161580156131f35750601d60159054906101000a900460ff165b1561322957600061320330611865565b9050602454811061322757602554811061321d5760255490505b61322681613417565b5b505b5b613236858585846136dc565b9150509392505050565b600061324a611e92565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156132b85750613288611e92565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561330e5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133645750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561339e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133d75750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561340f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601d60146101000a81548160ff02191690831515021790555060006012546011546010546134479190614f4a565b6134519190614f4a565b141561345c576136be565b60006002601554601054846134719190614fd1565b61347b9190614fa0565b6134859190614fa0565b905060008183613495919061502b565b90506134a081613a3f565b600047905060006002601554601054846134ba9190614fd1565b6134c49190614fa0565b6134ce9190614fa0565b9050600084111561351f576134e38482613c64565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828660405161351693929190614ea3565b60405180910390a15b6000848661352d919061502b565b11156136b957601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6016546011548486613581919061502b565b61358b9190614fd1565b6135959190614fa0565b9081150290604051600060405180830381858888f193505050501580156135c0573d6000803e3d6000fd5b50601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601654601254848661360f919061502b565b6136199190614fd1565b6136239190614fa0565b9081150290604051600060405180830381858888f1935050505015801561364e573d6000803e3d6000fd5b50601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156136b7573d6000803e3d6000fd5b505b505050505b6000601d60146101000a81548160ff02191690831515021790555050565b6000602660009054906101000a900460ff1615613906576136fc85611e3c565b8061370c575061370b84611e3c565b5b1561374c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374390614d6e565b60405180910390fd5b602660019054906101000a900460ff166137d25761376a8585613d26565b602660019054906101000a900460ff1615801561378d575061378c8585613240565b5b156137cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137c490614c8e565b60405180910390fd5b613905565b600060285411801561382d5750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561383f575061383e8585613240565b5b1561390457602b5460285443613855919061502b565b1015613903576001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602c60008154809291906138c690615173565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e5846040516138fa9190614b11565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613955919061502b565b925050819055506000826139695783613975565b613974868686613edc565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139c69190614f4a565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a2a9190614e2e565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613a5c57613a5b615278565b5b604051908082528060200260200182016040528015613a8a5781602001602082028036833780820191505090505b5090503081600081518110613aa257613aa1615249565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613b4457600080fd5b505afa158015613b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7c9190614384565b81600181518110613b9057613b8f615249565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613c2e959493929190614e49565b600060405180830381600087803b158015613c4857600080fd5b505af1158015613c5c573d6000803e3d6000fd5b505050505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613ccd96959493929190614b55565b6060604051808303818588803b158015613ce657600080fd5b505af1158015613cfa573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d1f9190614644565b5050505050565b602660019054906101000a900460ff1615613d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d6d90614c6e565b60405180910390fd5b613d808282613240565b158015613dda5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613ed8576002602b5414613e025761138843613df79190614f4a565b602881905550613e0a565b436028819055505b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602660016101000a81548160ff021916908315150217905550426029819055506001601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1596001604051613ecf9190614bb6565b60405180910390a15b5050565b600080601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415614024576000613f4085611865565b1115613fd657600954600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442613f94919061502b565b1015613fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fcc90614c0e565b60405180910390fd5b5b42600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d54905061408b565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561408457600e54905061408a565b600f5490505b5b6140958585613240565b156140bb57600060275414806140b0575062010f2c60275414155b156140ba57600080fd5b5b60006127106015546014546140d09190614f4a565b60145484876140df9190614fd1565b6140e99190614fd1565b6140f39190614fa0565b6140fd9190614fa0565b905060008161271084876141119190614fd1565b61411b9190614fa0565b614125919061502b565b9050816001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141789190614f4a565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141ce9190614f4a565b9250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516142349190614e2e565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142999190614e2e565b60405180910390a38181866142ae919061502b565b6142b8919061502b565b93505050509392505050565b6000813590506142d381615634565b92915050565b6000815190506142e881615634565b92915050565b6000813590506142fd8161564b565b92915050565b60008135905061431281615662565b92915050565b60008135905061432781615679565b92915050565b60008151905061433c81615679565b92915050565b60008135905061435181615690565b92915050565b60006020828403121561436d5761436c6152a7565b5b600061437b848285016142c4565b91505092915050565b60006020828403121561439a576143996152a7565b5b60006143a8848285016142d9565b91505092915050565b6000806000606084860312156143ca576143c96152a7565b5b60006143d8868287016142ee565b93505060206143e9868287016142ee565b92505060406143fa868287016142ee565b9150509250925092565b6000806040838503121561441b5761441a6152a7565b5b6000614429858286016142c4565b925050602061443a858286016142c4565b9150509250929050565b60008060006060848603121561445d5761445c6152a7565b5b600061446b868287016142c4565b935050602061447c868287016142c4565b925050604061448d86828701614318565b9150509250925092565b600080604083850312156144ae576144ad6152a7565b5b60006144bc858286016142c4565b92505060206144cd85828601614303565b9150509250929050565b600080604083850312156144ee576144ed6152a7565b5b60006144fc858286016142c4565b925050602061450d85828601614318565b9150509250929050565b60006020828403121561452d5761452c6152a7565b5b600061453b84828501614303565b91505092915050565b6000806040838503121561455b5761455a6152a7565b5b600061456985828601614303565b925050602061457a85828601614303565b9150509250929050565b60006020828403121561459a576145996152a7565b5b60006145a884828501614318565b91505092915050565b600080604083850312156145c8576145c76152a7565b5b60006145d685828601614318565b92505060206145e785828601614318565b9150509250929050565b60008060006060848603121561460a576146096152a7565b5b600061461886828701614318565b935050602061462986828701614318565b925050604061463a86828701614318565b9150509250925092565b60008060006060848603121561465d5761465c6152a7565b5b600061466b8682870161432d565b935050602061467c8682870161432d565b925050604061468d8682870161432d565b9150509250925092565b600080600080608085870312156146b1576146b06152a7565b5b60006146bf87828801614318565b94505060206146d087828801614318565b93505060406146e187828801614318565b92505060606146f287828801614318565b91505092959194509250565b600080600080600060a0868803121561471a576147196152a7565b5b600061472888828901614318565b955050602061473988828901614318565b945050604061474a88828901614318565b935050606061475b88828901614318565b925050608061476c88828901614318565b9150509295509295909350565b60006020828403121561478f5761478e6152a7565b5b600061479d84828501614342565b91505092915050565b60006147b283836147be565b60208301905092915050565b6147c78161505f565b82525050565b6147d68161505f565b82525050565b60006147e782614f05565b6147f18185614f28565b93506147fc83614ef5565b8060005b8381101561482d57815161481488826147a6565b975061481f83614f1b565b925050600181019050614800565b5085935050505092915050565b61484381615083565b82525050565b614852816150c6565b82525050565b614861816150d8565b82525050565b600061487282614f10565b61487c8185614f39565b935061488c81856020860161510e565b614895816152ac565b840191505092915050565b60006148ad600c83614f39565b91506148b8826152bd565b602082019050919050565b60006148d0603083614f39565b91506148db826152e6565b604082019050919050565b60006148f3601183614f39565b91506148fe82615335565b602082019050919050565b6000614916602383614f39565b91506149218261535e565b604082019050919050565b6000614939602583614f39565b9150614944826153ad565b604082019050919050565b600061495c601783614f39565b9150614967826153fc565b602082019050919050565b600061497f601383614f39565b915061498a82615425565b602082019050919050565b60006149a2601483614f39565b91506149ad8261544e565b602082019050919050565b60006149c5601283614f39565b91506149d082615477565b602082019050919050565b60006149e8600883614f39565b91506149f3826154a0565b602082019050919050565b6000614a0b601383614f39565b9150614a16826154c9565b602082019050919050565b6000614a2e601083614f39565b9150614a39826154f2565b602082019050919050565b6000614a51600683614f39565b9150614a5c8261551b565b602082019050919050565b6000614a74601a83614f39565b9150614a7f82615544565b602082019050919050565b6000614a97601883614f39565b9150614aa28261556d565b602082019050919050565b6000614aba602583614f39565b9150614ac582615596565b604082019050919050565b6000614add603d83614f39565b9150614ae8826155e5565b604082019050919050565b614afc816150af565b82525050565b614b0b816150b9565b82525050565b6000602082019050614b2660008301846147cd565b92915050565b6000604082019050614b4160008301856147cd565b614b4e60208301846147cd565b9392505050565b600060c082019050614b6a60008301896147cd565b614b776020830188614af3565b614b846040830187614858565b614b916060830186614858565b614b9e60808301856147cd565b614bab60a0830184614af3565b979650505050505050565b6000602082019050614bcb600083018461483a565b92915050565b6000602082019050614be66000830184614849565b92915050565b60006020820190508181036000830152614c068184614867565b905092915050565b60006020820190508181036000830152614c27816148a0565b9050919050565b60006020820190508181036000830152614c47816148c3565b9050919050565b60006020820190508181036000830152614c67816148e6565b9050919050565b60006020820190508181036000830152614c8781614909565b9050919050565b60006020820190508181036000830152614ca78161492c565b9050919050565b60006020820190508181036000830152614cc78161494f565b9050919050565b60006020820190508181036000830152614ce781614972565b9050919050565b60006020820190508181036000830152614d0781614995565b9050919050565b60006020820190508181036000830152614d27816149b8565b9050919050565b60006020820190508181036000830152614d47816149db565b9050919050565b60006020820190508181036000830152614d67816149fe565b9050919050565b60006020820190508181036000830152614d8781614a21565b9050919050565b60006020820190508181036000830152614da781614a44565b9050919050565b60006020820190508181036000830152614dc781614a67565b9050919050565b60006020820190508181036000830152614de781614a8a565b9050919050565b60006020820190508181036000830152614e0781614aad565b9050919050565b60006020820190508181036000830152614e2781614ad0565b9050919050565b6000602082019050614e436000830184614af3565b92915050565b600060a082019050614e5e6000830188614af3565b614e6b6020830187614858565b8181036040830152614e7d81866147dc565b9050614e8c60608301856147cd565b614e996080830184614af3565b9695505050505050565b6000606082019050614eb86000830186614af3565b614ec56020830185614af3565b614ed26040830184614af3565b949350505050565b6000602082019050614eef6000830184614b02565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614f55826150af565b9150614f60836150af565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f9557614f946151bc565b5b828201905092915050565b6000614fab826150af565b9150614fb6836150af565b925082614fc657614fc56151eb565b5b828204905092915050565b6000614fdc826150af565b9150614fe7836150af565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150205761501f6151bc565b5b828202905092915050565b6000615036826150af565b9150615041836150af565b925082821015615054576150536151bc565b5b828203905092915050565b600061506a8261508f565b9050919050565b600061507c8261508f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006150d1826150ea565b9050919050565b60006150e3826150af565b9050919050565b60006150f5826150fc565b9050919050565b60006151078261508f565b9050919050565b60005b8381101561512c578082015181840152602081019050615111565b8381111561513b576000848401525b50505050565b6000600282049050600182168061515957607f821691505b6020821081141561516d5761516c61521a565b5b50919050565b600061517e826150af565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156151b1576151b06151bc565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f42757920636f6f6c646f776e0000000000000000000000000000000000000000600082015250565b7f5374617274696e672050726f74656374696f6e73206861766520616c7265616460008201527f79206265656e2065786563757465642e00000000000000000000000000000000602082015250565b7f43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000600082015250565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b7f4d7573742061646420757020746f203130303000000000000000000000000000600082015250565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b61563d8161505f565b811461564857600080fd5b50565b61565481615071565b811461565f57600080fd5b50565b61566b81615083565b811461567657600080fd5b50565b615682816150af565b811461568d57600080fd5b50565b615699816150b9565b81146156a457600080fd5b5056fea2646970667358221220a7141fc337f0dc6f2abb3e7705d681b6c6fa2fdab826f53b1ebafc94f292833c64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102765760003560e01c8063590f897e1161014f578063a457c2d7116100c1578063e078e9f71161007a578063e078e9f714610999578063e79d4160146109c2578063e9dae5ed146109ed578063eafb5a3c14610a16578063eec2744e14610a3f578063fb78680d14610a685761027d565b8063a457c2d714610863578063a9059cbb146108a0578063b1b08f71146108dd578063b3d514fb14610908578063c49b9a8014610933578063dd62ed3e1461095c5761027d565b806380c581d11161011357806380c581d11461075357806381c6f11b1461077c578063893d20e8146107a557806389fd9bc1146107d05780638da5cb5b1461080d57806395d89b41146108385761027d565b8063590f897e14610682578063590ffdce146106ad57806370a08231146106d6578063715018a61461071357806375cb1bd11461072a5761027d565b80633df9a8d2116101e8578063469c0ef5116101ac578063469c0ef5146105605780634a74bb02146105895780634fb2e45d146105b45780634fbee193146105dd57806350a8e0161461061a578063571ac8b0146106455761027d565b80633df9a8d21461048d5780633f3cf56c146104b857806340b9a54b146104e15780634129ecee1461050c578063452ed4f1146105355761027d565b806318160ddd1161023a57806318160ddd1461036957806323b872dd1461039457806326003957146103d15780632b28fc7a146103fa578063313ce5671461042557806339509351146104505761027d565b806303fd2a4514610282578063044df726146102ad57806306fdde03146102d65780630758d92414610301578063095ea7b31461032c5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a91565b6040516102a49190614b11565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190614544565b610a97565b005b3480156102e257600080fd5b506102eb610b64565b6040516102f89190614bec565b60405180910390f35b34801561030d57600080fd5b50610316610bf6565b6040516103239190614bd1565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e91906144d7565b610c1c565b6040516103609190614bb6565b60405180910390f35b34801561037557600080fd5b5061037e610c3a565b60405161038b9190614e2e565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b69190614444565b610c44565b6040516103c89190614bb6565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f391906145b1565b610d91565b005b34801561040657600080fd5b5061040f610ea1565b60405161041c9190614e2e565b60405180910390f35b34801561043157600080fd5b5061043a610ea7565b6040516104479190614eda565b60405180910390f35b34801561045c57600080fd5b50610477600480360381019061047291906144d7565b610eb0565b6040516104849190614bb6565b60405180910390f35b34801561049957600080fd5b506104a2610f5c565b6040516104af9190614e2e565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da91906145b1565b610f62565b005b3480156104ed57600080fd5b506104f6611072565b6040516105039190614e2e565b60405180910390f35b34801561051857600080fd5b50610533600480360381019061052e9190614779565b611078565b005b34801561054157600080fd5b5061054a611178565b6040516105579190614b11565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190614584565b61119e565b005b34801561059557600080fd5b5061059e61124f565b6040516105ab9190614bb6565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d69190614357565b611262565b005b3480156105e957600080fd5b5061060460048036038101906105ff9190614357565b6116d3565b6040516106119190614bb6565b60405180910390f35b34801561062657600080fd5b5061062f611729565b60405161063c9190614bb6565b60405180910390f35b34801561065157600080fd5b5061066c60048036038101906106679190614357565b61173c565b6040516106799190614bb6565b60405180910390f35b34801561068e57600080fd5b5061069761176f565b6040516106a49190614e2e565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf9190614497565b611775565b005b3480156106e257600080fd5b506106fd60048036038101906106f89190614357565b611865565b60405161070a9190614e2e565b60405180910390f35b34801561071f57600080fd5b506107286118ae565b005b34801561073657600080fd5b50610751600480360381019061074c91906143b1565b611a2c565b005b34801561075f57600080fd5b5061077a60048036038101906107759190614497565b611b89565b005b34801561078857600080fd5b506107a3600480360381019061079e9190614584565b611d49565b005b3480156107b157600080fd5b506107ba611e2d565b6040516107c79190614b11565b60405180910390f35b3480156107dc57600080fd5b506107f760048036038101906107f29190614357565b611e3c565b6040516108049190614bb6565b60405180910390f35b34801561081957600080fd5b50610822611e92565b60405161082f9190614b11565b60405180910390f35b34801561084457600080fd5b5061084d611ebb565b60405161085a9190614bec565b60405180910390f35b34801561086f57600080fd5b5061088a600480360381019061088591906144d7565b611f4d565b6040516108979190614bb6565b60405180910390f35b3480156108ac57600080fd5b506108c760048036038101906108c291906144d7565b611ff9565b6040516108d49190614bb6565b60405180910390f35b3480156108e957600080fd5b506108f2612018565b6040516108ff9190614e2e565b60405180910390f35b34801561091457600080fd5b5061091d61201e565b60405161092a9190614e2e565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190614517565b612024565b005b34801561096857600080fd5b50610983600480360381019061097e9190614404565b61210d565b6040516109909190614e2e565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb91906146fe565b612194565b005b3480156109ce57600080fd5b506109d76122c3565b6040516109e49190614e2e565b60405180910390f35b3480156109f957600080fd5b50610a146004803603810190610a0f91906145f1565b6122c9565b005b348015610a2257600080fd5b50610a3d6004803603810190610a389190614357565b6123d9565b005b348015610a4b57600080fd5b50610a666004803603810190610a619190614497565b612885565b005b348015610a7457600080fd5b50610a8f6004803603810190610a8a9190614697565b612975565b005b61dead81565b610a9f612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2390614c4e565b60405180910390fd5b81602660006101000a81548160ff02191690831515021790555080602d60006101000a81548160ff0219169083151502179055505050565b6060600b8054610b7390615141565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9f90615141565b8015610bec5780601f10610bc157610100808354040283529160200191610bec565b820191906000526020600020905b815481529060010190602001808311610bcf57829003601f168201915b5050505050905090565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c30610c29612a4e565b8484612a56565b6001905092915050565b6000601754905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d7d5781600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d75919061502b565b925050819055505b610d88848484612c21565b90509392505050565b610d99612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d90614c4e565b60405180910390fd5b60008183601754610e379190614fd1565b610e419190614fa0565b905061012c601754610e539190614fa0565b811015610e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8c90614dee565b60405180910390fd5b80602381905550505050565b6104b081565b60006009905090565b6000610f52610ebd612a4e565b848460046000610ecb612a4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f4d9190614f4a565b612a56565b6001905092915050565b600f5481565b610f6a612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fee90614c4e565b60405180910390fd5b600081836017546110089190614fd1565b6110129190614fa0565b905061012c6017546110249190614fa0565b811015611066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105d90614dee565b60405180910390fd5b80602081905550505050565b600d5481565b611080612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490614c4e565b60405180910390fd5b6000602b5414801561112c5750602660019054906101000a900460ff16155b61116b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116290614c2e565b60405180910390fd5b8060ff16602b8190555050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111a6612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122a90614c4e565b60405180910390fd5b60006001826112429190614fd1565b9050806009819055505050565b601d60159054906101000a900460ff1681565b61126a612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee90614c4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e90614e0e565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf90614e0e565b60405180910390fd5b61140360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611775565b61140e816001611775565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156114c65780601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6114ef60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611865565b600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006115bb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611865565b11156116165761161460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261160f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611865565b612c21565b505b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b602660019054906101000a900460ff1681565b6000611768827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610c1c565b9050919050565b600e5481565b61177d612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190614c4e565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118b6612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a90614c4e565b60405180910390fd5b61196e60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611775565b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b611a34612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab890614c4e565b60405180910390fd5b82601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b611b91612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1590614c4e565b60405180910390fd5b600015158115151415611c88576000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611d45565b600060035414611ce55762093a8060035442611ca4919061502b565b11611ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdb90614d0e565b60405180910390fd5b5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550426003819055505b5050565b611d51612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd590614c4e565b60405180910390fd5b600060275414611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1a90614d8e565b60405180910390fd5b8060278190555050565b6000611e37611e92565b905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054611eca90615141565b80601f0160208091040260200160405190810160405280929190818152602001828054611ef690615141565b8015611f435780601f10611f1857610100808354040283529160200191611f43565b820191906000526020600020905b815481529060010190602001808311611f2657829003601f168201915b5050505050905090565b6000611fef611f5a612a4e565b848460046000611f68612a4e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fea919061502b565b612a56565b6001905092915050565b600061200d612006612a4e565b8484612c21565b506001905092915050565b6109c481565b6109c481565b61202c612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b090614c4e565b60405180910390fd5b80601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516121029190614bb6565b60405180910390a150565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61219c612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222090614c4e565b60405180910390fd5b61044c818385878961223b9190614f4a565b6122459190614f4a565b61224f9190614f4a565b6122599190614f4a565b14612299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229090614cce565b60405180910390fd5b84601081905550836011819055508260128190555081601381905550806014819055505050505050565b602c5481565b6122d1612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461235e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235590614c4e565b60405180910390fd5b6104b0831115801561237257506109c48211155b801561238057506109c48111155b6123bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b690614cae565b60405180910390fd5b82600d8190555081600e8190555080600f81905550505050565b6123e1612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461246e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246590614c4e565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156124bb57600080fd5b505afa1580156124cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f39190614384565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561255557600080fd5b505afa158015612569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258d9190614384565b6040518363ffffffff1660e01b81526004016125aa929190614b2c565b60206040518083038186803b1580156125c257600080fd5b505afa1580156125d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fa9190614384565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156127fd578173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561267757600080fd5b505afa15801561268b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126af9190614384565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561271157600080fd5b505afa158015612725573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127499190614384565b6040518363ffffffff1660e01b8152600401612766929190614b2c565b602060405180830381600087803b15801561278057600080fd5b505af1158015612794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b89190614384565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061283f565b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b61288d612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461291a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291190614c4e565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61297d612a4e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0190614c4e565b60405180910390fd5b8284601754612a199190614fd1565b612a239190614fa0565b6024819055508082601754612a389190614fd1565b612a429190614fa0565b60258190555050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ac6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612abd90614d4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2d90614d4e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c149190614e2e565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8990614cee565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf990614cee565b60405180910390fd5b60008211612d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3c90614d2e565b60405180910390fd5b612d4f8484613240565b156130c757602d60009054906101000a900460ff1615612ee257600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e505743602e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612e0757600080fd5b43602e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ee1565b43602e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415612e9c57600080fd5b43602e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f835750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612fce57602054821115612fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc490614dce565b60405180910390fd5b5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156130685750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156130c6576023548261307a85611865565b6130849190614f4a565b11156130c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130bc90614dae565b60405180910390fd5b5b5b600060019050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061316e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561317857600090505b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561322a57601d60149054906101000a900460ff161580156131f35750601d60159054906101000a900460ff165b1561322957600061320330611865565b9050602454811061322757602554811061321d5760255490505b61322681613417565b5b505b5b613236858585846136dc565b9150509392505050565b600061324a611e92565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156132b85750613288611e92565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561330e5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133645750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561339e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133d75750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561340f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6001601d60146101000a81548160ff02191690831515021790555060006012546011546010546134479190614f4a565b6134519190614f4a565b141561345c576136be565b60006002601554601054846134719190614fd1565b61347b9190614fa0565b6134859190614fa0565b905060008183613495919061502b565b90506134a081613a3f565b600047905060006002601554601054846134ba9190614fd1565b6134c49190614fa0565b6134ce9190614fa0565b9050600084111561351f576134e38482613c64565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828660405161351693929190614ea3565b60405180910390a15b6000848661352d919061502b565b11156136b957601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6016546011548486613581919061502b565b61358b9190614fd1565b6135959190614fa0565b9081150290604051600060405180830381858888f193505050501580156135c0573d6000803e3d6000fd5b50601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601654601254848661360f919061502b565b6136199190614fd1565b6136239190614fa0565b9081150290604051600060405180830381858888f1935050505015801561364e573d6000803e3d6000fd5b50601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156136b7573d6000803e3d6000fd5b505b505050505b6000601d60146101000a81548160ff02191690831515021790555050565b6000602660009054906101000a900460ff1615613906576136fc85611e3c565b8061370c575061370b84611e3c565b5b1561374c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161374390614d6e565b60405180910390fd5b602660019054906101000a900460ff166137d25761376a8585613d26565b602660019054906101000a900460ff1615801561378d575061378c8585613240565b5b156137cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137c490614c8e565b60405180910390fd5b613905565b600060285411801561382d5750600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561383f575061383e8585613240565b5b1561390457602b5460285443613855919061502b565b1015613903576001600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550602c60008154809291906138c690615173565b91905055507f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e5846040516138fa9190614b11565b60405180910390a15b5b5b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613955919061502b565b925050819055506000826139695783613975565b613974868686613edc565b5b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139c69190614f4a565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a2a9190614e2e565b60405180910390a36001915050949350505050565b6000600267ffffffffffffffff811115613a5c57613a5b615278565b5b604051908082528060200260200182016040528015613a8a5781602001602082028036833780820191505090505b5090503081600081518110613aa257613aa1615249565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613b4457600080fd5b505afa158015613b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7c9190614384565b81600181518110613b9057613b8f615249565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613c2e959493929190614e49565b600060405180830381600087803b158015613c4857600080fd5b505af1158015613c5c573d6000803e3d6000fd5b505050505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613ccd96959493929190614b55565b6060604051808303818588803b158015613ce657600080fd5b505af1158015613cfa573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d1f9190614644565b5050505050565b602660019054906101000a900460ff1615613d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d6d90614c6e565b60405180910390fd5b613d808282613240565b158015613dda5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15613ed8576002602b5414613e025761138843613df79190614f4a565b602881905550613e0a565b436028819055505b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602660016101000a81548160ff021916908315150217905550426029819055506001601d60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1596001604051613ecf9190614bb6565b60405180910390a15b5050565b600080601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415614024576000613f4085611865565b1115613fd657600954600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442613f94919061502b565b1015613fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fcc90614c0e565b60405180910390fd5b5b42600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d54905061408b565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561408457600e54905061408a565b600f5490505b5b6140958585613240565b156140bb57600060275414806140b0575062010f2c60275414155b156140ba57600080fd5b5b60006127106015546014546140d09190614f4a565b60145484876140df9190614fd1565b6140e99190614fd1565b6140f39190614fa0565b6140fd9190614fa0565b905060008161271084876141119190614fd1565b61411b9190614fa0565b614125919061502b565b9050816001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141789190614f4a565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141ce9190614f4a565b9250508190555061dead73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516142349190614e2e565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142999190614e2e565b60405180910390a38181866142ae919061502b565b6142b8919061502b565b93505050509392505050565b6000813590506142d381615634565b92915050565b6000815190506142e881615634565b92915050565b6000813590506142fd8161564b565b92915050565b60008135905061431281615662565b92915050565b60008135905061432781615679565b92915050565b60008151905061433c81615679565b92915050565b60008135905061435181615690565b92915050565b60006020828403121561436d5761436c6152a7565b5b600061437b848285016142c4565b91505092915050565b60006020828403121561439a576143996152a7565b5b60006143a8848285016142d9565b91505092915050565b6000806000606084860312156143ca576143c96152a7565b5b60006143d8868287016142ee565b93505060206143e9868287016142ee565b92505060406143fa868287016142ee565b9150509250925092565b6000806040838503121561441b5761441a6152a7565b5b6000614429858286016142c4565b925050602061443a858286016142c4565b9150509250929050565b60008060006060848603121561445d5761445c6152a7565b5b600061446b868287016142c4565b935050602061447c868287016142c4565b925050604061448d86828701614318565b9150509250925092565b600080604083850312156144ae576144ad6152a7565b5b60006144bc858286016142c4565b92505060206144cd85828601614303565b9150509250929050565b600080604083850312156144ee576144ed6152a7565b5b60006144fc858286016142c4565b925050602061450d85828601614318565b9150509250929050565b60006020828403121561452d5761452c6152a7565b5b600061453b84828501614303565b91505092915050565b6000806040838503121561455b5761455a6152a7565b5b600061456985828601614303565b925050602061457a85828601614303565b9150509250929050565b60006020828403121561459a576145996152a7565b5b60006145a884828501614318565b91505092915050565b600080604083850312156145c8576145c76152a7565b5b60006145d685828601614318565b92505060206145e785828601614318565b9150509250929050565b60008060006060848603121561460a576146096152a7565b5b600061461886828701614318565b935050602061462986828701614318565b925050604061463a86828701614318565b9150509250925092565b60008060006060848603121561465d5761465c6152a7565b5b600061466b8682870161432d565b935050602061467c8682870161432d565b925050604061468d8682870161432d565b9150509250925092565b600080600080608085870312156146b1576146b06152a7565b5b60006146bf87828801614318565b94505060206146d087828801614318565b93505060406146e187828801614318565b92505060606146f287828801614318565b91505092959194509250565b600080600080600060a0868803121561471a576147196152a7565b5b600061472888828901614318565b955050602061473988828901614318565b945050604061474a88828901614318565b935050606061475b88828901614318565b925050608061476c88828901614318565b9150509295509295909350565b60006020828403121561478f5761478e6152a7565b5b600061479d84828501614342565b91505092915050565b60006147b283836147be565b60208301905092915050565b6147c78161505f565b82525050565b6147d68161505f565b82525050565b60006147e782614f05565b6147f18185614f28565b93506147fc83614ef5565b8060005b8381101561482d57815161481488826147a6565b975061481f83614f1b565b925050600181019050614800565b5085935050505092915050565b61484381615083565b82525050565b614852816150c6565b82525050565b614861816150d8565b82525050565b600061487282614f10565b61487c8185614f39565b935061488c81856020860161510e565b614895816152ac565b840191505092915050565b60006148ad600c83614f39565b91506148b8826152bd565b602082019050919050565b60006148d0603083614f39565b91506148db826152e6565b604082019050919050565b60006148f3601183614f39565b91506148fe82615335565b602082019050919050565b6000614916602383614f39565b91506149218261535e565b604082019050919050565b6000614939602583614f39565b9150614944826153ad565b604082019050919050565b600061495c601783614f39565b9150614967826153fc565b602082019050919050565b600061497f601383614f39565b915061498a82615425565b602082019050919050565b60006149a2601483614f39565b91506149ad8261544e565b602082019050919050565b60006149c5601283614f39565b91506149d082615477565b602082019050919050565b60006149e8600883614f39565b91506149f3826154a0565b602082019050919050565b6000614a0b601383614f39565b9150614a16826154c9565b602082019050919050565b6000614a2e601083614f39565b9150614a39826154f2565b602082019050919050565b6000614a51600683614f39565b9150614a5c8261551b565b602082019050919050565b6000614a74601a83614f39565b9150614a7f82615544565b602082019050919050565b6000614a97601883614f39565b9150614aa28261556d565b602082019050919050565b6000614aba602583614f39565b9150614ac582615596565b604082019050919050565b6000614add603d83614f39565b9150614ae8826155e5565b604082019050919050565b614afc816150af565b82525050565b614b0b816150b9565b82525050565b6000602082019050614b2660008301846147cd565b92915050565b6000604082019050614b4160008301856147cd565b614b4e60208301846147cd565b9392505050565b600060c082019050614b6a60008301896147cd565b614b776020830188614af3565b614b846040830187614858565b614b916060830186614858565b614b9e60808301856147cd565b614bab60a0830184614af3565b979650505050505050565b6000602082019050614bcb600083018461483a565b92915050565b6000602082019050614be66000830184614849565b92915050565b60006020820190508181036000830152614c068184614867565b905092915050565b60006020820190508181036000830152614c27816148a0565b9050919050565b60006020820190508181036000830152614c47816148c3565b9050919050565b60006020820190508181036000830152614c67816148e6565b9050919050565b60006020820190508181036000830152614c8781614909565b9050919050565b60006020820190508181036000830152614ca78161492c565b9050919050565b60006020820190508181036000830152614cc78161494f565b9050919050565b60006020820190508181036000830152614ce781614972565b9050919050565b60006020820190508181036000830152614d0781614995565b9050919050565b60006020820190508181036000830152614d27816149b8565b9050919050565b60006020820190508181036000830152614d47816149db565b9050919050565b60006020820190508181036000830152614d67816149fe565b9050919050565b60006020820190508181036000830152614d8781614a21565b9050919050565b60006020820190508181036000830152614da781614a44565b9050919050565b60006020820190508181036000830152614dc781614a67565b9050919050565b60006020820190508181036000830152614de781614a8a565b9050919050565b60006020820190508181036000830152614e0781614aad565b9050919050565b60006020820190508181036000830152614e2781614ad0565b9050919050565b6000602082019050614e436000830184614af3565b92915050565b600060a082019050614e5e6000830188614af3565b614e6b6020830187614858565b8181036040830152614e7d81866147dc565b9050614e8c60608301856147cd565b614e996080830184614af3565b9695505050505050565b6000606082019050614eb86000830186614af3565b614ec56020830185614af3565b614ed26040830184614af3565b949350505050565b6000602082019050614eef6000830184614b02565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614f55826150af565b9150614f60836150af565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614f9557614f946151bc565b5b828201905092915050565b6000614fab826150af565b9150614fb6836150af565b925082614fc657614fc56151eb565b5b828204905092915050565b6000614fdc826150af565b9150614fe7836150af565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150205761501f6151bc565b5b828202905092915050565b6000615036826150af565b9150615041836150af565b925082821015615054576150536151bc565b5b828203905092915050565b600061506a8261508f565b9050919050565b600061507c8261508f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006150d1826150ea565b9050919050565b60006150e3826150af565b9050919050565b60006150f5826150fc565b9050919050565b60006151078261508f565b9050919050565b60005b8381101561512c578082015181840152602081019050615111565b8381111561513b576000848401525b50505050565b6000600282049050600182168061515957607f821691505b6020821081141561516d5761516c61521a565b5b50919050565b600061517e826150af565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156151b1576151b06151bc565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f42757920636f6f6c646f776e0000000000000000000000000000000000000000600082015250565b7f5374617274696e672050726f74656374696f6e73206861766520616c7265616460008201527f79206265656e2065786563757465642e00000000000000000000000000000000602082015250565b7f43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000600082015250565b7f4c697175696469747920616c726561647920616464656420616e64206d61726b60008201527f65642e0000000000000000000000000000000000000000000000000000000000602082015250565b7f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060008201527f74696d652e000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000600082015250565b7f4d7573742061646420757020746f203130303000000000000000000000000000600082015250565b7f45524332303a205a65726f20616464726573732e000000000000000000000000600082015250565b7f4f6e65207765656b20636f6f6c646f776e2e0000000000000000000000000000600082015250565b7f4d757374203e302e000000000000000000000000000000000000000000000000600082015250565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b7f536e697065722072656a65637465642e00000000000000000000000000000000600082015250565b7f4572726f722e0000000000000000000000000000000000000000000000000000600082015250565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b7f4578636565647320746865206d61785478416d6f756e742e0000000000000000600082015250565b7f4d7573742062652061626f766520302e33337e25206f6620746f74616c20737560008201527f70706c792e000000000000000000000000000000000000000000000000000000602082015250565b7f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660008201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000602082015250565b61563d8161505f565b811461564857600080fd5b50565b61565481615071565b811461565f57600080fd5b50565b61566b81615083565b811461567657600080fd5b50565b615682816150af565b811461568d57600080fd5b50565b615699816150b9565b81146156a457600080fd5b5056fea2646970667358221220a7141fc337f0dc6f2abb3e7705d681b6c6fa2fdab826f53b1ebafc94f292833c64736f6c63430008070033

Deployed Bytecode Sourcemap

5797:20212:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7678:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16877:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12829:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7488:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13442:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12564:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14056:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18108:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6656:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12653:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14370:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6613:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17842:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6540:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16652:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7530:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16168:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8130:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11247:761;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15753:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8697:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13928:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6576:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15886:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13142:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12016:195;;;;;;;;;;;;;:::i;:::-;;18676:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15335:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16337:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12915:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16028:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11160:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12739:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14593:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13267:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6755:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6705:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18962:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13001:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17054:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8965:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17459:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14826:501;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16503:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18379:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7678:73;7709:42;7678:73;:::o;16877:169::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16991:9:::1;16972:16;;:28;;;;;;;;;;;;;;;;;;17029:9;17011:15;;:27;;;;;;;;;;;;;;;;;;16877:169:::0;;:::o;12829:80::-;12877:13;12901:5;12894:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12829:80;:::o;7488:35::-;;;;;;;;;;;;;:::o;13442:161::-;13517:4;13534:39;13543:12;:10;:12::i;:::-;13557:7;13566:6;13534:8;:39::i;:::-;13591:4;13584:11;;13442:161;;;;:::o;12564:83::-;12619:7;12637;;12630:14;;12564:83;:::o;14056:306::-;14156:4;14212:17;14177:11;:19;14189:6;14177:19;;;;;;;;;;;;;;;:31;14197:10;14177:31;;;;;;;;;;;;;;;;:52;14173:126;;14281:6;14246:11;:19;14258:6;14246:19;;;;;;;;;;;;;;;:31;14266:10;14246:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;14173:126;14318:36;14328:6;14336:9;14347:6;14318:9;:36::i;:::-;14311:43;;14056:306;;;;;:::o;18108:263::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;18198:13:::1;18236:7;18225;18215;;:17;;;;:::i;:::-;18214:29;;;;:::i;:::-;18198:45;;18282:3;18272:7;;:13;;;;:::i;:::-;18262:5;:24;;18254:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18356:5;18339:14;:22;;;;18187:184;18108:263:::0;;:::o;6656:42::-;6694:4;6656:42;:::o;12653:80::-;12705:5;7379:1;12714:16;;12653:80;:::o;14370:215::-;14458:4;14475:80;14484:12;:10;:12::i;:::-;14498:7;14544:10;14507:11;:25;14519:12;:10;:12::i;:::-;14507:25;;;;;;;;;;;;;;;:34;14533:7;14507:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;14475:8;:80::i;:::-;14573:4;14566:11;;14370:215;;;;:::o;6613:34::-;;;;:::o;17842:258::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17931:13:::1;17969:7;17958;17948;;:17;;;;:::i;:::-;17947:29;;;;:::i;:::-;17931:45;;18015:3;18005:7;;:13;;;;:::i;:::-;17995:5;:24;;17987:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18087:5;18072:12;:20;;;;17920:180;17842:258:::0;;:::o;6540:29::-;;;;:::o;16652:217::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16753:1:::1;16736:13;;:18;:39;;;;;16759:16;;;;;;;;;;;16758:17;16736:39;16727:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;16855:6;16839:22;;:13;:22;;;;16652:217:::0;:::o;7530:21::-;;;;;;;;;;;;;:::o;16168:161::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16240:21:::1;16274:9;16264:7;:19;;;;:::i;:::-;16240:43;;16308:13;16294:11;:27;;;;16229:100;16168:161:::0;:::o;8130:41::-;;;;;;;;;;;;;:::o;11247:761::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11348:1:::1;11328:22;;:8;:22;;;;11320:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;7709:42;11435:16;;:8;:16;;;;11427:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;11528:34;11548:6;::::0;::::1;;;;;;;;11556:5;11528:19;:34::i;:::-;11573:35;11593:8;11603:4;11573:19;:35::i;:::-;11661:6;::::0;::::1;;;;;;;;11633:35;;:16;;;;;;;;;;;:35;;;11629:90;;;11710:8;11683:16;;:36;;;;;;;;;;;;;;;;;;11629:90;11772:17;11782:6;::::0;::::1;;;;;;;;11772:9;:17::i;:::-;11740:11;:19;11752:6:::0;::::1;;;;;;;;;;11740:19;;;;;;;;;;;;;;;:29;11760:8;11740:29;;;;;;;;;;;;;;;:49;;;;11823:1;11803:17;11813:6;::::0;::::1;;;;;;;;11803:9;:17::i;:::-;:21;11800:99;;;11841:46;11851:6;::::0;::::1;;;;;;;;11859:8;11869:17;11879:6;::::0;::::1;;;;;;;;11869:9;:17::i;:::-;11841:9;:46::i;:::-;;11800:99;11928:8;11919:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;11981:8;11952:38;;11973:6;::::0;::::1;;;;;;;;11952:38;;;;;;;;;;;;11247:761:::0;:::o;15753:125::-;15818:4;15842:19;:28;15862:7;15842:28;;;;;;;;;;;;;;;;;;;;;;;;;15835:35;;15753:125;;;:::o;8697:36::-;;;;;;;;;;;;;:::o;13928:120::-;13981:4;14005:35;14013:7;14022:17;14005:7;:35::i;:::-;13998:42;;13928:120;;;:::o;6576:30::-;;;;:::o;15886:134::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16005:7:::1;15974:19;:28;15994:7;15974:28;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15886:134:::0;;:::o;13142:117::-;13208:7;13235;:16;13243:7;13235:16;;;;;;;;;;;;;;;;13228:23;;13142:117;;;:::o;12016:195::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;12083:34:::1;12103:6;::::0;::::1;;;;;;;;12111:5;12083:19;:34::i;:::-;12145:1;12128:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;12200:1;12163:40;;12184:6;::::0;::::1;;;;;;;;12163:40;;;;;;;;;;;;12016:195::o:0;18676:278::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;18842:15:::1;18815:16;;:43;;;;;;;;;;;;;;;;;;18891:10;18869:11;;:33;;;;;;;;;;;;;;;;;;18935:10;18913:11;;:33;;;;;;;;;;;;;;;;;;18676:278:::0;;;:::o;15335:410::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15427:5:::1;15416:16;;:7;:16;;;15412:326;;;15465:5;15449:7;:13;15457:4;15449:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15412:326;;;15528:1;15507:17;;:22;15503:139;;15596:7;15576:17;;15558:15;:35;;;;:::i;:::-;:45;15550:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15503:139;15672:4;15656:7;:13;15664:4;15656:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15711:15;15691:17;:35;;;;15412:326;15335:410:::0;;:::o;16337:158::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16436:1:::1;16419:13;;:18;16410:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;16475:12;16459:13;:28;;;;16337:158:::0;:::o;12915:80::-;12967:7;12985;:5;:7::i;:::-;12978:14;;12915:80;:::o;16028:132::-;16097:4;16121:22;:31;16144:7;16121:31;;;;;;;;;;;;;;;;;;;;;;;;;16114:38;;16028:132;;;:::o;11160:79::-;11198:7;11225:6;;;;;;;;;;;11218:13;;11160:79;:::o;12739:84::-;12789:13;12813:7;12806:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12739:84;:::o;14593:225::-;14686:4;14703:85;14712:12;:10;:12::i;:::-;14726:7;14772:15;14735:11;:25;14747:12;:10;:12::i;:::-;14735:25;;;;;;;;;;;;;;;:34;14761:7;14735:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;14703:8;:85::i;:::-;14806:4;14799:11;;14593:225;;;;:::o;13267:167::-;13345:4;13362:42;13372:12;:10;:12::i;:::-;13386:9;13397:6;13362:9;:42::i;:::-;;13422:4;13415:11;;13267:167;;;;:::o;6755:47::-;6798:4;6755:47;:::o;6705:43::-;6744:4;6705:43;:::o;18962:171::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;19063:8:::1;19039:21;;:32;;;;;;;;;;;;;;;;;;19087:38;19116:8;19087:38;;;;;;:::i;:::-;;;;;;;;18962:171:::0;:::o;13001:133::-;13085:7;13103:11;:19;13115:6;13103:19;;;;;;;;;;;;;;;:28;13123:7;13103:28;;;;;;;;;;;;;;;;13096:35;;13001:133;;;;:::o;17054:397::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17251:4:::1;17237:9;17230:4;17223;17211:9;17199;:21;;;;:::i;:::-;:28;;;;:::i;:::-;:35;;;;:::i;:::-;:47;;;;:::i;:::-;17198:57;17188:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;17308:9;17290:15;:27;;;;17346:9;17328:15;:27;;;;17378:4;17366:9;:16;;;;17406:4;17393:10;:17;;;;17434:9;17421:10;:22;;;;17054:397:::0;;;;;:::o;8965:32::-;;;;:::o;17459:373::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6694:4:::1;17569:6;:21;;:65;;;;;6744:4;17611:7;:23;;17569:65;:117;;;;;6798:4;17655:11;:31;;17569:117;17561:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;17752:6;17742:7;:16;;;;17780:7;17769:8;:18;;;;17813:11;17798:12;:26;;;;17459:373:::0;;;:::o;14826:501::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;14897:29:::1;14948:9;14897:61;;14969:16;15006:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14988:47;;;15044:4;15051:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14988:81;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14969:100;;15104:1;15084:22;;:8;:22;;;15080:207;;;15150:10;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15132:50;;;15191:4;15198:10;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15132:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15123:6;;:93;;;;;;;;;;;;;;;;;;15080:207;;;15267:8;15258:6;;:17;;;;;;;;;;;;;;;;;;15080:207;15309:10;15297:9;;:22;;;;;;;;;;;;;;;;;;14886:441;;14826:501:::0;:::o;16503:141::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16629:7:::1;16595:22;:31;16618:7;16595:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;16503:141:::0;;:::o;18379:289::-;9669:12;:10;:12::i;:::-;9659:22;;:6;;;;;;;;;;:22;;;9651:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;18579:16:::1;18559;18549:7;;:26;;;;:::i;:::-;18548:47;;;;:::i;:::-;18532:13;:63;;;;18647:13;18630;18620:7;;:23;;;;:::i;:::-;18619:41;;;;:::i;:::-;18606:10;:54;;;;18379:289:::0;;;;:::o;190:107::-;235:15;278:10;263:26;;190:107;:::o;13611:309::-;13723:1;13705:20;;:6;:20;;;;13697:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13787:1;13768:21;;:7;:21;;;;13760:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13857:6;13826:11;:19;13838:6;13826:19;;;;;;;;;;;;;;;:28;13846:7;13826:28;;;;;;;;;;;;;;;:37;;;;13896:7;13879:33;;13888:6;13879:33;;;13905:6;13879:33;;;;;;:::i;:::-;;;;;;;;13611:309;;;:::o;19472:1646::-;19551:4;19592:1;19576:18;;:4;:18;;;;19568:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19652:1;19638:16;;:2;:16;;;;19630:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19707:1;19698:6;:10;19690:31;;;;;;;;;;;;:::i;:::-;;;;;;;;;19735:20;19746:4;19752:2;19735:10;:20::i;:::-;19732:707;;;19776:15;;;;;;;;;;;19772:347;;;19816:7;:13;19824:4;19816:13;;;;;;;;;;;;;;;;;;;;;;;;;19812:292;;;19878:12;19861:9;:13;19871:2;19861:13;;;;;;;;;;;;;;;;:29;;19853:38;;;;;;19930:12;19914:9;:13;19924:2;19914:13;;;;;;;;;;;;;;;:28;;;;19812:292;;;20018:12;19999:9;:15;20009:4;19999:15;;;;;;;;;;;;;;;;:31;;19991:40;;;;;;20072:12;20054:9;:15;20064:4;20054:15;;;;;;;;;;;;;;;:30;;;;19812:292;19772:347;20136:7;:13;20144:4;20136:13;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;;20153:7;:11;20161:2;20153:11;;;;;;;;;;;;;;;;;;;;;;;;;20136:28;20133:126;;;20202:12;;20192:6;:22;;20184:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;20133:126;7621:42;20276:20;;:2;:20;;;;:36;;;;;20301:7;:11;20309:2;20301:11;;;;;;;;;;;;;;;;;;;;;;;;;20300:12;20276:36;20273:155;;;20367:14;;20357:6;20341:13;20351:2;20341:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;20333:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;20273:155;19732:707;20451:12;20466:4;20451:19;;20484;:25;20504:4;20484:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20513:19;:23;20533:2;20513:23;;;;;;;;;;;;;;;;;;;;;;;;;20484:52;20481:98;;;20562:5;20552:15;;20481:98;20595:7;:11;20603:2;20595:11;;;;;;;;;;;;;;;;;;;;;;;;;20591:457;;;20628:16;;;;;;;;;;;20627:17;:59;;;;;20665:21;;;;;;;;;;;20627:59;20623:408;;;20721:28;20752:24;20770:4;20752:9;:24::i;:::-;20721:55;;20823:13;;20799:20;:37;20795:221;;20888:10;;20864:20;:34;20861:77;;20925:10;;20902:33;;20861:77;20960:36;20975:20;20960:14;:36::i;:::-;20795:221;20702:329;20623:408;20591:457;21066:44;21084:4;21090:2;21094:6;21102:7;21066:17;:44::i;:::-;21059:51;;;19472:1646;;;;;:::o;19141:323::-;19209:4;19241:7;:5;:7::i;:::-;19233:15;;:4;:15;;;;:45;;;;;19271:7;:5;:7::i;:::-;19265:13;;:2;:13;;;;19233:45;:84;;;;;19296:17;:21;19314:2;19296:21;;;;;;;;;;;;;;;;;;;;;;;;;19295:22;19233:84;:125;;;;;19335:17;:23;19353:4;19335:23;;;;;;;;;;;;;;;;;;;;;;;;;19334:24;19233:125;:152;;;;;7709:42;19375:10;;:2;:10;;;;19233:152;:185;;;;;19416:1;19402:16;;:2;:16;;;;19233:185;:223;;;;;19451:4;19435:21;;:4;:21;;;;19233:223;19226:230;;19141:323;;;;:::o;21126:1055::-;9552:4;9533:16;;:23;;;;;;;;;;;;;;;;;;21264:1:::1;21251:9;;21233:15;;21215;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;:50;21211:76;;;21280:7;;21211:76;21297:17;21387:1;21361:22;;21342:15;;21319:20;:38;;;;:::i;:::-;21318:65;;;;:::i;:::-;21317:71;;;;:::i;:::-;21297:91;;21401:20;21447:9;21424:20;:32;;;;:::i;:::-;21401:55;;21467:30;21484:12;21467:16;:30::i;:::-;21510:22;21535:21;21510:46;;21567:24;21658:1;21632:22;;21613:15;;21596:14;:32;;;;:::i;:::-;21595:59;;;;:::i;:::-;21594:65;;;;:::i;:::-;21567:92;;21688:1;21676:9;:13;21672:161;;;21706:41;21719:9;21730:16;21706:12;:41::i;:::-;21767:54;21782:9;21793:16;21811:9;21767:54;;;;;;;;:::i;:::-;;;;;;;;21672:161;21882:1;21870:9;21847:20;:32;;;;:::i;:::-;:36;21843:331;;;21900:16;;;;;;;;;;;:25;;:100;21985:13;;21965:15;;21945:16;21928:14;:33;;;;:::i;:::-;21927:53;;;;:::i;:::-;21926:73;;;;:::i;:::-;21900:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22015:11;;;;;;;;;;;:20;;:89;22089:13;;22075:9;;22055:16;22038:14;:33;;;;:::i;:::-;22037:47;;;;:::i;:::-;22036:67;;;;:::i;:::-;22015:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22119:11;;;;;;;;;;;:20;;:43;22140:21;22119:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;21843:331;21200:981;;;;9567:1;9598:5:::0;9579:16;;:24;;;;;;;;;;;;;;;;;;21126:1055;:::o;23577:1216::-;23677:4;23698:16;;;;;;;;;;;23694:858;;;23734:27;23756:4;23734:21;:27::i;:::-;:56;;;;23765:25;23787:2;23765:21;:25::i;:::-;23734:56;23730:123;;;23811:26;;;;;;;;;;:::i;:::-;;;;;;;;23730:123;23874:16;;;;;;;;;;;23869:672;;23911:28;23930:4;23936:2;23911:18;:28::i;:::-;23963:16;;;;;;;;;;;23962:17;:41;;;;;23983:20;23994:4;24000:2;23983:10;:20::i;:::-;23962:41;23958:137;;;24028:47;;;;;;;;;;:::i;:::-;;;;;;;;23958:137;23869:672;;;24154:1;24139:12;;:16;:55;;;;;24181:7;:13;24189:4;24181:13;;;;;;;;;;;;;;;;;;;;;;;;;24139:55;:101;;;;;24220:20;24231:4;24237:2;24220:10;:20::i;:::-;24139:101;24135:391;;;24317:13;;24302:12;;24287;:27;;;;:::i;:::-;:43;24283:224;;;24388:4;24359:22;:26;24382:2;24359:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24419:13;;:16;;;;;;;;;:::i;:::-;;;;;;24467;24480:2;24467:16;;;;;;:::i;:::-;;;;;;;;24283:224;24135:391;23869:672;23694:858;24581:6;24564:7;:13;24572:4;24564:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;24598:22;24624:7;24623:48;;24665:6;24623:48;;;24635:27;24645:4;24651:2;24655:6;24635:9;:27::i;:::-;24623:48;24598:73;;24697:14;24682:7;:11;24690:2;24682:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;24744:2;24729:34;;24738:4;24729:34;;;24748:14;24729:34;;;;;;:::i;:::-;;;;;;;;24781:4;24774:11;;;23577:1216;;;;;;:::o;22189:417::-;22256:21;22294:1;22280:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22256:40;;22325:4;22307;22312:1;22307:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22351:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22341:4;22346:1;22341:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;22380:9;;;;;;;;;;;:60;;;22455:11;22481:1;22525:4;22552;22572:15;22380:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22245:361;22189:417;:::o;22614:332::-;22695:9;;;;;;;;;;;:25;;;22728:9;22761:4;22781:11;22807:1;22850;7709:42;22912:15;22695:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22614:332;;:::o;22954:615::-;23036:16;;;;;;;;;;;23035:17;23027:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;23108:20;23119:4;23125:2;23108:10;:20::i;:::-;23107:21;:37;;;;;23138:6;;;;;;;;;;;23132:12;;:2;:12;;;23107:37;23103:459;;;23182:1;23165:13;;:18;23161:161;;23234:4;23219:12;:19;;;;:::i;:::-;23204:12;:34;;;;23161:161;;;23294:12;23279;:27;;;;23161:161;23364:4;23338:17;:23;23356:4;23338:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;23402:4;23383:16;;:23;;;;;;;;;;;;;;;;;;23436:15;23421:12;:30;;;;23492:4;23468:21;;:28;;;;;;;;;;;;;;;;;;23516:34;23545:4;23516:34;;;;;;:::i;:::-;;;;;;;;23103:459;22954:615;;:::o;24801:1205::-;24880:7;24900:18;24943:6;;;;;;;;;;;24935:14;;:4;:14;;;24931:478;;;24988:1;24972:13;24982:2;24972:9;:13::i;:::-;:17;24968:124;;;25049:11;;25035:6;:10;25042:2;25035:10;;;;;;;;;;;;;;;;25017:15;:28;;;;:::i;:::-;:43;;25009:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24968:124;25117:15;25106:6;:10;25113:2;25106:10;;;;;;;;;;;;;;;:26;;;;25260:7;;25247:20;;24931:478;;;25295:6;;;;;;;;;;;25289:12;;:2;:12;;;25285:124;;;25331:8;;25318:21;;25285:124;;;25385:12;;25372:25;;25285:124;24931:478;25425:20;25436:4;25442:2;25425:10;:20::i;:::-;25421:145;;;25482:1;25465:13;;:18;:45;;;;25504:6;25487:13;;:23;;25465:45;25461:94;;;25531:8;;;25461:94;25421:145;25576:15;7283:5;25645:22;;25632:10;;:35;;;;:::i;:::-;25617:10;;25604;25595:6;:19;;;;:::i;:::-;:32;;;;:::i;:::-;25594:74;;;;:::i;:::-;:93;;;;:::i;:::-;25576:111;;25698:17;25761:7;7283:5;25728:10;25719:6;:19;;;;:::i;:::-;:38;;;;:::i;:::-;25718:50;;;;:::i;:::-;25698:70;;25796:7;25779;:13;7709:42;25779:13;;;;;;;;;;;;;;;;:24;;;;;;;:::i;:::-;;;;;;;;25841:9;25814:7;:22;25830:4;25814:22;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;7709:42;25867:29;;25876:4;25867:29;;;25888:7;25867:29;;;;;;:::i;:::-;;;;;;;;25935:4;25912:40;;25921:4;25912:40;;;25942:9;25912:40;;;;;;:::i;:::-;;;;;;;;25991:7;25979:9;25970:6;:18;;;;:::i;:::-;:28;;;;:::i;:::-;25963:35;;;;;24801:1205;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:139::-;647:5;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;601:139;;;;:::o;746:143::-;803:5;834:6;828:13;819:22;;850:33;877:5;850:33;:::i;:::-;746:143;;;;:::o;895:135::-;939:5;977:6;964:20;955:29;;993:31;1018:5;993:31;:::i;:::-;895:135;;;;:::o;1036:329::-;1095:6;1144:2;1132:9;1123:7;1119:23;1115:32;1112:119;;;1150:79;;:::i;:::-;1112:119;1270:1;1295:53;1340:7;1331:6;1320:9;1316:22;1295:53;:::i;:::-;1285:63;;1241:117;1036:329;;;;:::o;1371:351::-;1441:6;1490:2;1478:9;1469:7;1465:23;1461:32;1458:119;;;1496:79;;:::i;:::-;1458:119;1616:1;1641:64;1697:7;1688:6;1677:9;1673:22;1641:64;:::i;:::-;1631:74;;1587:128;1371:351;;;;:::o;1728:667::-;1829:6;1837;1845;1894:2;1882:9;1873:7;1869:23;1865:32;1862:119;;;1900:79;;:::i;:::-;1862:119;2020:1;2045:61;2098:7;2089:6;2078:9;2074:22;2045:61;:::i;:::-;2035:71;;1991:125;2155:2;2181:61;2234:7;2225:6;2214:9;2210:22;2181:61;:::i;:::-;2171:71;;2126:126;2291:2;2317:61;2370:7;2361:6;2350:9;2346:22;2317:61;:::i;:::-;2307:71;;2262:126;1728:667;;;;;:::o;2401:474::-;2469:6;2477;2526:2;2514:9;2505:7;2501:23;2497:32;2494:119;;;2532:79;;:::i;:::-;2494:119;2652:1;2677:53;2722:7;2713:6;2702:9;2698:22;2677:53;:::i;:::-;2667:63;;2623:117;2779:2;2805:53;2850:7;2841:6;2830:9;2826:22;2805:53;:::i;:::-;2795:63;;2750:118;2401:474;;;;;:::o;2881:619::-;2958:6;2966;2974;3023:2;3011:9;3002:7;2998:23;2994:32;2991:119;;;3029:79;;:::i;:::-;2991:119;3149:1;3174:53;3219:7;3210:6;3199:9;3195:22;3174:53;:::i;:::-;3164:63;;3120:117;3276:2;3302:53;3347:7;3338:6;3327:9;3323:22;3302:53;:::i;:::-;3292:63;;3247:118;3404:2;3430:53;3475:7;3466:6;3455:9;3451:22;3430:53;:::i;:::-;3420:63;;3375:118;2881:619;;;;;:::o;3506:468::-;3571:6;3579;3628:2;3616:9;3607:7;3603:23;3599:32;3596:119;;;3634:79;;:::i;:::-;3596:119;3754:1;3779:53;3824:7;3815:6;3804:9;3800:22;3779:53;:::i;:::-;3769:63;;3725:117;3881:2;3907:50;3949:7;3940:6;3929:9;3925:22;3907:50;:::i;:::-;3897:60;;3852:115;3506:468;;;;;:::o;3980:474::-;4048:6;4056;4105:2;4093:9;4084:7;4080:23;4076:32;4073:119;;;4111:79;;:::i;:::-;4073:119;4231:1;4256:53;4301:7;4292:6;4281:9;4277:22;4256:53;:::i;:::-;4246:63;;4202:117;4358:2;4384:53;4429:7;4420:6;4409:9;4405:22;4384:53;:::i;:::-;4374:63;;4329:118;3980:474;;;;;:::o;4460:323::-;4516:6;4565:2;4553:9;4544:7;4540:23;4536:32;4533:119;;;4571:79;;:::i;:::-;4533:119;4691:1;4716:50;4758:7;4749:6;4738:9;4734:22;4716:50;:::i;:::-;4706:60;;4662:114;4460:323;;;;:::o;4789:462::-;4851:6;4859;4908:2;4896:9;4887:7;4883:23;4879:32;4876:119;;;4914:79;;:::i;:::-;4876:119;5034:1;5059:50;5101:7;5092:6;5081:9;5077:22;5059:50;:::i;:::-;5049:60;;5005:114;5158:2;5184:50;5226:7;5217:6;5206:9;5202:22;5184:50;:::i;:::-;5174:60;;5129:115;4789:462;;;;;:::o;5257:329::-;5316:6;5365:2;5353:9;5344:7;5340:23;5336:32;5333:119;;;5371:79;;:::i;:::-;5333:119;5491:1;5516:53;5561:7;5552:6;5541:9;5537:22;5516:53;:::i;:::-;5506:63;;5462:117;5257:329;;;;:::o;5592:474::-;5660:6;5668;5717:2;5705:9;5696:7;5692:23;5688:32;5685:119;;;5723:79;;:::i;:::-;5685:119;5843:1;5868:53;5913:7;5904:6;5893:9;5889:22;5868:53;:::i;:::-;5858:63;;5814:117;5970:2;5996:53;6041:7;6032:6;6021:9;6017:22;5996:53;:::i;:::-;5986:63;;5941:118;5592:474;;;;;:::o;6072:619::-;6149:6;6157;6165;6214:2;6202:9;6193:7;6189:23;6185:32;6182:119;;;6220:79;;:::i;:::-;6182:119;6340:1;6365:53;6410:7;6401:6;6390:9;6386:22;6365:53;:::i;:::-;6355:63;;6311:117;6467:2;6493:53;6538:7;6529:6;6518:9;6514:22;6493:53;:::i;:::-;6483:63;;6438:118;6595:2;6621:53;6666:7;6657:6;6646:9;6642:22;6621:53;:::i;:::-;6611:63;;6566:118;6072:619;;;;;:::o;6697:663::-;6785:6;6793;6801;6850:2;6838:9;6829:7;6825:23;6821:32;6818:119;;;6856:79;;:::i;:::-;6818:119;6976:1;7001:64;7057:7;7048:6;7037:9;7033:22;7001:64;:::i;:::-;6991:74;;6947:128;7114:2;7140:64;7196:7;7187:6;7176:9;7172:22;7140:64;:::i;:::-;7130:74;;7085:129;7253:2;7279:64;7335:7;7326:6;7315:9;7311:22;7279:64;:::i;:::-;7269:74;;7224:129;6697:663;;;;;:::o;7366:765::-;7452:6;7460;7468;7476;7525:3;7513:9;7504:7;7500:23;7496:33;7493:120;;;7532:79;;:::i;:::-;7493:120;7652:1;7677:53;7722:7;7713:6;7702:9;7698:22;7677:53;:::i;:::-;7667:63;;7623:117;7779:2;7805:53;7850:7;7841:6;7830:9;7826:22;7805:53;:::i;:::-;7795:63;;7750:118;7907:2;7933:53;7978:7;7969:6;7958:9;7954:22;7933:53;:::i;:::-;7923:63;;7878:118;8035:2;8061:53;8106:7;8097:6;8086:9;8082:22;8061:53;:::i;:::-;8051:63;;8006:118;7366:765;;;;;;;:::o;8137:911::-;8232:6;8240;8248;8256;8264;8313:3;8301:9;8292:7;8288:23;8284:33;8281:120;;;8320:79;;:::i;:::-;8281:120;8440:1;8465:53;8510:7;8501:6;8490:9;8486:22;8465:53;:::i;:::-;8455:63;;8411:117;8567:2;8593:53;8638:7;8629:6;8618:9;8614:22;8593:53;:::i;:::-;8583:63;;8538:118;8695:2;8721:53;8766:7;8757:6;8746:9;8742:22;8721:53;:::i;:::-;8711:63;;8666:118;8823:2;8849:53;8894:7;8885:6;8874:9;8870:22;8849:53;:::i;:::-;8839:63;;8794:118;8951:3;8978:53;9023:7;9014:6;9003:9;8999:22;8978:53;:::i;:::-;8968:63;;8922:119;8137:911;;;;;;;;:::o;9054:325::-;9111:6;9160:2;9148:9;9139:7;9135:23;9131:32;9128:119;;;9166:79;;:::i;:::-;9128:119;9286:1;9311:51;9354:7;9345:6;9334:9;9330:22;9311:51;:::i;:::-;9301:61;;9257:115;9054:325;;;;:::o;9385:179::-;9454:10;9475:46;9517:3;9509:6;9475:46;:::i;:::-;9553:4;9548:3;9544:14;9530:28;;9385:179;;;;:::o;9570:108::-;9647:24;9665:5;9647:24;:::i;:::-;9642:3;9635:37;9570:108;;:::o;9684:118::-;9771:24;9789:5;9771:24;:::i;:::-;9766:3;9759:37;9684:118;;:::o;9838:732::-;9957:3;9986:54;10034:5;9986:54;:::i;:::-;10056:86;10135:6;10130:3;10056:86;:::i;:::-;10049:93;;10166:56;10216:5;10166:56;:::i;:::-;10245:7;10276:1;10261:284;10286:6;10283:1;10280:13;10261:284;;;10362:6;10356:13;10389:63;10448:3;10433:13;10389:63;:::i;:::-;10382:70;;10475:60;10528:6;10475:60;:::i;:::-;10465:70;;10321:224;10308:1;10305;10301:9;10296:14;;10261:284;;;10265:14;10561:3;10554:10;;9962:608;;;9838:732;;;;:::o;10576:109::-;10657:21;10672:5;10657:21;:::i;:::-;10652:3;10645:34;10576:109;;:::o;10691:183::-;10804:63;10861:5;10804:63;:::i;:::-;10799:3;10792:76;10691:183;;:::o;10880:147::-;10975:45;11014:5;10975:45;:::i;:::-;10970:3;10963:58;10880:147;;:::o;11033:364::-;11121:3;11149:39;11182:5;11149:39;:::i;:::-;11204:71;11268:6;11263:3;11204:71;:::i;:::-;11197:78;;11284:52;11329:6;11324:3;11317:4;11310:5;11306:16;11284:52;:::i;:::-;11361:29;11383:6;11361:29;:::i;:::-;11356:3;11352:39;11345:46;;11125:272;11033:364;;;;:::o;11403:366::-;11545:3;11566:67;11630:2;11625:3;11566:67;:::i;:::-;11559:74;;11642:93;11731:3;11642:93;:::i;:::-;11760:2;11755:3;11751:12;11744:19;;11403:366;;;:::o;11775:::-;11917:3;11938:67;12002:2;11997:3;11938:67;:::i;:::-;11931:74;;12014:93;12103:3;12014:93;:::i;:::-;12132:2;12127:3;12123:12;12116:19;;11775:366;;;:::o;12147:::-;12289:3;12310:67;12374:2;12369:3;12310:67;:::i;:::-;12303:74;;12386:93;12475:3;12386:93;:::i;:::-;12504:2;12499:3;12495:12;12488:19;;12147:366;;;:::o;12519:::-;12661:3;12682:67;12746:2;12741:3;12682:67;:::i;:::-;12675:74;;12758:93;12847:3;12758:93;:::i;:::-;12876:2;12871:3;12867:12;12860:19;;12519:366;;;:::o;12891:::-;13033:3;13054:67;13118:2;13113:3;13054:67;:::i;:::-;13047:74;;13130:93;13219:3;13130:93;:::i;:::-;13248:2;13243:3;13239:12;13232:19;;12891:366;;;:::o;13263:::-;13405:3;13426:67;13490:2;13485:3;13426:67;:::i;:::-;13419:74;;13502:93;13591:3;13502:93;:::i;:::-;13620:2;13615:3;13611:12;13604:19;;13263:366;;;:::o;13635:::-;13777:3;13798:67;13862:2;13857:3;13798:67;:::i;:::-;13791:74;;13874:93;13963:3;13874:93;:::i;:::-;13992:2;13987:3;13983:12;13976:19;;13635:366;;;:::o;14007:::-;14149:3;14170:67;14234:2;14229:3;14170:67;:::i;:::-;14163:74;;14246:93;14335:3;14246:93;:::i;:::-;14364:2;14359:3;14355:12;14348:19;;14007:366;;;:::o;14379:::-;14521:3;14542:67;14606:2;14601:3;14542:67;:::i;:::-;14535:74;;14618:93;14707:3;14618:93;:::i;:::-;14736:2;14731:3;14727:12;14720:19;;14379:366;;;:::o;14751:365::-;14893:3;14914:66;14978:1;14973:3;14914:66;:::i;:::-;14907:73;;14989:93;15078:3;14989:93;:::i;:::-;15107:2;15102:3;15098:12;15091:19;;14751:365;;;:::o;15122:366::-;15264:3;15285:67;15349:2;15344:3;15285:67;:::i;:::-;15278:74;;15361:93;15450:3;15361:93;:::i;:::-;15479:2;15474:3;15470:12;15463:19;;15122:366;;;:::o;15494:::-;15636:3;15657:67;15721:2;15716:3;15657:67;:::i;:::-;15650:74;;15733:93;15822:3;15733:93;:::i;:::-;15851:2;15846:3;15842:12;15835:19;;15494:366;;;:::o;15866:365::-;16008:3;16029:66;16093:1;16088:3;16029:66;:::i;:::-;16022:73;;16104:93;16193:3;16104:93;:::i;:::-;16222:2;16217:3;16213:12;16206:19;;15866:365;;;:::o;16237:366::-;16379:3;16400:67;16464:2;16459:3;16400:67;:::i;:::-;16393:74;;16476:93;16565:3;16476:93;:::i;:::-;16594:2;16589:3;16585:12;16578:19;;16237:366;;;:::o;16609:::-;16751:3;16772:67;16836:2;16831:3;16772:67;:::i;:::-;16765:74;;16848:93;16937:3;16848:93;:::i;:::-;16966:2;16961:3;16957:12;16950:19;;16609:366;;;:::o;16981:::-;17123:3;17144:67;17208:2;17203:3;17144:67;:::i;:::-;17137:74;;17220:93;17309:3;17220:93;:::i;:::-;17338:2;17333:3;17329:12;17322:19;;16981:366;;;:::o;17353:::-;17495:3;17516:67;17580:2;17575:3;17516:67;:::i;:::-;17509:74;;17592:93;17681:3;17592:93;:::i;:::-;17710:2;17705:3;17701:12;17694:19;;17353:366;;;:::o;17725:118::-;17812:24;17830:5;17812:24;:::i;:::-;17807:3;17800:37;17725:118;;:::o;17849:112::-;17932:22;17948:5;17932:22;:::i;:::-;17927:3;17920:35;17849:112;;:::o;17967:222::-;18060:4;18098:2;18087:9;18083:18;18075:26;;18111:71;18179:1;18168:9;18164:17;18155:6;18111:71;:::i;:::-;17967:222;;;;:::o;18195:332::-;18316:4;18354:2;18343:9;18339:18;18331:26;;18367:71;18435:1;18424:9;18420:17;18411:6;18367:71;:::i;:::-;18448:72;18516:2;18505:9;18501:18;18492:6;18448:72;:::i;:::-;18195:332;;;;;:::o;18533:807::-;18782:4;18820:3;18809:9;18805:19;18797:27;;18834:71;18902:1;18891:9;18887:17;18878:6;18834:71;:::i;:::-;18915:72;18983:2;18972:9;18968:18;18959:6;18915:72;:::i;:::-;18997:80;19073:2;19062:9;19058:18;19049:6;18997:80;:::i;:::-;19087;19163:2;19152:9;19148:18;19139:6;19087:80;:::i;:::-;19177:73;19245:3;19234:9;19230:19;19221:6;19177:73;:::i;:::-;19260;19328:3;19317:9;19313:19;19304:6;19260:73;:::i;:::-;18533:807;;;;;;;;;:::o;19346:210::-;19433:4;19471:2;19460:9;19456:18;19448:26;;19484:65;19546:1;19535:9;19531:17;19522:6;19484:65;:::i;:::-;19346:210;;;;:::o;19562:274::-;19681:4;19719:2;19708:9;19704:18;19696:26;;19732:97;19826:1;19815:9;19811:17;19802:6;19732:97;:::i;:::-;19562:274;;;;:::o;19842:313::-;19955:4;19993:2;19982:9;19978:18;19970:26;;20042:9;20036:4;20032:20;20028:1;20017:9;20013:17;20006:47;20070:78;20143:4;20134:6;20070:78;:::i;:::-;20062:86;;19842:313;;;;:::o;20161:419::-;20327:4;20365:2;20354:9;20350:18;20342:26;;20414:9;20408:4;20404:20;20400:1;20389:9;20385:17;20378:47;20442:131;20568:4;20442:131;:::i;:::-;20434:139;;20161:419;;;:::o;20586:::-;20752:4;20790:2;20779:9;20775:18;20767:26;;20839:9;20833:4;20829:20;20825:1;20814:9;20810:17;20803:47;20867:131;20993:4;20867:131;:::i;:::-;20859:139;;20586:419;;;:::o;21011:::-;21177:4;21215:2;21204:9;21200:18;21192:26;;21264:9;21258:4;21254:20;21250:1;21239:9;21235:17;21228:47;21292:131;21418:4;21292:131;:::i;:::-;21284:139;;21011:419;;;:::o;21436:::-;21602:4;21640:2;21629:9;21625:18;21617:26;;21689:9;21683:4;21679:20;21675:1;21664:9;21660:17;21653:47;21717:131;21843:4;21717:131;:::i;:::-;21709:139;;21436:419;;;:::o;21861:::-;22027:4;22065:2;22054:9;22050:18;22042:26;;22114:9;22108:4;22104:20;22100:1;22089:9;22085:17;22078:47;22142:131;22268:4;22142:131;:::i;:::-;22134:139;;21861:419;;;:::o;22286:::-;22452:4;22490:2;22479:9;22475:18;22467:26;;22539:9;22533:4;22529:20;22525:1;22514:9;22510:17;22503:47;22567:131;22693:4;22567:131;:::i;:::-;22559:139;;22286:419;;;:::o;22711:::-;22877:4;22915:2;22904:9;22900:18;22892:26;;22964:9;22958:4;22954:20;22950:1;22939:9;22935:17;22928:47;22992:131;23118:4;22992:131;:::i;:::-;22984:139;;22711:419;;;:::o;23136:::-;23302:4;23340:2;23329:9;23325:18;23317:26;;23389:9;23383:4;23379:20;23375:1;23364:9;23360:17;23353:47;23417:131;23543:4;23417:131;:::i;:::-;23409:139;;23136:419;;;:::o;23561:::-;23727:4;23765:2;23754:9;23750:18;23742:26;;23814:9;23808:4;23804:20;23800:1;23789:9;23785:17;23778:47;23842:131;23968:4;23842:131;:::i;:::-;23834:139;;23561:419;;;:::o;23986:::-;24152:4;24190:2;24179:9;24175:18;24167:26;;24239:9;24233:4;24229:20;24225:1;24214:9;24210:17;24203:47;24267:131;24393:4;24267:131;:::i;:::-;24259:139;;23986:419;;;:::o;24411:::-;24577:4;24615:2;24604:9;24600:18;24592:26;;24664:9;24658:4;24654:20;24650:1;24639:9;24635:17;24628:47;24692:131;24818:4;24692:131;:::i;:::-;24684:139;;24411:419;;;:::o;24836:::-;25002:4;25040:2;25029:9;25025:18;25017:26;;25089:9;25083:4;25079:20;25075:1;25064:9;25060:17;25053:47;25117:131;25243:4;25117:131;:::i;:::-;25109:139;;24836:419;;;:::o;25261:::-;25427:4;25465:2;25454:9;25450:18;25442:26;;25514:9;25508:4;25504:20;25500:1;25489:9;25485:17;25478:47;25542:131;25668:4;25542:131;:::i;:::-;25534:139;;25261:419;;;:::o;25686:::-;25852:4;25890:2;25879:9;25875:18;25867:26;;25939:9;25933:4;25929:20;25925:1;25914:9;25910:17;25903:47;25967:131;26093:4;25967:131;:::i;:::-;25959:139;;25686:419;;;:::o;26111:::-;26277:4;26315:2;26304:9;26300:18;26292:26;;26364:9;26358:4;26354:20;26350:1;26339:9;26335:17;26328:47;26392:131;26518:4;26392:131;:::i;:::-;26384:139;;26111:419;;;:::o;26536:::-;26702:4;26740:2;26729:9;26725:18;26717:26;;26789:9;26783:4;26779:20;26775:1;26764:9;26760:17;26753:47;26817:131;26943:4;26817:131;:::i;:::-;26809:139;;26536:419;;;:::o;26961:::-;27127:4;27165:2;27154:9;27150:18;27142:26;;27214:9;27208:4;27204:20;27200:1;27189:9;27185:17;27178:47;27242:131;27368:4;27242:131;:::i;:::-;27234:139;;26961:419;;;:::o;27386:222::-;27479:4;27517:2;27506:9;27502:18;27494:26;;27530:71;27598:1;27587:9;27583:17;27574:6;27530:71;:::i;:::-;27386:222;;;;:::o;27614:831::-;27877:4;27915:3;27904:9;27900:19;27892:27;;27929:71;27997:1;27986:9;27982:17;27973:6;27929:71;:::i;:::-;28010:80;28086:2;28075:9;28071:18;28062:6;28010:80;:::i;:::-;28137:9;28131:4;28127:20;28122:2;28111:9;28107:18;28100:48;28165:108;28268:4;28259:6;28165:108;:::i;:::-;28157:116;;28283:72;28351:2;28340:9;28336:18;28327:6;28283:72;:::i;:::-;28365:73;28433:3;28422:9;28418:19;28409:6;28365:73;:::i;:::-;27614:831;;;;;;;;:::o;28451:442::-;28600:4;28638:2;28627:9;28623:18;28615:26;;28651:71;28719:1;28708:9;28704:17;28695:6;28651:71;:::i;:::-;28732:72;28800:2;28789:9;28785:18;28776:6;28732:72;:::i;:::-;28814;28882:2;28871:9;28867:18;28858:6;28814:72;:::i;:::-;28451:442;;;;;;:::o;28899:214::-;28988:4;29026:2;29015:9;29011:18;29003:26;;29039:67;29103:1;29092:9;29088:17;29079:6;29039:67;:::i;:::-;28899:214;;;;:::o;29200:132::-;29267:4;29290:3;29282:11;;29320:4;29315:3;29311:14;29303:22;;29200:132;;;:::o;29338:114::-;29405:6;29439:5;29433:12;29423:22;;29338:114;;;:::o;29458:99::-;29510:6;29544:5;29538:12;29528:22;;29458:99;;;:::o;29563:113::-;29633:4;29665;29660:3;29656:14;29648:22;;29563:113;;;:::o;29682:184::-;29781:11;29815:6;29810:3;29803:19;29855:4;29850:3;29846:14;29831:29;;29682:184;;;;:::o;29872:169::-;29956:11;29990:6;29985:3;29978:19;30030:4;30025:3;30021:14;30006:29;;29872:169;;;;:::o;30047:305::-;30087:3;30106:20;30124:1;30106:20;:::i;:::-;30101:25;;30140:20;30158:1;30140:20;:::i;:::-;30135:25;;30294:1;30226:66;30222:74;30219:1;30216:81;30213:107;;;30300:18;;:::i;:::-;30213:107;30344:1;30341;30337:9;30330:16;;30047:305;;;;:::o;30358:185::-;30398:1;30415:20;30433:1;30415:20;:::i;:::-;30410:25;;30449:20;30467:1;30449:20;:::i;:::-;30444:25;;30488:1;30478:35;;30493:18;;:::i;:::-;30478:35;30535:1;30532;30528:9;30523:14;;30358:185;;;;:::o;30549:348::-;30589:7;30612:20;30630:1;30612:20;:::i;:::-;30607:25;;30646:20;30664:1;30646:20;:::i;:::-;30641:25;;30834:1;30766:66;30762:74;30759:1;30756:81;30751:1;30744:9;30737:17;30733:105;30730:131;;;30841:18;;:::i;:::-;30730:131;30889:1;30886;30882:9;30871:20;;30549:348;;;;:::o;30903:191::-;30943:4;30963:20;30981:1;30963:20;:::i;:::-;30958:25;;30997:20;31015:1;30997:20;:::i;:::-;30992:25;;31036:1;31033;31030:8;31027:34;;;31041:18;;:::i;:::-;31027:34;31086:1;31083;31079:9;31071:17;;30903:191;;;;:::o;31100:96::-;31137:7;31166:24;31184:5;31166:24;:::i;:::-;31155:35;;31100:96;;;:::o;31202:104::-;31247:7;31276:24;31294:5;31276:24;:::i;:::-;31265:35;;31202:104;;;:::o;31312:90::-;31346:7;31389:5;31382:13;31375:21;31364:32;;31312:90;;;:::o;31408:126::-;31445:7;31485:42;31478:5;31474:54;31463:65;;31408:126;;;:::o;31540:77::-;31577:7;31606:5;31595:16;;31540:77;;;:::o;31623:86::-;31658:7;31698:4;31691:5;31687:16;31676:27;;31623:86;;;:::o;31715:152::-;31791:9;31824:37;31855:5;31824:37;:::i;:::-;31811:50;;31715:152;;;:::o;31873:121::-;31931:9;31964:24;31982:5;31964:24;:::i;:::-;31951:37;;31873:121;;;:::o;32000:126::-;32050:9;32083:37;32114:5;32083:37;:::i;:::-;32070:50;;32000:126;;;:::o;32132:113::-;32182:9;32215:24;32233:5;32215:24;:::i;:::-;32202:37;;32132:113;;;:::o;32251:307::-;32319:1;32329:113;32343:6;32340:1;32337:13;32329:113;;;32428:1;32423:3;32419:11;32413:18;32409:1;32404:3;32400:11;32393:39;32365:2;32362:1;32358:10;32353:15;;32329:113;;;32460:6;32457:1;32454:13;32451:101;;;32540:1;32531:6;32526:3;32522:16;32515:27;32451:101;32300:258;32251:307;;;:::o;32564:320::-;32608:6;32645:1;32639:4;32635:12;32625:22;;32692:1;32686:4;32682:12;32713:18;32703:81;;32769:4;32761:6;32757:17;32747:27;;32703:81;32831:2;32823:6;32820:14;32800:18;32797:38;32794:84;;;32850:18;;:::i;:::-;32794:84;32615:269;32564:320;;;:::o;32890:233::-;32929:3;32952:24;32970:5;32952:24;:::i;:::-;32943:33;;32998:66;32991:5;32988:77;32985:103;;;33068:18;;:::i;:::-;32985:103;33115:1;33108:5;33104:13;33097:20;;32890:233;;;:::o;33129:180::-;33177:77;33174:1;33167:88;33274:4;33271:1;33264:15;33298:4;33295:1;33288:15;33315:180;33363:77;33360:1;33353:88;33460:4;33457:1;33450:15;33484:4;33481:1;33474:15;33501:180;33549:77;33546:1;33539:88;33646:4;33643:1;33636:15;33670:4;33667:1;33660:15;33687:180;33735:77;33732:1;33725:88;33832:4;33829:1;33822:15;33856:4;33853:1;33846:15;33873:180;33921:77;33918:1;33911:88;34018:4;34015:1;34008:15;34042:4;34039:1;34032:15;34182:117;34291:1;34288;34281:12;34305:102;34346:6;34397:2;34393:7;34388:2;34381:5;34377:14;34373:28;34363:38;;34305:102;;;:::o;34413:162::-;34553:14;34549:1;34541:6;34537:14;34530:38;34413:162;:::o;34581:235::-;34721:34;34717:1;34709:6;34705:14;34698:58;34790:18;34785:2;34777:6;34773:15;34766:43;34581:235;:::o;34822:167::-;34962:19;34958:1;34950:6;34946:14;34939:43;34822:167;:::o;34995:222::-;35135:34;35131:1;35123:6;35119:14;35112:58;35204:5;35199:2;35191:6;35187:15;35180:30;34995:222;:::o;35223:224::-;35363:34;35359:1;35351:6;35347:14;35340:58;35432:7;35427:2;35419:6;35415:15;35408:32;35223:224;:::o;35453:173::-;35593:25;35589:1;35581:6;35577:14;35570:49;35453:173;:::o;35632:169::-;35772:21;35768:1;35760:6;35756:14;35749:45;35632:169;:::o;35807:170::-;35947:22;35943:1;35935:6;35931:14;35924:46;35807:170;:::o;35983:168::-;36123:20;36119:1;36111:6;36107:14;36100:44;35983:168;:::o;36157:158::-;36297:10;36293:1;36285:6;36281:14;36274:34;36157:158;:::o;36321:169::-;36461:21;36457:1;36449:6;36445:14;36438:45;36321:169;:::o;36496:166::-;36636:18;36632:1;36624:6;36620:14;36613:42;36496:166;:::o;36668:156::-;36808:8;36804:1;36796:6;36792:14;36785:32;36668:156;:::o;36830:176::-;36970:28;36966:1;36958:6;36954:14;36947:52;36830:176;:::o;37012:174::-;37152:26;37148:1;37140:6;37136:14;37129:50;37012:174;:::o;37192:224::-;37332:34;37328:1;37320:6;37316:14;37309:58;37401:7;37396:2;37388:6;37384:15;37377:32;37192:224;:::o;37422:248::-;37562:34;37558:1;37550:6;37546:14;37539:58;37631:31;37626:2;37618:6;37614:15;37607:56;37422:248;:::o;37676:122::-;37749:24;37767:5;37749:24;:::i;:::-;37742:5;37739:35;37729:63;;37788:1;37785;37778:12;37729:63;37676:122;:::o;37804:138::-;37885:32;37911:5;37885:32;:::i;:::-;37878:5;37875:43;37865:71;;37932:1;37929;37922:12;37865:71;37804:138;:::o;37948:116::-;38018:21;38033:5;38018:21;:::i;:::-;38011:5;38008:32;37998:60;;38054:1;38051;38044:12;37998:60;37948:116;:::o;38070:122::-;38143:24;38161:5;38143:24;:::i;:::-;38136:5;38133:35;38123:63;;38182:1;38179;38172:12;38123:63;38070:122;:::o;38198:118::-;38269:22;38285:5;38269:22;:::i;:::-;38262:5;38259:33;38249:61;;38306:1;38303;38296:12;38249:61;38198:118;:::o

Swarm Source

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