ETH Price: $2,531.49 (+5.31%)
 

Overview

Max Total Supply

1,000,000,000 TUMI

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
27,104,256.282476300544455671 TUMI

Value
$0.00
0xe84152d321b397bf81cb4a988a5842460f3c644f
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Tumikaya

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-13
*/

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

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}

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

    /**
     * @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 IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

interface IDexFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

contract Tumikaya is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public operationsAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    
     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;

    // Sniper map
    mapping (address => bool) private snipers;
    
    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event EnabledTrading();
    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedOperationsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("Tumikaya", "TUMI") {
        
        address newOwner = msg.sender; // can leave alone if owner is deployer.
        
        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
 
        uint256 totalSupply = 1e9 * 1e18;
        
        maxBuyAmount = totalSupply * 2 / 100;
        maxSellAmount = totalSupply * 2 / 100;
        maxWalletAmount = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 25 / 100000; // 0.025% swap amount

        buyOperationsFee = 4;
        buyLiquidityFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;

        sellOperationsFee = 4;
        sellLiquidityFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        operationsAddress = address(newOwner);
        
        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        emit EnabledTrading();
    }
    
    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }
    
    function addSniper(address account, bool isSniper) public onlyOwner {
        snipers[account] = isSniper;
    }
   
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }
    
    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }
    
    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
  	    swapTokensAtAmount = newAmount;
  	}

      function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }
    
    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee;
        require(buyTotalFees <= 6, "Must keep fees at 6% or less");
    }

    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee;
        require(sellTotalFees <= 6, "Must keep fees at 6% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");
        require(!snipers[to]);
        
        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)) {
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
                
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number - 4 && _holderLastTransferTimestamp[to] < block.number - 4, "_transfer:: Transfer Delay enabled.  Try again later.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }
                 
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                } 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                } 
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        uint256 penaltyAmount = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // bot/sniper penalty.  Tokens get transferred to marketing wallet to allow potential refund.
            if(tradingActiveBlock >= block.number + 1 && automatedMarketMakerPairs[from]){
                penaltyAmount = amount * 99 / 100;
                super._transfer(from, operationsAddress, penaltyAmount);
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
        	
        	amount -= fees + penaltyAmount;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0xdead),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 10){
            contractBalance = swapTokensAtAmount * 10;
        }

        bool success;
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        
        swapTokensForEth(contractBalance - liquidityTokens); 
        
        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForOperations = ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForOperations;
            
        tokensForLiquidity = 0;
        tokensForOperations = 0;
        
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success,) = address(operationsAddress).call{value: address(this).balance}("");
    }

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function setOperationsAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress address cannot be 0");
        operationsAddress = payable(_operationsAddress);
        emit UpdatedOperationsAddress(_operationsAddress);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","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":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isSniper","type":"bool"}],"name":"addSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","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":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600c556001600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff0219169083151502179055503480156200008257600080fd5b506040518060400160405280600881526020017f54756d696b6179610000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f54554d490000000000000000000000000000000000000000000000000000000081525081600390805190602001906200010792919062000b6a565b5080600490805190602001906200012092919062000b6a565b505050600062000135620005b860201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000205816001620005c060201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000c84565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000313573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000339919062000c84565b6040518363ffffffff1660e01b81526004016200035892919062000cc7565b6020604051808303816000875af115801562000378573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039e919062000c84565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003e660a05160016200065660201b60201c565b60006b033b2e3c9fd0803ce80000009050606460028262000408919062000d2d565b62000414919062000dbd565b60068190555060646002826200042b919062000d2d565b62000437919062000dbd565b60078190555060646002826200044e919062000d2d565b6200045a919062000dbd565b600881905550620186a060198262000473919062000d2d565b6200047f919062000dbd565b600a8190555060046011819055506000601281905550601254601154620004a7919062000df5565b60108190555060046014819055506000601581905550601554601454620004cf919062000df5565b601381905550620004e8836001620005c060201b60201c565b620004fb306001620005c060201b60201c565b6200051061dead6001620005c060201b60201c565b62000523836001620006f760201b60201c565b62000536306001620006f760201b60201c565b6200054b61dead6001620006f760201b60201c565b82600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200059e83826200084460201b60201c565b620005af836200099560201b60201c565b505050620010d9565b600033905090565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516200064a92919062000e6f565b60405180910390a15050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b62000707620005b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000799576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007909062000efd565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000838919062000f1f565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620008b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ae9062000f8c565b60405180910390fd5b8060026000828254620008cb919062000df5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000922919062000df5565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000989919062000fbf565b60405180910390a35050565b620009a5620005b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a2e9062000efd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000aaa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aa19062001052565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b82805462000b7890620010a3565b90600052602060002090601f01602090048101928262000b9c576000855562000be8565b82601f1062000bb757805160ff191683800117855562000be8565b8280016001018555821562000be8579182015b8281111562000be757825182559160200191906001019062000bca565b5b50905062000bf7919062000bfb565b5090565b5b8082111562000c1657600081600090555060010162000bfc565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c4c8262000c1f565b9050919050565b62000c5e8162000c3f565b811462000c6a57600080fd5b50565b60008151905062000c7e8162000c53565b92915050565b60006020828403121562000c9d5762000c9c62000c1a565b5b600062000cad8482850162000c6d565b91505092915050565b62000cc18162000c3f565b82525050565b600060408201905062000cde600083018562000cb6565b62000ced602083018462000cb6565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d3a8262000cf4565b915062000d478362000cf4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d835762000d8262000cfe565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000dca8262000cf4565b915062000dd78362000cf4565b92508262000dea5762000de962000d8e565b5b828204905092915050565b600062000e028262000cf4565b915062000e0f8362000cf4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e475762000e4662000cfe565b5b828201905092915050565b60008115159050919050565b62000e698162000e52565b82525050565b600060408201905062000e86600083018562000cb6565b62000e95602083018462000e5e565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ee560208362000e9c565b915062000ef28262000ead565b602082019050919050565b6000602082019050818103600083015262000f188162000ed6565b9050919050565b600060208201905062000f36600083018462000e5e565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f74601f8362000e9c565b915062000f818262000f3c565b602082019050919050565b6000602082019050818103600083015262000fa78162000f65565b9050919050565b62000fb98162000cf4565b82525050565b600060208201905062000fd6600083018462000fae565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200103a60268362000e9c565b9150620010478262000fdc565b604082019050919050565b600060208201905081810360008301526200106d816200102b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010bc57607f821691505b60208210811415620010d357620010d262001074565b5b50919050565b60805160a05161587062001137600039600081816112c001528181611c790152612ed0015260008181610dee01528181612e7901528181613e4601528181613f2701528181613f4e01528181613fea015261401101526158706000f3fe6080604052600436106103035760003560e01c80638a8c523c11610190578063d85ba063116100dc578063ea4cfe1211610095578063f2fde38b1161006f578063f2fde38b14610b81578063f5648a4f14610baa578063f637434214610bc1578063fb002c9714610bec5761030a565b8063ea4cfe1214610b00578063ee40166e14610b2b578063f11a24d314610b565761030a565b8063d85ba06314610a04578063dc3f0d0f14610a2f578063dd62ed3e14610a58578063e2f4560514610a95578063e852506a14610ac0578063e884f26014610ae95761030a565b8063aa4bde2811610149578063c024666811610123578063c02466681461095e578063c18bc19514610987578063c876d0b9146109b0578063d257b34f146109db5761030a565b8063aa4bde28146108cb578063b62496f5146108f6578063bbc0c742146109335761030a565b80638a8c523c146107bb5780638da5cb5b146107d257806395d89b41146107fd5780639a7a23d614610828578063a457c2d714610851578063a9059cbb1461088e5761030a565b80634a62bb651161024f5780636a486a8e11610208578063715018a6116101e2578063715018a614610725578063751039fc1461073c5780638366e79a1461075357806388e765ff146107905761030a565b80636a486a8e146106925780636ddd1713146106bd57806370a08231146106e85761030a565b80634a62bb65146105805780634f77f6c0146105ab5780634fbee193146105d65780635a139dd41461061357806366ca9b831461063e57806366d602ae146106675761030a565b80631a8145bb116102bc578063313ce56711610296578063313ce567146104c457806339509351146104ef578063499b83941461052c57806349bd5a5e146105555761030a565b80631a8145bb1461043357806323b872dd1461045e5780632be32b611461049b5761030a565b806302dbd8f81461030f57806306fdde0314610338578063095ea7b31461036357806310d5de53146103a05780631694505e146103dd57806318160ddd146104085761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610336600480360381019061033191906140fb565b610c17565b005b34801561034457600080fd5b5061034d610d1c565b60405161035a91906141d4565b60405180910390f35b34801561036f57600080fd5b5061038a60048036038101906103859190614254565b610dae565b60405161039791906142af565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c291906142ca565b610dcc565b6040516103d491906142af565b60405180910390f35b3480156103e957600080fd5b506103f2610dec565b6040516103ff9190614356565b60405180910390f35b34801561041457600080fd5b5061041d610e10565b60405161042a9190614380565b60405180910390f35b34801561043f57600080fd5b50610448610e1a565b6040516104559190614380565b60405180910390f35b34801561046a57600080fd5b506104856004803603810190610480919061439b565b610e20565b60405161049291906142af565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd91906143ee565b610f18565b005b3480156104d057600080fd5b506104d961107b565b6040516104e69190614437565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190614254565b611084565b60405161052391906142af565b60405180910390f35b34801561053857600080fd5b50610553600480360381019061054e91906142ca565b611130565b005b34801561056157600080fd5b5061056a6112be565b6040516105779190614461565b60405180910390f35b34801561058c57600080fd5b506105956112e2565b6040516105a291906142af565b60405180910390f35b3480156105b757600080fd5b506105c06112f5565b6040516105cd9190614380565b60405180910390f35b3480156105e257600080fd5b506105fd60048036038101906105f891906142ca565b6112fb565b60405161060a91906142af565b60405180910390f35b34801561061f57600080fd5b50610628611351565b6040516106359190614380565b60405180910390f35b34801561064a57600080fd5b50610665600480360381019061066091906140fb565b611357565b005b34801561067357600080fd5b5061067c61145c565b6040516106899190614380565b60405180910390f35b34801561069e57600080fd5b506106a7611462565b6040516106b49190614380565b60405180910390f35b3480156106c957600080fd5b506106d2611468565b6040516106df91906142af565b60405180910390f35b3480156106f457600080fd5b5061070f600480360381019061070a91906142ca565b61147b565b60405161071c9190614380565b60405180910390f35b34801561073157600080fd5b5061073a6114c3565b005b34801561074857600080fd5b5061075161161b565b005b34801561075f57600080fd5b5061077a6004803603810190610775919061447c565b611716565b60405161078791906142af565b60405180910390f35b34801561079c57600080fd5b506107a56119cc565b6040516107b29190614380565b60405180910390f35b3480156107c757600080fd5b506107d06119d2565b005b3480156107de57600080fd5b506107e7611b24565b6040516107f49190614461565b60405180910390f35b34801561080957600080fd5b50610812611b4e565b60405161081f91906141d4565b60405180910390f35b34801561083457600080fd5b5061084f600480360381019061084a91906144e8565b611be0565b005b34801561085d57600080fd5b5061087860048036038101906108739190614254565b611d14565b60405161088591906142af565b60405180910390f35b34801561089a57600080fd5b506108b560048036038101906108b09190614254565b611dff565b6040516108c291906142af565b60405180910390f35b3480156108d757600080fd5b506108e0611e1d565b6040516108ed9190614380565b60405180910390f35b34801561090257600080fd5b5061091d600480360381019061091891906142ca565b611e23565b60405161092a91906142af565b60405180910390f35b34801561093f57600080fd5b50610948611e43565b60405161095591906142af565b60405180910390f35b34801561096a57600080fd5b50610985600480360381019061098091906144e8565b611e56565b005b34801561099357600080fd5b506109ae60048036038101906109a991906143ee565b611f96565b005b3480156109bc57600080fd5b506109c56120f9565b6040516109d291906142af565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd91906143ee565b61210c565b005b348015610a1057600080fd5b50610a19612274565b604051610a269190614380565b60405180910390f35b348015610a3b57600080fd5b50610a566004803603810190610a5191906143ee565b61227a565b005b348015610a6457600080fd5b50610a7f6004803603810190610a7a919061447c565b6123dd565b604051610a8c9190614380565b60405180910390f35b348015610aa157600080fd5b50610aaa612464565b604051610ab79190614380565b60405180910390f35b348015610acc57600080fd5b50610ae76004803603810190610ae291906144e8565b61246a565b005b348015610af557600080fd5b50610afe61255c565b005b348015610b0c57600080fd5b50610b15612610565b604051610b229190614461565b60405180910390f35b348015610b3757600080fd5b50610b40612636565b604051610b4d9190614380565b60405180910390f35b348015610b6257600080fd5b50610b6b61263c565b604051610b789190614380565b60405180910390f35b348015610b8d57600080fd5b50610ba86004803603810190610ba391906142ca565b612642565b005b348015610bb657600080fd5b50610bbf612809565b005b348015610bcd57600080fd5b50610bd6612911565b604051610be39190614380565b60405180910390f35b348015610bf857600080fd5b50610c01612917565b604051610c0e9190614380565b60405180910390f35b610c1f61291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca590614574565b60405180910390fd5b8160148190555080601581905550601554601454610ccc91906145c3565b60138190555060066013541115610d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0f90614665565b60405180910390fd5b5050565b606060038054610d2b906146b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d57906146b4565b8015610da45780601f10610d7957610100808354040283529160200191610da4565b820191906000526020600020905b815481529060010190602001808311610d8757829003601f168201915b5050505050905090565b6000610dc2610dbb61291d565b8484612925565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60175481565b6000610e2d848484612af0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e7861291d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eef90614758565b60405180910390fd5b610f0c85610f0461291d565b858403612925565b60019150509392505050565b610f2061291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa690614574565b60405180910390fd5b670de0b6b3a76400006103e86001610fc5610e10565b610fcf9190614778565b610fd99190614801565b610fe39190614801565b811015611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101c906148a4565b60405180910390fd5b670de0b6b3a7640000816110399190614778565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410096006546040516110709190614380565b60405180910390a150565b60006012905090565b600061112661109161291d565b84846001600061109f61291d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461112191906145c3565b612925565b6001905092915050565b61113861291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111be90614574565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122e90614936565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298260405160405180910390a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60009054906101000a900460ff1681565b60145481565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b61135f61291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e590614574565b60405180910390fd5b816011819055508060128190555060125460115461140c91906145c3565b60108190555060066010541115611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90614665565b60405180910390fd5b5050565b60075481565b60135481565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114cb61291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190614574565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61162361291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a990614574565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506000600f60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b600061172061291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a690614574565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561181f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611816906149a2565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561188e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188590614a0e565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118c99190614461565b602060405180830381865afa1580156118e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190a9190614a43565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611947929190614a70565b6020604051808303816000875af1158015611966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198a9190614aae565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43884826040516119bd929190614a70565b60405180910390a15092915050565b60065481565b6119da61291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6090614574565b60405180910390fd5b600d60019054906101000a900460ff1615611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090614b27565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043600c819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611b5d906146b4565b80601f0160208091040260200160405190810160405280929190818152602001828054611b89906146b4565b8015611bd65780601f10611bab57610100808354040283529160200191611bd6565b820191906000526020600020905b815481529060010190602001808311611bb957829003601f168201915b5050505050905090565b611be861291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6e90614574565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfd90614bb9565b60405180910390fd5b611d1082826138e5565b5050565b60008060016000611d2361291d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd790614c4b565b60405180910390fd5b611df4611deb61291d565b85858403612925565b600191505092915050565b6000611e13611e0c61291d565b8484612af0565b6001905092915050565b60085481565b601b6020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b611e5e61291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee490614574565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f8a91906142af565b60405180910390a25050565b611f9e61291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202490614574565b60405180910390fd5b670de0b6b3a76400006103e86003612043610e10565b61204d9190614778565b6120579190614801565b6120619190614801565b8110156120a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209a90614cdd565b60405180910390fd5b670de0b6b3a7640000816120b79190614778565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516120ee9190614380565b60405180910390a150565b600f60009054906101000a900460ff1681565b61211461291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90614574565b60405180910390fd5b620186a060016121b1610e10565b6121bb9190614778565b6121c59190614801565b811015612207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fe90614d6f565b60405180910390fd5b6103e86001612214610e10565b61221e9190614778565b6122289190614801565b81111561226a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226190614e01565b60405180910390fd5b80600a8190555050565b60105481565b61228261291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230890614574565b60405180910390fd5b670de0b6b3a76400006103e86001612327610e10565b6123319190614778565b61233b9190614801565b6123459190614801565b811015612387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237e90614e93565b60405180910390fd5b670de0b6b3a76400008161239b9190614778565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516123d29190614380565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b61247261291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890614574565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61256461291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ea90614574565b60405180910390fd5b6000600f60006101000a81548160ff021916908315150217905550565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b60125481565b61264a61291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d090614574565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274090614f25565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61281161291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289790614574565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516128c690614f76565b60006040518083038185875af1925050503d8060008114612903576040519150601f19603f3d011682016040523d82523d6000602084013e612908565b606091505b50508091505050565b60155481565b60165481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298c90614ffd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fc9061508f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ae39190614380565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5790615121565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc7906151b3565b60405180910390fd5b60008111612c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0a9061521f565b60405180910390fd5b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c6a57600080fd5b600d60009054906101000a900460ff16156133d357612c87611b24565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612cf55750612cc5611b24565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d2e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d68575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156133d257600d60019054906101000a900460ff16612e6257601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e225750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e589061528b565b60405180910390fd5b5b600f60009054906101000a900460ff1615613091577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612f1f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561309057600443612f3191906152ab565b600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054108015612fc85750600443612f8691906152ab565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b613007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffe90615351565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131345750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131db5760065481111561317e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613175906153e3565b60405180910390fd5b60085461318a8361147b565b8261319591906145c3565b11156131d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131cd9061544f565b60405180910390fd5b6133d1565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561327e5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132cd576007548111156132c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132bf906154e1565b60405180910390fd5b6133d0565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133715750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133cf576008546133828361147b565b8261338d91906145c3565b11156133ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c59061544f565b60405180910390fd5b5b5b5b5b5b60006133de3061147b565b90506000600a5482101590508080156134035750600d60029054906101000a900460ff165b801561341c5750600960009054906101000a900460ff16155b80156134725750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134c85750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561351e5750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613562576001600960006101000a81548160ff021916908315150217905550613546613986565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806136095750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561361357600090505b60008082156138d05760014361362991906145c3565b600c54101580156136835750601b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136d55760646063876136979190614778565b6136a19190614801565b90506136d088600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b3c565b6138a1565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561373057506000601354115b156137bc576064601354876137459190614778565b61374f9190614801565b9150601354601554836137629190614778565b61376c9190614801565b6017600082825461377d91906145c3565b92505081905550601354601454836137959190614778565b61379f9190614801565b601660008282546137b091906145c3565b925050819055506138a0565b601b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561381757506000601054115b1561389f5760646010548761382c9190614778565b6138369190614801565b9150601054601254836138499190614778565b6138539190614801565b6017600082825461386491906145c3565b925050819055506010546011548361387c9190614778565b6138869190614801565b6016600082825461389791906145c3565b925050819055505b5b5b60008211156138b6576138b5883084613b3c565b5b80826138c291906145c3565b866138cd91906152ab565b95505b6138db888888613b3c565b5050505050505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60006139913061147b565b905060006016546017546139a591906145c3565b905060008214806139b65750600081145b156139c2575050613b3a565b600a80546139d09190614778565b8211156139e857600a80546139e59190614778565b91505b600080600283601754866139fc9190614778565b613a069190614801565b613a109190614801565b9050613a268185613a2191906152ab565b613da7565b6000479050600081905060006002601754613a419190614801565b86613a4c91906152ab565b60165484613a5a9190614778565b613a649190614801565b90508082613a7291906152ab565b915060006017819055506000601681905550600084118015613a945750600082115b15613aa457613aa38483613fe4565b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613aea90614f76565b60006040518083038185875af1925050503d8060008114613b27576040519150601f19603f3d011682016040523d82523d6000602084013e613b2c565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba390615121565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c13906151b3565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c9990615573565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d3591906145c3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d999190614380565b60405180910390a350505050565b6000600267ffffffffffffffff811115613dc457613dc3615593565b5b604051908082528060200260200182016040528015613df25781602001602082028036833780820191505090505b5090503081600081518110613e0a57613e096155c2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed39190615606565b81600181518110613ee757613ee66155c2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f4c307f000000000000000000000000000000000000000000000000000000000000000084612925565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fae95949392919061572c565b600060405180830381600087803b158015613fc857600080fd5b505af1158015613fdc573d6000803e3d6000fd5b505050505050565b61400f307f000000000000000000000000000000000000000000000000000000000000000084612925565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161407696959493929190615786565b60606040518083038185885af1158015614094573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140b991906157e7565b5050505050565b600080fd5b6000819050919050565b6140d8816140c5565b81146140e357600080fd5b50565b6000813590506140f5816140cf565b92915050565b60008060408385031215614112576141116140c0565b5b6000614120858286016140e6565b9250506020614131858286016140e6565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561417557808201518184015260208101905061415a565b83811115614184576000848401525b50505050565b6000601f19601f8301169050919050565b60006141a68261413b565b6141b08185614146565b93506141c0818560208601614157565b6141c98161418a565b840191505092915050565b600060208201905081810360008301526141ee818461419b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614221826141f6565b9050919050565b61423181614216565b811461423c57600080fd5b50565b60008135905061424e81614228565b92915050565b6000806040838503121561426b5761426a6140c0565b5b60006142798582860161423f565b925050602061428a858286016140e6565b9150509250929050565b60008115159050919050565b6142a981614294565b82525050565b60006020820190506142c460008301846142a0565b92915050565b6000602082840312156142e0576142df6140c0565b5b60006142ee8482850161423f565b91505092915050565b6000819050919050565b600061431c614317614312846141f6565b6142f7565b6141f6565b9050919050565b600061432e82614301565b9050919050565b600061434082614323565b9050919050565b61435081614335565b82525050565b600060208201905061436b6000830184614347565b92915050565b61437a816140c5565b82525050565b60006020820190506143956000830184614371565b92915050565b6000806000606084860312156143b4576143b36140c0565b5b60006143c28682870161423f565b93505060206143d38682870161423f565b92505060406143e4868287016140e6565b9150509250925092565b600060208284031215614404576144036140c0565b5b6000614412848285016140e6565b91505092915050565b600060ff82169050919050565b6144318161441b565b82525050565b600060208201905061444c6000830184614428565b92915050565b61445b81614216565b82525050565b60006020820190506144766000830184614452565b92915050565b60008060408385031215614493576144926140c0565b5b60006144a18582860161423f565b92505060206144b28582860161423f565b9150509250929050565b6144c581614294565b81146144d057600080fd5b50565b6000813590506144e2816144bc565b92915050565b600080604083850312156144ff576144fe6140c0565b5b600061450d8582860161423f565b925050602061451e858286016144d3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061455e602083614146565b915061456982614528565b602082019050919050565b6000602082019050818103600083015261458d81614551565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145ce826140c5565b91506145d9836140c5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561460e5761460d614594565b5b828201905092915050565b7f4d757374206b6565702066656573206174203625206f72206c65737300000000600082015250565b600061464f601c83614146565b915061465a82614619565b602082019050919050565b6000602082019050818103600083015261467e81614642565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806146cc57607f821691505b602082108114156146e0576146df614685565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614742602883614146565b915061474d826146e6565b604082019050919050565b6000602082019050818103600083015261477181614735565b9050919050565b6000614783826140c5565b915061478e836140c5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147c7576147c6614594565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061480c826140c5565b9150614817836140c5565b925082614827576148266147d2565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b600061488e602983614146565b915061489982614832565b604082019050919050565b600060208201905081810360008301526148bd81614881565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614920602683614146565b915061492b826148c4565b604082019050919050565b6000602082019050818103600083015261494f81614913565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b600061498c601a83614146565b915061499782614956565b602082019050919050565b600060208201905081810360008301526149bb8161497f565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b60006149f8601c83614146565b9150614a03826149c2565b602082019050919050565b60006020820190508181036000830152614a27816149eb565b9050919050565b600081519050614a3d816140cf565b92915050565b600060208284031215614a5957614a586140c0565b5b6000614a6784828501614a2e565b91505092915050565b6000604082019050614a856000830185614452565b614a926020830184614371565b9392505050565b600081519050614aa8816144bc565b92915050565b600060208284031215614ac457614ac36140c0565b5b6000614ad284828501614a99565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614b11601783614146565b9150614b1c82614adb565b602082019050919050565b60006020820190508181036000830152614b4081614b04565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614ba3603983614146565b9150614bae82614b47565b604082019050919050565b60006020820190508181036000830152614bd281614b96565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614c35602583614146565b9150614c4082614bd9565b604082019050919050565b60006020820190508181036000830152614c6481614c28565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614cc7602c83614146565b9150614cd282614c6b565b604082019050919050565b60006020820190508181036000830152614cf681614cba565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614d59603583614146565b9150614d6482614cfd565b604082019050919050565b60006020820190508181036000830152614d8881614d4c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614deb603483614146565b9150614df682614d8f565b604082019050919050565b60006020820190508181036000830152614e1a81614dde565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614e7d602a83614146565b9150614e8882614e21565b604082019050919050565b60006020820190508181036000830152614eac81614e70565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f0f602683614146565b9150614f1a82614eb3565b604082019050919050565b60006020820190508181036000830152614f3e81614f02565b9050919050565b600081905092915050565b50565b6000614f60600083614f45565b9150614f6b82614f50565b600082019050919050565b6000614f8182614f53565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614fe7602483614146565b9150614ff282614f8b565b604082019050919050565b6000602082019050818103600083015261501681614fda565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615079602283614146565b91506150848261501d565b604082019050919050565b600060208201905081810360008301526150a88161506c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061510b602583614146565b9150615116826150af565b604082019050919050565b6000602082019050818103600083015261513a816150fe565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061519d602383614146565b91506151a882615141565b604082019050919050565b600060208201905081810360008301526151cc81615190565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615209601d83614146565b9150615214826151d3565b602082019050919050565b60006020820190508181036000830152615238816151fc565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615275601683614146565b91506152808261523f565b602082019050919050565b600060208201905081810360008301526152a481615268565b9050919050565b60006152b6826140c5565b91506152c1836140c5565b9250828210156152d4576152d3614594565b5b828203905092915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b600061533b603583614146565b9150615346826152df565b604082019050919050565b6000602082019050818103600083015261536a8161532e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b60006153cd602883614146565b91506153d882615371565b604082019050919050565b600060208201905081810360008301526153fc816153c0565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615439601883614146565b915061544482615403565b602082019050919050565b600060208201905081810360008301526154688161542c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b60006154cb602a83614146565b91506154d68261546f565b604082019050919050565b600060208201905081810360008301526154fa816154be565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061555d602683614146565b915061556882615501565b604082019050919050565b6000602082019050818103600083015261558c81615550565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061560081614228565b92915050565b60006020828403121561561c5761561b6140c0565b5b600061562a848285016155f1565b91505092915050565b6000819050919050565b600061565861565361564e84615633565b6142f7565b6140c5565b9050919050565b6156688161563d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6156a381614216565b82525050565b60006156b5838361569a565b60208301905092915050565b6000602082019050919050565b60006156d98261566e565b6156e38185615679565b93506156ee8361568a565b8060005b8381101561571f57815161570688826156a9565b9750615711836156c1565b9250506001810190506156f2565b5085935050505092915050565b600060a0820190506157416000830188614371565b61574e602083018761565f565b818103604083015261576081866156ce565b905061576f6060830185614452565b61577c6080830184614371565b9695505050505050565b600060c08201905061579b6000830189614452565b6157a86020830188614371565b6157b5604083018761565f565b6157c2606083018661565f565b6157cf6080830185614452565b6157dc60a0830184614371565b979650505050505050565b600080600060608486031215615800576157ff6140c0565b5b600061580e86828701614a2e565b935050602061581f86828701614a2e565b925050604061583086828701614a2e565b915050925092509256fea2646970667358221220bd83a42e98a7253de4a12a2004a1eb30bedaf26f8540c396905cccb67b71e52964736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80638a8c523c11610190578063d85ba063116100dc578063ea4cfe1211610095578063f2fde38b1161006f578063f2fde38b14610b81578063f5648a4f14610baa578063f637434214610bc1578063fb002c9714610bec5761030a565b8063ea4cfe1214610b00578063ee40166e14610b2b578063f11a24d314610b565761030a565b8063d85ba06314610a04578063dc3f0d0f14610a2f578063dd62ed3e14610a58578063e2f4560514610a95578063e852506a14610ac0578063e884f26014610ae95761030a565b8063aa4bde2811610149578063c024666811610123578063c02466681461095e578063c18bc19514610987578063c876d0b9146109b0578063d257b34f146109db5761030a565b8063aa4bde28146108cb578063b62496f5146108f6578063bbc0c742146109335761030a565b80638a8c523c146107bb5780638da5cb5b146107d257806395d89b41146107fd5780639a7a23d614610828578063a457c2d714610851578063a9059cbb1461088e5761030a565b80634a62bb651161024f5780636a486a8e11610208578063715018a6116101e2578063715018a614610725578063751039fc1461073c5780638366e79a1461075357806388e765ff146107905761030a565b80636a486a8e146106925780636ddd1713146106bd57806370a08231146106e85761030a565b80634a62bb65146105805780634f77f6c0146105ab5780634fbee193146105d65780635a139dd41461061357806366ca9b831461063e57806366d602ae146106675761030a565b80631a8145bb116102bc578063313ce56711610296578063313ce567146104c457806339509351146104ef578063499b83941461052c57806349bd5a5e146105555761030a565b80631a8145bb1461043357806323b872dd1461045e5780632be32b611461049b5761030a565b806302dbd8f81461030f57806306fdde0314610338578063095ea7b31461036357806310d5de53146103a05780631694505e146103dd57806318160ddd146104085761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610336600480360381019061033191906140fb565b610c17565b005b34801561034457600080fd5b5061034d610d1c565b60405161035a91906141d4565b60405180910390f35b34801561036f57600080fd5b5061038a60048036038101906103859190614254565b610dae565b60405161039791906142af565b60405180910390f35b3480156103ac57600080fd5b506103c760048036038101906103c291906142ca565b610dcc565b6040516103d491906142af565b60405180910390f35b3480156103e957600080fd5b506103f2610dec565b6040516103ff9190614356565b60405180910390f35b34801561041457600080fd5b5061041d610e10565b60405161042a9190614380565b60405180910390f35b34801561043f57600080fd5b50610448610e1a565b6040516104559190614380565b60405180910390f35b34801561046a57600080fd5b506104856004803603810190610480919061439b565b610e20565b60405161049291906142af565b60405180910390f35b3480156104a757600080fd5b506104c260048036038101906104bd91906143ee565b610f18565b005b3480156104d057600080fd5b506104d961107b565b6040516104e69190614437565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190614254565b611084565b60405161052391906142af565b60405180910390f35b34801561053857600080fd5b50610553600480360381019061054e91906142ca565b611130565b005b34801561056157600080fd5b5061056a6112be565b6040516105779190614461565b60405180910390f35b34801561058c57600080fd5b506105956112e2565b6040516105a291906142af565b60405180910390f35b3480156105b757600080fd5b506105c06112f5565b6040516105cd9190614380565b60405180910390f35b3480156105e257600080fd5b506105fd60048036038101906105f891906142ca565b6112fb565b60405161060a91906142af565b60405180910390f35b34801561061f57600080fd5b50610628611351565b6040516106359190614380565b60405180910390f35b34801561064a57600080fd5b50610665600480360381019061066091906140fb565b611357565b005b34801561067357600080fd5b5061067c61145c565b6040516106899190614380565b60405180910390f35b34801561069e57600080fd5b506106a7611462565b6040516106b49190614380565b60405180910390f35b3480156106c957600080fd5b506106d2611468565b6040516106df91906142af565b60405180910390f35b3480156106f457600080fd5b5061070f600480360381019061070a91906142ca565b61147b565b60405161071c9190614380565b60405180910390f35b34801561073157600080fd5b5061073a6114c3565b005b34801561074857600080fd5b5061075161161b565b005b34801561075f57600080fd5b5061077a6004803603810190610775919061447c565b611716565b60405161078791906142af565b60405180910390f35b34801561079c57600080fd5b506107a56119cc565b6040516107b29190614380565b60405180910390f35b3480156107c757600080fd5b506107d06119d2565b005b3480156107de57600080fd5b506107e7611b24565b6040516107f49190614461565b60405180910390f35b34801561080957600080fd5b50610812611b4e565b60405161081f91906141d4565b60405180910390f35b34801561083457600080fd5b5061084f600480360381019061084a91906144e8565b611be0565b005b34801561085d57600080fd5b5061087860048036038101906108739190614254565b611d14565b60405161088591906142af565b60405180910390f35b34801561089a57600080fd5b506108b560048036038101906108b09190614254565b611dff565b6040516108c291906142af565b60405180910390f35b3480156108d757600080fd5b506108e0611e1d565b6040516108ed9190614380565b60405180910390f35b34801561090257600080fd5b5061091d600480360381019061091891906142ca565b611e23565b60405161092a91906142af565b60405180910390f35b34801561093f57600080fd5b50610948611e43565b60405161095591906142af565b60405180910390f35b34801561096a57600080fd5b50610985600480360381019061098091906144e8565b611e56565b005b34801561099357600080fd5b506109ae60048036038101906109a991906143ee565b611f96565b005b3480156109bc57600080fd5b506109c56120f9565b6040516109d291906142af565b60405180910390f35b3480156109e757600080fd5b50610a0260048036038101906109fd91906143ee565b61210c565b005b348015610a1057600080fd5b50610a19612274565b604051610a269190614380565b60405180910390f35b348015610a3b57600080fd5b50610a566004803603810190610a5191906143ee565b61227a565b005b348015610a6457600080fd5b50610a7f6004803603810190610a7a919061447c565b6123dd565b604051610a8c9190614380565b60405180910390f35b348015610aa157600080fd5b50610aaa612464565b604051610ab79190614380565b60405180910390f35b348015610acc57600080fd5b50610ae76004803603810190610ae291906144e8565b61246a565b005b348015610af557600080fd5b50610afe61255c565b005b348015610b0c57600080fd5b50610b15612610565b604051610b229190614461565b60405180910390f35b348015610b3757600080fd5b50610b40612636565b604051610b4d9190614380565b60405180910390f35b348015610b6257600080fd5b50610b6b61263c565b604051610b789190614380565b60405180910390f35b348015610b8d57600080fd5b50610ba86004803603810190610ba391906142ca565b612642565b005b348015610bb657600080fd5b50610bbf612809565b005b348015610bcd57600080fd5b50610bd6612911565b604051610be39190614380565b60405180910390f35b348015610bf857600080fd5b50610c01612917565b604051610c0e9190614380565b60405180910390f35b610c1f61291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca590614574565b60405180910390fd5b8160148190555080601581905550601554601454610ccc91906145c3565b60138190555060066013541115610d18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0f90614665565b60405180910390fd5b5050565b606060038054610d2b906146b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d57906146b4565b8015610da45780601f10610d7957610100808354040283529160200191610da4565b820191906000526020600020905b815481529060010190602001808311610d8757829003601f168201915b5050505050905090565b6000610dc2610dbb61291d565b8484612925565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60175481565b6000610e2d848484612af0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e7861291d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eef90614758565b60405180910390fd5b610f0c85610f0461291d565b858403612925565b60019150509392505050565b610f2061291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa690614574565b60405180910390fd5b670de0b6b3a76400006103e86001610fc5610e10565b610fcf9190614778565b610fd99190614801565b610fe39190614801565b811015611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101c906148a4565b60405180910390fd5b670de0b6b3a7640000816110399190614778565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410096006546040516110709190614380565b60405180910390a150565b60006012905090565b600061112661109161291d565b84846001600061109f61291d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461112191906145c3565b612925565b6001905092915050565b61113861291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111be90614574565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122e90614936565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298260405160405180910390a250565b7f000000000000000000000000147be4603a7f12161efe8a206270243812c3e38381565b600d60009054906101000a900460ff1681565b60145481565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b61135f61291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e590614574565b60405180910390fd5b816011819055508060128190555060125460115461140c91906145c3565b60108190555060066010541115611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90614665565b60405180910390fd5b5050565b60075481565b60135481565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114cb61291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190614574565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61162361291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a990614574565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506000600f60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b600061172061291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a690614574565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561181f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611816906149a2565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561188e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188590614a0e565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118c99190614461565b602060405180830381865afa1580156118e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190a9190614a43565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611947929190614a70565b6020604051808303816000875af1158015611966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198a9190614aae565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43884826040516119bd929190614a70565b60405180910390a15092915050565b60065481565b6119da61291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6090614574565b60405180910390fd5b600d60019054906101000a900460ff1615611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090614b27565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555043600c819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611b5d906146b4565b80601f0160208091040260200160405190810160405280929190818152602001828054611b89906146b4565b8015611bd65780601f10611bab57610100808354040283529160200191611bd6565b820191906000526020600020905b815481529060010190602001808311611bb957829003601f168201915b5050505050905090565b611be861291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6e90614574565b60405180910390fd5b7f000000000000000000000000147be4603a7f12161efe8a206270243812c3e38373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfd90614bb9565b60405180910390fd5b611d1082826138e5565b5050565b60008060016000611d2361291d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd790614c4b565b60405180910390fd5b611df4611deb61291d565b85858403612925565b600191505092915050565b6000611e13611e0c61291d565b8484612af0565b6001905092915050565b60085481565b601b6020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b611e5e61291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee490614574565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611f8a91906142af565b60405180910390a25050565b611f9e61291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461202d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202490614574565b60405180910390fd5b670de0b6b3a76400006103e86003612043610e10565b61204d9190614778565b6120579190614801565b6120619190614801565b8110156120a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209a90614cdd565b60405180910390fd5b670de0b6b3a7640000816120b79190614778565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516120ee9190614380565b60405180910390a150565b600f60009054906101000a900460ff1681565b61211461291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90614574565b60405180910390fd5b620186a060016121b1610e10565b6121bb9190614778565b6121c59190614801565b811015612207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fe90614d6f565b60405180910390fd5b6103e86001612214610e10565b61221e9190614778565b6122289190614801565b81111561226a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226190614e01565b60405180910390fd5b80600a8190555050565b60105481565b61228261291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230890614574565b60405180910390fd5b670de0b6b3a76400006103e86001612327610e10565b6123319190614778565b61233b9190614801565b6123459190614801565b811015612387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237e90614e93565b60405180910390fd5b670de0b6b3a76400008161239b9190614778565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516123d29190614380565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b61247261291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f890614574565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61256461291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ea90614574565b60405180910390fd5b6000600f60006101000a81548160ff021916908315150217905550565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b60125481565b61264a61291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d090614574565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274090614f25565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61281161291d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289790614574565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516128c690614f76565b60006040518083038185875af1925050503d8060008114612903576040519150601f19603f3d011682016040523d82523d6000602084013e612908565b606091505b50508091505050565b60155481565b60165481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612995576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298c90614ffd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129fc9061508f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ae39190614380565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b5790615121565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc7906151b3565b60405180910390fd5b60008111612c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0a9061521f565b60405180910390fd5b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c6a57600080fd5b600d60009054906101000a900460ff16156133d357612c87611b24565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612cf55750612cc5611b24565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d2e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d68575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156133d257600d60019054906101000a900460ff16612e6257601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e225750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e589061528b565b60405180910390fd5b5b600f60009054906101000a900460ff1615613091577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612f1f57507f000000000000000000000000147be4603a7f12161efe8a206270243812c3e38373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561309057600443612f3191906152ab565b600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054108015612fc85750600443612f8691906152ab565b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b613007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ffe90615351565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131345750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131db5760065481111561317e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613175906153e3565b60405180910390fd5b60085461318a8361147b565b8261319591906145c3565b11156131d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131cd9061544f565b60405180910390fd5b6133d1565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561327e5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132cd576007548111156132c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132bf906154e1565b60405180910390fd5b6133d0565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133715750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133cf576008546133828361147b565b8261338d91906145c3565b11156133ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c59061544f565b60405180910390fd5b5b5b5b5b5b60006133de3061147b565b90506000600a5482101590508080156134035750600d60029054906101000a900460ff165b801561341c5750600960009054906101000a900460ff16155b80156134725750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134c85750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561351e5750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613562576001600960006101000a81548160ff021916908315150217905550613546613986565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806136095750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561361357600090505b60008082156138d05760014361362991906145c3565b600c54101580156136835750601b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136d55760646063876136979190614778565b6136a19190614801565b90506136d088600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613b3c565b6138a1565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561373057506000601354115b156137bc576064601354876137459190614778565b61374f9190614801565b9150601354601554836137629190614778565b61376c9190614801565b6017600082825461377d91906145c3565b92505081905550601354601454836137959190614778565b61379f9190614801565b601660008282546137b091906145c3565b925050819055506138a0565b601b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561381757506000601054115b1561389f5760646010548761382c9190614778565b6138369190614801565b9150601054601254836138499190614778565b6138539190614801565b6017600082825461386491906145c3565b925050819055506010546011548361387c9190614778565b6138869190614801565b6016600082825461389791906145c3565b925050819055505b5b5b60008211156138b6576138b5883084613b3c565b5b80826138c291906145c3565b866138cd91906152ab565b95505b6138db888888613b3c565b5050505050505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60006139913061147b565b905060006016546017546139a591906145c3565b905060008214806139b65750600081145b156139c2575050613b3a565b600a80546139d09190614778565b8211156139e857600a80546139e59190614778565b91505b600080600283601754866139fc9190614778565b613a069190614801565b613a109190614801565b9050613a268185613a2191906152ab565b613da7565b6000479050600081905060006002601754613a419190614801565b86613a4c91906152ab565b60165484613a5a9190614778565b613a649190614801565b90508082613a7291906152ab565b915060006017819055506000601681905550600084118015613a945750600082115b15613aa457613aa38483613fe4565b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613aea90614f76565b60006040518083038185875af1925050503d8060008114613b27576040519150601f19603f3d011682016040523d82523d6000602084013e613b2c565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba390615121565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c13906151b3565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c9990615573565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d3591906145c3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d999190614380565b60405180910390a350505050565b6000600267ffffffffffffffff811115613dc457613dc3615593565b5b604051908082528060200260200182016040528015613df25781602001602082028036833780820191505090505b5090503081600081518110613e0a57613e096155c2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ed39190615606565b81600181518110613ee757613ee66155c2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f4c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612925565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fae95949392919061572c565b600060405180830381600087803b158015613fc857600080fd5b505af1158015613fdc573d6000803e3d6000fd5b505050505050565b61400f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612925565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161407696959493929190615786565b60606040518083038185885af1158015614094573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140b991906157e7565b5050505050565b600080fd5b6000819050919050565b6140d8816140c5565b81146140e357600080fd5b50565b6000813590506140f5816140cf565b92915050565b60008060408385031215614112576141116140c0565b5b6000614120858286016140e6565b9250506020614131858286016140e6565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561417557808201518184015260208101905061415a565b83811115614184576000848401525b50505050565b6000601f19601f8301169050919050565b60006141a68261413b565b6141b08185614146565b93506141c0818560208601614157565b6141c98161418a565b840191505092915050565b600060208201905081810360008301526141ee818461419b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614221826141f6565b9050919050565b61423181614216565b811461423c57600080fd5b50565b60008135905061424e81614228565b92915050565b6000806040838503121561426b5761426a6140c0565b5b60006142798582860161423f565b925050602061428a858286016140e6565b9150509250929050565b60008115159050919050565b6142a981614294565b82525050565b60006020820190506142c460008301846142a0565b92915050565b6000602082840312156142e0576142df6140c0565b5b60006142ee8482850161423f565b91505092915050565b6000819050919050565b600061431c614317614312846141f6565b6142f7565b6141f6565b9050919050565b600061432e82614301565b9050919050565b600061434082614323565b9050919050565b61435081614335565b82525050565b600060208201905061436b6000830184614347565b92915050565b61437a816140c5565b82525050565b60006020820190506143956000830184614371565b92915050565b6000806000606084860312156143b4576143b36140c0565b5b60006143c28682870161423f565b93505060206143d38682870161423f565b92505060406143e4868287016140e6565b9150509250925092565b600060208284031215614404576144036140c0565b5b6000614412848285016140e6565b91505092915050565b600060ff82169050919050565b6144318161441b565b82525050565b600060208201905061444c6000830184614428565b92915050565b61445b81614216565b82525050565b60006020820190506144766000830184614452565b92915050565b60008060408385031215614493576144926140c0565b5b60006144a18582860161423f565b92505060206144b28582860161423f565b9150509250929050565b6144c581614294565b81146144d057600080fd5b50565b6000813590506144e2816144bc565b92915050565b600080604083850312156144ff576144fe6140c0565b5b600061450d8582860161423f565b925050602061451e858286016144d3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061455e602083614146565b915061456982614528565b602082019050919050565b6000602082019050818103600083015261458d81614551565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145ce826140c5565b91506145d9836140c5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561460e5761460d614594565b5b828201905092915050565b7f4d757374206b6565702066656573206174203625206f72206c65737300000000600082015250565b600061464f601c83614146565b915061465a82614619565b602082019050919050565b6000602082019050818103600083015261467e81614642565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806146cc57607f821691505b602082108114156146e0576146df614685565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614742602883614146565b915061474d826146e6565b604082019050919050565b6000602082019050818103600083015261477181614735565b9050919050565b6000614783826140c5565b915061478e836140c5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147c7576147c6614594565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061480c826140c5565b9150614817836140c5565b925082614827576148266147d2565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b600061488e602983614146565b915061489982614832565b604082019050919050565b600060208201905081810360008301526148bd81614881565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614920602683614146565b915061492b826148c4565b604082019050919050565b6000602082019050818103600083015261494f81614913565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b600061498c601a83614146565b915061499782614956565b602082019050919050565b600060208201905081810360008301526149bb8161497f565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b60006149f8601c83614146565b9150614a03826149c2565b602082019050919050565b60006020820190508181036000830152614a27816149eb565b9050919050565b600081519050614a3d816140cf565b92915050565b600060208284031215614a5957614a586140c0565b5b6000614a6784828501614a2e565b91505092915050565b6000604082019050614a856000830185614452565b614a926020830184614371565b9392505050565b600081519050614aa8816144bc565b92915050565b600060208284031215614ac457614ac36140c0565b5b6000614ad284828501614a99565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614b11601783614146565b9150614b1c82614adb565b602082019050919050565b60006020820190508181036000830152614b4081614b04565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614ba3603983614146565b9150614bae82614b47565b604082019050919050565b60006020820190508181036000830152614bd281614b96565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614c35602583614146565b9150614c4082614bd9565b604082019050919050565b60006020820190508181036000830152614c6481614c28565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614cc7602c83614146565b9150614cd282614c6b565b604082019050919050565b60006020820190508181036000830152614cf681614cba565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614d59603583614146565b9150614d6482614cfd565b604082019050919050565b60006020820190508181036000830152614d8881614d4c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614deb603483614146565b9150614df682614d8f565b604082019050919050565b60006020820190508181036000830152614e1a81614dde565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614e7d602a83614146565b9150614e8882614e21565b604082019050919050565b60006020820190508181036000830152614eac81614e70565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f0f602683614146565b9150614f1a82614eb3565b604082019050919050565b60006020820190508181036000830152614f3e81614f02565b9050919050565b600081905092915050565b50565b6000614f60600083614f45565b9150614f6b82614f50565b600082019050919050565b6000614f8182614f53565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614fe7602483614146565b9150614ff282614f8b565b604082019050919050565b6000602082019050818103600083015261501681614fda565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615079602283614146565b91506150848261501d565b604082019050919050565b600060208201905081810360008301526150a88161506c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061510b602583614146565b9150615116826150af565b604082019050919050565b6000602082019050818103600083015261513a816150fe565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061519d602383614146565b91506151a882615141565b604082019050919050565b600060208201905081810360008301526151cc81615190565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615209601d83614146565b9150615214826151d3565b602082019050919050565b60006020820190508181036000830152615238816151fc565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000615275601683614146565b91506152808261523f565b602082019050919050565b600060208201905081810360008301526152a481615268565b9050919050565b60006152b6826140c5565b91506152c1836140c5565b9250828210156152d4576152d3614594565b5b828203905092915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b600061533b603583614146565b9150615346826152df565b604082019050919050565b6000602082019050818103600083015261536a8161532e565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b60006153cd602883614146565b91506153d882615371565b604082019050919050565b600060208201905081810360008301526153fc816153c0565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615439601883614146565b915061544482615403565b602082019050919050565b600060208201905081810360008301526154688161542c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b60006154cb602a83614146565b91506154d68261546f565b604082019050919050565b600060208201905081810360008301526154fa816154be565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061555d602683614146565b915061556882615501565b604082019050919050565b6000602082019050818103600083015261558c81615550565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061560081614228565b92915050565b60006020828403121561561c5761561b6140c0565b5b600061562a848285016155f1565b91505092915050565b6000819050919050565b600061565861565361564e84615633565b6142f7565b6140c5565b9050919050565b6156688161563d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6156a381614216565b82525050565b60006156b5838361569a565b60208301905092915050565b6000602082019050919050565b60006156d98261566e565b6156e38185615679565b93506156ee8361568a565b8060005b8381101561571f57815161570688826156a9565b9750615711836156c1565b9250506001810190506156f2565b5085935050505092915050565b600060a0820190506157416000830188614371565b61574e602083018761565f565b818103604083015261576081866156ce565b905061576f6060830185614452565b61577c6080830184614371565b9695505050505050565b600060c08201905061579b6000830189614452565b6157a86020830188614371565b6157b5604083018761565f565b6157c2606083018661565f565b6157cf6080830185614452565b6157dc60a0830184614371565b979650505050505050565b600080600060608486031215615800576157ff6140c0565b5b600061580e86828701614a2e565b935050602061581f86828701614a2e565b925050604061583086828701614a2e565b915050925092509256fea2646970667358221220bd83a42e98a7253de4a12a2004a1eb30bedaf26f8540c396905cccb67b71e52964736f6c634300080b0033

Deployed Bytecode Sourcemap

9320:15216:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16438:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3958:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4872:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10633:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9473:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4279:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10377:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5049:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14042:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4178:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5549:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24236:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9523:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9760:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10257:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15315:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10145:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16118:312;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9399:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10222;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9840:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4395:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8039:150;;;;;;;;;;;;;:::i;:::-;;13588:154;;;;;;;;;;;;;:::i;:::-;;23542:456;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9365:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13283:249;;;;;;;;;;;;;:::i;:::-;;7825:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4066:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15668:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5772:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4530:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9434:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10855:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9800:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16765:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14605:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10063:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14959:346;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10111:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14323:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4713:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9598:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13754:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13932:98;;;;;;;;;;;;;:::i;:::-;;9640:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9681:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10183:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8197:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24068:160;;;;;;;;;;;;;:::i;:::-;;10296:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10336:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16438:319;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16559:14:::1;16539:17;:34;;;;16603:13;16584:16;:32;;;;16663:16;;16643:17;;:36;;;;:::i;:::-;16627:13;:52;;;;16715:1;16698:13;;:18;;16690:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;16438:319:::0;;:::o;3958:100::-;4012:13;4045:5;4038:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3958:100;:::o;4872:169::-;4955:4;4972:39;4981:12;:10;:12::i;:::-;4995:7;5004:6;4972:8;:39::i;:::-;5029:4;5022:11;;4872:169;;;;:::o;10633:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;9473:43::-;;;:::o;4279:108::-;4340:7;4367:12;;4360:19;;4279:108;:::o;10377:33::-;;;;:::o;5049:492::-;5189:4;5206:36;5216:6;5224:9;5235:6;5206:9;:36::i;:::-;5255:24;5282:11;:19;5294:6;5282:19;;;;;;;;;;;;;;;:33;5302:12;:10;:12::i;:::-;5282:33;;;;;;;;;;;;;;;;5255:60;;5354:6;5334:16;:26;;5326:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5441:57;5450:6;5458:12;:10;:12::i;:::-;5491:6;5472:16;:25;5441:8;:57::i;:::-;5529:4;5522:11;;;5049:492;;;;;:::o;14042:269::-;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14161:4:::1;14155;14151:1;14135:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;14134:31;;;;:::i;:::-;14124:6;:41;;14116:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;14247:6;14237;:17;;;;:::i;:::-;14222:12;:32;;;;14270:33;14290:12;;14270:33;;;;;;:::i;:::-;;;;;;;;14042:269:::0;:::o;4178:93::-;4236:5;4261:2;4254:9;;4178:93;:::o;5549:215::-;5637:4;5654:80;5663:12;:10;:12::i;:::-;5677:7;5723:10;5686:11;:25;5698:12;:10;:12::i;:::-;5686:25;;;;;;;;;;;;;;;:34;5712:7;5686:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5654:8;:80::i;:::-;5752:4;5745:11;;5549:215;;;;:::o;24236:297::-;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24362:1:::1;24332:32;;:18;:32;;;;24324:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;24446:18;24418:17;;:47;;;;;;;;;;;;;;;;;;24506:18;24481:44;;;;;;;;;;;;24236:297:::0;:::o;9523:38::-;;;:::o;9760:33::-;;;;;;;;;;;;;:::o;10257:32::-;;;;:::o;15315:126::-;15381:4;15405:19;:28;15425:7;15405:28;;;;;;;;;;;;;;;;;;;;;;;;;15398:35;;15315:126;;;:::o;10145:31::-;;;;:::o;16118:312::-;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16237:14:::1;16218:16;:33;;;;16280:13;16262:15;:31;;;;16338:15;;16319:16;;:34;;;;:::i;:::-;16304:12;:49;;;;16388:1;16372:12;;:17;;16364:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;16118:312:::0;;:::o;9399:28::-;;;;:::o;10222:::-;;;;:::o;9840:31::-;;;;;;;;;;;;;:::o;4395:127::-;4469:7;4496:9;:18;4506:7;4496:18;;;;;;;;;;;;;;;;4489:25;;4395:127;;;:::o;8039:150::-;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8148:1:::1;8111:40;;8132:6;;;;;;;;;;;8111:40;;;;;;;;;;;;8179:1;8162:6;;:19;;;;;;;;;;;;;;;;;;8039:150::o:0;13588:154::-;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13659:5:::1;13642:14;;:22;;;;;;;;;;;;;;;;;;13698:5;13675:20;;:28;;;;;;;;;;;;;;;;;;13719:15;;;;;;;;;;13588:154::o:0;23542:456::-;23629:10;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23678:1:::1;23660:20;;:6;:20;;;;23652:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;23748:4;23730:23;;:6;:23;;;;23722:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23797:24;23831:6;23824:24;;;23857:4;23824:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23797:66;;23889:6;23882:23;;;23906:3;23911:16;23882:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23874:54;;23944:46;23965:6;23973:16;23944:46;;;;;;;:::i;:::-;;;;;;;;23641:357;23542:456:::0;;;;:::o;9365:27::-;;;;:::o;13283:249::-;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13347:13:::1;;;;;;;;;;;13346:14;13338:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13415:4;13399:13;;:20;;;;;;;;;;;;;;;;;;13444:4;13430:11;;:18;;;;;;;;;;;;;;;;;;13480:12;13459:18;:33;;;;13508:16;;;;;;;;;;13283:249::o:0;7825:79::-;7863:7;7890:6;;;;;;;;;;;7883:13;;7825:79;:::o;4066:104::-;4122:13;4155:7;4148:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4066:104;:::o;15668:246::-;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15777:13:::1;15769:21;;:4;:21;;;;15761:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;15865:41;15894:4;15900:5;15865:28;:41::i;:::-;15668:246:::0;;:::o;5772:413::-;5865:4;5882:24;5909:11;:25;5921:12;:10;:12::i;:::-;5909:25;;;;;;;;;;;;;;;:34;5935:7;5909:34;;;;;;;;;;;;;;;;5882:61;;5982:15;5962:16;:35;;5954:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6075:67;6084:12;:10;:12::i;:::-;6098:7;6126:15;6107:16;:34;6075:8;:67::i;:::-;6173:4;6166:11;;;5772:413;;;;:::o;4530:175::-;4616:4;4633:42;4643:12;:10;:12::i;:::-;4657:9;4668:6;4633:9;:42::i;:::-;4693:4;4686:11;;4530:175;;;;:::o;9434:30::-;;;;:::o;10855:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;9800:33::-;;;;;;;;;;;;;:::o;16765:182::-;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16881:8:::1;16850:19;:28;16870:7;16850:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16921:7;16905:34;;;16930:8;16905:34;;;;;;:::i;:::-;;;;;;;;16765:182:::0;;:::o;14605:284::-;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14727:4:::1;14721;14717:1;14701:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;14700:31;;;;:::i;:::-;14690:6;:41;;14682:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;14819:6;14809;:17;;;;:::i;:::-;14791:15;:35;;;;14842:39;14865:15;;14842:39;;;;;;:::i;:::-;;;;;;;;14605:284:::0;:::o;10063:39::-;;;;;;;;;;;;;:::o;14959:346::-;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15082:6:::1;15078:1;15062:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;15049:9;:39;;15041:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;15197:4;15193:1;15177:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;15164:9;:37;;15156:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;15289:9;15268:18;:30;;;;14959:346:::0;:::o;10111:27::-;;;;:::o;14323:274::-;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14443:4:::1;14437;14433:1;14417:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;14416:31;;;;:::i;:::-;14406:6;:41;;14398:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;14531:6;14521;:17;;;;:::i;:::-;14505:13;:33;;;;14554:35;14575:13;;14554:35;;;;;;:::i;:::-;;;;;;;;14323:274:::0;:::o;4713:151::-;4802:7;4829:11;:18;4841:5;4829:18;;;;;;;;;;;;;;;:27;4848:7;4829:27;;;;;;;;;;;;;;;;4822:34;;4713:151;;;;:::o;9598:33::-;;;;:::o;13754:114::-;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13852:8:::1;13833:7;:16;13841:7;13833:16;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;13754:114:::0;;:::o;13932:98::-;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14017:5:::1;13994:20;;:28;;;;;;;;;;;;;;;;;;13932:98::o:0;9640:32::-;;;;;;;;;;;;;:::o;9681:37::-;;;;:::o;10183:30::-;;;;:::o;8197:244::-;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8306:1:::1;8286:22;;:8;:22;;;;8278:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8396:8;8367:38;;8388:6;;;;;;;;;;;8367:38;;;;;;;;;;;;8425:8;8416:6;;:17;;;;;;;;;;;;;;;;;;8197:244:::0;:::o;24068:160::-;7962:12;:10;:12::i;:::-;7952:22;;:6;;;;;;;;;;;:22;;;7944:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24126:12:::1;24170:10;24162:24;;24194:21;24162:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24149:71;;;;;24115:113;24068:160::o:0;10296:31::-;;;;:::o;10336:34::-;;;;:::o;226:98::-;279:7;306:10;299:17;;226:98;:::o;7114:380::-;7267:1;7250:19;;:5;:19;;;;7242:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7348:1;7329:21;;:7;:21;;;;7321:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7432:6;7402:11;:18;7414:5;7402:18;;;;;;;;;;;;;;;:27;7421:7;7402:27;;;;;;;;;;;;;;;:36;;;;7470:7;7454:32;;7463:5;7454:32;;;7479:6;7454:32;;;;;;:::i;:::-;;;;;;;;7114:380;;;:::o;16955:4216::-;17071:1;17055:18;;:4;:18;;;;17047:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17148:1;17134:16;;:2;:16;;;;17126:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17218:1;17209:6;:10;17201:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17273:7;:11;17281:2;17273:11;;;;;;;;;;;;;;;;;;;;;;;;;17272:12;17264:21;;;;;;17309:14;;;;;;;;;;;17306:1850;;;17351:7;:5;:7::i;:::-;17343:15;;:4;:15;;;;:32;;;;;17368:7;:5;:7::i;:::-;17362:13;;:2;:13;;;;17343:32;:52;;;;;17393:1;17379:16;;:2;:16;;;;17343:52;:77;;;;;17413:6;17399:21;;:2;:21;;;;17343:77;17339:1806;;;17445:13;;;;;;;;;;;17441:148;;17490:19;:25;17510:4;17490:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17519:19;:23;17539:2;17519:23;;;;;;;;;;;;;;;;;;;;;;;;;17490:52;17482:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17441:148;17763:20;;;;;;;;;;;17759:519;;;17825:15;17811:30;;:2;:30;;;;:62;;;;;17859:13;17845:28;;:2;:28;;;;17811:62;17807:452;;;17966:1;17951:12;:16;;;;:::i;:::-;17909:28;:39;17938:9;17909:39;;;;;;;;;;;;;;;;:58;:113;;;;;18021:1;18006:12;:16;;;;:::i;:::-;17971:28;:32;18000:2;17971:32;;;;;;;;;;;;;;;;:51;17909:113;17901:179;;;;;;;;;;;;:::i;:::-;;;;;;;;;18149:12;18107:28;:39;18136:9;18107:39;;;;;;;;;;;;;;;:54;;;;18223:12;18188:28;:32;18217:2;18188:32;;;;;;;;;;;;;;;:47;;;;17807:452;17759:519;18347:25;:31;18373:4;18347:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;18383:31;:35;18415:2;18383:35;;;;;;;;;;;;;;;;;;;;;;;;;18382:36;18347:71;18343:787;;;18465:12;;18455:6;:22;;18447:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;18583:15;;18566:13;18576:2;18566:9;:13::i;:::-;18557:6;:22;;;;:::i;:::-;:41;;18549:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18343:787;;;18704:25;:29;18730:2;18704:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;18738:31;:37;18770:4;18738:37;;;;;;;;;;;;;;;;;;;;;;;;;18737:38;18704:71;18700:430;;;18822:13;;18812:6;:23;;18804:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18700:430;;;18931:31;:35;18963:2;18931:35;;;;;;;;;;;;;;;;;;;;;;;;;18930:36;:78;;;;;18971:31;:37;19003:4;18971:37;;;;;;;;;;;;;;;;;;;;;;;;;18970:38;18930:78;18926:204;;;19066:15;;19049:13;19059:2;19049:9;:13::i;:::-;19040:6;:22;;;;:::i;:::-;:41;;19032:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18926:204;18700:430;18343:787;17339:1806;17306:1850;19168:28;19199:24;19217:4;19199:9;:24::i;:::-;19168:55;;19244:12;19283:18;;19259:20;:42;;19244:57;;19317:7;:22;;;;;19328:11;;;;;;;;;;;19317:22;:35;;;;;19344:8;;;;;;;;;;;19343:9;19317:35;:71;;;;;19357:25;:31;19383:4;19357:31;;;;;;;;;;;;;;;;;;;;;;;;;19356:32;19317:71;:101;;;;;19393:19;:25;19413:4;19393:25;;;;;;;;;;;;;;;;;;;;;;;;;19392:26;19317:101;:129;;;;;19423:19;:23;19443:2;19423:23;;;;;;;;;;;;;;;;;;;;;;;;;19422:24;19317:129;19314:236;;;19474:4;19463:8;;:15;;;;;;;;;;;;;;;;;;19495:10;:8;:10::i;:::-;19533:5;19522:8;;:16;;;;;;;;;;;;;;;;;;19314:236;19562:12;19577:4;19562:19;;19680;:25;19700:4;19680:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19709:19;:23;19729:2;19709:23;;;;;;;;;;;;;;;;;;;;;;;;;19680:52;19677:99;;;19759:5;19749:15;;19677:99;19796:12;19823:21;19936:7;19933:1185;;;20106:1;20091:12;:16;;;;:::i;:::-;20069:18;;:38;;:73;;;;;20111:25;:31;20137:4;20111:31;;;;;;;;;;;;;;;;;;;;;;;;;20069:73;20066:867;;;20192:3;20187:2;20178:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;20162:33;;20214:55;20230:4;20236:17;;;;;;;;;;;20255:13;20214:15;:55::i;:::-;20066:867;;;20332:25;:29;20358:2;20332:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;20381:1;20365:13;;:17;20332:50;20328:605;;;20433:3;20418:13;;20409:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;20402:34;;20503:13;;20484:16;;20477:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;20455:18;;:61;;;;;;;:::i;:::-;;;;;;;;20585:13;;20565:17;;20558:4;:24;;;;:::i;:::-;:40;;;;:::i;:::-;20535:19;;:63;;;;;;;:::i;:::-;;;;;;;;20328:605;;;20659:25;:31;20685:4;20659:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;20709:1;20694:12;;:16;20659:51;20656:277;;;20759:3;20744:12;;20735:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;20728:34;;20825:12;;20807:15;;20800:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;20778:18;;:59;;;;;;;:::i;:::-;;;;;;;;20905:12;;20886:16;;20879:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;20856:19;;:61;;;;;;;:::i;:::-;;;;;;;;20656:277;20328:605;20066:867;20971:1;20964:4;:8;20961:93;;;20996:42;21012:4;21026;21033;20996:15;:42::i;:::-;20961:93;21093:13;21086:4;:20;;;;:::i;:::-;21076:30;;;;;:::i;:::-;;;19933:1185;21130:33;21146:4;21152:2;21156:6;21130:15;:33::i;:::-;17034:4137;;;;;16955:4216;;;:::o;15922:188::-;16039:5;16005:25;:31;16031:4;16005:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16096:5;16062:40;;16090:4;16062:40;;;;;;;;;;;;15922:188;;:::o;22311:1223::-;22350:23;22376:24;22394:4;22376:9;:24::i;:::-;22350:50;;22411:25;22460:19;;22439:18;;:40;;;;:::i;:::-;22411:68;;22522:1;22503:15;:20;:46;;;;22548:1;22527:17;:22;22503:46;22500:60;;;22552:7;;;;22500:60;22614:2;22593:18;;:23;;;;:::i;:::-;22575:15;:41;22572:113;;;22671:2;22650:18;;:23;;;;:::i;:::-;22632:41;;22572:113;22697:12;22779:23;22864:1;22844:17;22823:18;;22805:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;22779:86;;22886:51;22921:15;22903;:33;;;;:::i;:::-;22886:16;:51::i;:::-;22959:18;22980:21;22959:42;;23012:23;23038:10;23012:36;;23061:24;23164:1;23145:18;;:20;;;;:::i;:::-;23124:17;:42;;;;:::i;:::-;23101:19;;23088:10;:32;;;;:::i;:::-;:79;;;;:::i;:::-;23061:106;;23199:16;23180:35;;;;;:::i;:::-;;;23261:1;23240:18;:22;;;;23295:1;23273:19;:23;;;;23338:1;23320:15;:19;:42;;;;;23361:1;23343:15;:19;23320:42;23317:119;;;23378:46;23391:15;23408;23378:12;:46::i;:::-;23317:119;23469:17;;;;;;;;;;;23461:31;;23500:21;23461:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23448:78;;;;;22339:1195;;;;;;;22311:1223;:::o;6193:614::-;6351:1;6333:20;;:6;:20;;;;6325:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6435:1;6414:23;;:9;:23;;;;6406:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6490:21;6514:9;:17;6524:6;6514:17;;;;;;;;;;;;;;;;6490:41;;6567:6;6550:13;:23;;6542:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6688:6;6672:13;:22;6652:9;:17;6662:6;6652:17;;;;;;;;;;;;;;;:42;;;;6740:6;6716:9;:20;6726:9;6716:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6781:9;6764:35;;6773:6;6764:35;;;6792:6;6764:35;;;;;;:::i;:::-;;;;;;;;6314:493;6193:614;;;:::o;21179:591::-;21307:21;21345:1;21331:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21307:40;;21376:4;21358;21363:1;21358:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21402:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21392:4;21397:1;21392:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;21437:62;21454:4;21469:15;21487:11;21437:8;:62::i;:::-;21538:15;:66;;;21619:11;21645:1;21689:4;21716;21736:15;21538:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21234:536;21179:591;:::o;21782:521::-;21930:62;21947:4;21962:15;21980:11;21930:8;:62::i;:::-;22035:15;:31;;;22074:9;22107:4;22127:11;22153:1;22196;22247:6;22269:15;22035:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21782:521;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:307::-;1518:1;1528:113;1542:6;1539:1;1536:13;1528:113;;;1627:1;1622:3;1618:11;1612:18;1608:1;1603:3;1599:11;1592:39;1564:2;1561:1;1557:10;1552:15;;1528:113;;;1659:6;1656:1;1653:13;1650:101;;;1739:1;1730:6;1725:3;1721:16;1714:27;1650:101;1499:258;1450:307;;;:::o;1763:102::-;1804:6;1855:2;1851:7;1846:2;1839:5;1835:14;1831:28;1821:38;;1763:102;;;:::o;1871:364::-;1959:3;1987:39;2020:5;1987:39;:::i;:::-;2042:71;2106:6;2101:3;2042:71;:::i;:::-;2035:78;;2122:52;2167:6;2162:3;2155:4;2148:5;2144:16;2122:52;:::i;:::-;2199:29;2221:6;2199:29;:::i;:::-;2194:3;2190:39;2183:46;;1963:272;1871:364;;;;:::o;2241:313::-;2354:4;2392:2;2381:9;2377:18;2369:26;;2441:9;2435:4;2431:20;2427:1;2416:9;2412:17;2405:47;2469:78;2542:4;2533:6;2469:78;:::i;:::-;2461:86;;2241:313;;;;:::o;2560:126::-;2597:7;2637:42;2630:5;2626:54;2615:65;;2560:126;;;:::o;2692:96::-;2729:7;2758:24;2776:5;2758:24;:::i;:::-;2747:35;;2692:96;;;:::o;2794:122::-;2867:24;2885:5;2867:24;:::i;:::-;2860:5;2857:35;2847:63;;2906:1;2903;2896:12;2847:63;2794:122;:::o;2922:139::-;2968:5;3006:6;2993:20;2984:29;;3022:33;3049:5;3022:33;:::i;:::-;2922:139;;;;:::o;3067:474::-;3135:6;3143;3192:2;3180:9;3171:7;3167:23;3163:32;3160:119;;;3198:79;;:::i;:::-;3160:119;3318:1;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3289:117;3445:2;3471:53;3516:7;3507:6;3496:9;3492:22;3471:53;:::i;:::-;3461:63;;3416:118;3067:474;;;;;:::o;3547:90::-;3581:7;3624:5;3617:13;3610:21;3599:32;;3547:90;;;:::o;3643:109::-;3724:21;3739:5;3724:21;:::i;:::-;3719:3;3712:34;3643:109;;:::o;3758:210::-;3845:4;3883:2;3872:9;3868:18;3860:26;;3896:65;3958:1;3947:9;3943:17;3934:6;3896:65;:::i;:::-;3758:210;;;;:::o;3974:329::-;4033:6;4082:2;4070:9;4061:7;4057:23;4053:32;4050:119;;;4088:79;;:::i;:::-;4050:119;4208:1;4233:53;4278:7;4269:6;4258:9;4254:22;4233:53;:::i;:::-;4223:63;;4179:117;3974:329;;;;:::o;4309:60::-;4337:3;4358:5;4351:12;;4309:60;;;:::o;4375:142::-;4425:9;4458:53;4476:34;4485:24;4503:5;4485:24;:::i;:::-;4476:34;:::i;:::-;4458:53;:::i;:::-;4445:66;;4375:142;;;:::o;4523:126::-;4573:9;4606:37;4637:5;4606:37;:::i;:::-;4593:50;;4523:126;;;:::o;4655:144::-;4723:9;4756:37;4787:5;4756:37;:::i;:::-;4743:50;;4655:144;;;:::o;4805:167::-;4910:55;4959:5;4910:55;:::i;:::-;4905:3;4898:68;4805:167;;:::o;4978:258::-;5089:4;5127:2;5116:9;5112:18;5104:26;;5140:89;5226:1;5215:9;5211:17;5202:6;5140:89;:::i;:::-;4978:258;;;;:::o;5242:118::-;5329:24;5347:5;5329:24;:::i;:::-;5324:3;5317:37;5242:118;;:::o;5366:222::-;5459:4;5497:2;5486:9;5482:18;5474:26;;5510:71;5578:1;5567:9;5563:17;5554:6;5510:71;:::i;:::-;5366:222;;;;:::o;5594:619::-;5671:6;5679;5687;5736:2;5724:9;5715:7;5711:23;5707:32;5704:119;;;5742:79;;:::i;:::-;5704:119;5862:1;5887:53;5932:7;5923:6;5912:9;5908:22;5887:53;:::i;:::-;5877:63;;5833:117;5989:2;6015:53;6060:7;6051:6;6040:9;6036:22;6015:53;:::i;:::-;6005:63;;5960:118;6117:2;6143:53;6188:7;6179:6;6168:9;6164:22;6143:53;:::i;:::-;6133:63;;6088:118;5594:619;;;;;:::o;6219:329::-;6278:6;6327:2;6315:9;6306:7;6302:23;6298:32;6295:119;;;6333:79;;:::i;:::-;6295:119;6453:1;6478:53;6523:7;6514:6;6503:9;6499:22;6478:53;:::i;:::-;6468:63;;6424:117;6219:329;;;;:::o;6554:86::-;6589:7;6629:4;6622:5;6618:16;6607:27;;6554:86;;;:::o;6646:112::-;6729:22;6745:5;6729:22;:::i;:::-;6724:3;6717:35;6646:112;;:::o;6764:214::-;6853:4;6891:2;6880:9;6876:18;6868:26;;6904:67;6968:1;6957:9;6953:17;6944:6;6904:67;:::i;:::-;6764:214;;;;:::o;6984:118::-;7071:24;7089:5;7071:24;:::i;:::-;7066:3;7059:37;6984:118;;:::o;7108:222::-;7201:4;7239:2;7228:9;7224:18;7216:26;;7252:71;7320:1;7309:9;7305:17;7296:6;7252:71;:::i;:::-;7108:222;;;;:::o;7336:474::-;7404:6;7412;7461:2;7449:9;7440:7;7436:23;7432:32;7429:119;;;7467:79;;:::i;:::-;7429:119;7587:1;7612:53;7657:7;7648:6;7637:9;7633:22;7612:53;:::i;:::-;7602:63;;7558:117;7714:2;7740:53;7785:7;7776:6;7765:9;7761:22;7740:53;:::i;:::-;7730:63;;7685:118;7336:474;;;;;:::o;7816:116::-;7886:21;7901:5;7886:21;:::i;:::-;7879:5;7876:32;7866:60;;7922:1;7919;7912:12;7866:60;7816:116;:::o;7938:133::-;7981:5;8019:6;8006:20;7997:29;;8035:30;8059:5;8035:30;:::i;:::-;7938:133;;;;:::o;8077:468::-;8142:6;8150;8199:2;8187:9;8178:7;8174:23;8170:32;8167:119;;;8205:79;;:::i;:::-;8167:119;8325:1;8350:53;8395:7;8386:6;8375:9;8371:22;8350:53;:::i;:::-;8340:63;;8296:117;8452:2;8478:50;8520:7;8511:6;8500:9;8496:22;8478:50;:::i;:::-;8468:60;;8423:115;8077:468;;;;;:::o;8551:182::-;8691:34;8687:1;8679:6;8675:14;8668:58;8551:182;:::o;8739:366::-;8881:3;8902:67;8966:2;8961:3;8902:67;:::i;:::-;8895:74;;8978:93;9067:3;8978:93;:::i;:::-;9096:2;9091:3;9087:12;9080:19;;8739:366;;;:::o;9111:419::-;9277:4;9315:2;9304:9;9300:18;9292:26;;9364:9;9358:4;9354:20;9350:1;9339:9;9335:17;9328:47;9392:131;9518:4;9392:131;:::i;:::-;9384:139;;9111:419;;;:::o;9536:180::-;9584:77;9581:1;9574:88;9681:4;9678:1;9671:15;9705:4;9702:1;9695:15;9722:305;9762:3;9781:20;9799:1;9781:20;:::i;:::-;9776:25;;9815:20;9833:1;9815:20;:::i;:::-;9810:25;;9969:1;9901:66;9897:74;9894:1;9891:81;9888:107;;;9975:18;;:::i;:::-;9888:107;10019:1;10016;10012:9;10005:16;;9722:305;;;;:::o;10033:178::-;10173:30;10169:1;10161:6;10157:14;10150:54;10033:178;:::o;10217:366::-;10359:3;10380:67;10444:2;10439:3;10380:67;:::i;:::-;10373:74;;10456:93;10545:3;10456:93;:::i;:::-;10574:2;10569:3;10565:12;10558:19;;10217:366;;;:::o;10589:419::-;10755:4;10793:2;10782:9;10778:18;10770:26;;10842:9;10836:4;10832:20;10828:1;10817:9;10813:17;10806:47;10870:131;10996:4;10870:131;:::i;:::-;10862:139;;10589:419;;;:::o;11014:180::-;11062:77;11059:1;11052:88;11159:4;11156:1;11149:15;11183:4;11180:1;11173:15;11200:320;11244:6;11281:1;11275:4;11271:12;11261:22;;11328:1;11322:4;11318:12;11349:18;11339:81;;11405:4;11397:6;11393:17;11383:27;;11339:81;11467:2;11459:6;11456:14;11436:18;11433:38;11430:84;;;11486:18;;:::i;:::-;11430:84;11251:269;11200:320;;;:::o;11526:227::-;11666:34;11662:1;11654:6;11650:14;11643:58;11735:10;11730:2;11722:6;11718:15;11711:35;11526:227;:::o;11759:366::-;11901:3;11922:67;11986:2;11981:3;11922:67;:::i;:::-;11915:74;;11998:93;12087:3;11998:93;:::i;:::-;12116:2;12111:3;12107:12;12100:19;;11759:366;;;:::o;12131:419::-;12297:4;12335:2;12324:9;12320:18;12312:26;;12384:9;12378:4;12374:20;12370:1;12359:9;12355:17;12348:47;12412:131;12538:4;12412:131;:::i;:::-;12404:139;;12131:419;;;:::o;12556:348::-;12596:7;12619:20;12637:1;12619:20;:::i;:::-;12614:25;;12653:20;12671:1;12653:20;:::i;:::-;12648:25;;12841:1;12773:66;12769:74;12766:1;12763:81;12758:1;12751:9;12744:17;12740:105;12737:131;;;12848:18;;:::i;:::-;12737:131;12896:1;12893;12889:9;12878:20;;12556:348;;;;:::o;12910:180::-;12958:77;12955:1;12948:88;13055:4;13052:1;13045:15;13079:4;13076:1;13069:15;13096:185;13136:1;13153:20;13171:1;13153:20;:::i;:::-;13148:25;;13187:20;13205:1;13187:20;:::i;:::-;13182:25;;13226:1;13216:35;;13231:18;;:::i;:::-;13216:35;13273:1;13270;13266:9;13261:14;;13096:185;;;;:::o;13287:228::-;13427:34;13423:1;13415:6;13411:14;13404:58;13496:11;13491:2;13483:6;13479:15;13472:36;13287:228;:::o;13521:366::-;13663:3;13684:67;13748:2;13743:3;13684:67;:::i;:::-;13677:74;;13760:93;13849:3;13760:93;:::i;:::-;13878:2;13873:3;13869:12;13862:19;;13521:366;;;:::o;13893:419::-;14059:4;14097:2;14086:9;14082:18;14074:26;;14146:9;14140:4;14136:20;14132:1;14121:9;14117:17;14110:47;14174:131;14300:4;14174:131;:::i;:::-;14166:139;;13893:419;;;:::o;14318:225::-;14458:34;14454:1;14446:6;14442:14;14435:58;14527:8;14522:2;14514:6;14510:15;14503:33;14318:225;:::o;14549:366::-;14691:3;14712:67;14776:2;14771:3;14712:67;:::i;:::-;14705:74;;14788:93;14877:3;14788:93;:::i;:::-;14906:2;14901:3;14897:12;14890:19;;14549:366;;;:::o;14921:419::-;15087:4;15125:2;15114:9;15110:18;15102:26;;15174:9;15168:4;15164:20;15160:1;15149:9;15145:17;15138:47;15202:131;15328:4;15202:131;:::i;:::-;15194:139;;14921:419;;;:::o;15346:176::-;15486:28;15482:1;15474:6;15470:14;15463:52;15346:176;:::o;15528:366::-;15670:3;15691:67;15755:2;15750:3;15691:67;:::i;:::-;15684:74;;15767:93;15856:3;15767:93;:::i;:::-;15885:2;15880:3;15876:12;15869:19;;15528:366;;;:::o;15900:419::-;16066:4;16104:2;16093:9;16089:18;16081:26;;16153:9;16147:4;16143:20;16139:1;16128:9;16124:17;16117:47;16181:131;16307:4;16181:131;:::i;:::-;16173:139;;15900:419;;;:::o;16325:178::-;16465:30;16461:1;16453:6;16449:14;16442:54;16325:178;:::o;16509:366::-;16651:3;16672:67;16736:2;16731:3;16672:67;:::i;:::-;16665:74;;16748:93;16837:3;16748:93;:::i;:::-;16866:2;16861:3;16857:12;16850:19;;16509:366;;;:::o;16881:419::-;17047:4;17085:2;17074:9;17070:18;17062:26;;17134:9;17128:4;17124:20;17120:1;17109:9;17105:17;17098:47;17162:131;17288:4;17162:131;:::i;:::-;17154:139;;16881:419;;;:::o;17306:143::-;17363:5;17394:6;17388:13;17379:22;;17410:33;17437:5;17410:33;:::i;:::-;17306:143;;;;:::o;17455:351::-;17525:6;17574:2;17562:9;17553:7;17549:23;17545:32;17542:119;;;17580:79;;:::i;:::-;17542:119;17700:1;17725:64;17781:7;17772:6;17761:9;17757:22;17725:64;:::i;:::-;17715:74;;17671:128;17455:351;;;;:::o;17812:332::-;17933:4;17971:2;17960:9;17956:18;17948:26;;17984:71;18052:1;18041:9;18037:17;18028:6;17984:71;:::i;:::-;18065:72;18133:2;18122:9;18118:18;18109:6;18065:72;:::i;:::-;17812:332;;;;;:::o;18150:137::-;18204:5;18235:6;18229:13;18220:22;;18251:30;18275:5;18251:30;:::i;:::-;18150:137;;;;:::o;18293:345::-;18360:6;18409:2;18397:9;18388:7;18384:23;18380:32;18377:119;;;18415:79;;:::i;:::-;18377:119;18535:1;18560:61;18613:7;18604:6;18593:9;18589:22;18560:61;:::i;:::-;18550:71;;18506:125;18293:345;;;;:::o;18644:173::-;18784:25;18780:1;18772:6;18768:14;18761:49;18644:173;:::o;18823:366::-;18965:3;18986:67;19050:2;19045:3;18986:67;:::i;:::-;18979:74;;19062:93;19151:3;19062:93;:::i;:::-;19180:2;19175:3;19171:12;19164:19;;18823:366;;;:::o;19195:419::-;19361:4;19399:2;19388:9;19384:18;19376:26;;19448:9;19442:4;19438:20;19434:1;19423:9;19419:17;19412:47;19476:131;19602:4;19476:131;:::i;:::-;19468:139;;19195:419;;;:::o;19620:244::-;19760:34;19756:1;19748:6;19744:14;19737:58;19829:27;19824:2;19816:6;19812:15;19805:52;19620:244;:::o;19870:366::-;20012:3;20033:67;20097:2;20092:3;20033:67;:::i;:::-;20026:74;;20109:93;20198:3;20109:93;:::i;:::-;20227:2;20222:3;20218:12;20211:19;;19870:366;;;:::o;20242:419::-;20408:4;20446:2;20435:9;20431:18;20423:26;;20495:9;20489:4;20485:20;20481:1;20470:9;20466:17;20459:47;20523:131;20649:4;20523:131;:::i;:::-;20515:139;;20242:419;;;:::o;20667:224::-;20807:34;20803:1;20795:6;20791:14;20784:58;20876:7;20871:2;20863:6;20859:15;20852:32;20667:224;:::o;20897:366::-;21039:3;21060:67;21124:2;21119:3;21060:67;:::i;:::-;21053:74;;21136:93;21225:3;21136:93;:::i;:::-;21254:2;21249:3;21245:12;21238:19;;20897:366;;;:::o;21269:419::-;21435:4;21473:2;21462:9;21458:18;21450:26;;21522:9;21516:4;21512:20;21508:1;21497:9;21493:17;21486:47;21550:131;21676:4;21550:131;:::i;:::-;21542:139;;21269:419;;;:::o;21694:231::-;21834:34;21830:1;21822:6;21818:14;21811:58;21903:14;21898:2;21890:6;21886:15;21879:39;21694:231;:::o;21931:366::-;22073:3;22094:67;22158:2;22153:3;22094:67;:::i;:::-;22087:74;;22170:93;22259:3;22170:93;:::i;:::-;22288:2;22283:3;22279:12;22272:19;;21931:366;;;:::o;22303:419::-;22469:4;22507:2;22496:9;22492:18;22484:26;;22556:9;22550:4;22546:20;22542:1;22531:9;22527:17;22520:47;22584:131;22710:4;22584:131;:::i;:::-;22576:139;;22303:419;;;:::o;22728:240::-;22868:34;22864:1;22856:6;22852:14;22845:58;22937:23;22932:2;22924:6;22920:15;22913:48;22728:240;:::o;22974:366::-;23116:3;23137:67;23201:2;23196:3;23137:67;:::i;:::-;23130:74;;23213:93;23302:3;23213:93;:::i;:::-;23331:2;23326:3;23322:12;23315:19;;22974:366;;;:::o;23346:419::-;23512:4;23550:2;23539:9;23535:18;23527:26;;23599:9;23593:4;23589:20;23585:1;23574:9;23570:17;23563:47;23627:131;23753:4;23627:131;:::i;:::-;23619:139;;23346:419;;;:::o;23771:239::-;23911:34;23907:1;23899:6;23895:14;23888:58;23980:22;23975:2;23967:6;23963:15;23956:47;23771:239;:::o;24016:366::-;24158:3;24179:67;24243:2;24238:3;24179:67;:::i;:::-;24172:74;;24255:93;24344:3;24255:93;:::i;:::-;24373:2;24368:3;24364:12;24357:19;;24016:366;;;:::o;24388:419::-;24554:4;24592:2;24581:9;24577:18;24569:26;;24641:9;24635:4;24631:20;24627:1;24616:9;24612:17;24605:47;24669:131;24795:4;24669:131;:::i;:::-;24661:139;;24388:419;;;:::o;24813:229::-;24953:34;24949:1;24941:6;24937:14;24930:58;25022:12;25017:2;25009:6;25005:15;24998:37;24813:229;:::o;25048:366::-;25190:3;25211:67;25275:2;25270:3;25211:67;:::i;:::-;25204:74;;25287:93;25376:3;25287:93;:::i;:::-;25405:2;25400:3;25396:12;25389:19;;25048:366;;;:::o;25420:419::-;25586:4;25624:2;25613:9;25609:18;25601:26;;25673:9;25667:4;25663:20;25659:1;25648:9;25644:17;25637:47;25701:131;25827:4;25701:131;:::i;:::-;25693:139;;25420:419;;;:::o;25845:225::-;25985:34;25981:1;25973:6;25969:14;25962:58;26054:8;26049:2;26041:6;26037:15;26030:33;25845:225;:::o;26076:366::-;26218:3;26239:67;26303:2;26298:3;26239:67;:::i;:::-;26232:74;;26315:93;26404:3;26315:93;:::i;:::-;26433:2;26428:3;26424:12;26417:19;;26076:366;;;:::o;26448:419::-;26614:4;26652:2;26641:9;26637:18;26629:26;;26701:9;26695:4;26691:20;26687:1;26676:9;26672:17;26665:47;26729:131;26855:4;26729:131;:::i;:::-;26721:139;;26448:419;;;:::o;26873:147::-;26974:11;27011:3;26996:18;;26873:147;;;;:::o;27026:114::-;;:::o;27146:398::-;27305:3;27326:83;27407:1;27402:3;27326:83;:::i;:::-;27319:90;;27418:93;27507:3;27418:93;:::i;:::-;27536:1;27531:3;27527:11;27520:18;;27146:398;;;:::o;27550:379::-;27734:3;27756:147;27899:3;27756:147;:::i;:::-;27749:154;;27920:3;27913:10;;27550:379;;;:::o;27935:223::-;28075:34;28071:1;28063:6;28059:14;28052:58;28144:6;28139:2;28131:6;28127:15;28120:31;27935:223;:::o;28164:366::-;28306:3;28327:67;28391:2;28386:3;28327:67;:::i;:::-;28320:74;;28403:93;28492:3;28403:93;:::i;:::-;28521:2;28516:3;28512:12;28505:19;;28164:366;;;:::o;28536:419::-;28702:4;28740:2;28729:9;28725:18;28717:26;;28789:9;28783:4;28779:20;28775:1;28764:9;28760:17;28753:47;28817:131;28943:4;28817:131;:::i;:::-;28809:139;;28536:419;;;:::o;28961:221::-;29101:34;29097:1;29089:6;29085:14;29078:58;29170:4;29165:2;29157:6;29153:15;29146:29;28961:221;:::o;29188:366::-;29330:3;29351:67;29415:2;29410:3;29351:67;:::i;:::-;29344:74;;29427:93;29516:3;29427:93;:::i;:::-;29545:2;29540:3;29536:12;29529:19;;29188:366;;;:::o;29560:419::-;29726:4;29764:2;29753:9;29749:18;29741:26;;29813:9;29807:4;29803:20;29799:1;29788:9;29784:17;29777:47;29841:131;29967:4;29841:131;:::i;:::-;29833:139;;29560:419;;;:::o;29985:224::-;30125:34;30121:1;30113:6;30109:14;30102:58;30194:7;30189:2;30181:6;30177:15;30170:32;29985:224;:::o;30215:366::-;30357:3;30378:67;30442:2;30437:3;30378:67;:::i;:::-;30371:74;;30454:93;30543:3;30454:93;:::i;:::-;30572:2;30567:3;30563:12;30556:19;;30215:366;;;:::o;30587:419::-;30753:4;30791:2;30780:9;30776:18;30768:26;;30840:9;30834:4;30830:20;30826:1;30815:9;30811:17;30804:47;30868:131;30994:4;30868:131;:::i;:::-;30860:139;;30587:419;;;:::o;31012:222::-;31152:34;31148:1;31140:6;31136:14;31129:58;31221:5;31216:2;31208:6;31204:15;31197:30;31012:222;:::o;31240:366::-;31382:3;31403:67;31467:2;31462:3;31403:67;:::i;:::-;31396:74;;31479:93;31568:3;31479:93;:::i;:::-;31597:2;31592:3;31588:12;31581:19;;31240:366;;;:::o;31612:419::-;31778:4;31816:2;31805:9;31801:18;31793:26;;31865:9;31859:4;31855:20;31851:1;31840:9;31836:17;31829:47;31893:131;32019:4;31893:131;:::i;:::-;31885:139;;31612:419;;;:::o;32037:179::-;32177:31;32173:1;32165:6;32161:14;32154:55;32037:179;:::o;32222:366::-;32364:3;32385:67;32449:2;32444:3;32385:67;:::i;:::-;32378:74;;32461:93;32550:3;32461:93;:::i;:::-;32579:2;32574:3;32570:12;32563:19;;32222:366;;;:::o;32594:419::-;32760:4;32798:2;32787:9;32783:18;32775:26;;32847:9;32841:4;32837:20;32833:1;32822:9;32818:17;32811:47;32875:131;33001:4;32875:131;:::i;:::-;32867:139;;32594:419;;;:::o;33019:172::-;33159:24;33155:1;33147:6;33143:14;33136:48;33019:172;:::o;33197:366::-;33339:3;33360:67;33424:2;33419:3;33360:67;:::i;:::-;33353:74;;33436:93;33525:3;33436:93;:::i;:::-;33554:2;33549:3;33545:12;33538:19;;33197:366;;;:::o;33569:419::-;33735:4;33773:2;33762:9;33758:18;33750:26;;33822:9;33816:4;33812:20;33808:1;33797:9;33793:17;33786:47;33850:131;33976:4;33850:131;:::i;:::-;33842:139;;33569:419;;;:::o;33994:191::-;34034:4;34054:20;34072:1;34054:20;:::i;:::-;34049:25;;34088:20;34106:1;34088:20;:::i;:::-;34083:25;;34127:1;34124;34121:8;34118:34;;;34132:18;;:::i;:::-;34118:34;34177:1;34174;34170:9;34162:17;;33994:191;;;;:::o;34191:240::-;34331:34;34327:1;34319:6;34315:14;34308:58;34400:23;34395:2;34387:6;34383:15;34376:48;34191:240;:::o;34437:366::-;34579:3;34600:67;34664:2;34659:3;34600:67;:::i;:::-;34593:74;;34676:93;34765:3;34676:93;:::i;:::-;34794:2;34789:3;34785:12;34778:19;;34437:366;;;:::o;34809:419::-;34975:4;35013:2;35002:9;34998:18;34990:26;;35062:9;35056:4;35052:20;35048:1;35037:9;35033:17;35026:47;35090:131;35216:4;35090:131;:::i;:::-;35082:139;;34809:419;;;:::o;35234:227::-;35374:34;35370:1;35362:6;35358:14;35351:58;35443:10;35438:2;35430:6;35426:15;35419:35;35234:227;:::o;35467:366::-;35609:3;35630:67;35694:2;35689:3;35630:67;:::i;:::-;35623:74;;35706:93;35795:3;35706:93;:::i;:::-;35824:2;35819:3;35815:12;35808:19;;35467:366;;;:::o;35839:419::-;36005:4;36043:2;36032:9;36028:18;36020:26;;36092:9;36086:4;36082:20;36078:1;36067:9;36063:17;36056:47;36120:131;36246:4;36120:131;:::i;:::-;36112:139;;35839:419;;;:::o;36264:174::-;36404:26;36400:1;36392:6;36388:14;36381:50;36264:174;:::o;36444:366::-;36586:3;36607:67;36671:2;36666:3;36607:67;:::i;:::-;36600:74;;36683:93;36772:3;36683:93;:::i;:::-;36801:2;36796:3;36792:12;36785:19;;36444:366;;;:::o;36816:419::-;36982:4;37020:2;37009:9;37005:18;36997:26;;37069:9;37063:4;37059:20;37055:1;37044:9;37040:17;37033:47;37097:131;37223:4;37097:131;:::i;:::-;37089:139;;36816:419;;;:::o;37241:229::-;37381:34;37377:1;37369:6;37365:14;37358:58;37450:12;37445:2;37437:6;37433:15;37426:37;37241:229;:::o;37476:366::-;37618:3;37639:67;37703:2;37698:3;37639:67;:::i;:::-;37632:74;;37715:93;37804:3;37715:93;:::i;:::-;37833:2;37828:3;37824:12;37817:19;;37476:366;;;:::o;37848:419::-;38014:4;38052:2;38041:9;38037:18;38029:26;;38101:9;38095:4;38091:20;38087:1;38076:9;38072:17;38065:47;38129:131;38255:4;38129:131;:::i;:::-;38121:139;;37848:419;;;:::o;38273:225::-;38413:34;38409:1;38401:6;38397:14;38390:58;38482:8;38477:2;38469:6;38465:15;38458:33;38273:225;:::o;38504:366::-;38646:3;38667:67;38731:2;38726:3;38667:67;:::i;:::-;38660:74;;38743:93;38832:3;38743:93;:::i;:::-;38861:2;38856:3;38852:12;38845:19;;38504:366;;;:::o;38876:419::-;39042:4;39080:2;39069:9;39065:18;39057:26;;39129:9;39123:4;39119:20;39115:1;39104:9;39100:17;39093:47;39157:131;39283:4;39157:131;:::i;:::-;39149:139;;38876:419;;;:::o;39301:180::-;39349:77;39346:1;39339:88;39446:4;39443:1;39436:15;39470:4;39467:1;39460:15;39487:180;39535:77;39532:1;39525:88;39632:4;39629:1;39622:15;39656:4;39653:1;39646:15;39673:143;39730:5;39761:6;39755:13;39746:22;;39777:33;39804:5;39777:33;:::i;:::-;39673:143;;;;:::o;39822:351::-;39892:6;39941:2;39929:9;39920:7;39916:23;39912:32;39909:119;;;39947:79;;:::i;:::-;39909:119;40067:1;40092:64;40148:7;40139:6;40128:9;40124:22;40092:64;:::i;:::-;40082:74;;40038:128;39822:351;;;;:::o;40179:85::-;40224:7;40253:5;40242:16;;40179:85;;;:::o;40270:158::-;40328:9;40361:61;40379:42;40388:32;40414:5;40388:32;:::i;:::-;40379:42;:::i;:::-;40361:61;:::i;:::-;40348:74;;40270:158;;;:::o;40434:147::-;40529:45;40568:5;40529:45;:::i;:::-;40524:3;40517:58;40434:147;;:::o;40587:114::-;40654:6;40688:5;40682:12;40672:22;;40587:114;;;:::o;40707:184::-;40806:11;40840:6;40835:3;40828:19;40880:4;40875:3;40871:14;40856:29;;40707:184;;;;:::o;40897:132::-;40964:4;40987:3;40979:11;;41017:4;41012:3;41008:14;41000:22;;40897:132;;;:::o;41035:108::-;41112:24;41130:5;41112:24;:::i;:::-;41107:3;41100:37;41035:108;;:::o;41149:179::-;41218:10;41239:46;41281:3;41273:6;41239:46;:::i;:::-;41317:4;41312:3;41308:14;41294:28;;41149:179;;;;:::o;41334:113::-;41404:4;41436;41431:3;41427:14;41419:22;;41334:113;;;:::o;41483:732::-;41602:3;41631:54;41679:5;41631:54;:::i;:::-;41701:86;41780:6;41775:3;41701:86;:::i;:::-;41694:93;;41811:56;41861:5;41811:56;:::i;:::-;41890:7;41921:1;41906:284;41931:6;41928:1;41925:13;41906:284;;;42007:6;42001:13;42034:63;42093:3;42078:13;42034:63;:::i;:::-;42027:70;;42120:60;42173:6;42120:60;:::i;:::-;42110:70;;41966:224;41953:1;41950;41946:9;41941:14;;41906:284;;;41910:14;42206:3;42199:10;;41607:608;;;41483:732;;;;:::o;42221:831::-;42484:4;42522:3;42511:9;42507:19;42499:27;;42536:71;42604:1;42593:9;42589:17;42580:6;42536:71;:::i;:::-;42617:80;42693:2;42682:9;42678:18;42669:6;42617:80;:::i;:::-;42744:9;42738:4;42734:20;42729:2;42718:9;42714:18;42707:48;42772:108;42875:4;42866:6;42772:108;:::i;:::-;42764:116;;42890:72;42958:2;42947:9;42943:18;42934:6;42890:72;:::i;:::-;42972:73;43040:3;43029:9;43025:19;43016:6;42972:73;:::i;:::-;42221:831;;;;;;;;:::o;43058:807::-;43307:4;43345:3;43334:9;43330:19;43322:27;;43359:71;43427:1;43416:9;43412:17;43403:6;43359:71;:::i;:::-;43440:72;43508:2;43497:9;43493:18;43484:6;43440:72;:::i;:::-;43522:80;43598:2;43587:9;43583:18;43574:6;43522:80;:::i;:::-;43612;43688:2;43677:9;43673:18;43664:6;43612:80;:::i;:::-;43702:73;43770:3;43759:9;43755:19;43746:6;43702:73;:::i;:::-;43785;43853:3;43842:9;43838:19;43829:6;43785:73;:::i;:::-;43058:807;;;;;;;;;:::o;43871:663::-;43959:6;43967;43975;44024:2;44012:9;44003:7;43999:23;43995:32;43992:119;;;44030:79;;:::i;:::-;43992:119;44150:1;44175:64;44231:7;44222:6;44211:9;44207:22;44175:64;:::i;:::-;44165:74;;44121:128;44288:2;44314:64;44370:7;44361:6;44350:9;44346:22;44314:64;:::i;:::-;44304:74;;44259:129;44427:2;44453:64;44509:7;44500:6;44489:9;44485:22;44453:64;:::i;:::-;44443:74;;44398:129;43871:663;;;;;:::o

Swarm Source

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