ETH Price: $3,451.61 (+4.24%)

Token

PEPITA (PEPITA)
 

Overview

Max Total Supply

4,498,130.899680254989234017 PEPITA

Holders

126

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10,399.292475178693385906 PEPITA

Value
$0.00
0x61a667dcD21B671c24F15609cE13D3aB3705F14d
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:
PEPITA

Compiler Version
v0.8.15+commit.e14f2714

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-17
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.15;
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);
}
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), 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 swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    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 PEPITA is ERC20, Ownable {

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

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationsAddress;
    address devAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public blockForPenaltyEnd;
    mapping (address => bool) public boughtEarly;
    uint256 public botsCaught;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
     // Anti-bot and anti-whale mappings and variables
    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    uint256 public buyBurnFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    uint256 public sellBurnFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 public tokensForBurn;

    /******************/

    // 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 BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtEarlyBuyer(address sniper);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("PEPITA", "PEPITA") {

        address newOwner = msg.sender; // can leave alone if owner is deployer.

        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 5 * 1e6 * 1e18;

        maxBuyAmount = 150000 *1e18;
        maxSellAmount = 150000 *1e18;
        maxWalletAmount = 150000 *1e18;
        swapTokensAtAmount = totalSupply * 5 / 10000;

        buyOperationsFee = 5;
        buyLiquidityFee = 0;
        buyDevFee = 0;
        buyBurnFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee + buyBurnFee;

        sellOperationsFee = 5;
        sellLiquidityFee = 0;
        sellDevFee = 0;
        sellBurnFee = 5;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee + sellBurnFee;

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

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

        operationsAddress = 0x1755847E848E61f2f1A63c690d4D566b5ffBc4C2;
        devAddress = address(newOwner);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    // only enable if no plan to airdrop

    function enableTrading(uint256 deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        blockForPenaltyEnd = tradingActiveBlock + deadBlocks;
        emit EnabledTrading();
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }

    function manageBoughtEarly(address wallet, bool flag) external onlyOwner {
        boughtEarly[wallet] = flag;
    }

    function massManageBoughtEarly(address[] calldata wallets, bool flag) external onlyOwner {
        for(uint256 i = 0; i < wallets.length; i++){
            boughtEarly[wallets[i]] = flag;
        }
    }

    // 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 _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }


    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != lpPair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }


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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _devFee, uint256 _burnFee) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellBurnFee = _burnFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee + sellBurnFee;
        require(sellTotalFees <= 20, "Must keep fees at 20% 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");

        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        if(blockForPenaltyEnd > 0){
            require(!boughtEarly[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address.");
        }

        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){  
                
                //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]){
                    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;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // bot/sniper penalty.
            if(earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0){

                if(!boughtEarly[to]){
                    boughtEarly[to] = true;
                    botsCaught += 1;
                    emit CaughtEarlyBuyer(to);
                }

                fees = amount * 99 / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
            }
            //on wallet transfer
            else{
                fees = amount * 5 /100;
                tokensForOperations += fees; 
            }

            if(fees > 0){
                super._transfer(from, address(this), fees);
            }

        	amount -= fees;
        }

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

    function earlyBuyPenaltyInEffect() public view returns (bool){
        return block.number < blockForPenaltyEnd;
    }

    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] = dexRouter.WETH();

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

        // make the swap
        dexRouter.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(dexRouter), tokenAmount);

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

    function swapBack() private {

        if(tokensForBurn > 0 && balanceOf(address(this)) >= tokensForBurn) {
            _burn(address(this), tokensForBurn);
        }
        tokensForBurn = 0;

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForDev;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

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

        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));
        uint256 ethForDev = ethBalance * tokensForDev / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForOperations + ethForDev;

        tokensForLiquidity = 0;
        tokensForOperations = 0;
        tokensForDev = 0;
        tokensForBurn = 0;

        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success,) = address(devAddress).call{value: ethForDev}("");

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


    // 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);
    }

    function setDevAddress(address _devAddress) external onlyOwner {
        require(_devAddress != address(0), "_devAddress address cannot be 0");
        devAddress = payable(_devAddress);
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }
}

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":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","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":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":"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":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","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":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"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":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","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":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"massManageBoughtEarly","outputs":[],"stateMutability":"nonpayable","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":"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":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"_devAddress","type":"address"}],"name":"setDevAddress","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":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"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":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","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"}]

60806040526000600e556001601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff0219169083151502179055506000601260026101000a81548160ff0219169083151502179055503480156200006757600080fd5b506040518060400160405280600681526020017f50455049544100000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f50455049544100000000000000000000000000000000000000000000000000008152508160039081620000e5919062000ea0565b508060049081620000f7919062000ea0565b50505060006200010c6200066460201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000256573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027c919062000ff1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030a919062000ff1565b6040518363ffffffff1660e01b81526004016200032992919062001034565b6020604051808303816000875af115801562000349573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036f919062000ff1565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003e4600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200066c60201b60201c565b62000419600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200070260201b60201c565b60006a0422ca8b0a00a4250000009050691fc3842bd1f071c00000600681905550691fc3842bd1f071c00000600781905550691fc3842bd1f071c000006008819055506127106005826200046e919062001090565b6200047a919062001120565b600b819055506005601481905550600060158190555060006016819055506000601781905550601754601654601554601454620004b8919062001158565b620004c4919062001158565b620004d0919062001158565b60138190555060056019819055506000601a819055506000601b819055506005601c81905550601c54601b54601a546019546200050e919062001158565b6200051a919062001158565b62000526919062001158565b6018819055506200053f8360016200066c60201b60201c565b620005523060016200066c60201b60201c565b6200056761dead60016200066c60201b60201c565b6200057a836001620007b560201b60201c565b6200058d306001620007b560201b60201c565b620005a261dead6001620007b560201b60201c565b731755847e848e61f2f1a63c690d4d566b5ffbc4c2600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200064a83826200090260201b60201c565b6200065b8362000a5260201b60201c565b505050620013d7565b600033905090565b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620006f6929190620011d2565b60405180910390a15050565b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200076b82826200066c60201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620007c56200066460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200084e9062001260565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008f6919062001282565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000974576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200096b90620012ef565b60405180910390fd5b806002600082825462000988919062001158565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009df919062001158565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a46919062001322565b60405180910390a35050565b62000a626200066460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000af4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aeb9062001260565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b5d90620013b5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ca857607f821691505b60208210810362000cbe5762000cbd62000c60565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d287fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ce9565b62000d34868362000ce9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d8162000d7b62000d758462000d4c565b62000d56565b62000d4c565b9050919050565b6000819050919050565b62000d9d8362000d60565b62000db562000dac8262000d88565b84845462000cf6565b825550505050565b600090565b62000dcc62000dbd565b62000dd981848462000d92565b505050565b5b8181101562000e015762000df560008262000dc2565b60018101905062000ddf565b5050565b601f82111562000e505762000e1a8162000cc4565b62000e258462000cd9565b8101602085101562000e35578190505b62000e4d62000e448562000cd9565b83018262000dde565b50505b505050565b600082821c905092915050565b600062000e756000198460080262000e55565b1980831691505092915050565b600062000e90838362000e62565b9150826002028217905092915050565b62000eab8262000c26565b67ffffffffffffffff81111562000ec75762000ec662000c31565b5b62000ed3825462000c8f565b62000ee082828562000e05565b600060209050601f83116001811462000f18576000841562000f03578287015190505b62000f0f858262000e82565b86555062000f7f565b601f19841662000f288662000cc4565b60005b8281101562000f525784890151825560018201915060208501945060208101905062000f2b565b8683101562000f72578489015162000f6e601f89168262000e62565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000fb98262000f8c565b9050919050565b62000fcb8162000fac565b811462000fd757600080fd5b50565b60008151905062000feb8162000fc0565b92915050565b6000602082840312156200100a576200100962000f87565b5b60006200101a8482850162000fda565b91505092915050565b6200102e8162000fac565b82525050565b60006040820190506200104b600083018562001023565b6200105a602083018462001023565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200109d8262000d4c565b9150620010aa8362000d4c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620010e657620010e562001061565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200112d8262000d4c565b91506200113a8362000d4c565b9250826200114d576200114c620010f1565b5b828204905092915050565b6000620011658262000d4c565b9150620011728362000d4c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620011aa57620011a962001061565b5b828201905092915050565b60008115159050919050565b620011cc81620011b5565b82525050565b6000604082019050620011e9600083018562001023565b620011f86020830184620011c1565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001248602083620011ff565b9150620012558262001210565b602082019050919050565b600060208201905081810360008301526200127b8162001239565b9050919050565b6000602082019050620012996000830184620011c1565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620012d7601f83620011ff565b9150620012e4826200129f565b602082019050919050565b600060208201905081810360008301526200130a81620012c8565b9050919050565b6200131c8162000d4c565b82525050565b600060208201905062001339600083018462001311565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200139d602683620011ff565b9150620013aa826200133f565b604082019050919050565b60006020820190508181036000830152620013d0816200138e565b9050919050565b615b0780620013e76000396000f3fe60806040526004361061037a5760003560e01c806385ecfd28116101d1578063c024666811610102578063e7ad9fcd116100a0578063f2fde38b1161006f578063f2fde38b14610cd1578063f5648a4f14610cfa578063f637434214610d11578063fb002c9714610d3c57610381565b8063e7ad9fcd14610c29578063e800dff714610c52578063ee40166e14610c7b578063f11a24d314610ca657610381565b8063d85ba063116100dc578063d85ba06314610b6b578063dd62ed3e14610b96578063e2f4560514610bd3578063e71dc3f514610bfe57610381565b8063c024666814610af0578063d0d41fe114610b19578063d257b34f14610b4257610381565b8063a457c2d71161016f578063aa4bde2811610149578063aa4bde2814610a32578063adb873bd14610a5d578063b62496f514610a88578063bbc0c74214610ac557610381565b8063a457c2d71461098d578063a62068ce146109ca578063a9059cbb146109f557610381565b806395d89b41116101ab57806395d89b41146108e15780639c3b4fdc1461090c5780639fccce3214610937578063a0d82dc51461096257610381565b806385ecfd281461084e57806388e765ff1461088b5780638da5cb5b146108b657610381565b80634a62bb65116102ab5780636b0a894c11610249578063715018a611610223578063715018a6146107ce578063751039fc146107e55780637571336a146107fc57806382aa7c681461082557610381565b80636b0a894c1461073b5780636ddd17131461076657806370a082311461079157610381565b806358a6d5311161028557806358a6d5311461068f5780635a139dd4146106ba57806366d602ae146106e55780636a486a8e1461071057610381565b80634a62bb65146106225780634f77f6c01461064d57806351f205e41461067857610381565b80631d77785611610318578063313ce567116102f2578063313ce567146105665780633950935114610591578063452ed4f1146105ce578063499b8394146105f957610381565b80631d777856146104d557806323b872dd146105005780632e6ed7ef1461053d57610381565b806310d5de531161035457806310d5de5314610419578063130a2c3c1461045657806318160ddd1461047f5780631a8145bb146104aa57610381565b806306fdde03146103865780630758d924146103b1578063095ea7b3146103dc57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610d67565b6040516103a8919061432a565b60405180910390f35b3480156103bd57600080fd5b506103c6610df9565b6040516103d391906143cb565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe9190614464565b610e1f565b60405161041091906144bf565b60405180910390f35b34801561042557600080fd5b50610440600480360381019061043b91906144da565b610e3d565b60405161044d91906144bf565b60405180910390f35b34801561046257600080fd5b5061047d60048036038101906104789190614598565b610e5d565b005b34801561048b57600080fd5b50610494610f99565b6040516104a19190614607565b60405180910390f35b3480156104b657600080fd5b506104bf610fa3565b6040516104cc9190614607565b60405180910390f35b3480156104e157600080fd5b506104ea610fa9565b6040516104f79190614607565b60405180910390f35b34801561050c57600080fd5b5061052760048036038101906105229190614622565b610faf565b60405161053491906144bf565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f9190614675565b6110a7565b005b34801561057257600080fd5b5061057b6111d6565b60405161058891906146f8565b60405180910390f35b34801561059d57600080fd5b506105b860048036038101906105b39190614464565b6111df565b6040516105c591906144bf565b60405180910390f35b3480156105da57600080fd5b506105e361128b565b6040516105f09190614722565b60405180910390f35b34801561060557600080fd5b50610620600480360381019061061b91906144da565b6112b1565b005b34801561062e57600080fd5b506106376113fb565b60405161064491906144bf565b60405180910390f35b34801561065957600080fd5b5061066261140e565b60405161066f9190614607565b60405180910390f35b34801561068457600080fd5b5061068d611414565b005b34801561069b57600080fd5b506106a461156f565b6040516106b191906144bf565b60405180910390f35b3480156106c657600080fd5b506106cf61157b565b6040516106dc9190614607565b60405180910390f35b3480156106f157600080fd5b506106fa611581565b6040516107079190614607565b60405180910390f35b34801561071c57600080fd5b50610725611587565b6040516107329190614607565b60405180910390f35b34801561074757600080fd5b5061075061158d565b60405161075d9190614607565b60405180910390f35b34801561077257600080fd5b5061077b611593565b60405161078891906144bf565b60405180910390f35b34801561079d57600080fd5b506107b860048036038101906107b391906144da565b6115a6565b6040516107c59190614607565b60405180910390f35b3480156107da57600080fd5b506107e36115ee565b005b3480156107f157600080fd5b506107fa611746565b005b34801561080857600080fd5b50610823600480360381019061081e919061473d565b611826565b005b34801561083157600080fd5b5061084c6004803603810190610847919061477d565b6119ae565b005b34801561085a57600080fd5b50610875600480360381019061087091906144da565b611b15565b60405161088291906144bf565b60405180910390f35b34801561089757600080fd5b506108a0611b35565b6040516108ad9190614607565b60405180910390f35b3480156108c257600080fd5b506108cb611b3b565b6040516108d89190614722565b60405180910390f35b3480156108ed57600080fd5b506108f6611b65565b604051610903919061432a565b60405180910390f35b34801561091857600080fd5b50610921611bf7565b60405161092e9190614607565b60405180910390f35b34801561094357600080fd5b5061094c611bfd565b6040516109599190614607565b60405180910390f35b34801561096e57600080fd5b50610977611c03565b6040516109849190614607565b60405180910390f35b34801561099957600080fd5b506109b460048036038101906109af9190614464565b611c09565b6040516109c191906144bf565b60405180910390f35b3480156109d657600080fd5b506109df611cf4565b6040516109ec9190614607565b60405180910390f35b348015610a0157600080fd5b50610a1c6004803603810190610a179190614464565b611cfa565b604051610a2991906144bf565b60405180910390f35b348015610a3e57600080fd5b50610a47611d18565b604051610a549190614607565b60405180910390f35b348015610a6957600080fd5b50610a72611d1e565b604051610a7f9190614607565b60405180910390f35b348015610a9457600080fd5b50610aaf6004803603810190610aaa91906144da565b611d24565b604051610abc91906144bf565b60405180910390f35b348015610ad157600080fd5b50610ada611d44565b604051610ae791906144bf565b60405180910390f35b348015610afc57600080fd5b50610b176004803603810190610b12919061473d565b611d57565b005b348015610b2557600080fd5b50610b406004803603810190610b3b91906144da565b611e97565b005b348015610b4e57600080fd5b50610b696004803603810190610b64919061477d565b611fe1565b005b348015610b7757600080fd5b50610b80612149565b604051610b8d9190614607565b60405180910390f35b348015610ba257600080fd5b50610bbd6004803603810190610bb891906147aa565b61214f565b604051610bca9190614607565b60405180910390f35b348015610bdf57600080fd5b50610be86121d6565b604051610bf59190614607565b60405180910390f35b348015610c0a57600080fd5b50610c136121dc565b604051610c209190614607565b60405180910390f35b348015610c3557600080fd5b50610c506004803603810190610c4b9190614675565b6121e2565b005b348015610c5e57600080fd5b50610c796004803603810190610c74919061473d565b612311565b005b348015610c8757600080fd5b50610c90612403565b604051610c9d9190614607565b60405180910390f35b348015610cb257600080fd5b50610cbb612409565b604051610cc89190614607565b60405180910390f35b348015610cdd57600080fd5b50610cf86004803603810190610cf391906144da565b61240f565b005b348015610d0657600080fd5b50610d0f6125d5565b005b348015610d1d57600080fd5b50610d266126dd565b604051610d339190614607565b60405180910390f35b348015610d4857600080fd5b50610d516126e3565b604051610d5e9190614607565b60405180910390f35b606060038054610d7690614819565b80601f0160208091040260200160405190810160405280929190818152602001828054610da290614819565b8015610def5780601f10610dc457610100808354040283529160200191610def565b820191906000526020600020905b815481529060010190602001808311610dd257829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e33610e2c6126e9565b84846126f1565b6001905092915050565b60226020528060005260406000206000915054906101000a900460ff1681565b610e656126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb90614896565b60405180910390fd5b60005b83839050811015610f93578160106000868685818110610f1a57610f196148b6565b5b9050602002016020810190610f2f91906144da565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f8b90614914565b915050610ef7565b50505050565b6000600254905090565b601e5481565b60205481565b6000610fbc8484846128ba565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110076126e9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e906149ce565b60405180910390fd5b61109b856110936126e9565b8584036126f1565b60019150509392505050565b6110af6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461113e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113590614896565b60405180910390fd5b8360148190555082601581905550816016819055508060178190555060175460165460155460145461117091906149ee565b61117a91906149ee565b61118491906149ee565b601381905550600f60135411156111d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c790614a90565b60405180910390fd5b50505050565b60006012905090565b60006112816111ec6126e9565b8484600160006111fa6126e9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461127c91906149ee565b6126f1565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112b96126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f90614896565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ae90614b22565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601260009054906101000a900460ff1681565b60195481565b61141c6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a290614896565b60405180910390fd5b600b546114b7306115a6565b10156114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef90614bb4565b60405180910390fd5b6001600a60146101000a81548160ff02191690831515021790555061151b613875565b6000600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb32426040516115659190614607565b60405180910390a1565b6000600f544310905090565b60145481565b60075481565b60185481565b60115481565b601260029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115f66126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c90614896565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61174e6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d490614896565b60405180910390fd5b6000601260006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b61182e6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b490614896565b60405180910390fd5b8061195357600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194990614c46565b60405180910390fd5b5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6119b66126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c90614896565b60405180910390fd5b601260019054906101000a900460ff1615611a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8c90614cb2565b60405180910390fd5b6001601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff02191690831515021790555043600e8190555080600e54611ae091906149ee565b600f819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a150565b60106020528060005260406000206000915054906101000a900460ff1681565b60065481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611b7490614819565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba090614819565b8015611bed5780601f10611bc257610100808354040283529160200191611bed565b820191906000526020600020905b815481529060010190602001808311611bd057829003601f168201915b5050505050905090565b60165481565b601f5481565b601b5481565b60008060016000611c186126e9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc90614d44565b60405180910390fd5b611ce9611ce06126e9565b858584036126f1565b600191505092915050565b600f5481565b6000611d0e611d076126e9565b84846128ba565b6001905092915050565b60085481565b601c5481565b60236020528060005260406000206000915054906101000a900460ff1681565b601260019054906101000a900460ff1681565b611d5f6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de590614896565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e8b91906144bf565b60405180910390a25050565b611e9f6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2590614896565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9490614db0565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611fe96126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206f90614896565b60405180910390fd5b620186a06001612086610f99565b6120909190614dd0565b61209a9190614e59565b8110156120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d390614efc565b60405180910390fd5b6103e860016120e9610f99565b6120f39190614dd0565b6120fd9190614e59565b81111561213f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213690614f8e565b60405180910390fd5b80600b8190555050565b60135481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b60175481565b6121ea6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227090614896565b60405180910390fd5b8360198190555082601a8190555081601b8190555080601c81905550601c54601b54601a546019546122ab91906149ee565b6122b591906149ee565b6122bf91906149ee565b6018819055506014601854111561230b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230290614ffa565b60405180910390fd5b50505050565b6123196126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239f90614896565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60155481565b6124176126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249d90614896565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250c9061508c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6125dd6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461266c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266390614896565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612692906150dd565b60006040518083038185875af1925050503d80600081146126cf576040519150601f19603f3d011682016040523d82523d6000602084013e6126d4565b606091505b50508091505050565b601a5481565b601d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275790615164565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c6906151f6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128ad9190614607565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292090615288565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298f9061531a565b60405180910390fd5b600081116129db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d290615386565b60405180910390fd5b601260019054906101000a900460ff16612ad057602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a905750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac6906153f2565b60405180910390fd5b5b6000600f541115612bde57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580612b665750612b37611b3b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612b9e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd4906154aa565b60405180910390fd5b5b601260009054906101000a900460ff161561307757612bfb611b3b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c695750612c39611b3b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ca25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cdc575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d325750602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d885750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561307657602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e305750602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ed757600654811115612e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e719061553c565b60405180910390fd5b600854612e86836115a6565b82612e9191906149ee565b1115612ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec9906155a8565b60405180910390fd5b613075565b602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f7a5750602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fc957600754811115612fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbb9061563a565b60405180910390fd5b613074565b602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661307357600854613026836115a6565b8261303191906149ee565b1115613072576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613069906155a8565b60405180910390fd5b5b5b5b5b5b6000613082306115a6565b90506000600b5482101590508080156130a75750601260029054906101000a900460ff165b80156130c05750600a60149054906101000a900460ff16155b80156131165750602360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561316c5750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131c25750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613206576001600a60146101000a81548160ff0219169083151502179055506131ea613875565b6000600a60146101000a81548160ff0219169083151502179055505b600060019050602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132ad5750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132b757600090505b60008115613861576132c761156f565b801561331c5750602360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156133725750602360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561338057506000601354115b1561356c57601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613480576001601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016011600082825461344191906149ee565b925050819055507f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a866040516134779190614722565b60405180910390a15b606460638661348f9190614dd0565b6134999190614e59565b9050601354601554826134ac9190614dd0565b6134b69190614e59565b601e60008282546134c791906149ee565b92505081905550601354601454826134df9190614dd0565b6134e99190614e59565b601d60008282546134fa91906149ee565b92505081905550601354601654826135129190614dd0565b61351c9190614e59565b601f600082825461352d91906149ee565b92505081905550601354601754826135459190614dd0565b61354f9190614e59565b6020600082825461356091906149ee565b9250508190555061383d565b602360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135c757506000601854115b156136b9576064601854866135dc9190614dd0565b6135e69190614e59565b9050601854601a54826135f99190614dd0565b6136039190614e59565b601e600082825461361491906149ee565b925050819055506018546019548261362c9190614dd0565b6136369190614e59565b601d600082825461364791906149ee565b92505081905550601854601b548261365f9190614dd0565b6136699190614e59565b601f600082825461367a91906149ee565b92505081905550601854601c54826136929190614dd0565b61369c9190614e59565b602060008282546136ad91906149ee565b9250508190555061383c565b602360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561371457506000601354115b15613806576064601354866137299190614dd0565b6137339190614e59565b9050601354601554826137469190614dd0565b6137509190614e59565b601e600082825461376191906149ee565b92505081905550601354601454826137799190614dd0565b6137839190614e59565b601d600082825461379491906149ee565b92505081905550601354601654826137ac9190614dd0565b6137b69190614e59565b601f60008282546137c791906149ee565b92505081905550601354601754826137df9190614dd0565b6137e99190614e59565b602060008282546137fa91906149ee565b9250508190555061383b565b60646005866138159190614dd0565b61381f9190614e59565b905080601d600082825461383391906149ee565b925050819055505b5b5b600081111561385257613851873083613b50565b5b808561385e919061565a565b94505b61386c878787613b50565b50505050505050565b6000602054118015613891575060205461388e306115a6565b10155b156138a3576138a230602054613db9565b5b600060208190555060006138b6306115a6565b90506000601f54601d54601e546138cd91906149ee565b6138d791906149ee565b905060008214806138e85750600081145b156138f4575050613b4e565b6014600b546139039190614dd0565b82111561391c576014600b546139199190614dd0565b91505b600080600283601e54866139309190614dd0565b61393a9190614e59565b6139449190614e59565b905061395a8185613955919061565a565b613f6e565b6000479050600081905060006002601e546139759190614e59565b86613980919061565a565b601d548461398e9190614dd0565b6139989190614e59565b905060006002601e546139ab9190614e59565b876139b6919061565a565b601f54856139c49190614dd0565b6139ce9190614e59565b905080826139dc91906149ee565b836139e7919061565a565b92506000601e819055506000601d819055506000601f819055506000602081905550600085118015613a195750600083115b15613a2957613a2885846141b1565b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a6f906150dd565b60006040518083038185875af1925050503d8060008114613aac576040519150601f19603f3d011682016040523d82523d6000602084013e613ab1565b606091505b505080965050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613afd906150dd565b60006040518083038185875af1925050503d8060008114613b3a576040519150601f19603f3d011682016040523d82523d6000602084013e613b3f565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bb690615288565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c259061531a565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cab90615700565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d4791906149ee565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613dab9190614607565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e1f90615792565b60405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ea590615824565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f619190614607565b60405180910390a3505050565b6000600267ffffffffffffffff811115613f8b57613f8a615844565b5b604051908082528060200260200182016040528015613fb95781602001602082028036833780820191505090505b5090503081600081518110613fd157613fd06148b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061409c9190615888565b816001815181106140b0576140af6148b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061411730600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846126f1565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161417b9594939291906159ae565b600060405180830381600087803b15801561419557600080fd5b505af11580156141a9573d6000803e3d6000fd5b505050505050565b6141de30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846126f1565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161424796959493929190615a08565b60606040518083038185885af1158015614265573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061428a9190615a7e565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142cb5780820151818401526020810190506142b0565b838111156142da576000848401525b50505050565b6000601f19601f8301169050919050565b60006142fc82614291565b614306818561429c565b93506143168185602086016142ad565b61431f816142e0565b840191505092915050565b6000602082019050818103600083015261434481846142f1565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061439161438c6143878461434c565b61436c565b61434c565b9050919050565b60006143a382614376565b9050919050565b60006143b582614398565b9050919050565b6143c5816143aa565b82525050565b60006020820190506143e060008301846143bc565b92915050565b600080fd5b600080fd5b60006143fb8261434c565b9050919050565b61440b816143f0565b811461441657600080fd5b50565b60008135905061442881614402565b92915050565b6000819050919050565b6144418161442e565b811461444c57600080fd5b50565b60008135905061445e81614438565b92915050565b6000806040838503121561447b5761447a6143e6565b5b600061448985828601614419565b925050602061449a8582860161444f565b9150509250929050565b60008115159050919050565b6144b9816144a4565b82525050565b60006020820190506144d460008301846144b0565b92915050565b6000602082840312156144f0576144ef6143e6565b5b60006144fe84828501614419565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261452c5761452b614507565b5b8235905067ffffffffffffffff8111156145495761454861450c565b5b60208301915083602082028301111561456557614564614511565b5b9250929050565b614575816144a4565b811461458057600080fd5b50565b6000813590506145928161456c565b92915050565b6000806000604084860312156145b1576145b06143e6565b5b600084013567ffffffffffffffff8111156145cf576145ce6143eb565b5b6145db86828701614516565b935093505060206145ee86828701614583565b9150509250925092565b6146018161442e565b82525050565b600060208201905061461c60008301846145f8565b92915050565b60008060006060848603121561463b5761463a6143e6565b5b600061464986828701614419565b935050602061465a86828701614419565b925050604061466b8682870161444f565b9150509250925092565b6000806000806080858703121561468f5761468e6143e6565b5b600061469d8782880161444f565b94505060206146ae8782880161444f565b93505060406146bf8782880161444f565b92505060606146d08782880161444f565b91505092959194509250565b600060ff82169050919050565b6146f2816146dc565b82525050565b600060208201905061470d60008301846146e9565b92915050565b61471c816143f0565b82525050565b60006020820190506147376000830184614713565b92915050565b60008060408385031215614754576147536143e6565b5b600061476285828601614419565b925050602061477385828601614583565b9150509250929050565b600060208284031215614793576147926143e6565b5b60006147a18482850161444f565b91505092915050565b600080604083850312156147c1576147c06143e6565b5b60006147cf85828601614419565b92505060206147e085828601614419565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061483157607f821691505b602082108103614844576148436147ea565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061488060208361429c565b915061488b8261484a565b602082019050919050565b600060208201905081810360008301526148af81614873565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061491f8261442e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614951576149506148e5565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006149b860288361429c565b91506149c38261495c565b604082019050919050565b600060208201905081810360008301526149e7816149ab565b9050919050565b60006149f98261442e565b9150614a048361442e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a3957614a386148e5565b5b828201905092915050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614a7a601d8361429c565b9150614a8582614a44565b602082019050919050565b60006020820190508181036000830152614aa981614a6d565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614b0c60268361429c565b9150614b1782614ab0565b604082019050919050565b60006020820190508181036000830152614b3b81614aff565b9050919050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060008201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b6000614b9e60408361429c565b9150614ba982614b42565b604082019050919050565b60006020820190508181036000830152614bcd81614b91565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614c3060278361429c565b9150614c3b82614bd4565b604082019050919050565b60006020820190508181036000830152614c5f81614c23565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614c9c60178361429c565b9150614ca782614c66565b602082019050919050565b60006020820190508181036000830152614ccb81614c8f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614d2e60258361429c565b9150614d3982614cd2565b604082019050919050565b60006020820190508181036000830152614d5d81614d21565b9050919050565b7f5f6465764164647265737320616464726573732063616e6e6f74206265203000600082015250565b6000614d9a601f8361429c565b9150614da582614d64565b602082019050919050565b60006020820190508181036000830152614dc981614d8d565b9050919050565b6000614ddb8261442e565b9150614de68361442e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614e1f57614e1e6148e5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e648261442e565b9150614e6f8361442e565b925082614e7f57614e7e614e2a565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614ee660358361429c565b9150614ef182614e8a565b604082019050919050565b60006020820190508181036000830152614f1581614ed9565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614f7860348361429c565b9150614f8382614f1c565b604082019050919050565b60006020820190508181036000830152614fa781614f6b565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614fe4601d8361429c565b9150614fef82614fae565b602082019050919050565b6000602082019050818103600083015261501381614fd7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061507660268361429c565b91506150818261501a565b604082019050919050565b600060208201905081810360008301526150a581615069565b9050919050565b600081905092915050565b50565b60006150c76000836150ac565b91506150d2826150b7565b600082019050919050565b60006150e8826150ba565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061514e60248361429c565b9150615159826150f2565b604082019050919050565b6000602082019050818103600083015261517d81615141565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006151e060228361429c565b91506151eb82615184565b604082019050919050565b6000602082019050818103600083015261520f816151d3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061527260258361429c565b915061527d82615216565b604082019050919050565b600060208201905081810360008301526152a181615265565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061530460238361429c565b915061530f826152a8565b604082019050919050565b60006020820190508181036000830152615333816152f7565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615370601d8361429c565b915061537b8261533a565b602082019050919050565b6000602082019050818103600083015261539f81615363565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006153dc60168361429c565b91506153e7826153a6565b602082019050919050565b6000602082019050818103600083015261540b816153cf565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60008201527f72206f75742065786365707420746f206f776e6572206f72206465616420616460208201527f64726573732e0000000000000000000000000000000000000000000000000000604082015250565b600061549460468361429c565b915061549f82615412565b606082019050919050565b600060208201905081810360008301526154c381615487565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b600061552660288361429c565b9150615531826154ca565b604082019050919050565b6000602082019050818103600083015261555581615519565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b600061559260188361429c565b915061559d8261555c565b602082019050919050565b600060208201905081810360008301526155c181615585565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615624602a8361429c565b915061562f826155c8565b604082019050919050565b6000602082019050818103600083015261565381615617565b9050919050565b60006156658261442e565b91506156708361442e565b925082821015615683576156826148e5565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006156ea60268361429c565b91506156f58261568e565b604082019050919050565b60006020820190508181036000830152615719816156dd565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061577c60218361429c565b915061578782615720565b604082019050919050565b600060208201905081810360008301526157ab8161576f565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061580e60228361429c565b9150615819826157b2565b604082019050919050565b6000602082019050818103600083015261583d81615801565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061588281614402565b92915050565b60006020828403121561589e5761589d6143e6565b5b60006158ac84828501615873565b91505092915050565b6000819050919050565b60006158da6158d56158d0846158b5565b61436c565b61442e565b9050919050565b6158ea816158bf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615925816143f0565b82525050565b6000615937838361591c565b60208301905092915050565b6000602082019050919050565b600061595b826158f0565b61596581856158fb565b93506159708361590c565b8060005b838110156159a1578151615988888261592b565b975061599383615943565b925050600181019050615974565b5085935050505092915050565b600060a0820190506159c360008301886145f8565b6159d060208301876158e1565b81810360408301526159e28186615950565b90506159f16060830185614713565b6159fe60808301846145f8565b9695505050505050565b600060c082019050615a1d6000830189614713565b615a2a60208301886145f8565b615a3760408301876158e1565b615a4460608301866158e1565b615a516080830185614713565b615a5e60a08301846145f8565b979650505050505050565b600081519050615a7881614438565b92915050565b600080600060608486031215615a9757615a966143e6565b5b6000615aa586828701615a69565b9350506020615ab686828701615a69565b9250506040615ac786828701615a69565b915050925092509256fea264697066735822122090fe15114e49c780bacc771f4e331215976c833f83e42f1c5687fe149907803864736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c806385ecfd28116101d1578063c024666811610102578063e7ad9fcd116100a0578063f2fde38b1161006f578063f2fde38b14610cd1578063f5648a4f14610cfa578063f637434214610d11578063fb002c9714610d3c57610381565b8063e7ad9fcd14610c29578063e800dff714610c52578063ee40166e14610c7b578063f11a24d314610ca657610381565b8063d85ba063116100dc578063d85ba06314610b6b578063dd62ed3e14610b96578063e2f4560514610bd3578063e71dc3f514610bfe57610381565b8063c024666814610af0578063d0d41fe114610b19578063d257b34f14610b4257610381565b8063a457c2d71161016f578063aa4bde2811610149578063aa4bde2814610a32578063adb873bd14610a5d578063b62496f514610a88578063bbc0c74214610ac557610381565b8063a457c2d71461098d578063a62068ce146109ca578063a9059cbb146109f557610381565b806395d89b41116101ab57806395d89b41146108e15780639c3b4fdc1461090c5780639fccce3214610937578063a0d82dc51461096257610381565b806385ecfd281461084e57806388e765ff1461088b5780638da5cb5b146108b657610381565b80634a62bb65116102ab5780636b0a894c11610249578063715018a611610223578063715018a6146107ce578063751039fc146107e55780637571336a146107fc57806382aa7c681461082557610381565b80636b0a894c1461073b5780636ddd17131461076657806370a082311461079157610381565b806358a6d5311161028557806358a6d5311461068f5780635a139dd4146106ba57806366d602ae146106e55780636a486a8e1461071057610381565b80634a62bb65146106225780634f77f6c01461064d57806351f205e41461067857610381565b80631d77785611610318578063313ce567116102f2578063313ce567146105665780633950935114610591578063452ed4f1146105ce578063499b8394146105f957610381565b80631d777856146104d557806323b872dd146105005780632e6ed7ef1461053d57610381565b806310d5de531161035457806310d5de5314610419578063130a2c3c1461045657806318160ddd1461047f5780631a8145bb146104aa57610381565b806306fdde03146103865780630758d924146103b1578063095ea7b3146103dc57610381565b3661038157005b600080fd5b34801561039257600080fd5b5061039b610d67565b6040516103a8919061432a565b60405180910390f35b3480156103bd57600080fd5b506103c6610df9565b6040516103d391906143cb565b60405180910390f35b3480156103e857600080fd5b5061040360048036038101906103fe9190614464565b610e1f565b60405161041091906144bf565b60405180910390f35b34801561042557600080fd5b50610440600480360381019061043b91906144da565b610e3d565b60405161044d91906144bf565b60405180910390f35b34801561046257600080fd5b5061047d60048036038101906104789190614598565b610e5d565b005b34801561048b57600080fd5b50610494610f99565b6040516104a19190614607565b60405180910390f35b3480156104b657600080fd5b506104bf610fa3565b6040516104cc9190614607565b60405180910390f35b3480156104e157600080fd5b506104ea610fa9565b6040516104f79190614607565b60405180910390f35b34801561050c57600080fd5b5061052760048036038101906105229190614622565b610faf565b60405161053491906144bf565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f9190614675565b6110a7565b005b34801561057257600080fd5b5061057b6111d6565b60405161058891906146f8565b60405180910390f35b34801561059d57600080fd5b506105b860048036038101906105b39190614464565b6111df565b6040516105c591906144bf565b60405180910390f35b3480156105da57600080fd5b506105e361128b565b6040516105f09190614722565b60405180910390f35b34801561060557600080fd5b50610620600480360381019061061b91906144da565b6112b1565b005b34801561062e57600080fd5b506106376113fb565b60405161064491906144bf565b60405180910390f35b34801561065957600080fd5b5061066261140e565b60405161066f9190614607565b60405180910390f35b34801561068457600080fd5b5061068d611414565b005b34801561069b57600080fd5b506106a461156f565b6040516106b191906144bf565b60405180910390f35b3480156106c657600080fd5b506106cf61157b565b6040516106dc9190614607565b60405180910390f35b3480156106f157600080fd5b506106fa611581565b6040516107079190614607565b60405180910390f35b34801561071c57600080fd5b50610725611587565b6040516107329190614607565b60405180910390f35b34801561074757600080fd5b5061075061158d565b60405161075d9190614607565b60405180910390f35b34801561077257600080fd5b5061077b611593565b60405161078891906144bf565b60405180910390f35b34801561079d57600080fd5b506107b860048036038101906107b391906144da565b6115a6565b6040516107c59190614607565b60405180910390f35b3480156107da57600080fd5b506107e36115ee565b005b3480156107f157600080fd5b506107fa611746565b005b34801561080857600080fd5b50610823600480360381019061081e919061473d565b611826565b005b34801561083157600080fd5b5061084c6004803603810190610847919061477d565b6119ae565b005b34801561085a57600080fd5b50610875600480360381019061087091906144da565b611b15565b60405161088291906144bf565b60405180910390f35b34801561089757600080fd5b506108a0611b35565b6040516108ad9190614607565b60405180910390f35b3480156108c257600080fd5b506108cb611b3b565b6040516108d89190614722565b60405180910390f35b3480156108ed57600080fd5b506108f6611b65565b604051610903919061432a565b60405180910390f35b34801561091857600080fd5b50610921611bf7565b60405161092e9190614607565b60405180910390f35b34801561094357600080fd5b5061094c611bfd565b6040516109599190614607565b60405180910390f35b34801561096e57600080fd5b50610977611c03565b6040516109849190614607565b60405180910390f35b34801561099957600080fd5b506109b460048036038101906109af9190614464565b611c09565b6040516109c191906144bf565b60405180910390f35b3480156109d657600080fd5b506109df611cf4565b6040516109ec9190614607565b60405180910390f35b348015610a0157600080fd5b50610a1c6004803603810190610a179190614464565b611cfa565b604051610a2991906144bf565b60405180910390f35b348015610a3e57600080fd5b50610a47611d18565b604051610a549190614607565b60405180910390f35b348015610a6957600080fd5b50610a72611d1e565b604051610a7f9190614607565b60405180910390f35b348015610a9457600080fd5b50610aaf6004803603810190610aaa91906144da565b611d24565b604051610abc91906144bf565b60405180910390f35b348015610ad157600080fd5b50610ada611d44565b604051610ae791906144bf565b60405180910390f35b348015610afc57600080fd5b50610b176004803603810190610b12919061473d565b611d57565b005b348015610b2557600080fd5b50610b406004803603810190610b3b91906144da565b611e97565b005b348015610b4e57600080fd5b50610b696004803603810190610b64919061477d565b611fe1565b005b348015610b7757600080fd5b50610b80612149565b604051610b8d9190614607565b60405180910390f35b348015610ba257600080fd5b50610bbd6004803603810190610bb891906147aa565b61214f565b604051610bca9190614607565b60405180910390f35b348015610bdf57600080fd5b50610be86121d6565b604051610bf59190614607565b60405180910390f35b348015610c0a57600080fd5b50610c136121dc565b604051610c209190614607565b60405180910390f35b348015610c3557600080fd5b50610c506004803603810190610c4b9190614675565b6121e2565b005b348015610c5e57600080fd5b50610c796004803603810190610c74919061473d565b612311565b005b348015610c8757600080fd5b50610c90612403565b604051610c9d9190614607565b60405180910390f35b348015610cb257600080fd5b50610cbb612409565b604051610cc89190614607565b60405180910390f35b348015610cdd57600080fd5b50610cf86004803603810190610cf391906144da565b61240f565b005b348015610d0657600080fd5b50610d0f6125d5565b005b348015610d1d57600080fd5b50610d266126dd565b604051610d339190614607565b60405180910390f35b348015610d4857600080fd5b50610d516126e3565b604051610d5e9190614607565b60405180910390f35b606060038054610d7690614819565b80601f0160208091040260200160405190810160405280929190818152602001828054610da290614819565b8015610def5780601f10610dc457610100808354040283529160200191610def565b820191906000526020600020905b815481529060010190602001808311610dd257829003601f168201915b5050505050905090565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610e33610e2c6126e9565b84846126f1565b6001905092915050565b60226020528060005260406000206000915054906101000a900460ff1681565b610e656126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb90614896565b60405180910390fd5b60005b83839050811015610f93578160106000868685818110610f1a57610f196148b6565b5b9050602002016020810190610f2f91906144da565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f8b90614914565b915050610ef7565b50505050565b6000600254905090565b601e5481565b60205481565b6000610fbc8484846128ba565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110076126e9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e906149ce565b60405180910390fd5b61109b856110936126e9565b8584036126f1565b60019150509392505050565b6110af6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461113e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113590614896565b60405180910390fd5b8360148190555082601581905550816016819055508060178190555060175460165460155460145461117091906149ee565b61117a91906149ee565b61118491906149ee565b601381905550600f60135411156111d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c790614a90565b60405180910390fd5b50505050565b60006012905090565b60006112816111ec6126e9565b8484600160006111fa6126e9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461127c91906149ee565b6126f1565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112b96126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611348576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133f90614896565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ae90614b22565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601260009054906101000a900460ff1681565b60195481565b61141c6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a290614896565b60405180910390fd5b600b546114b7306115a6565b10156114f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ef90614bb4565b60405180910390fd5b6001600a60146101000a81548160ff02191690831515021790555061151b613875565b6000600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb32426040516115659190614607565b60405180910390a1565b6000600f544310905090565b60145481565b60075481565b60185481565b60115481565b601260029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115f66126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c90614896565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61174e6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d490614896565b60405180910390fd5b6000601260006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b61182e6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b490614896565b60405180910390fd5b8061195357600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194990614c46565b60405180910390fd5b5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6119b66126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3c90614896565b60405180910390fd5b601260019054906101000a900460ff1615611a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8c90614cb2565b60405180910390fd5b6001601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff02191690831515021790555043600e8190555080600e54611ae091906149ee565b600f819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a150565b60106020528060005260406000206000915054906101000a900460ff1681565b60065481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611b7490614819565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba090614819565b8015611bed5780601f10611bc257610100808354040283529160200191611bed565b820191906000526020600020905b815481529060010190602001808311611bd057829003601f168201915b5050505050905090565b60165481565b601f5481565b601b5481565b60008060016000611c186126e9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccc90614d44565b60405180910390fd5b611ce9611ce06126e9565b858584036126f1565b600191505092915050565b600f5481565b6000611d0e611d076126e9565b84846128ba565b6001905092915050565b60085481565b601c5481565b60236020528060005260406000206000915054906101000a900460ff1681565b601260019054906101000a900460ff1681565b611d5f6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de590614896565b60405180910390fd5b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e8b91906144bf565b60405180910390a25050565b611e9f6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2590614896565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9490614db0565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611fe96126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206f90614896565b60405180910390fd5b620186a06001612086610f99565b6120909190614dd0565b61209a9190614e59565b8110156120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d390614efc565b60405180910390fd5b6103e860016120e9610f99565b6120f39190614dd0565b6120fd9190614e59565b81111561213f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213690614f8e565b60405180910390fd5b80600b8190555050565b60135481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b60175481565b6121ea6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227090614896565b60405180910390fd5b8360198190555082601a8190555081601b8190555080601c81905550601c54601b54601a546019546122ab91906149ee565b6122b591906149ee565b6122bf91906149ee565b6018819055506014601854111561230b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230290614ffa565b60405180910390fd5b50505050565b6123196126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239f90614896565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60155481565b6124176126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249d90614896565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250c9061508c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6125dd6126e9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461266c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266390614896565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612692906150dd565b60006040518083038185875af1925050503d80600081146126cf576040519150601f19603f3d011682016040523d82523d6000602084013e6126d4565b606091505b50508091505050565b601a5481565b601d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275790615164565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c6906151f6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128ad9190614607565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612929576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292090615288565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298f9061531a565b60405180910390fd5b600081116129db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d290615386565b60405180910390fd5b601260019054906101000a900460ff16612ad057602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a905750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac6906153f2565b60405180910390fd5b5b6000600f541115612bde57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580612b665750612b37611b3b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80612b9e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b612bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd4906154aa565b60405180910390fd5b5b601260009054906101000a900460ff161561307757612bfb611b3b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612c695750612c39611b3b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ca25750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cdc575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d325750602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d885750602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561307657602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e305750602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ed757600654811115612e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e719061553c565b60405180910390fd5b600854612e86836115a6565b82612e9191906149ee565b1115612ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec9906155a8565b60405180910390fd5b613075565b602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f7a5750602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fc957600754811115612fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fbb9061563a565b60405180910390fd5b613074565b602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661307357600854613026836115a6565b8261303191906149ee565b1115613072576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613069906155a8565b60405180910390fd5b5b5b5b5b5b6000613082306115a6565b90506000600b5482101590508080156130a75750601260029054906101000a900460ff165b80156130c05750600a60149054906101000a900460ff16155b80156131165750602360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561316c5750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131c25750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613206576001600a60146101000a81548160ff0219169083151502179055506131ea613875565b6000600a60146101000a81548160ff0219169083151502179055505b600060019050602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806132ad5750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132b757600090505b60008115613861576132c761156f565b801561331c5750602360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156133725750602360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561338057506000601354115b1561356c57601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613480576001601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016011600082825461344191906149ee565b925050819055507f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a866040516134779190614722565b60405180910390a15b606460638661348f9190614dd0565b6134999190614e59565b9050601354601554826134ac9190614dd0565b6134b69190614e59565b601e60008282546134c791906149ee565b92505081905550601354601454826134df9190614dd0565b6134e99190614e59565b601d60008282546134fa91906149ee565b92505081905550601354601654826135129190614dd0565b61351c9190614e59565b601f600082825461352d91906149ee565b92505081905550601354601754826135459190614dd0565b61354f9190614e59565b6020600082825461356091906149ee565b9250508190555061383d565b602360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135c757506000601854115b156136b9576064601854866135dc9190614dd0565b6135e69190614e59565b9050601854601a54826135f99190614dd0565b6136039190614e59565b601e600082825461361491906149ee565b925050819055506018546019548261362c9190614dd0565b6136369190614e59565b601d600082825461364791906149ee565b92505081905550601854601b548261365f9190614dd0565b6136699190614e59565b601f600082825461367a91906149ee565b92505081905550601854601c54826136929190614dd0565b61369c9190614e59565b602060008282546136ad91906149ee565b9250508190555061383c565b602360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561371457506000601354115b15613806576064601354866137299190614dd0565b6137339190614e59565b9050601354601554826137469190614dd0565b6137509190614e59565b601e600082825461376191906149ee565b92505081905550601354601454826137799190614dd0565b6137839190614e59565b601d600082825461379491906149ee565b92505081905550601354601654826137ac9190614dd0565b6137b69190614e59565b601f60008282546137c791906149ee565b92505081905550601354601754826137df9190614dd0565b6137e99190614e59565b602060008282546137fa91906149ee565b9250508190555061383b565b60646005866138159190614dd0565b61381f9190614e59565b905080601d600082825461383391906149ee565b925050819055505b5b5b600081111561385257613851873083613b50565b5b808561385e919061565a565b94505b61386c878787613b50565b50505050505050565b6000602054118015613891575060205461388e306115a6565b10155b156138a3576138a230602054613db9565b5b600060208190555060006138b6306115a6565b90506000601f54601d54601e546138cd91906149ee565b6138d791906149ee565b905060008214806138e85750600081145b156138f4575050613b4e565b6014600b546139039190614dd0565b82111561391c576014600b546139199190614dd0565b91505b600080600283601e54866139309190614dd0565b61393a9190614e59565b6139449190614e59565b905061395a8185613955919061565a565b613f6e565b6000479050600081905060006002601e546139759190614e59565b86613980919061565a565b601d548461398e9190614dd0565b6139989190614e59565b905060006002601e546139ab9190614e59565b876139b6919061565a565b601f54856139c49190614dd0565b6139ce9190614e59565b905080826139dc91906149ee565b836139e7919061565a565b92506000601e819055506000601d819055506000601f819055506000602081905550600085118015613a195750600083115b15613a2957613a2885846141b1565b5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a6f906150dd565b60006040518083038185875af1925050503d8060008114613aac576040519150601f19603f3d011682016040523d82523d6000602084013e613ab1565b606091505b505080965050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613afd906150dd565b60006040518083038185875af1925050503d8060008114613b3a576040519150601f19603f3d011682016040523d82523d6000602084013e613b3f565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bb690615288565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c259061531a565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cab90615700565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d4791906149ee565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613dab9190614607565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e1f90615792565b60405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ea590615824565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f619190614607565b60405180910390a3505050565b6000600267ffffffffffffffff811115613f8b57613f8a615844565b5b604051908082528060200260200182016040528015613fb95781602001602082028036833780820191505090505b5090503081600081518110613fd157613fd06148b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061409c9190615888565b816001815181106140b0576140af6148b6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061411730600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846126f1565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161417b9594939291906159ae565b600060405180830381600087803b15801561419557600080fd5b505af11580156141a9573d6000803e3d6000fd5b505050505050565b6141de30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846126f1565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161424796959493929190615a08565b60606040518083038185885af1158015614265573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061428a9190615a7e565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142cb5780820151818401526020810190506142b0565b838111156142da576000848401525b50505050565b6000601f19601f8301169050919050565b60006142fc82614291565b614306818561429c565b93506143168185602086016142ad565b61431f816142e0565b840191505092915050565b6000602082019050818103600083015261434481846142f1565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061439161438c6143878461434c565b61436c565b61434c565b9050919050565b60006143a382614376565b9050919050565b60006143b582614398565b9050919050565b6143c5816143aa565b82525050565b60006020820190506143e060008301846143bc565b92915050565b600080fd5b600080fd5b60006143fb8261434c565b9050919050565b61440b816143f0565b811461441657600080fd5b50565b60008135905061442881614402565b92915050565b6000819050919050565b6144418161442e565b811461444c57600080fd5b50565b60008135905061445e81614438565b92915050565b6000806040838503121561447b5761447a6143e6565b5b600061448985828601614419565b925050602061449a8582860161444f565b9150509250929050565b60008115159050919050565b6144b9816144a4565b82525050565b60006020820190506144d460008301846144b0565b92915050565b6000602082840312156144f0576144ef6143e6565b5b60006144fe84828501614419565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261452c5761452b614507565b5b8235905067ffffffffffffffff8111156145495761454861450c565b5b60208301915083602082028301111561456557614564614511565b5b9250929050565b614575816144a4565b811461458057600080fd5b50565b6000813590506145928161456c565b92915050565b6000806000604084860312156145b1576145b06143e6565b5b600084013567ffffffffffffffff8111156145cf576145ce6143eb565b5b6145db86828701614516565b935093505060206145ee86828701614583565b9150509250925092565b6146018161442e565b82525050565b600060208201905061461c60008301846145f8565b92915050565b60008060006060848603121561463b5761463a6143e6565b5b600061464986828701614419565b935050602061465a86828701614419565b925050604061466b8682870161444f565b9150509250925092565b6000806000806080858703121561468f5761468e6143e6565b5b600061469d8782880161444f565b94505060206146ae8782880161444f565b93505060406146bf8782880161444f565b92505060606146d08782880161444f565b91505092959194509250565b600060ff82169050919050565b6146f2816146dc565b82525050565b600060208201905061470d60008301846146e9565b92915050565b61471c816143f0565b82525050565b60006020820190506147376000830184614713565b92915050565b60008060408385031215614754576147536143e6565b5b600061476285828601614419565b925050602061477385828601614583565b9150509250929050565b600060208284031215614793576147926143e6565b5b60006147a18482850161444f565b91505092915050565b600080604083850312156147c1576147c06143e6565b5b60006147cf85828601614419565b92505060206147e085828601614419565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061483157607f821691505b602082108103614844576148436147ea565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061488060208361429c565b915061488b8261484a565b602082019050919050565b600060208201905081810360008301526148af81614873565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061491f8261442e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614951576149506148e5565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006149b860288361429c565b91506149c38261495c565b604082019050919050565b600060208201905081810360008301526149e7816149ab565b9050919050565b60006149f98261442e565b9150614a048361442e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a3957614a386148e5565b5b828201905092915050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614a7a601d8361429c565b9150614a8582614a44565b602082019050919050565b60006020820190508181036000830152614aa981614a6d565b9050919050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614b0c60268361429c565b9150614b1782614ab0565b604082019050919050565b60006020820190508181036000830152614b3b81614aff565b9050919050565b7f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060008201527f6973206174206f7220686967686572207468616e207265737472696374696f6e602082015250565b6000614b9e60408361429c565b9150614ba982614b42565b604082019050919050565b60006020820190508181036000830152614bcd81614b91565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614c3060278361429c565b9150614c3b82614bd4565b604082019050919050565b60006020820190508181036000830152614c5f81614c23565b9050919050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b6000614c9c60178361429c565b9150614ca782614c66565b602082019050919050565b60006020820190508181036000830152614ccb81614c8f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614d2e60258361429c565b9150614d3982614cd2565b604082019050919050565b60006020820190508181036000830152614d5d81614d21565b9050919050565b7f5f6465764164647265737320616464726573732063616e6e6f74206265203000600082015250565b6000614d9a601f8361429c565b9150614da582614d64565b602082019050919050565b60006020820190508181036000830152614dc981614d8d565b9050919050565b6000614ddb8261442e565b9150614de68361442e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614e1f57614e1e6148e5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e648261442e565b9150614e6f8361442e565b925082614e7f57614e7e614e2a565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614ee660358361429c565b9150614ef182614e8a565b604082019050919050565b60006020820190508181036000830152614f1581614ed9565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614f7860348361429c565b9150614f8382614f1c565b604082019050919050565b60006020820190508181036000830152614fa781614f6b565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000614fe4601d8361429c565b9150614fef82614fae565b602082019050919050565b6000602082019050818103600083015261501381614fd7565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061507660268361429c565b91506150818261501a565b604082019050919050565b600060208201905081810360008301526150a581615069565b9050919050565b600081905092915050565b50565b60006150c76000836150ac565b91506150d2826150b7565b600082019050919050565b60006150e8826150ba565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061514e60248361429c565b9150615159826150f2565b604082019050919050565b6000602082019050818103600083015261517d81615141565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006151e060228361429c565b91506151eb82615184565b604082019050919050565b6000602082019050818103600083015261520f816151d3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061527260258361429c565b915061527d82615216565b604082019050919050565b600060208201905081810360008301526152a181615265565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061530460238361429c565b915061530f826152a8565b604082019050919050565b60006020820190508181036000830152615333816152f7565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615370601d8361429c565b915061537b8261533a565b602082019050919050565b6000602082019050818103600083015261539f81615363565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006153dc60168361429c565b91506153e7826153a6565b602082019050919050565b6000602082019050818103600083015261540b816153cf565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60008201527f72206f75742065786365707420746f206f776e6572206f72206465616420616460208201527f64726573732e0000000000000000000000000000000000000000000000000000604082015250565b600061549460468361429c565b915061549f82615412565b606082019050919050565b600060208201905081810360008301526154c381615487565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b600061552660288361429c565b9150615531826154ca565b604082019050919050565b6000602082019050818103600083015261555581615519565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b600061559260188361429c565b915061559d8261555c565b602082019050919050565b600060208201905081810360008301526155c181615585565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615624602a8361429c565b915061562f826155c8565b604082019050919050565b6000602082019050818103600083015261565381615617565b9050919050565b60006156658261442e565b91506156708361442e565b925082821015615683576156826148e5565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006156ea60268361429c565b91506156f58261568e565b604082019050919050565b60006020820190508181036000830152615719816156dd565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061577c60218361429c565b915061578782615720565b604082019050919050565b600060208201905081810360008301526157ab8161576f565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061580e60228361429c565b9150615819826157b2565b604082019050919050565b6000602082019050818103600083015261583d81615801565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061588281614402565b92915050565b60006020828403121561589e5761589d6143e6565b5b60006158ac84828501615873565b91505092915050565b6000819050919050565b60006158da6158d56158d0846158b5565b61436c565b61442e565b9050919050565b6158ea816158bf565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615925816143f0565b82525050565b6000615937838361591c565b60208301905092915050565b6000602082019050919050565b600061595b826158f0565b61596581856158fb565b93506159708361590c565b8060005b838110156159a1578151615988888261592b565b975061599383615943565b925050600181019050615974565b5085935050505092915050565b600060a0820190506159c360008301886145f8565b6159d060208301876158e1565b81810360408301526159e28186615950565b90506159f16060830185614713565b6159fe60808301846145f8565b9695505050505050565b600060c082019050615a1d6000830189614713565b615a2a60208301886145f8565b615a3760408301876158e1565b615a4460608301866158e1565b615a516080830185614713565b615a5e60a08301846145f8565b979650505050505050565b600081519050615a7881614438565b92915050565b600080600060608486031215615a9757615a966143e6565b5b6000615aa586828701615a69565b9350506020615ab686828701615a69565b9250506040615ac786828701615a69565b915050925092509256fea264697066735822122090fe15114e49c780bacc771f4e331215976c833f83e42f1c5687fe149907803864736f6c634300080f0033

Deployed Bytecode Sourcemap

10055:15674:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3942:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10206:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4856:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11421:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14947:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4263:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11169:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11243:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5033:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16313:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4162:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5533:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10240:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24922:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10601:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10984:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25414:312;;;;;;;;;;;;;:::i;:::-;;21858:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10809:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10132:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10949;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10567:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10681:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4379:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8579:150;;;;;;;;;;;;;:::i;:::-;;14698:115;;;;;;;;;;;;;:::i;:::-;;15795:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14316:330;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10516:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10098:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8365:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4050:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10884:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11209:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11061:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5756:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10476:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4514:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10167:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11093:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11643:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10641:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17212:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25167:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15224:346;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10775:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4697:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10298:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10915:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16757:447;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14821:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10399:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10847:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8737:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24754:160;;;;;;;;;;;;;:::i;:::-;;11023:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11128:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3942:100;3996:13;4029:5;4022:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3942:100;:::o;10206:27::-;;;;;;;;;;;;;:::o;4856:169::-;4939:4;4956:39;4965:12;:10;:12::i;:::-;4979:7;4988:6;4956:8;:39::i;:::-;5013:4;5006:11;;4856:169;;;;:::o;11421:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;14947:207::-;8502:12;:10;:12::i;:::-;8492:22;;:6;;;;;;;;;;;:22;;;8484:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15051:9:::1;15047:100;15070:7;;:14;;15066:1;:18;15047:100;;;15131:4;15105:11;:23;15117:7;;15125:1;15117:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15105:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;15086:3;;;;;:::i;:::-;;;;15047:100;;;;14947:207:::0;;;:::o;4263:108::-;4324:7;4351:12;;4344:19;;4263:108;:::o;11169:33::-;;;;:::o;11243:28::-;;;;:::o;5033:492::-;5173:4;5190:36;5200:6;5208:9;5219:6;5190:9;:36::i;:::-;5239:24;5266:11;:19;5278:6;5266:19;;;;;;;;;;;;;;;:33;5286:12;:10;:12::i;:::-;5266:33;;;;;;;;;;;;;;;;5239:60;;5338:6;5318:16;:26;;5310:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5425:57;5434:6;5442:12;:10;:12::i;:::-;5475:6;5456:16;:25;5425:8;:57::i;:::-;5513:4;5506:11;;;5033:492;;;;;:::o;16313:436::-;8502:12;:10;:12::i;:::-;8492:22;;:6;;;;;;;;;;;:22;;;8484:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16467:14:::1;16448:16;:33;;;;16510:13;16492:15;:31;;;;16546:7;16534:9;:19;;;;16577:8;16564:10;:21;;;;16660:10;;16648:9;;16630:15;;16611:16;;:34;;;;:::i;:::-;:46;;;;:::i;:::-;:59;;;;:::i;:::-;16596:12;:74;;;;16705:2;16689:12;;:18;;16681:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;16313:436:::0;;;;:::o;4162:93::-;4220:5;4245:2;4238:9;;4162:93;:::o;5533:215::-;5621:4;5638:80;5647:12;:10;:12::i;:::-;5661:7;5707:10;5670:11;:25;5682:12;:10;:12::i;:::-;5670:25;;;;;;;;;;;;;;;:34;5696:7;5670:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5638:8;:80::i;:::-;5736:4;5729:11;;5533:215;;;;:::o;10240:21::-;;;;;;;;;;;;;:::o;24922:237::-;8502:12;:10;:12::i;:::-;8492:22;;:6;;;;;;;;;;;:22;;;8484:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25048:1:::1;25018:32;;:18;:32;;::::0;25010:83:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25132:18;25104:17;;:47;;;;;;;;;;;;;;;;;;24922:237:::0;:::o;10601:33::-;;;;;;;;;;;;;:::o;10984:32::-;;;;:::o;25414:312::-;8502:12;:10;:12::i;:::-;8492:22;;:6;;;;;;;;;;;:22;;;8484:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25505:18:::1;;25477:24;25495:4;25477:9;:24::i;:::-;:46;;25469:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;25614:4;25603:8;;:15;;;;;;;;;;;;;;;;;;25629:10;:8;:10::i;:::-;25661:5;25650:8;;:16;;;;;;;;;;;;;;;;;;25682:36;25702:15;25682:36;;;;;;:::i;:::-;;;;;;;;25414:312::o:0;21858:120::-;21914:4;21952:18;;21937:12;:33;21930:40;;21858:120;:::o;10809:31::-;;;;:::o;10132:28::-;;;;:::o;10949:::-;;;;:::o;10567:25::-;;;;:::o;10681:31::-;;;;;;;;;;;;;:::o;4379:127::-;4453:7;4480:9;:18;4490:7;4480:18;;;;;;;;;;;;;;;;4473:25;;4379:127;;;:::o;8579:150::-;8502:12;:10;:12::i;:::-;8492:22;;:6;;;;;;;;;;;:22;;;8484:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8688:1:::1;8651:40;;8672:6;;;;;;;;;;;8651:40;;;;;;;;;;;;8719:1;8702:6;;:19;;;;;;;;;;;;;;;;;;8579:150::o:0;14698:115::-;8502:12;:10;:12::i;:::-;8492:22;;:6;;;;;;;;;;;:22;;;8484:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14769:5:::1;14752:14;;:22;;;;;;;;;;;;;;;;;;14790:15;;;;;;;;;;14698:115::o:0;15795:260::-;8502:12;:10;:12::i;:::-;8492:22;;:6;;;;;;;;;;;:22;;;8484:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15891:4:::1;15887:104;;15929:6;;;;;;;;;;;15919:16;;:6;:16;;::::0;15911:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15887:104;16043:4;16001:31;:39;16033:6;16001:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;15795:260:::0;;:::o;14316:330::-;8502:12;:10;:12::i;:::-;8492:22;;:6;;;;;;;;;;;:22;;;8484:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14398:13:::1;;;;;;;;;;;14397:14;14389:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;14466:4;14450:13;;:20;;;;;;;;;;;;;;;;;;14495:4;14481:11;;:18;;;;;;;;;;;;;;;;;;14531:12;14510:18;:33;;;;14596:10;14575:18;;:31;;;;:::i;:::-;14554:18;:52;;;;14622:16;;;;;;;;;;14316:330:::0;:::o;10516:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;10098:27::-;;;;:::o;8365:79::-;8403:7;8430:6;;;;;;;;;;;8423:13;;8365:79;:::o;4050:104::-;4106:13;4139:7;4132:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4050:104;:::o;10884:24::-;;;;:::o;11209:27::-;;;;:::o;11061:25::-;;;;:::o;5756:413::-;5849:4;5866:24;5893:11;:25;5905:12;:10;:12::i;:::-;5893:25;;;;;;;;;;;;;;;:34;5919:7;5893:34;;;;;;;;;;;;;;;;5866:61;;5966:15;5946:16;:35;;5938:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6059:67;6068:12;:10;:12::i;:::-;6082:7;6110:15;6091:16;:34;6059:8;:67::i;:::-;6157:4;6150:11;;;5756:413;;;;:::o;10476:33::-;;;;:::o;4514:175::-;4600:4;4617:42;4627:12;:10;:12::i;:::-;4641:9;4652:6;4617:9;:42::i;:::-;4677:4;4670:11;;4514:175;;;;:::o;10167:30::-;;;;:::o;11093:26::-;;;;:::o;11643:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;10641:33::-;;;;;;;;;;;;;:::o;17212:182::-;8502:12;:10;:12::i;:::-;8492:22;;:6;;;;;;;;;;;:22;;;8484:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17328:8:::1;17297:19;:28;17317:7;17297:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17368:7;17352:34;;;17377:8;17352:34;;;;;;:::i;:::-;;;;;;;;17212:182:::0;;:::o;25167:195::-;8502:12;:10;:12::i;:::-;8492:22;;:6;;;;;;;;;;;:22;;;8484:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25272:1:::1;25249:25;;:11;:25;;::::0;25241:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25342:11;25321:10;;:33;;;;;;;;;;;;;;;;;;25167:195:::0;:::o;15224:346::-;8502:12;:10;:12::i;:::-;8492:22;;:6;;;;;;;;;;;:22;;;8484:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15347:6:::1;15343:1;15327:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;15314:9;:39;;15306:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;15462:4;15458:1;15442:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;15429:9;:37;;15421:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;15554:9;15533:18;:30;;;;15224:346:::0;:::o;10775:27::-;;;;:::o;4697:151::-;4786:7;4813:11;:18;4825:5;4813:18;;;;;;;;;;;;;;;:27;4832:7;4813:27;;;;;;;;;;;;;;;;4806:34;;4697:151;;;;:::o;10298:33::-;;;;:::o;10915:25::-;;;;:::o;16757:447::-;8502:12;:10;:12::i;:::-;8492:22;;:6;;;;;;;;;;;:22;;;8484:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16913:14:::1;16893:17;:34;;;;16957:13;16938:16;:32;;;;16994:7;16981:10;:20;;;;17026:8;17012:11;:22;;;;17113:11;;17100:10;;17081:16;;17061:17;;:36;;;;:::i;:::-;:49;;;;:::i;:::-;:63;;;;:::i;:::-;17045:13;:79;;;;17160:2;17143:13;;:19;;17135:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;16757:447:::0;;;;:::o;14821:118::-;8502:12;:10;:12::i;:::-;8492:22;;:6;;;;;;;;;;;:22;;;8484:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14927:4:::1;14905:11;:19;14917:6;14905:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;14821:118:::0;;:::o;10399:37::-;;;;:::o;10847:30::-;;;;:::o;8737:244::-;8502:12;:10;:12::i;:::-;8492:22;;:6;;;;;;;;;;;:22;;;8484:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8846:1:::1;8826:22;;:8;:22;;::::0;8818:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8936:8;8907:38;;8928:6;;;;;;;;;;;8907:38;;;;;;;;;;;;8965:8;8956:6;;:17;;;;;;;;;;;;;;;;;;8737:244:::0;:::o;24754:160::-;8502:12;:10;:12::i;:::-;8492:22;;:6;;;;;;;;;;;:22;;;8484:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24812:12:::1;24856:10;24848:24;;24880:21;24848:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24835:71;;;;;24801:113;24754:160::o:0;11023:31::-;;;;:::o;11128:34::-;;;;:::o;2764:98::-;2817:7;2844:10;2837:17;;2764:98;:::o;7656:380::-;7809:1;7792:19;;:5;:19;;;7784:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7890:1;7871:21;;:7;:21;;;7863:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7974:6;7944:11;:18;7956:5;7944:18;;;;;;;;;;;;;;;:27;7963:7;7944:27;;;;;;;;;;;;;;;:36;;;;8012:7;7996:32;;8005:5;7996:32;;;8021:6;7996:32;;;;;;:::i;:::-;;;;;;;;7656:380;;;:::o;17402:4448::-;17518:1;17502:18;;:4;:18;;;17494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17595:1;17581:16;;:2;:16;;;17573:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17665:1;17656:6;:10;17648:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17717:13;;;;;;;;;;;17713:132;;17754:19;:25;17774:4;17754:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17783:19;:23;17803:2;17783:23;;;;;;;;;;;;;;;;;;;;;;;;;17754:52;17746:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17713:132;17881:1;17860:18;;:22;17857:196;;;17907:11;:17;17919:4;17907:17;;;;;;;;;;;;;;;;;;;;;;;;;17906:18;:35;;;;17934:7;:5;:7::i;:::-;17928:13;;:2;:13;;;17906:35;:60;;;;17959:6;17945:21;;:2;:21;;;17906:60;17898:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;17857:196;18068:14;;;;;;;;;;;18065:1061;;;18110:7;:5;:7::i;:::-;18102:15;;:4;:15;;;;:32;;;;;18127:7;:5;:7::i;:::-;18121:13;;:2;:13;;;;18102:32;:52;;;;;18152:1;18138:16;;:2;:16;;;;18102:52;:77;;;;;18172:6;18158:21;;:2;:21;;;;18102:77;:107;;;;;18184:19;:25;18204:4;18184:25;;;;;;;;;;;;;;;;;;;;;;;;;18183:26;18102:107;:135;;;;;18214:19;:23;18234:2;18214:23;;;;;;;;;;;;;;;;;;;;;;;;;18213:24;18102:135;18098:1017;;;18309:25;:31;18335:4;18309:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;18345:31;:35;18377:2;18345:35;;;;;;;;;;;;;;;;;;;;;;;;;18344:36;18309:71;18305:795;;;18427:12;;18417:6;:22;;18409:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;18545:15;;18528:13;18538:2;18528:9;:13::i;:::-;18519:6;:22;;;;:::i;:::-;:41;;18511:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18305:795;;;18691:25;:29;18717:2;18691:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;18725:31;:37;18757:4;18725:37;;;;;;;;;;;;;;;;;;;;;;;;;18724:38;18691:71;18687:413;;;18809:13;;18799:6;:23;;18791:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18687:413;;;18943:31;:35;18975:2;18943:35;;;;;;;;;;;;;;;;;;;;;;;;;18938:162;;19036:15;;19019:13;19029:2;19019:9;:13::i;:::-;19010:6;:22;;;;:::i;:::-;:41;;19002:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18938:162;18687:413;18305:795;18098:1017;18065:1061;19138:28;19169:24;19187:4;19169:9;:24::i;:::-;19138:55;;19206:12;19245:18;;19221:20;:42;;19206:57;;19279:7;:22;;;;;19290:11;;;;;;;;;;;19279:22;:35;;;;;19306:8;;;;;;;;;;;19305:9;19279:35;:71;;;;;19319:25;:31;19345:4;19319:31;;;;;;;;;;;;;;;;;;;;;;;;;19318:32;19279:71;:101;;;;;19355:19;:25;19375:4;19355:25;;;;;;;;;;;;;;;;;;;;;;;;;19354:26;19279:101;:129;;;;;19385:19;:23;19405:2;19385:23;;;;;;;;;;;;;;;;;;;;;;;;;19384:24;19279:129;19276:236;;;19436:4;19425:8;;:15;;;;;;;;;;;;;;;;;;19457:10;:8;:10::i;:::-;19495:5;19484:8;;:16;;;;;;;;;;;;;;;;;;19276:236;19524:12;19539:4;19524:19;;19642;:25;19662:4;19642:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19671:19;:23;19691:2;19671:23;;;;;;;;;;;;;;;;;;;;;;;;;19642:52;19639:99;;;19721:5;19711:15;;19639:99;19750:12;19854:7;19851:1946;;;19916:25;:23;:25::i;:::-;:60;;;;;19945:25;:31;19971:4;19945:31;;;;;;;;;;;;;;;;;;;;;;;;;19916:60;:94;;;;;19981:25;:29;20007:2;19981:29;;;;;;;;;;;;;;;;;;;;;;;;;19980:30;19916:94;:114;;;;;20029:1;20014:12;;:16;19916:114;19913:1740;;;20056:11;:15;20068:2;20056:15;;;;;;;;;;;;;;;;;;;;;;;;;20052:171;;20113:4;20095:11;:15;20107:2;20095:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;20154:1;20140:10;;:15;;;;;;;:::i;:::-;;;;;;;;20183:20;20200:2;20183:20;;;;;;:::i;:::-;;;;;;;;20052:171;20264:3;20259:2;20250:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;20243:24;;20330:12;;20312:15;;20305:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;20283:18;;:59;;;;;;;:::i;:::-;;;;;;;;20410:12;;20391:16;;20384:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;20361:19;;:61;;;;;;;:::i;:::-;;;;;;;;20476:12;;20464:9;;20457:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;20441:12;;:47;;;;;;;:::i;:::-;;;;;;;;20544:12;;20531:10;;20524:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;20507:13;;:49;;;;;;;:::i;:::-;;;;;;;;19913:1740;;;20621:25;:29;20647:2;20621:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;20670:1;20654:13;;:17;20621:50;20617:1036;;;20723:3;20707:13;;20698:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;20691:35;;20793:13;;20774:16;;20767:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;20745:18;;:61;;;;;;;:::i;:::-;;;;;;;;20875:13;;20855:17;;20848:4;:24;;;;:::i;:::-;:40;;;;:::i;:::-;20825:19;;:63;;;;;;;:::i;:::-;;;;;;;;20943:13;;20930:10;;20923:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;20907:12;;:49;;;;;;;:::i;:::-;;;;;;;;21013:13;;20999:11;;20992:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;20975:13;;:51;;;;;;;:::i;:::-;;;;;;;;20617:1036;;;21089:25;:31;21115:4;21089:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;21139:1;21124:12;;:16;21089:51;21086:567;;;21189:3;21174:12;;21165:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;21158:34;;21255:12;;21237:15;;21230:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;21208:18;;:59;;;;;;;:::i;:::-;;;;;;;;21335:12;;21316:16;;21309:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;21286:19;;:61;;;;;;;:::i;:::-;;;;;;;;21401:12;;21389:9;;21382:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;21366:12;;:47;;;;;;;:::i;:::-;;;;;;;;21469:12;;21456:10;;21449:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;21432:13;;:49;;;;;;;:::i;:::-;;;;;;;;21086:567;;;21587:3;21584:1;21575:6;:10;;;;:::i;:::-;:15;;;;:::i;:::-;21568:22;;21632:4;21609:19;;:27;;;;;;;:::i;:::-;;;;;;;;21086:567;20617:1036;19913:1740;21679:1;21672:4;:8;21669:89;;;21700:42;21716:4;21730;21737;21700:15;:42::i;:::-;21669:89;21781:4;21771:14;;;;;:::i;:::-;;;19851:1946;21809:33;21825:4;21831:2;21835:6;21809:15;:33::i;:::-;17481:4369;;;;17402:4448;;;:::o;23084:1598::-;23144:1;23128:13;;:17;:62;;;;;23177:13;;23149:24;23167:4;23149:9;:24::i;:::-;:41;;23128:62;23125:129;;;23207:35;23221:4;23228:13;;23207:5;:35::i;:::-;23125:129;23280:1;23264:13;:17;;;;23294:23;23320:24;23338:4;23320:9;:24::i;:::-;23294:50;;23355:25;23426:12;;23404:19;;23383:18;;:40;;;;:::i;:::-;:55;;;;:::i;:::-;23355:83;;23473:1;23454:15;:20;:46;;;;23499:1;23478:17;:22;23454:46;23451:60;;;23503:7;;;;23451:60;23565:2;23544:18;;:23;;;;:::i;:::-;23526:15;:41;23523:113;;;23622:2;23601:18;;:23;;;;:::i;:::-;23583:41;;23523:113;23648:12;23722:23;23807:1;23787:17;23766:18;;23748:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;23722:86;;23821:51;23856:15;23838;:33;;;;:::i;:::-;23821:16;:51::i;:::-;23885:18;23906:21;23885:42;;23938:23;23964:10;23938:36;;23987:24;24090:1;24071:18;;:20;;;;:::i;:::-;24050:17;:42;;;;:::i;:::-;24027:19;;24014:10;:32;;;;:::i;:::-;:79;;;;:::i;:::-;23987:106;;24104:17;24193:1;24174:18;;:20;;;;:::i;:::-;24153:17;:42;;;;:::i;:::-;24137:12;;24124:10;:25;;;;:::i;:::-;:72;;;;:::i;:::-;24104:92;;24247:9;24228:16;:28;;;;:::i;:::-;24209:47;;;;;:::i;:::-;;;24290:1;24269:18;:22;;;;24324:1;24302:19;:23;;;;24351:1;24336:12;:16;;;;24379:1;24363:13;:17;;;;24414:1;24396:15;:19;:42;;;;;24437:1;24419:15;:19;24396:42;24393:119;;;24454:46;24467:15;24484;24454:12;:46::i;:::-;24393:119;24545:10;;;;;;;;;;;24537:24;;24569:9;24537:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24524:59;;;;;24617:17;;;;;;;;;;;24609:31;;24648:21;24609:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24596:78;;;;;23112:1570;;;;;;;;23084:1598;:::o;6177:614::-;6335:1;6317:20;;:6;:20;;;6309:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6419:1;6398:23;;:9;:23;;;6390:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6474:21;6498:9;:17;6508:6;6498:17;;;;;;;;;;;;;;;;6474:41;;6551:6;6534:13;:23;;6526:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6672:6;6656:13;:22;6636:9;:17;6646:6;6636:17;;;;;;;;;;;;;;;:42;;;;6724:6;6700:9;:20;6710:9;6700:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6765:9;6748:35;;6757:6;6748:35;;;6776:6;6748:35;;;;;;:::i;:::-;;;;;;;;6298:493;6177:614;;;:::o;7098:550::-;7201:1;7182:21;;:7;:21;;;7174:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7252:22;7277:9;:18;7287:7;7277:18;;;;;;;;;;;;;;;;7252:43;;7332:6;7314:14;:24;;7306:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7451:6;7434:14;:23;7413:9;:18;7423:7;7413:18;;;;;;;;;;;;;;;:44;;;;7568:6;7552:12;;:22;;;;;;;;;;;7629:1;7603:37;;7612:7;7603:37;;;7633:6;7603:37;;;;;;:::i;:::-;;;;;;;;7163:485;7098:550;;:::o;21986:573::-;22114:21;22152:1;22138:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22114:40;;22183:4;22165;22170:1;22165:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22209:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22199:4;22204:1;22199:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;22238:56;22255:4;22270:9;;;;;;;;;;;22282:11;22238:8;:56::i;:::-;22333:9;;;;;;;;;;;:60;;;22408:11;22434:1;22478:4;22505;22525:15;22333:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22041:518;21986:573;:::o;22567:509::-;22715:56;22732:4;22747:9;;;;;;;;;;;22759:11;22715:8;:56::i;:::-;22814:9;;;;;;;;;;;:25;;;22847:9;22880:4;22900:11;22926:1;22969;23020:6;23042:15;22814:254;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22567:509;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:126::-;1434:7;1474:42;1467:5;1463:54;1452:65;;1397:126;;;:::o;1529:60::-;1557:3;1578:5;1571:12;;1529:60;;;:::o;1595:142::-;1645:9;1678:53;1696:34;1705:24;1723:5;1705:24;:::i;:::-;1696:34;:::i;:::-;1678:53;:::i;:::-;1665:66;;1595:142;;;:::o;1743:126::-;1793:9;1826:37;1857:5;1826:37;:::i;:::-;1813:50;;1743:126;;;:::o;1875:144::-;1943:9;1976:37;2007:5;1976:37;:::i;:::-;1963:50;;1875:144;;;:::o;2025:167::-;2130:55;2179:5;2130:55;:::i;:::-;2125:3;2118:68;2025:167;;:::o;2198:258::-;2309:4;2347:2;2336:9;2332:18;2324:26;;2360:89;2446:1;2435:9;2431:17;2422:6;2360:89;:::i;:::-;2198:258;;;;:::o;2543:117::-;2652:1;2649;2642:12;2666:117;2775:1;2772;2765:12;2789:96;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:77::-;3201:7;3230:5;3219:16;;3164:77;;;:::o;3247:122::-;3320:24;3338:5;3320:24;:::i;:::-;3313:5;3310:35;3300:63;;3359:1;3356;3349:12;3300:63;3247:122;:::o;3375:139::-;3421:5;3459:6;3446:20;3437:29;;3475:33;3502:5;3475:33;:::i;:::-;3375:139;;;;:::o;3520:474::-;3588:6;3596;3645:2;3633:9;3624:7;3620:23;3616:32;3613:119;;;3651:79;;:::i;:::-;3613:119;3771:1;3796:53;3841:7;3832:6;3821:9;3817:22;3796:53;:::i;:::-;3786:63;;3742:117;3898:2;3924:53;3969:7;3960:6;3949:9;3945:22;3924:53;:::i;:::-;3914:63;;3869:118;3520:474;;;;;:::o;4000:90::-;4034:7;4077:5;4070:13;4063:21;4052:32;;4000:90;;;:::o;4096:109::-;4177:21;4192:5;4177:21;:::i;:::-;4172:3;4165:34;4096:109;;:::o;4211:210::-;4298:4;4336:2;4325:9;4321:18;4313:26;;4349:65;4411:1;4400:9;4396:17;4387:6;4349:65;:::i;:::-;4211:210;;;;:::o;4427:329::-;4486:6;4535:2;4523:9;4514:7;4510:23;4506:32;4503:119;;;4541:79;;:::i;:::-;4503:119;4661:1;4686:53;4731:7;4722:6;4711:9;4707:22;4686:53;:::i;:::-;4676:63;;4632:117;4427:329;;;;:::o;4762:117::-;4871:1;4868;4861:12;4885:117;4994:1;4991;4984:12;5008:117;5117:1;5114;5107:12;5148:568;5221:8;5231:6;5281:3;5274:4;5266:6;5262:17;5258:27;5248:122;;5289:79;;:::i;:::-;5248:122;5402:6;5389:20;5379:30;;5432:18;5424:6;5421:30;5418:117;;;5454:79;;:::i;:::-;5418:117;5568:4;5560:6;5556:17;5544:29;;5622:3;5614:4;5606:6;5602:17;5592:8;5588:32;5585:41;5582:128;;;5629:79;;:::i;:::-;5582:128;5148:568;;;;;:::o;5722:116::-;5792:21;5807:5;5792:21;:::i;:::-;5785:5;5782:32;5772:60;;5828:1;5825;5818:12;5772:60;5722:116;:::o;5844:133::-;5887:5;5925:6;5912:20;5903:29;;5941:30;5965:5;5941:30;:::i;:::-;5844:133;;;;:::o;5983:698::-;6075:6;6083;6091;6140:2;6128:9;6119:7;6115:23;6111:32;6108:119;;;6146:79;;:::i;:::-;6108:119;6294:1;6283:9;6279:17;6266:31;6324:18;6316:6;6313:30;6310:117;;;6346:79;;:::i;:::-;6310:117;6459:80;6531:7;6522:6;6511:9;6507:22;6459:80;:::i;:::-;6441:98;;;;6237:312;6588:2;6614:50;6656:7;6647:6;6636:9;6632:22;6614:50;:::i;:::-;6604:60;;6559:115;5983:698;;;;;:::o;6687:118::-;6774:24;6792:5;6774:24;:::i;:::-;6769:3;6762:37;6687:118;;:::o;6811:222::-;6904:4;6942:2;6931:9;6927:18;6919:26;;6955:71;7023:1;7012:9;7008:17;6999:6;6955:71;:::i;:::-;6811:222;;;;:::o;7039:619::-;7116:6;7124;7132;7181:2;7169:9;7160:7;7156:23;7152:32;7149:119;;;7187:79;;:::i;:::-;7149:119;7307:1;7332:53;7377:7;7368:6;7357:9;7353:22;7332:53;:::i;:::-;7322:63;;7278:117;7434:2;7460:53;7505:7;7496:6;7485:9;7481:22;7460:53;:::i;:::-;7450:63;;7405:118;7562:2;7588:53;7633:7;7624:6;7613:9;7609:22;7588:53;:::i;:::-;7578:63;;7533:118;7039:619;;;;;:::o;7664:765::-;7750:6;7758;7766;7774;7823:3;7811:9;7802:7;7798:23;7794:33;7791:120;;;7830:79;;:::i;:::-;7791:120;7950:1;7975:53;8020:7;8011:6;8000:9;7996:22;7975:53;:::i;:::-;7965:63;;7921:117;8077:2;8103:53;8148:7;8139:6;8128:9;8124:22;8103:53;:::i;:::-;8093:63;;8048:118;8205:2;8231:53;8276:7;8267:6;8256:9;8252:22;8231:53;:::i;:::-;8221:63;;8176:118;8333:2;8359:53;8404:7;8395:6;8384:9;8380:22;8359:53;:::i;:::-;8349:63;;8304:118;7664:765;;;;;;;:::o;8435:86::-;8470:7;8510:4;8503:5;8499:16;8488:27;;8435:86;;;:::o;8527:112::-;8610:22;8626:5;8610:22;:::i;:::-;8605:3;8598:35;8527:112;;:::o;8645:214::-;8734:4;8772:2;8761:9;8757:18;8749:26;;8785:67;8849:1;8838:9;8834:17;8825:6;8785:67;:::i;:::-;8645:214;;;;:::o;8865:118::-;8952:24;8970:5;8952:24;:::i;:::-;8947:3;8940:37;8865:118;;:::o;8989:222::-;9082:4;9120:2;9109:9;9105:18;9097:26;;9133:71;9201:1;9190:9;9186:17;9177:6;9133:71;:::i;:::-;8989:222;;;;:::o;9217:468::-;9282:6;9290;9339:2;9327:9;9318:7;9314:23;9310:32;9307:119;;;9345:79;;:::i;:::-;9307:119;9465:1;9490:53;9535:7;9526:6;9515:9;9511:22;9490:53;:::i;:::-;9480:63;;9436:117;9592:2;9618:50;9660:7;9651:6;9640:9;9636:22;9618:50;:::i;:::-;9608:60;;9563:115;9217:468;;;;;:::o;9691:329::-;9750:6;9799:2;9787:9;9778:7;9774:23;9770:32;9767:119;;;9805:79;;:::i;:::-;9767:119;9925:1;9950:53;9995:7;9986:6;9975:9;9971:22;9950:53;:::i;:::-;9940:63;;9896:117;9691:329;;;;:::o;10026:474::-;10094:6;10102;10151:2;10139:9;10130:7;10126:23;10122:32;10119:119;;;10157:79;;:::i;:::-;10119:119;10277:1;10302:53;10347:7;10338:6;10327:9;10323:22;10302:53;:::i;:::-;10292:63;;10248:117;10404:2;10430:53;10475:7;10466:6;10455:9;10451:22;10430:53;:::i;:::-;10420:63;;10375:118;10026:474;;;;;:::o;10506:180::-;10554:77;10551:1;10544:88;10651:4;10648:1;10641:15;10675:4;10672:1;10665:15;10692:320;10736:6;10773:1;10767:4;10763:12;10753:22;;10820:1;10814:4;10810:12;10841:18;10831:81;;10897:4;10889:6;10885:17;10875:27;;10831:81;10959:2;10951:6;10948:14;10928:18;10925:38;10922:84;;10978:18;;:::i;:::-;10922:84;10743:269;10692:320;;;:::o;11018:182::-;11158:34;11154:1;11146:6;11142:14;11135:58;11018:182;:::o;11206:366::-;11348:3;11369:67;11433:2;11428:3;11369:67;:::i;:::-;11362:74;;11445:93;11534:3;11445:93;:::i;:::-;11563:2;11558:3;11554:12;11547:19;;11206:366;;;:::o;11578:419::-;11744:4;11782:2;11771:9;11767:18;11759:26;;11831:9;11825:4;11821:20;11817:1;11806:9;11802:17;11795:47;11859:131;11985:4;11859:131;:::i;:::-;11851:139;;11578:419;;;:::o;12003:180::-;12051:77;12048:1;12041:88;12148:4;12145:1;12138:15;12172:4;12169:1;12162:15;12189:180;12237:77;12234:1;12227:88;12334:4;12331:1;12324:15;12358:4;12355:1;12348:15;12375:233;12414:3;12437:24;12455:5;12437:24;:::i;:::-;12428:33;;12483:66;12476:5;12473:77;12470:103;;12553:18;;:::i;:::-;12470:103;12600:1;12593:5;12589:13;12582:20;;12375:233;;;:::o;12614:227::-;12754:34;12750:1;12742:6;12738:14;12731:58;12823:10;12818:2;12810:6;12806:15;12799:35;12614:227;:::o;12847:366::-;12989:3;13010:67;13074:2;13069:3;13010:67;:::i;:::-;13003:74;;13086:93;13175:3;13086:93;:::i;:::-;13204:2;13199:3;13195:12;13188:19;;12847:366;;;:::o;13219:419::-;13385:4;13423:2;13412:9;13408:18;13400:26;;13472:9;13466:4;13462:20;13458:1;13447:9;13443:17;13436:47;13500:131;13626:4;13500:131;:::i;:::-;13492:139;;13219:419;;;:::o;13644:305::-;13684:3;13703:20;13721:1;13703:20;:::i;:::-;13698:25;;13737:20;13755:1;13737:20;:::i;:::-;13732:25;;13891:1;13823:66;13819:74;13816:1;13813:81;13810:107;;;13897:18;;:::i;:::-;13810:107;13941:1;13938;13934:9;13927:16;;13644:305;;;;:::o;13955:179::-;14095:31;14091:1;14083:6;14079:14;14072:55;13955:179;:::o;14140:366::-;14282:3;14303:67;14367:2;14362:3;14303:67;:::i;:::-;14296:74;;14379:93;14468:3;14379:93;:::i;:::-;14497:2;14492:3;14488:12;14481:19;;14140:366;;;:::o;14512:419::-;14678:4;14716:2;14705:9;14701:18;14693:26;;14765:9;14759:4;14755:20;14751:1;14740:9;14736:17;14729:47;14793:131;14919:4;14793:131;:::i;:::-;14785:139;;14512:419;;;:::o;14937:225::-;15077:34;15073:1;15065:6;15061:14;15054:58;15146:8;15141:2;15133:6;15129:15;15122:33;14937:225;:::o;15168:366::-;15310:3;15331:67;15395:2;15390:3;15331:67;:::i;:::-;15324:74;;15407:93;15496:3;15407:93;:::i;:::-;15525:2;15520:3;15516:12;15509:19;;15168:366;;;:::o;15540:419::-;15706:4;15744:2;15733:9;15729:18;15721:26;;15793:9;15787:4;15783:20;15779:1;15768:9;15764:17;15757:47;15821:131;15947:4;15821:131;:::i;:::-;15813:139;;15540:419;;;:::o;15965:251::-;16105:34;16101:1;16093:6;16089:14;16082:58;16174:34;16169:2;16161:6;16157:15;16150:59;15965:251;:::o;16222:366::-;16364:3;16385:67;16449:2;16444:3;16385:67;:::i;:::-;16378:74;;16461:93;16550:3;16461:93;:::i;:::-;16579:2;16574:3;16570:12;16563:19;;16222:366;;;:::o;16594:419::-;16760:4;16798:2;16787:9;16783:18;16775:26;;16847:9;16841:4;16837:20;16833:1;16822:9;16818:17;16811:47;16875:131;17001:4;16875:131;:::i;:::-;16867:139;;16594:419;;;:::o;17019:226::-;17159:34;17155:1;17147:6;17143:14;17136:58;17228:9;17223:2;17215:6;17211:15;17204:34;17019:226;:::o;17251:366::-;17393:3;17414:67;17478:2;17473:3;17414:67;:::i;:::-;17407:74;;17490:93;17579:3;17490:93;:::i;:::-;17608:2;17603:3;17599:12;17592:19;;17251:366;;;:::o;17623:419::-;17789:4;17827:2;17816:9;17812:18;17804:26;;17876:9;17870:4;17866:20;17862:1;17851:9;17847:17;17840:47;17904:131;18030:4;17904:131;:::i;:::-;17896:139;;17623:419;;;:::o;18048:173::-;18188:25;18184:1;18176:6;18172:14;18165:49;18048:173;:::o;18227:366::-;18369:3;18390:67;18454:2;18449:3;18390:67;:::i;:::-;18383:74;;18466:93;18555:3;18466:93;:::i;:::-;18584:2;18579:3;18575:12;18568:19;;18227:366;;;:::o;18599:419::-;18765:4;18803:2;18792:9;18788:18;18780:26;;18852:9;18846:4;18842:20;18838:1;18827:9;18823:17;18816:47;18880:131;19006:4;18880:131;:::i;:::-;18872:139;;18599:419;;;:::o;19024:224::-;19164:34;19160:1;19152:6;19148:14;19141:58;19233:7;19228:2;19220:6;19216:15;19209:32;19024:224;:::o;19254:366::-;19396:3;19417:67;19481:2;19476:3;19417:67;:::i;:::-;19410:74;;19493:93;19582:3;19493:93;:::i;:::-;19611:2;19606:3;19602:12;19595:19;;19254:366;;;:::o;19626:419::-;19792:4;19830:2;19819:9;19815:18;19807:26;;19879:9;19873:4;19869:20;19865:1;19854:9;19850:17;19843:47;19907:131;20033:4;19907:131;:::i;:::-;19899:139;;19626:419;;;:::o;20051:181::-;20191:33;20187:1;20179:6;20175:14;20168:57;20051:181;:::o;20238:366::-;20380:3;20401:67;20465:2;20460:3;20401:67;:::i;:::-;20394:74;;20477:93;20566:3;20477:93;:::i;:::-;20595:2;20590:3;20586:12;20579:19;;20238:366;;;:::o;20610:419::-;20776:4;20814:2;20803:9;20799:18;20791:26;;20863:9;20857:4;20853:20;20849:1;20838:9;20834:17;20827:47;20891:131;21017:4;20891:131;:::i;:::-;20883:139;;20610:419;;;:::o;21035:348::-;21075:7;21098:20;21116:1;21098:20;:::i;:::-;21093:25;;21132:20;21150:1;21132:20;:::i;:::-;21127:25;;21320:1;21252:66;21248:74;21245:1;21242:81;21237:1;21230:9;21223:17;21219:105;21216:131;;;21327:18;;:::i;:::-;21216:131;21375:1;21372;21368:9;21357:20;;21035:348;;;;:::o;21389:180::-;21437:77;21434:1;21427:88;21534:4;21531:1;21524:15;21558:4;21555:1;21548:15;21575:185;21615:1;21632:20;21650:1;21632:20;:::i;:::-;21627:25;;21666:20;21684:1;21666:20;:::i;:::-;21661:25;;21705:1;21695:35;;21710:18;;:::i;:::-;21695:35;21752:1;21749;21745:9;21740:14;;21575:185;;;;:::o;21766:240::-;21906:34;21902:1;21894:6;21890:14;21883:58;21975:23;21970:2;21962:6;21958:15;21951:48;21766:240;:::o;22012:366::-;22154:3;22175:67;22239:2;22234:3;22175:67;:::i;:::-;22168:74;;22251:93;22340:3;22251:93;:::i;:::-;22369:2;22364:3;22360:12;22353:19;;22012:366;;;:::o;22384:419::-;22550:4;22588:2;22577:9;22573:18;22565:26;;22637:9;22631:4;22627:20;22623:1;22612:9;22608:17;22601:47;22665:131;22791:4;22665:131;:::i;:::-;22657:139;;22384:419;;;:::o;22809:239::-;22949:34;22945:1;22937:6;22933:14;22926:58;23018:22;23013:2;23005:6;23001:15;22994:47;22809:239;:::o;23054:366::-;23196:3;23217:67;23281:2;23276:3;23217:67;:::i;:::-;23210:74;;23293:93;23382:3;23293:93;:::i;:::-;23411:2;23406:3;23402:12;23395:19;;23054:366;;;:::o;23426:419::-;23592:4;23630:2;23619:9;23615:18;23607:26;;23679:9;23673:4;23669:20;23665:1;23654:9;23650:17;23643:47;23707:131;23833:4;23707:131;:::i;:::-;23699:139;;23426:419;;;:::o;23851:179::-;23991:31;23987:1;23979:6;23975:14;23968:55;23851:179;:::o;24036:366::-;24178:3;24199:67;24263:2;24258:3;24199:67;:::i;:::-;24192:74;;24275:93;24364:3;24275:93;:::i;:::-;24393:2;24388:3;24384:12;24377:19;;24036:366;;;:::o;24408:419::-;24574:4;24612:2;24601:9;24597:18;24589:26;;24661:9;24655:4;24651:20;24647:1;24636:9;24632:17;24625:47;24689:131;24815:4;24689:131;:::i;:::-;24681:139;;24408:419;;;:::o;24833:225::-;24973:34;24969:1;24961:6;24957:14;24950:58;25042:8;25037:2;25029:6;25025:15;25018:33;24833:225;:::o;25064:366::-;25206:3;25227:67;25291:2;25286:3;25227:67;:::i;:::-;25220:74;;25303:93;25392:3;25303:93;:::i;:::-;25421:2;25416:3;25412:12;25405:19;;25064:366;;;:::o;25436:419::-;25602:4;25640:2;25629:9;25625:18;25617:26;;25689:9;25683:4;25679:20;25675:1;25664:9;25660:17;25653:47;25717:131;25843:4;25717:131;:::i;:::-;25709:139;;25436:419;;;:::o;25861:147::-;25962:11;25999:3;25984:18;;25861:147;;;;:::o;26014:114::-;;:::o;26134:398::-;26293:3;26314:83;26395:1;26390:3;26314:83;:::i;:::-;26307:90;;26406:93;26495:3;26406:93;:::i;:::-;26524:1;26519:3;26515:11;26508:18;;26134:398;;;:::o;26538:379::-;26722:3;26744:147;26887:3;26744:147;:::i;:::-;26737:154;;26908:3;26901:10;;26538:379;;;:::o;26923:223::-;27063:34;27059:1;27051:6;27047:14;27040:58;27132:6;27127:2;27119:6;27115:15;27108:31;26923:223;:::o;27152:366::-;27294:3;27315:67;27379:2;27374:3;27315:67;:::i;:::-;27308:74;;27391:93;27480:3;27391:93;:::i;:::-;27509:2;27504:3;27500:12;27493:19;;27152:366;;;:::o;27524:419::-;27690:4;27728:2;27717:9;27713:18;27705:26;;27777:9;27771:4;27767:20;27763:1;27752:9;27748:17;27741:47;27805:131;27931:4;27805:131;:::i;:::-;27797:139;;27524:419;;;:::o;27949:221::-;28089:34;28085:1;28077:6;28073:14;28066:58;28158:4;28153:2;28145:6;28141:15;28134:29;27949:221;:::o;28176:366::-;28318:3;28339:67;28403:2;28398:3;28339:67;:::i;:::-;28332:74;;28415:93;28504:3;28415:93;:::i;:::-;28533:2;28528:3;28524:12;28517:19;;28176:366;;;:::o;28548:419::-;28714:4;28752:2;28741:9;28737:18;28729:26;;28801:9;28795:4;28791:20;28787:1;28776:9;28772:17;28765:47;28829:131;28955:4;28829:131;:::i;:::-;28821:139;;28548:419;;;:::o;28973:224::-;29113:34;29109:1;29101:6;29097:14;29090:58;29182:7;29177:2;29169:6;29165:15;29158:32;28973:224;:::o;29203:366::-;29345:3;29366:67;29430:2;29425:3;29366:67;:::i;:::-;29359:74;;29442:93;29531:3;29442:93;:::i;:::-;29560:2;29555:3;29551:12;29544:19;;29203:366;;;:::o;29575:419::-;29741:4;29779:2;29768:9;29764:18;29756:26;;29828:9;29822:4;29818:20;29814:1;29803:9;29799:17;29792:47;29856:131;29982:4;29856:131;:::i;:::-;29848:139;;29575:419;;;:::o;30000:222::-;30140:34;30136:1;30128:6;30124:14;30117:58;30209:5;30204:2;30196:6;30192:15;30185:30;30000:222;:::o;30228:366::-;30370:3;30391:67;30455:2;30450:3;30391:67;:::i;:::-;30384:74;;30467:93;30556:3;30467:93;:::i;:::-;30585:2;30580:3;30576:12;30569:19;;30228:366;;;:::o;30600:419::-;30766:4;30804:2;30793:9;30789:18;30781:26;;30853:9;30847:4;30843:20;30839:1;30828:9;30824:17;30817:47;30881:131;31007:4;30881:131;:::i;:::-;30873:139;;30600:419;;;:::o;31025:179::-;31165:31;31161:1;31153:6;31149:14;31142:55;31025:179;:::o;31210:366::-;31352:3;31373:67;31437:2;31432:3;31373:67;:::i;:::-;31366:74;;31449:93;31538:3;31449:93;:::i;:::-;31567:2;31562:3;31558:12;31551:19;;31210:366;;;:::o;31582:419::-;31748:4;31786:2;31775:9;31771:18;31763:26;;31835:9;31829:4;31825:20;31821:1;31810:9;31806:17;31799:47;31863:131;31989:4;31863:131;:::i;:::-;31855:139;;31582:419;;;:::o;32007:172::-;32147:24;32143:1;32135:6;32131:14;32124:48;32007:172;:::o;32185:366::-;32327:3;32348:67;32412:2;32407:3;32348:67;:::i;:::-;32341:74;;32424:93;32513:3;32424:93;:::i;:::-;32542:2;32537:3;32533:12;32526:19;;32185:366;;;:::o;32557:419::-;32723:4;32761:2;32750:9;32746:18;32738:26;;32810:9;32804:4;32800:20;32796:1;32785:9;32781:17;32774:47;32838:131;32964:4;32838:131;:::i;:::-;32830:139;;32557:419;;;:::o;32982:294::-;33122:34;33118:1;33110:6;33106:14;33099:58;33191:34;33186:2;33178:6;33174:15;33167:59;33260:8;33255:2;33247:6;33243:15;33236:33;32982:294;:::o;33282:366::-;33424:3;33445:67;33509:2;33504:3;33445:67;:::i;:::-;33438:74;;33521:93;33610:3;33521:93;:::i;:::-;33639:2;33634:3;33630:12;33623:19;;33282:366;;;:::o;33654:419::-;33820:4;33858:2;33847:9;33843:18;33835:26;;33907:9;33901:4;33897:20;33893:1;33882:9;33878:17;33871:47;33935:131;34061:4;33935:131;:::i;:::-;33927:139;;33654:419;;;:::o;34079:227::-;34219:34;34215:1;34207:6;34203:14;34196:58;34288:10;34283:2;34275:6;34271:15;34264:35;34079:227;:::o;34312:366::-;34454:3;34475:67;34539:2;34534:3;34475:67;:::i;:::-;34468:74;;34551:93;34640:3;34551:93;:::i;:::-;34669:2;34664:3;34660:12;34653:19;;34312:366;;;:::o;34684:419::-;34850:4;34888:2;34877:9;34873:18;34865:26;;34937:9;34931:4;34927:20;34923:1;34912:9;34908:17;34901:47;34965:131;35091:4;34965:131;:::i;:::-;34957:139;;34684:419;;;:::o;35109:174::-;35249:26;35245:1;35237:6;35233:14;35226:50;35109:174;:::o;35289:366::-;35431:3;35452:67;35516:2;35511:3;35452:67;:::i;:::-;35445:74;;35528:93;35617:3;35528:93;:::i;:::-;35646:2;35641:3;35637:12;35630:19;;35289:366;;;:::o;35661:419::-;35827:4;35865:2;35854:9;35850:18;35842:26;;35914:9;35908:4;35904:20;35900:1;35889:9;35885:17;35878:47;35942:131;36068:4;35942:131;:::i;:::-;35934:139;;35661:419;;;:::o;36086:229::-;36226:34;36222:1;36214:6;36210:14;36203:58;36295:12;36290:2;36282:6;36278:15;36271:37;36086:229;:::o;36321:366::-;36463:3;36484:67;36548:2;36543:3;36484:67;:::i;:::-;36477:74;;36560:93;36649:3;36560:93;:::i;:::-;36678:2;36673:3;36669:12;36662:19;;36321:366;;;:::o;36693:419::-;36859:4;36897:2;36886:9;36882:18;36874:26;;36946:9;36940:4;36936:20;36932:1;36921:9;36917:17;36910:47;36974:131;37100:4;36974:131;:::i;:::-;36966:139;;36693:419;;;:::o;37118:191::-;37158:4;37178:20;37196:1;37178:20;:::i;:::-;37173:25;;37212:20;37230:1;37212:20;:::i;:::-;37207:25;;37251:1;37248;37245:8;37242:34;;;37256:18;;:::i;:::-;37242:34;37301:1;37298;37294:9;37286:17;;37118:191;;;;:::o;37315:225::-;37455:34;37451:1;37443:6;37439:14;37432:58;37524:8;37519:2;37511:6;37507:15;37500:33;37315:225;:::o;37546:366::-;37688:3;37709:67;37773:2;37768:3;37709:67;:::i;:::-;37702:74;;37785:93;37874:3;37785:93;:::i;:::-;37903:2;37898:3;37894:12;37887:19;;37546:366;;;:::o;37918:419::-;38084:4;38122:2;38111:9;38107:18;38099:26;;38171:9;38165:4;38161:20;38157:1;38146:9;38142:17;38135:47;38199:131;38325:4;38199:131;:::i;:::-;38191:139;;37918:419;;;:::o;38343:220::-;38483:34;38479:1;38471:6;38467:14;38460:58;38552:3;38547:2;38539:6;38535:15;38528:28;38343:220;:::o;38569:366::-;38711:3;38732:67;38796:2;38791:3;38732:67;:::i;:::-;38725:74;;38808:93;38897:3;38808:93;:::i;:::-;38926:2;38921:3;38917:12;38910:19;;38569:366;;;:::o;38941:419::-;39107:4;39145:2;39134:9;39130:18;39122:26;;39194:9;39188:4;39184:20;39180:1;39169:9;39165:17;39158:47;39222:131;39348:4;39222:131;:::i;:::-;39214:139;;38941:419;;;:::o;39366:221::-;39506:34;39502:1;39494:6;39490:14;39483:58;39575:4;39570:2;39562:6;39558:15;39551:29;39366:221;:::o;39593:366::-;39735:3;39756:67;39820:2;39815:3;39756:67;:::i;:::-;39749:74;;39832:93;39921:3;39832:93;:::i;:::-;39950:2;39945:3;39941:12;39934:19;;39593:366;;;:::o;39965:419::-;40131:4;40169:2;40158:9;40154:18;40146:26;;40218:9;40212:4;40208:20;40204:1;40193:9;40189:17;40182:47;40246:131;40372:4;40246:131;:::i;:::-;40238:139;;39965:419;;;:::o;40390:180::-;40438:77;40435:1;40428:88;40535:4;40532:1;40525:15;40559:4;40556:1;40549:15;40576:143;40633:5;40664:6;40658:13;40649:22;;40680:33;40707:5;40680:33;:::i;:::-;40576:143;;;;:::o;40725:351::-;40795:6;40844:2;40832:9;40823:7;40819:23;40815:32;40812:119;;;40850:79;;:::i;:::-;40812:119;40970:1;40995:64;41051:7;41042:6;41031:9;41027:22;40995:64;:::i;:::-;40985:74;;40941:128;40725:351;;;;:::o;41082:85::-;41127:7;41156:5;41145:16;;41082:85;;;:::o;41173:158::-;41231:9;41264:61;41282:42;41291:32;41317:5;41291:32;:::i;:::-;41282:42;:::i;:::-;41264:61;:::i;:::-;41251:74;;41173:158;;;:::o;41337:147::-;41432:45;41471:5;41432:45;:::i;:::-;41427:3;41420:58;41337:147;;:::o;41490:114::-;41557:6;41591:5;41585:12;41575:22;;41490:114;;;:::o;41610:184::-;41709:11;41743:6;41738:3;41731:19;41783:4;41778:3;41774:14;41759:29;;41610:184;;;;:::o;41800:132::-;41867:4;41890:3;41882:11;;41920:4;41915:3;41911:14;41903:22;;41800:132;;;:::o;41938:108::-;42015:24;42033:5;42015:24;:::i;:::-;42010:3;42003:37;41938:108;;:::o;42052:179::-;42121:10;42142:46;42184:3;42176:6;42142:46;:::i;:::-;42220:4;42215:3;42211:14;42197:28;;42052:179;;;;:::o;42237:113::-;42307:4;42339;42334:3;42330:14;42322:22;;42237:113;;;:::o;42386:732::-;42505:3;42534:54;42582:5;42534:54;:::i;:::-;42604:86;42683:6;42678:3;42604:86;:::i;:::-;42597:93;;42714:56;42764:5;42714:56;:::i;:::-;42793:7;42824:1;42809:284;42834:6;42831:1;42828:13;42809:284;;;42910:6;42904:13;42937:63;42996:3;42981:13;42937:63;:::i;:::-;42930:70;;43023:60;43076:6;43023:60;:::i;:::-;43013:70;;42869:224;42856:1;42853;42849:9;42844:14;;42809:284;;;42813:14;43109:3;43102:10;;42510:608;;;42386:732;;;;:::o;43124:831::-;43387:4;43425:3;43414:9;43410:19;43402:27;;43439:71;43507:1;43496:9;43492:17;43483:6;43439:71;:::i;:::-;43520:80;43596:2;43585:9;43581:18;43572:6;43520:80;:::i;:::-;43647:9;43641:4;43637:20;43632:2;43621:9;43617:18;43610:48;43675:108;43778:4;43769:6;43675:108;:::i;:::-;43667:116;;43793:72;43861:2;43850:9;43846:18;43837:6;43793:72;:::i;:::-;43875:73;43943:3;43932:9;43928:19;43919:6;43875:73;:::i;:::-;43124:831;;;;;;;;:::o;43961:807::-;44210:4;44248:3;44237:9;44233:19;44225:27;;44262:71;44330:1;44319:9;44315:17;44306:6;44262:71;:::i;:::-;44343:72;44411:2;44400:9;44396:18;44387:6;44343:72;:::i;:::-;44425:80;44501:2;44490:9;44486:18;44477:6;44425:80;:::i;:::-;44515;44591:2;44580:9;44576:18;44567:6;44515:80;:::i;:::-;44605:73;44673:3;44662:9;44658:19;44649:6;44605:73;:::i;:::-;44688;44756:3;44745:9;44741:19;44732:6;44688:73;:::i;:::-;43961:807;;;;;;;;;:::o;44774:143::-;44831:5;44862:6;44856:13;44847:22;;44878:33;44905:5;44878:33;:::i;:::-;44774:143;;;;:::o;44923:663::-;45011:6;45019;45027;45076:2;45064:9;45055:7;45051:23;45047:32;45044:119;;;45082:79;;:::i;:::-;45044:119;45202:1;45227:64;45283:7;45274:6;45263:9;45259:22;45227:64;:::i;:::-;45217:74;;45173:128;45340:2;45366:64;45422:7;45413:6;45402:9;45398:22;45366:64;:::i;:::-;45356:74;;45311:129;45479:2;45505:64;45561:7;45552:6;45541:9;45537:22;45505:64;:::i;:::-;45495:74;;45450:129;44923:663;;;;;:::o

Swarm Source

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