ETH Price: $3,005.11 (+2.42%)
 

Overview

Max Total Supply

10,000,000,000 MARLEY

Holders

1

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
MARLEY

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-03-20
*/

/**
███    ███  █████  ██████  ██      ███████ ██    ██ 
████  ████ ██   ██ ██   ██ ██      ██       ██  ██  
██ ████ ██ ███████ ██████  ██      █████     ████   
██  ██  ██ ██   ██ ██   ██ ██      ██         ██    
██      ██ ██   ██ ██   ██ ███████ ███████    ██ 
*/

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

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

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

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

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

contract MARLEY is ERC20, Ownable {

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

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public marketingAddress;



    bool public tradingActive = false;
    bool public swapEnabled = false;
    
  

    uint256 private buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyBurnFee;


    uint256 private sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellBurnFee;


    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    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 ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedMarketingAddress(address indexed newWallet);




    event MaxTransactionExclusion(address _address, bool excluded);

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

    event TransferForeignToken(address token, uint256 amount);

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

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

        buyMarketingFee = 4;
        buyLiquidityFee = 1;
        buyBurnFee = 1;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = 4;
        sellLiquidityFee = 1;
        sellBurnFee = 1;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;

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

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

        marketingAddress = 0x5D282f41fc77A7514A9454669fE52BBe61758848;


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

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        emit EnabledTrading();
    }
         
    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 25 / 10000)/1e18, "Cannot set maxBuy lower than 0.25%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }
    
    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 25 / 10000)/1e18, "Cannot set maxSell lower than 0.25%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 25 / 10000)/1e18, "Cannot set maxWallet lower than 0.25%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 3 / 100, "Swap amount cannot be higher than 3% total supply.");
  	    swapTokensAtAmount = newAmount * (10**18);
  	}
    
    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 != uniswapV2Pair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _burnFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyBurnFee = _burnFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
        require((buyTotalFees + buyBurnFee) <= 6,"Total buy fees cannot be greater than 6%");
    }

    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _burnFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellBurnFee = _burnFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        require((sellTotalFees + sellBurnFee) <= 6,"Total sell fees cannot be greater than 6%");
    }

    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 (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
                            
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                } 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                } 
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        

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

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

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            
            // on sell
             if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
                tokensForBurn += amount * sellBurnFee / 100;

            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
                tokensForBurn += amount * sellBurnFee / 100;
            }
            
            if(fees > 0){    
                 super._transfer(from, address(this), fees);
            }
                super._transfer(from, address(0xdead), tokensForBurn);


        	amount -= (fees + tokensForBurn);
            tokensForBurn = 0;
        }
            
        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

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

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

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

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

        uint256 ethForMarketing = ethBalance * tokensForMarketing / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForMarketing;
            
        tokensForLiquidity = 0;
        tokensForMarketing = 0;

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

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

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

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

    function setMarketingAddress(address _marketingAddress) external onlyOwner {
        require(_marketingAddress != address(0), "_marketingAddress address cannot be 0");
        marketingAddress = payable(_marketingAddress);
        emit UpdatedMarketingAddress(_marketingAddress);
    }

}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"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":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingAddress","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"},{"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":"buyBurnFee","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":"buyMarketingFee","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":"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":[{"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":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","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":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","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":[{"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":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","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"}]

60c06040526000600b60146101000a81548160ff0219169083151502179055506000600b60156101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600681526020017f4d61726c657900000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4d41524c455900000000000000000000000000000000000000000000000000008152508160039081620000c5919062000dcc565b508060049081620000d7919062000dcc565b5050506000620000ec6200059060201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001bc8160016200059860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000262919062000f1d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f0919062000f1d565b6040518363ffffffff1660e01b81526004016200030f92919062000f60565b6020604051808303816000875af11580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000355919062000f1d565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200039d60a05160016200062e60201b60201c565b60006b204fce5e3e25026110000000905060648082620003be919062000fbc565b620003ca919062001036565b60068190555060648082620003e0919062000fbc565b620003ec919062001036565b6007819055506064808262000402919062000fbc565b6200040e919062001036565b600881905550620186a060648262000427919062000fbc565b62000433919062001036565b600a819055506004600d819055506001600e819055506001600f81905550600e54600d546200046391906200106e565b600c819055506004601181905550600160128190555060016013819055506012546011546200049391906200106e565b601081905550620004ac8360016200059860201b60201c565b620004bf3060016200059860201b60201c565b620004d461dead60016200059860201b60201c565b620004e7836001620006e160201b60201c565b620004fa306001620006e160201b60201c565b6200050f61dead6001620006e160201b60201c565b735d282f41fc77a7514a9454669fe52bbe61758848600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200057683826200082e60201b60201c565b62000587836200097e60201b60201c565b505050620012cb565b600033905090565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405162000622929190620010c6565b60405180910390a15050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200069782826200059860201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620006f16200059060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000783576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200077a9062001154565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000822919062001176565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089790620011e3565b60405180910390fd5b8060026000828254620008b491906200106e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200090b91906200106e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000972919062001216565b60405180910390a35050565b6200098e6200059060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a179062001154565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000a92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a8990620012a9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bd457607f821691505b60208210810362000bea5762000be962000b8c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c15565b62000c60868362000c15565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cad62000ca762000ca18462000c78565b62000c82565b62000c78565b9050919050565b6000819050919050565b62000cc98362000c8c565b62000ce162000cd88262000cb4565b84845462000c22565b825550505050565b600090565b62000cf862000ce9565b62000d0581848462000cbe565b505050565b5b8181101562000d2d5762000d2160008262000cee565b60018101905062000d0b565b5050565b601f82111562000d7c5762000d468162000bf0565b62000d518462000c05565b8101602085101562000d61578190505b62000d7962000d708562000c05565b83018262000d0a565b50505b505050565b600082821c905092915050565b600062000da16000198460080262000d81565b1980831691505092915050565b600062000dbc838362000d8e565b9150826002028217905092915050565b62000dd78262000b52565b67ffffffffffffffff81111562000df35762000df262000b5d565b5b62000dff825462000bbb565b62000e0c82828562000d31565b600060209050601f83116001811462000e44576000841562000e2f578287015190505b62000e3b858262000dae565b86555062000eab565b601f19841662000e548662000bf0565b60005b8281101562000e7e5784890151825560018201915060208501945060208101905062000e57565b8683101562000e9e578489015162000e9a601f89168262000d8e565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ee58262000eb8565b9050919050565b62000ef78162000ed8565b811462000f0357600080fd5b50565b60008151905062000f178162000eec565b92915050565b60006020828403121562000f365762000f3562000eb3565b5b600062000f468482850162000f06565b91505092915050565b62000f5a8162000ed8565b82525050565b600060408201905062000f77600083018562000f4f565b62000f86602083018462000f4f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fc98262000c78565b915062000fd68362000c78565b925082820262000fe68162000c78565b91508282048414831517620010005762000fff62000f8d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010438262000c78565b9150620010508362000c78565b92508262001063576200106262001007565b5b828204905092915050565b60006200107b8262000c78565b9150620010888362000c78565b9250828201905080821115620010a357620010a262000f8d565b5b92915050565b60008115159050919050565b620010c081620010a9565b82525050565b6000604082019050620010dd600083018562000f4f565b620010ec6020830184620010b5565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200113c602083620010f3565b9150620011498262001104565b602082019050919050565b600060208201905081810360008301526200116f816200112d565b9050919050565b60006020820190506200118d6000830184620010b5565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620011cb601f83620010f3565b9150620011d88262001193565b602082019050919050565b60006020820190508181036000830152620011fe81620011bc565b9050919050565b620012108162000c78565b82525050565b60006020820190506200122d600083018462001205565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062001291602683620010f3565b91506200129e8262001233565b604082019050919050565b60006020820190508181036000830152620012c48162001282565b9050919050565b60805160a0516153686200132260003960008181610f010152818161117a0152611a00015260008181610bb1015281816138f5015281816139d6015281816139fd01528181613a990152613ac001526153686000f3fe60806040526004361061028c5760003560e01c80638da5cb5b1161015a578063c0246668116100c1578063e2f456051161007a578063e2f45605146109f3578063e71dc3f514610a1e578063f11a24d314610a49578063f2fde38b14610a74578063f5648a4f14610a9d578063f637434214610ab457610293565b8063c0246668146108e9578063c17b5b8c14610912578063c18bc1951461093b578063d257b34f14610964578063dc3f0d0f1461098d578063dd62ed3e146109b657610293565b8063a5ece94111610113578063a5ece941146107c3578063a9059cbb146107ee578063aa4bde281461082b578063adb873bd14610856578063b62496f514610881578063bbc0c742146108be57610293565b80638da5cb5b146106b3578063906e9dd0146106de578063921369131461070757806395d89b41146107325780639a7a23d61461075d578063a457c2d71461078657610293565b806339509351116101fe5780637571336a116101b75780637571336a146105b75780637bce5a04146105e05780638095d5641461060b5780638366e79a1461063457806388e765ff146106715780638a8c523c1461069c57610293565b806339509351146104a557806349bd5a5e146104e257806366d602ae1461050d5780636ddd17131461053857806370a0823114610563578063715018a6146105a057610293565b80631a8145bb116102505780631a8145bb146103935780631d777856146103be5780631f3fed8f146103e957806323b872dd146104145780632be32b6114610451578063313ce5671461047a57610293565b806306fdde0314610298578063095ea7b3146102c357806310d5de53146103005780631694505e1461033d57806318160ddd1461036857610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610adf565b6040516102ba9190613c04565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190613cbf565b610b71565b6040516102f79190613d1a565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190613d35565b610b8f565b6040516103349190613d1a565b60405180910390f35b34801561034957600080fd5b50610352610baf565b60405161035f9190613dc1565b60405180910390f35b34801561037457600080fd5b5061037d610bd3565b60405161038a9190613deb565b60405180910390f35b34801561039f57600080fd5b506103a8610bdd565b6040516103b59190613deb565b60405180910390f35b3480156103ca57600080fd5b506103d3610be3565b6040516103e09190613deb565b60405180910390f35b3480156103f557600080fd5b506103fe610be9565b60405161040b9190613deb565b60405180910390f35b34801561042057600080fd5b5061043b60048036038101906104369190613e06565b610bef565b6040516104489190613d1a565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613e59565b610ce7565b005b34801561048657600080fd5b5061048f610e4a565b60405161049c9190613ea2565b60405180910390f35b3480156104b157600080fd5b506104cc60048036038101906104c79190613cbf565b610e53565b6040516104d99190613d1a565b60405180910390f35b3480156104ee57600080fd5b506104f7610eff565b6040516105049190613ecc565b60405180910390f35b34801561051957600080fd5b50610522610f23565b60405161052f9190613deb565b60405180910390f35b34801561054457600080fd5b5061054d610f29565b60405161055a9190613d1a565b60405180910390f35b34801561056f57600080fd5b5061058a60048036038101906105859190613d35565b610f3c565b6040516105979190613deb565b60405180910390f35b3480156105ac57600080fd5b506105b5610f84565b005b3480156105c357600080fd5b506105de60048036038101906105d99190613f13565b6110dc565b005b3480156105ec57600080fd5b506105f5611262565b6040516106029190613deb565b60405180910390f35b34801561061757600080fd5b50610632600480360381019061062d9190613f53565b611268565b005b34801561064057600080fd5b5061065b60048036038101906106569190613fa6565b611382565b6040516106689190613d1a565b60405180910390f35b34801561067d57600080fd5b506106866115c7565b6040516106939190613deb565b60405180910390f35b3480156106a857600080fd5b506106b16115cd565b005b3480156106bf57600080fd5b506106c8611718565b6040516106d59190613ecc565b60405180910390f35b3480156106ea57600080fd5b5061070560048036038101906107009190613d35565b611742565b005b34801561071357600080fd5b5061071c6118cf565b6040516107299190613deb565b60405180910390f35b34801561073e57600080fd5b506107476118d5565b6040516107549190613c04565b60405180910390f35b34801561076957600080fd5b50610784600480360381019061077f9190613f13565b611967565b005b34801561079257600080fd5b506107ad60048036038101906107a89190613cbf565b611a9a565b6040516107ba9190613d1a565b60405180910390f35b3480156107cf57600080fd5b506107d8611b85565b6040516107e59190613ecc565b60405180910390f35b3480156107fa57600080fd5b5061081560048036038101906108109190613cbf565b611bab565b6040516108229190613d1a565b60405180910390f35b34801561083757600080fd5b50610840611bc9565b60405161084d9190613deb565b60405180910390f35b34801561086257600080fd5b5061086b611bcf565b6040516108789190613deb565b60405180910390f35b34801561088d57600080fd5b506108a860048036038101906108a39190613d35565b611bd5565b6040516108b59190613d1a565b60405180910390f35b3480156108ca57600080fd5b506108d3611bf5565b6040516108e09190613d1a565b60405180910390f35b3480156108f557600080fd5b50610910600480360381019061090b9190613f13565b611c08565b005b34801561091e57600080fd5b5061093960048036038101906109349190613f53565b611d48565b005b34801561094757600080fd5b50610962600480360381019061095d9190613e59565b611e62565b005b34801561097057600080fd5b5061098b60048036038101906109869190613e59565b611fc5565b005b34801561099957600080fd5b506109b460048036038101906109af9190613e59565b61213f565b005b3480156109c257600080fd5b506109dd60048036038101906109d89190613fa6565b6122a2565b6040516109ea9190613deb565b60405180910390f35b3480156109ff57600080fd5b50610a08612329565b604051610a159190613deb565b60405180910390f35b348015610a2a57600080fd5b50610a3361232f565b604051610a409190613deb565b60405180910390f35b348015610a5557600080fd5b50610a5e612335565b604051610a6b9190613deb565b60405180910390f35b348015610a8057600080fd5b50610a9b6004803603810190610a969190613d35565b61233b565b005b348015610aa957600080fd5b50610ab2612501565b005b348015610ac057600080fd5b50610ac9612609565b604051610ad69190613deb565b60405180910390f35b606060038054610aee90614015565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1a90614015565b8015610b675780601f10610b3c57610100808354040283529160200191610b67565b820191906000526020600020905b815481529060010190602001808311610b4a57829003601f168201915b5050505050905090565b6000610b85610b7e61260f565b8484612617565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60155481565b60165481565b60145481565b6000610bfc8484846127e0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c4761260f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbe906140b8565b60405180910390fd5b610cdb85610cd361260f565b858403612617565b60019150509392505050565b610cef61260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590614124565b60405180910390fd5b670de0b6b3a76400006127106019610d94610bd3565b610d9e9190614173565b610da891906141e4565b610db291906141e4565b811015610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb90614287565b60405180910390fd5b670de0b6b3a764000081610e089190614173565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610e3f9190613deb565b60405180910390a150565b60006012905090565b6000610ef5610e6061260f565b848460016000610e6e61260f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ef091906142a7565b612617565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60075481565b600b60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f8c61260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101290614124565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110e461260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90614124565b60405180910390fd5b80611207577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fd9061434d565b60405180910390fd5b5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b61127061260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f690614124565b60405180910390fd5b82600d8190555081600e8190555080600f81905550600e54600d5461132491906142a7565b600c819055506006600f54600c5461133c91906142a7565b111561137d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611374906143df565b60405180910390fd5b505050565b600061138c61260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141290614124565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611489576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114809061444b565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114c49190613ecc565b602060405180830381865afa1580156114e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115059190614480565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016115429291906144ad565b6020604051808303816000875af1158015611561573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158591906144eb565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43884826040516115b89291906144ad565b60405180910390a15092915050565b60065481565b6115d561260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165b90614124565b60405180910390fd5b600b60149054906101000a900460ff16156116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab90614564565b60405180910390fd5b6001600b60146101000a81548160ff0219169083151502179055506001600b60156101000a81548160ff0219169083151502179055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61174a61260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d090614124565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183f906145f6565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a960405160405180910390a250565b60115481565b6060600480546118e490614015565b80601f016020809104026020016040519081016040528092919081815260200182805461191090614015565b801561195d5780601f106119325761010080835404028352916020019161195d565b820191906000526020600020905b81548152906001019060200180831161194057829003601f168201915b5050505050905090565b61196f61260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f590614124565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390614688565b60405180910390fd5b611a9682826132f8565b5050565b60008060016000611aa961260f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5d9061471a565b60405180910390fd5b611b7a611b7161260f565b85858403612617565b600191505092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611bbf611bb861260f565b84846127e0565b6001905092915050565b60085481565b60135481565b60196020528060005260406000206000915054906101000a900460ff1681565b600b60149054906101000a900460ff1681565b611c1061260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9690614124565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d3c9190613d1a565b60405180910390a25050565b611d5061260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd690614124565b60405180910390fd5b826011819055508160128190555080601381905550601254601154611e0491906142a7565b6010819055506006601354601054611e1c91906142a7565b1115611e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e54906147ac565b60405180910390fd5b505050565b611e6a61260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef090614124565b60405180910390fd5b670de0b6b3a76400006127106019611f0f610bd3565b611f199190614173565b611f2391906141e4565b611f2d91906141e4565b811015611f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f669061483e565b60405180910390fd5b670de0b6b3a764000081611f839190614173565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc600854604051611fba9190613deb565b60405180910390a150565b611fcd61260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205390614124565b60405180910390fd5b620186a0600161206a610bd3565b6120749190614173565b61207e91906141e4565b8110156120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b7906148d0565b60405180910390fd5b606460036120cc610bd3565b6120d69190614173565b6120e091906141e4565b811115612122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211990614962565b60405180910390fd5b670de0b6b3a7640000816121369190614173565b600a8190555050565b61214761260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd90614124565b60405180910390fd5b670de0b6b3a764000061271060196121ec610bd3565b6121f69190614173565b61220091906141e4565b61220a91906141e4565b81101561224c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612243906149f4565b60405180910390fd5b670de0b6b3a7640000816122609190614173565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516122979190613deb565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600f5481565b600e5481565b61234361260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c990614124565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243890614a86565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61250961260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258f90614124565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516125be90614ad7565b60006040518083038185875af1925050503d80600081146125fb576040519150601f19603f3d011682016040523d82523d6000602084013e612600565b606091505b50508091505050565b60125481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267d90614b5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ec90614bf0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127d39190613deb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361284f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284690614c82565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590614d14565b60405180910390fd5b60008111612901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f890614d80565b60405180910390fd5b612909611718565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129775750612947611718565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129b05750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129ea575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e2557600b60149054906101000a900460ff16612ae457601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612aa45750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ada90614dec565b60405180910390fd5b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b875750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c2e57600654811115612bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc890614e7e565b60405180910390fd5b600854612bdd83610f3c565b82612be891906142a7565b1115612c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2090614eea565b60405180910390fd5b612e24565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612cd15750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d2057600754811115612d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1290614f7c565b60405180910390fd5b612e23565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612dc45750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e2257600854612dd583610f3c565b82612de091906142a7565b1115612e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1890614eea565b60405180910390fd5b5b5b5b5b6000612e3030610f3c565b90506000600a548210159050808015612e555750600b60159054906101000a900460ff165b8015612e6e5750600960009054906101000a900460ff16155b8015612ec45750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612f1a5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612f705750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fb4576001600960006101000a81548160ff021916908315150217905550612f986133a3565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061305b5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561306557600090505b600081156132e457601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130c857506000601054115b15613186576064601054866130dd9190614173565b6130e791906141e4565b9050601054601254826130fa9190614173565b61310491906141e4565b6015600082825461311591906142a7565b925050819055506010546011548261312d9190614173565b61313791906141e4565b6014600082825461314891906142a7565b9250508190555060646013548661315f9190614173565b61316991906141e4565b6016600082825461317a91906142a7565b9250508190555061329c565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131e157506000600c54115b1561329b576064600c54866131f69190614173565b61320091906141e4565b9050600c54600e54826132139190614173565b61321d91906141e4565b6015600082825461322e91906142a7565b92505081905550600c54600d54826132469190614173565b61325091906141e4565b6014600082825461326191906142a7565b925050819055506064601354866132789190614173565b61328291906141e4565b6016600082825461329391906142a7565b925050819055505b5b60008111156132b1576132b0873083613559565b5b6132c08761dead601654613559565b601654816132ce91906142a7565b856132d99190614f9c565b945060006016819055505b6132ef878787613559565b50505050505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061335982826137c2565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60006133ae30610f3c565b905060006014546015546133c291906142a7565b905060008214806133d35750600081145b156133df575050613557565b600a80546133ed9190614173565b82111561340557600a80546134029190614173565b91505b600080600283601554866134199190614173565b61342391906141e4565b61342d91906141e4565b9050613443818561343e9190614f9c565b613856565b600047905060008190506000600260155461345e91906141e4565b866134699190614f9c565b601454846134779190614173565b61348191906141e4565b9050808261348f9190614f9c565b9150600060158190555060006014819055506000841180156134b15750600082115b156134c1576134c08483613a93565b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161350790614ad7565b60006040518083038185875af1925050503d8060008114613544576040519150601f19603f3d011682016040523d82523d6000602084013e613549565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036135c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135bf90614c82565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362e90614d14565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156136bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136b490615042565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461375091906142a7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516137b49190613deb565b60405180910390a350505050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405161384a929190615062565b60405180910390a15050565b6000600267ffffffffffffffff8111156138735761387261508b565b5b6040519080825280602002602001820160405280156138a15781602001602082028036833780820191505090505b50905030816000815181106138b9576138b86150ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561395e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398291906150fe565b81600181518110613996576139956150ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139fb307f000000000000000000000000000000000000000000000000000000000000000084612617565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613a5d959493929190615224565b600060405180830381600087803b158015613a7757600080fd5b505af1158015613a8b573d6000803e3d6000fd5b505050505050565b613abe307f000000000000000000000000000000000000000000000000000000000000000084612617565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613b08611718565b426040518863ffffffff1660e01b8152600401613b2a9695949392919061527e565b60606040518083038185885af1158015613b48573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b6d91906152df565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613bae578082015181840152602081019050613b93565b60008484015250505050565b6000601f19601f8301169050919050565b6000613bd682613b74565b613be08185613b7f565b9350613bf0818560208601613b90565b613bf981613bba565b840191505092915050565b60006020820190508181036000830152613c1e8184613bcb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c5682613c2b565b9050919050565b613c6681613c4b565b8114613c7157600080fd5b50565b600081359050613c8381613c5d565b92915050565b6000819050919050565b613c9c81613c89565b8114613ca757600080fd5b50565b600081359050613cb981613c93565b92915050565b60008060408385031215613cd657613cd5613c26565b5b6000613ce485828601613c74565b9250506020613cf585828601613caa565b9150509250929050565b60008115159050919050565b613d1481613cff565b82525050565b6000602082019050613d2f6000830184613d0b565b92915050565b600060208284031215613d4b57613d4a613c26565b5b6000613d5984828501613c74565b91505092915050565b6000819050919050565b6000613d87613d82613d7d84613c2b565b613d62565b613c2b565b9050919050565b6000613d9982613d6c565b9050919050565b6000613dab82613d8e565b9050919050565b613dbb81613da0565b82525050565b6000602082019050613dd66000830184613db2565b92915050565b613de581613c89565b82525050565b6000602082019050613e006000830184613ddc565b92915050565b600080600060608486031215613e1f57613e1e613c26565b5b6000613e2d86828701613c74565b9350506020613e3e86828701613c74565b9250506040613e4f86828701613caa565b9150509250925092565b600060208284031215613e6f57613e6e613c26565b5b6000613e7d84828501613caa565b91505092915050565b600060ff82169050919050565b613e9c81613e86565b82525050565b6000602082019050613eb76000830184613e93565b92915050565b613ec681613c4b565b82525050565b6000602082019050613ee16000830184613ebd565b92915050565b613ef081613cff565b8114613efb57600080fd5b50565b600081359050613f0d81613ee7565b92915050565b60008060408385031215613f2a57613f29613c26565b5b6000613f3885828601613c74565b9250506020613f4985828601613efe565b9150509250929050565b600080600060608486031215613f6c57613f6b613c26565b5b6000613f7a86828701613caa565b9350506020613f8b86828701613caa565b9250506040613f9c86828701613caa565b9150509250925092565b60008060408385031215613fbd57613fbc613c26565b5b6000613fcb85828601613c74565b9250506020613fdc85828601613c74565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061402d57607f821691505b6020821081036140405761403f613fe6565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006140a2602883613b7f565b91506140ad82614046565b604082019050919050565b600060208201905081810360008301526140d181614095565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061410e602083613b7f565b9150614119826140d8565b602082019050919050565b6000602082019050818103600083015261413d81614101565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061417e82613c89565b915061418983613c89565b925082820261419781613c89565b915082820484148315176141ae576141ad614144565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141ef82613c89565b91506141fa83613c89565b92508261420a576142096141b5565b5b828204905092915050565b7f43616e6e6f7420736574206d6178427579206c6f776572207468616e20302e3260008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b6000614271602283613b7f565b915061427c82614215565b604082019050919050565b600060208201905081810360008301526142a081614264565b9050919050565b60006142b282613c89565b91506142bd83613c89565b92508282019050808211156142d5576142d4614144565b5b92915050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614337602783613b7f565b9150614342826142db565b604082019050919050565b600060208201905081810360008301526143668161432a565b9050919050565b7f546f74616c2062757920666565732063616e6e6f74206265206772656174657260008201527f207468616e203625000000000000000000000000000000000000000000000000602082015250565b60006143c9602883613b7f565b91506143d48261436d565b604082019050919050565b600060208201905081810360008301526143f8816143bc565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b6000614435601c83613b7f565b9150614440826143ff565b602082019050919050565b6000602082019050818103600083015261446481614428565b9050919050565b60008151905061447a81613c93565b92915050565b60006020828403121561449657614495613c26565b5b60006144a48482850161446b565b91505092915050565b60006040820190506144c26000830185613ebd565b6144cf6020830184613ddc565b9392505050565b6000815190506144e581613ee7565b92915050565b60006020828403121561450157614500613c26565b5b600061450f848285016144d6565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b600061454e601783613b7f565b915061455982614518565b602082019050919050565b6000602082019050818103600083015261457d81614541565b9050919050565b7f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b60006145e0602583613b7f565b91506145eb82614584565b604082019050919050565b6000602082019050818103600083015261460f816145d3565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614672603983613b7f565b915061467d82614616565b604082019050919050565b600060208201905081810360008301526146a181614665565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614704602583613b7f565b915061470f826146a8565b604082019050919050565b60006020820190508181036000830152614733816146f7565b9050919050565b7f546f74616c2073656c6c20666565732063616e6e6f742062652067726561746560008201527f72207468616e2036250000000000000000000000000000000000000000000000602082015250565b6000614796602983613b7f565b91506147a18261473a565b604082019050919050565b600060208201905081810360008301526147c581614789565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e323525000000000000000000000000000000000000000000000000000000602082015250565b6000614828602583613b7f565b9150614833826147cc565b604082019050919050565b600060208201905081810360008301526148578161481b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006148ba603583613b7f565b91506148c58261485e565b604082019050919050565b600060208201905081810360008301526148e9816148ad565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20332520746f74616c20737570706c792e0000000000000000000000000000602082015250565b600061494c603283613b7f565b9150614957826148f0565b604082019050919050565b6000602082019050818103600083015261497b8161493f565b9050919050565b7f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e60008201527f3235250000000000000000000000000000000000000000000000000000000000602082015250565b60006149de602383613b7f565b91506149e982614982565b604082019050919050565b60006020820190508181036000830152614a0d816149d1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a70602683613b7f565b9150614a7b82614a14565b604082019050919050565b60006020820190508181036000830152614a9f81614a63565b9050919050565b600081905092915050565b50565b6000614ac1600083614aa6565b9150614acc82614ab1565b600082019050919050565b6000614ae282614ab4565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614b48602483613b7f565b9150614b5382614aec565b604082019050919050565b60006020820190508181036000830152614b7781614b3b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bda602283613b7f565b9150614be582614b7e565b604082019050919050565b60006020820190508181036000830152614c0981614bcd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614c6c602583613b7f565b9150614c7782614c10565b604082019050919050565b60006020820190508181036000830152614c9b81614c5f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614cfe602383613b7f565b9150614d0982614ca2565b604082019050919050565b60006020820190508181036000830152614d2d81614cf1565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000614d6a601d83613b7f565b9150614d7582614d34565b602082019050919050565b60006020820190508181036000830152614d9981614d5d565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614dd6601683613b7f565b9150614de182614da0565b602082019050919050565b60006020820190508181036000830152614e0581614dc9565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000614e68602883613b7f565b9150614e7382614e0c565b604082019050919050565b60006020820190508181036000830152614e9781614e5b565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000614ed4601883613b7f565b9150614edf82614e9e565b602082019050919050565b60006020820190508181036000830152614f0381614ec7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000614f66602a83613b7f565b9150614f7182614f0a565b604082019050919050565b60006020820190508181036000830152614f9581614f59565b9050919050565b6000614fa782613c89565b9150614fb283613c89565b9250828203905081811115614fca57614fc9614144565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061502c602683613b7f565b915061503782614fd0565b604082019050919050565b6000602082019050818103600083015261505b8161501f565b9050919050565b60006040820190506150776000830185613ebd565b6150846020830184613d0b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506150f881613c5d565b92915050565b60006020828403121561511457615113613c26565b5b6000615122848285016150e9565b91505092915050565b6000819050919050565b600061515061514b6151468461512b565b613d62565b613c89565b9050919050565b61516081615135565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61519b81613c4b565b82525050565b60006151ad8383615192565b60208301905092915050565b6000602082019050919050565b60006151d182615166565b6151db8185615171565b93506151e683615182565b8060005b838110156152175781516151fe88826151a1565b9750615209836151b9565b9250506001810190506151ea565b5085935050505092915050565b600060a0820190506152396000830188613ddc565b6152466020830187615157565b818103604083015261525881866151c6565b90506152676060830185613ebd565b6152746080830184613ddc565b9695505050505050565b600060c0820190506152936000830189613ebd565b6152a06020830188613ddc565b6152ad6040830187615157565b6152ba6060830186615157565b6152c76080830185613ebd565b6152d460a0830184613ddc565b979650505050505050565b6000806000606084860312156152f8576152f7613c26565b5b60006153068682870161446b565b93505060206153178682870161446b565b92505060406153288682870161446b565b915050925092509256fea2646970667358221220139d951fbb12b5c88f75e109617b4ed56e68578cb7916afad9a89e62150795c564736f6c63430008130033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c80638da5cb5b1161015a578063c0246668116100c1578063e2f456051161007a578063e2f45605146109f3578063e71dc3f514610a1e578063f11a24d314610a49578063f2fde38b14610a74578063f5648a4f14610a9d578063f637434214610ab457610293565b8063c0246668146108e9578063c17b5b8c14610912578063c18bc1951461093b578063d257b34f14610964578063dc3f0d0f1461098d578063dd62ed3e146109b657610293565b8063a5ece94111610113578063a5ece941146107c3578063a9059cbb146107ee578063aa4bde281461082b578063adb873bd14610856578063b62496f514610881578063bbc0c742146108be57610293565b80638da5cb5b146106b3578063906e9dd0146106de578063921369131461070757806395d89b41146107325780639a7a23d61461075d578063a457c2d71461078657610293565b806339509351116101fe5780637571336a116101b75780637571336a146105b75780637bce5a04146105e05780638095d5641461060b5780638366e79a1461063457806388e765ff146106715780638a8c523c1461069c57610293565b806339509351146104a557806349bd5a5e146104e257806366d602ae1461050d5780636ddd17131461053857806370a0823114610563578063715018a6146105a057610293565b80631a8145bb116102505780631a8145bb146103935780631d777856146103be5780631f3fed8f146103e957806323b872dd146104145780632be32b6114610451578063313ce5671461047a57610293565b806306fdde0314610298578063095ea7b3146102c357806310d5de53146103005780631694505e1461033d57806318160ddd1461036857610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610adf565b6040516102ba9190613c04565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190613cbf565b610b71565b6040516102f79190613d1a565b60405180910390f35b34801561030c57600080fd5b5061032760048036038101906103229190613d35565b610b8f565b6040516103349190613d1a565b60405180910390f35b34801561034957600080fd5b50610352610baf565b60405161035f9190613dc1565b60405180910390f35b34801561037457600080fd5b5061037d610bd3565b60405161038a9190613deb565b60405180910390f35b34801561039f57600080fd5b506103a8610bdd565b6040516103b59190613deb565b60405180910390f35b3480156103ca57600080fd5b506103d3610be3565b6040516103e09190613deb565b60405180910390f35b3480156103f557600080fd5b506103fe610be9565b60405161040b9190613deb565b60405180910390f35b34801561042057600080fd5b5061043b60048036038101906104369190613e06565b610bef565b6040516104489190613d1a565b60405180910390f35b34801561045d57600080fd5b5061047860048036038101906104739190613e59565b610ce7565b005b34801561048657600080fd5b5061048f610e4a565b60405161049c9190613ea2565b60405180910390f35b3480156104b157600080fd5b506104cc60048036038101906104c79190613cbf565b610e53565b6040516104d99190613d1a565b60405180910390f35b3480156104ee57600080fd5b506104f7610eff565b6040516105049190613ecc565b60405180910390f35b34801561051957600080fd5b50610522610f23565b60405161052f9190613deb565b60405180910390f35b34801561054457600080fd5b5061054d610f29565b60405161055a9190613d1a565b60405180910390f35b34801561056f57600080fd5b5061058a60048036038101906105859190613d35565b610f3c565b6040516105979190613deb565b60405180910390f35b3480156105ac57600080fd5b506105b5610f84565b005b3480156105c357600080fd5b506105de60048036038101906105d99190613f13565b6110dc565b005b3480156105ec57600080fd5b506105f5611262565b6040516106029190613deb565b60405180910390f35b34801561061757600080fd5b50610632600480360381019061062d9190613f53565b611268565b005b34801561064057600080fd5b5061065b60048036038101906106569190613fa6565b611382565b6040516106689190613d1a565b60405180910390f35b34801561067d57600080fd5b506106866115c7565b6040516106939190613deb565b60405180910390f35b3480156106a857600080fd5b506106b16115cd565b005b3480156106bf57600080fd5b506106c8611718565b6040516106d59190613ecc565b60405180910390f35b3480156106ea57600080fd5b5061070560048036038101906107009190613d35565b611742565b005b34801561071357600080fd5b5061071c6118cf565b6040516107299190613deb565b60405180910390f35b34801561073e57600080fd5b506107476118d5565b6040516107549190613c04565b60405180910390f35b34801561076957600080fd5b50610784600480360381019061077f9190613f13565b611967565b005b34801561079257600080fd5b506107ad60048036038101906107a89190613cbf565b611a9a565b6040516107ba9190613d1a565b60405180910390f35b3480156107cf57600080fd5b506107d8611b85565b6040516107e59190613ecc565b60405180910390f35b3480156107fa57600080fd5b5061081560048036038101906108109190613cbf565b611bab565b6040516108229190613d1a565b60405180910390f35b34801561083757600080fd5b50610840611bc9565b60405161084d9190613deb565b60405180910390f35b34801561086257600080fd5b5061086b611bcf565b6040516108789190613deb565b60405180910390f35b34801561088d57600080fd5b506108a860048036038101906108a39190613d35565b611bd5565b6040516108b59190613d1a565b60405180910390f35b3480156108ca57600080fd5b506108d3611bf5565b6040516108e09190613d1a565b60405180910390f35b3480156108f557600080fd5b50610910600480360381019061090b9190613f13565b611c08565b005b34801561091e57600080fd5b5061093960048036038101906109349190613f53565b611d48565b005b34801561094757600080fd5b50610962600480360381019061095d9190613e59565b611e62565b005b34801561097057600080fd5b5061098b60048036038101906109869190613e59565b611fc5565b005b34801561099957600080fd5b506109b460048036038101906109af9190613e59565b61213f565b005b3480156109c257600080fd5b506109dd60048036038101906109d89190613fa6565b6122a2565b6040516109ea9190613deb565b60405180910390f35b3480156109ff57600080fd5b50610a08612329565b604051610a159190613deb565b60405180910390f35b348015610a2a57600080fd5b50610a3361232f565b604051610a409190613deb565b60405180910390f35b348015610a5557600080fd5b50610a5e612335565b604051610a6b9190613deb565b60405180910390f35b348015610a8057600080fd5b50610a9b6004803603810190610a969190613d35565b61233b565b005b348015610aa957600080fd5b50610ab2612501565b005b348015610ac057600080fd5b50610ac9612609565b604051610ad69190613deb565b60405180910390f35b606060038054610aee90614015565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1a90614015565b8015610b675780601f10610b3c57610100808354040283529160200191610b67565b820191906000526020600020905b815481529060010190602001808311610b4a57829003601f168201915b5050505050905090565b6000610b85610b7e61260f565b8484612617565b6001905092915050565b60186020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60155481565b60165481565b60145481565b6000610bfc8484846127e0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c4761260f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbe906140b8565b60405180910390fd5b610cdb85610cd361260f565b858403612617565b60019150509392505050565b610cef61260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590614124565b60405180910390fd5b670de0b6b3a76400006127106019610d94610bd3565b610d9e9190614173565b610da891906141e4565b610db291906141e4565b811015610df4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610deb90614287565b60405180910390fd5b670de0b6b3a764000081610e089190614173565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610e3f9190613deb565b60405180910390a150565b60006012905090565b6000610ef5610e6061260f565b848460016000610e6e61260f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ef091906142a7565b612617565b6001905092915050565b7f0000000000000000000000001be0d5e03021b006935c55241b5d2784a1b9de3781565b60075481565b600b60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f8c61260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461101b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101290614124565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110e461260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90614124565b60405180910390fd5b80611207577f0000000000000000000000001be0d5e03021b006935c55241b5d2784a1b9de3773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fd9061434d565b60405180910390fd5b5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b61127061260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f690614124565b60405180910390fd5b82600d8190555081600e8190555080600f81905550600e54600d5461132491906142a7565b600c819055506006600f54600c5461133c91906142a7565b111561137d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611374906143df565b60405180910390fd5b505050565b600061138c61260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141290614124565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611489576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114809061444b565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114c49190613ecc565b602060405180830381865afa1580156114e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115059190614480565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016115429291906144ad565b6020604051808303816000875af1158015611561573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158591906144eb565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e43884826040516115b89291906144ad565b60405180910390a15092915050565b60065481565b6115d561260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165b90614124565b60405180910390fd5b600b60149054906101000a900460ff16156116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab90614564565b60405180910390fd5b6001600b60146101000a81548160ff0219169083151502179055506001600b60156101000a81548160ff0219169083151502179055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61174a61260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d090614124565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183f906145f6565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a960405160405180910390a250565b60115481565b6060600480546118e490614015565b80601f016020809104026020016040519081016040528092919081815260200182805461191090614015565b801561195d5780601f106119325761010080835404028352916020019161195d565b820191906000526020600020905b81548152906001019060200180831161194057829003601f168201915b5050505050905090565b61196f61260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f590614124565b60405180910390fd5b7f0000000000000000000000001be0d5e03021b006935c55241b5d2784a1b9de3773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390614688565b60405180910390fd5b611a9682826132f8565b5050565b60008060016000611aa961260f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611b66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5d9061471a565b60405180910390fd5b611b7a611b7161260f565b85858403612617565b600191505092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611bbf611bb861260f565b84846127e0565b6001905092915050565b60085481565b60135481565b60196020528060005260406000206000915054906101000a900460ff1681565b600b60149054906101000a900460ff1681565b611c1061260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9690614124565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d3c9190613d1a565b60405180910390a25050565b611d5061260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd690614124565b60405180910390fd5b826011819055508160128190555080601381905550601254601154611e0491906142a7565b6010819055506006601354601054611e1c91906142a7565b1115611e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e54906147ac565b60405180910390fd5b505050565b611e6a61260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef090614124565b60405180910390fd5b670de0b6b3a76400006127106019611f0f610bd3565b611f199190614173565b611f2391906141e4565b611f2d91906141e4565b811015611f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f669061483e565b60405180910390fd5b670de0b6b3a764000081611f839190614173565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc600854604051611fba9190613deb565b60405180910390a150565b611fcd61260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205390614124565b60405180910390fd5b620186a0600161206a610bd3565b6120749190614173565b61207e91906141e4565b8110156120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b7906148d0565b60405180910390fd5b606460036120cc610bd3565b6120d69190614173565b6120e091906141e4565b811115612122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211990614962565b60405180910390fd5b670de0b6b3a7640000816121369190614173565b600a8190555050565b61214761260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd90614124565b60405180910390fd5b670de0b6b3a764000061271060196121ec610bd3565b6121f69190614173565b61220091906141e4565b61220a91906141e4565b81101561224c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612243906149f4565b60405180910390fd5b670de0b6b3a7640000816122609190614173565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516122979190613deb565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600f5481565b600e5481565b61234361260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c990614124565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243890614a86565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61250961260f565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258f90614124565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516125be90614ad7565b60006040518083038185875af1925050503d80600081146125fb576040519150601f19603f3d011682016040523d82523d6000602084013e612600565b606091505b50508091505050565b60125481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267d90614b5e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ec90614bf0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127d39190613deb565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361284f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284690614c82565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590614d14565b60405180910390fd5b60008111612901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f890614d80565b60405180910390fd5b612909611718565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129775750612947611718565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129b05750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129ea575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e2557600b60149054906101000a900460ff16612ae457601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612aa45750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ada90614dec565b60405180910390fd5b5b601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b875750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c2e57600654811115612bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc890614e7e565b60405180910390fd5b600854612bdd83610f3c565b82612be891906142a7565b1115612c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2090614eea565b60405180910390fd5b612e24565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612cd15750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d2057600754811115612d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1290614f7c565b60405180910390fd5b612e23565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612dc45750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e2257600854612dd583610f3c565b82612de091906142a7565b1115612e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1890614eea565b60405180910390fd5b5b5b5b5b6000612e3030610f3c565b90506000600a548210159050808015612e555750600b60159054906101000a900460ff165b8015612e6e5750600960009054906101000a900460ff16155b8015612ec45750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612f1a5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612f705750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fb4576001600960006101000a81548160ff021916908315150217905550612f986133a3565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061305b5750601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561306557600090505b600081156132e457601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130c857506000601054115b15613186576064601054866130dd9190614173565b6130e791906141e4565b9050601054601254826130fa9190614173565b61310491906141e4565b6015600082825461311591906142a7565b925050819055506010546011548261312d9190614173565b61313791906141e4565b6014600082825461314891906142a7565b9250508190555060646013548661315f9190614173565b61316991906141e4565b6016600082825461317a91906142a7565b9250508190555061329c565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131e157506000600c54115b1561329b576064600c54866131f69190614173565b61320091906141e4565b9050600c54600e54826132139190614173565b61321d91906141e4565b6015600082825461322e91906142a7565b92505081905550600c54600d54826132469190614173565b61325091906141e4565b6014600082825461326191906142a7565b925050819055506064601354866132789190614173565b61328291906141e4565b6016600082825461329391906142a7565b925050819055505b5b60008111156132b1576132b0873083613559565b5b6132c08761dead601654613559565b601654816132ce91906142a7565b856132d99190614f9c565b945060006016819055505b6132ef878787613559565b50505050505050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061335982826137c2565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60006133ae30610f3c565b905060006014546015546133c291906142a7565b905060008214806133d35750600081145b156133df575050613557565b600a80546133ed9190614173565b82111561340557600a80546134029190614173565b91505b600080600283601554866134199190614173565b61342391906141e4565b61342d91906141e4565b9050613443818561343e9190614f9c565b613856565b600047905060008190506000600260155461345e91906141e4565b866134699190614f9c565b601454846134779190614173565b61348191906141e4565b9050808261348f9190614f9c565b9150600060158190555060006014819055506000841180156134b15750600082115b156134c1576134c08483613a93565b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161350790614ad7565b60006040518083038185875af1925050503d8060008114613544576040519150601f19603f3d011682016040523d82523d6000602084013e613549565b606091505b505080955050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036135c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135bf90614c82565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362e90614d14565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156136bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136b490615042565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461375091906142a7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516137b49190613deb565b60405180910390a350505050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405161384a929190615062565b60405180910390a15050565b6000600267ffffffffffffffff8111156138735761387261508b565b5b6040519080825280602002602001820160405280156138a15781602001602082028036833780820191505090505b50905030816000815181106138b9576138b86150ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561395e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398291906150fe565b81600181518110613996576139956150ba565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139fb307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612617565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613a5d959493929190615224565b600060405180830381600087803b158015613a7757600080fd5b505af1158015613a8b573d6000803e3d6000fd5b505050505050565b613abe307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612617565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613b08611718565b426040518863ffffffff1660e01b8152600401613b2a9695949392919061527e565b60606040518083038185885af1158015613b48573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b6d91906152df565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613bae578082015181840152602081019050613b93565b60008484015250505050565b6000601f19601f8301169050919050565b6000613bd682613b74565b613be08185613b7f565b9350613bf0818560208601613b90565b613bf981613bba565b840191505092915050565b60006020820190508181036000830152613c1e8184613bcb565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c5682613c2b565b9050919050565b613c6681613c4b565b8114613c7157600080fd5b50565b600081359050613c8381613c5d565b92915050565b6000819050919050565b613c9c81613c89565b8114613ca757600080fd5b50565b600081359050613cb981613c93565b92915050565b60008060408385031215613cd657613cd5613c26565b5b6000613ce485828601613c74565b9250506020613cf585828601613caa565b9150509250929050565b60008115159050919050565b613d1481613cff565b82525050565b6000602082019050613d2f6000830184613d0b565b92915050565b600060208284031215613d4b57613d4a613c26565b5b6000613d5984828501613c74565b91505092915050565b6000819050919050565b6000613d87613d82613d7d84613c2b565b613d62565b613c2b565b9050919050565b6000613d9982613d6c565b9050919050565b6000613dab82613d8e565b9050919050565b613dbb81613da0565b82525050565b6000602082019050613dd66000830184613db2565b92915050565b613de581613c89565b82525050565b6000602082019050613e006000830184613ddc565b92915050565b600080600060608486031215613e1f57613e1e613c26565b5b6000613e2d86828701613c74565b9350506020613e3e86828701613c74565b9250506040613e4f86828701613caa565b9150509250925092565b600060208284031215613e6f57613e6e613c26565b5b6000613e7d84828501613caa565b91505092915050565b600060ff82169050919050565b613e9c81613e86565b82525050565b6000602082019050613eb76000830184613e93565b92915050565b613ec681613c4b565b82525050565b6000602082019050613ee16000830184613ebd565b92915050565b613ef081613cff565b8114613efb57600080fd5b50565b600081359050613f0d81613ee7565b92915050565b60008060408385031215613f2a57613f29613c26565b5b6000613f3885828601613c74565b9250506020613f4985828601613efe565b9150509250929050565b600080600060608486031215613f6c57613f6b613c26565b5b6000613f7a86828701613caa565b9350506020613f8b86828701613caa565b9250506040613f9c86828701613caa565b9150509250925092565b60008060408385031215613fbd57613fbc613c26565b5b6000613fcb85828601613c74565b9250506020613fdc85828601613c74565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061402d57607f821691505b6020821081036140405761403f613fe6565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006140a2602883613b7f565b91506140ad82614046565b604082019050919050565b600060208201905081810360008301526140d181614095565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061410e602083613b7f565b9150614119826140d8565b602082019050919050565b6000602082019050818103600083015261413d81614101565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061417e82613c89565b915061418983613c89565b925082820261419781613c89565b915082820484148315176141ae576141ad614144565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006141ef82613c89565b91506141fa83613c89565b92508261420a576142096141b5565b5b828204905092915050565b7f43616e6e6f7420736574206d6178427579206c6f776572207468616e20302e3260008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b6000614271602283613b7f565b915061427c82614215565b604082019050919050565b600060208201905081810360008301526142a081614264565b9050919050565b60006142b282613c89565b91506142bd83613c89565b92508282019050808211156142d5576142d4614144565b5b92915050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614337602783613b7f565b9150614342826142db565b604082019050919050565b600060208201905081810360008301526143668161432a565b9050919050565b7f546f74616c2062757920666565732063616e6e6f74206265206772656174657260008201527f207468616e203625000000000000000000000000000000000000000000000000602082015250565b60006143c9602883613b7f565b91506143d48261436d565b604082019050919050565b600060208201905081810360008301526143f8816143bc565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b6000614435601c83613b7f565b9150614440826143ff565b602082019050919050565b6000602082019050818103600083015261446481614428565b9050919050565b60008151905061447a81613c93565b92915050565b60006020828403121561449657614495613c26565b5b60006144a48482850161446b565b91505092915050565b60006040820190506144c26000830185613ebd565b6144cf6020830184613ddc565b9392505050565b6000815190506144e581613ee7565b92915050565b60006020828403121561450157614500613c26565b5b600061450f848285016144d6565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b600061454e601783613b7f565b915061455982614518565b602082019050919050565b6000602082019050818103600083015261457d81614541565b9050919050565b7f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b60006145e0602583613b7f565b91506145eb82614584565b604082019050919050565b6000602082019050818103600083015261460f816145d3565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614672603983613b7f565b915061467d82614616565b604082019050919050565b600060208201905081810360008301526146a181614665565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614704602583613b7f565b915061470f826146a8565b604082019050919050565b60006020820190508181036000830152614733816146f7565b9050919050565b7f546f74616c2073656c6c20666565732063616e6e6f742062652067726561746560008201527f72207468616e2036250000000000000000000000000000000000000000000000602082015250565b6000614796602983613b7f565b91506147a18261473a565b604082019050919050565b600060208201905081810360008301526147c581614789565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e323525000000000000000000000000000000000000000000000000000000602082015250565b6000614828602583613b7f565b9150614833826147cc565b604082019050919050565b600060208201905081810360008301526148578161481b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006148ba603583613b7f565b91506148c58261485e565b604082019050919050565b600060208201905081810360008301526148e9816148ad565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20332520746f74616c20737570706c792e0000000000000000000000000000602082015250565b600061494c603283613b7f565b9150614957826148f0565b604082019050919050565b6000602082019050818103600083015261497b8161493f565b9050919050565b7f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e60008201527f3235250000000000000000000000000000000000000000000000000000000000602082015250565b60006149de602383613b7f565b91506149e982614982565b604082019050919050565b60006020820190508181036000830152614a0d816149d1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a70602683613b7f565b9150614a7b82614a14565b604082019050919050565b60006020820190508181036000830152614a9f81614a63565b9050919050565b600081905092915050565b50565b6000614ac1600083614aa6565b9150614acc82614ab1565b600082019050919050565b6000614ae282614ab4565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614b48602483613b7f565b9150614b5382614aec565b604082019050919050565b60006020820190508181036000830152614b7781614b3b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bda602283613b7f565b9150614be582614b7e565b604082019050919050565b60006020820190508181036000830152614c0981614bcd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614c6c602583613b7f565b9150614c7782614c10565b604082019050919050565b60006020820190508181036000830152614c9b81614c5f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614cfe602383613b7f565b9150614d0982614ca2565b604082019050919050565b60006020820190508181036000830152614d2d81614cf1565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000614d6a601d83613b7f565b9150614d7582614d34565b602082019050919050565b60006020820190508181036000830152614d9981614d5d565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614dd6601683613b7f565b9150614de182614da0565b602082019050919050565b60006020820190508181036000830152614e0581614dc9565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000614e68602883613b7f565b9150614e7382614e0c565b604082019050919050565b60006020820190508181036000830152614e9781614e5b565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000614ed4601883613b7f565b9150614edf82614e9e565b602082019050919050565b60006020820190508181036000830152614f0381614ec7565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000614f66602a83613b7f565b9150614f7182614f0a565b604082019050919050565b60006020820190508181036000830152614f9581614f59565b9050919050565b6000614fa782613c89565b9150614fb283613c89565b9250828203905081811115614fca57614fc9614144565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061502c602683613b7f565b915061503782614fd0565b604082019050919050565b6000602082019050818103600083015261505b8161501f565b9050919050565b60006040820190506150776000830185613ebd565b6150846020830184613d0b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506150f881613c5d565b92915050565b60006020828403121561511457615113613c26565b5b6000615122848285016150e9565b91505092915050565b6000819050919050565b600061515061514b6151468461512b565b613d62565b613c89565b9050919050565b61516081615135565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61519b81613c4b565b82525050565b60006151ad8383615192565b60208301905092915050565b6000602082019050919050565b60006151d182615166565b6151db8185615171565b93506151e683615182565b8060005b838110156152175781516151fe88826151a1565b9750615209836151b9565b9250506001810190506151ea565b5085935050505092915050565b600060a0820190506152396000830188613ddc565b6152466020830187615157565b818103604083015261525881866151c6565b90506152676060830185613ebd565b6152746080830184613ddc565b9695505050505050565b600060c0820190506152936000830189613ebd565b6152a06020830188613ddc565b6152ad6040830187615157565b6152ba6060830186615157565b6152c76080830185613ebd565b6152d460a0830184613ddc565b979650505050505050565b6000806000606084860312156152f8576152f7613c26565b5b60006153068682870161446b565b93505060206153178682870161446b565b92505060406153288682870161446b565b915050925092509256fea2646970667358221220139d951fbb12b5c88f75e109617b4ed56e68578cb7916afad9a89e62150795c564736f6c63430008130033

Deployed Bytecode Sourcemap

9867:13842:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4505:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5419:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10876:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10018:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4826:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10653:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10693:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10613:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5596:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13805:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4725:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6096:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10068:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9944:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10269:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4942:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8586:150;;;;;;;;;;;;;:::i;:::-;;15294:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10354:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16079:384;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22791:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9910:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13583:205;;;;;;;;;;;;;:::i;:::-;;8372:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23415:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10500:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4613:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15569:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6319:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10185:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5077:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9979:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10576:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11100:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10229:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16873:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16471:394;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14358:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14707:356;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14081:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5260:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10143:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10428:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10391:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8744:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23247:160;;;;;;;;;;;;;:::i;:::-;;10538:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4505:100;4559:13;4592:5;4585:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4505:100;:::o;5419:169::-;5502:4;5519:39;5528:12;:10;:12::i;:::-;5542:7;5551:6;5519:8;:39::i;:::-;5576:4;5569:11;;5419:169;;;;:::o;10876:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;10018:43::-;;;:::o;4826:108::-;4887:7;4914:12;;4907:19;;4826:108;:::o;10653:33::-;;;;:::o;10693:28::-;;;;:::o;10613:33::-;;;;:::o;5596:492::-;5736:4;5753:36;5763:6;5771:9;5782:6;5753:9;:36::i;:::-;5802:24;5829:11;:19;5841:6;5829:19;;;;;;;;;;;;;;;:33;5849:12;:10;:12::i;:::-;5829:33;;;;;;;;;;;;;;;;5802:60;;5901:6;5881:16;:26;;5873:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5988:57;5997:6;6005:12;:10;:12::i;:::-;6038:6;6019:16;:25;5988:8;:57::i;:::-;6076:4;6069:11;;;5596:492;;;;;:::o;13805:264::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13926:4:::1;13919:5;13914:2;13898:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:26;;;;:::i;:::-;13897:33;;;;:::i;:::-;13887:6;:43;;13879:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;14005:6;13995;:17;;;;:::i;:::-;13980:12;:32;;;;14028:33;14048:12;;14028:33;;;;;;:::i;:::-;;;;;;;;13805:264:::0;:::o;4725:93::-;4783:5;4808:2;4801:9;;4725:93;:::o;6096:215::-;6184:4;6201:80;6210:12;:10;:12::i;:::-;6224:7;6270:10;6233:11;:25;6245:12;:10;:12::i;:::-;6233:25;;;;;;;;;;;;;;;:34;6259:7;6233:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6201:8;:80::i;:::-;6299:4;6292:11;;6096:215;;;;:::o;10068:38::-;;;:::o;9944:28::-;;;;:::o;10269:31::-;;;;;;;;;;;;;:::o;4942:127::-;5016:7;5043:9;:18;5053:7;5043:18;;;;;;;;;;;;;;;;5036:25;;4942:127;;;:::o;8586:150::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8695:1:::1;8658:40;;8679:6;;;;;;;;;;;8658:40;;;;;;;;;;;;8726:1;8709:6;;:19;;;;;;;;;;;;;;;;;;8586:150::o:0;15294:267::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15390:4:::1;15386:111;;15428:13;15418:23;;:6;:23;;::::0;15410:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15386:111;15549:4;15507:31;:39;15539:6;15507:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;15294:267:::0;;:::o;10354:30::-;;;;:::o;16079:384::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16214:13:::1;16196:15;:31;;;;16256:13;16238:15;:31;;;;16293:8;16280:10;:21;;;;16345:15;;16327;;:33;;;;:::i;:::-;16312:12;:48;;;;16410:1;16395:10;;16380:12;;:25;;;;:::i;:::-;16379:32;;16371:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;16079:384:::0;;;:::o;22791:386::-;22878:10;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22927:4:::1;22909:23;;:6;:23;;::::0;22901:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22976:24;23010:6;23003:24;;;23036:4;23003:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22976:66;;23068:6;23061:23;;;23085:3;23090:16;23061:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23053:54;;23123:46;23144:6;23152:16;23123:46;;;;;;;:::i;:::-;;;;;;;;22890:287;22791:386:::0;;;;:::o;9910:27::-;;;;:::o;13583:205::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13647:13:::1;;;;;;;;;;;13646:14;13638:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13715:4;13699:13;;:20;;;;;;;;;;;;;;;;;;13744:4;13730:11;;:18;;;;;;;;;;;;;;;;;;13764:16;;;;;;;;;;13583:205::o:0;8372:79::-;8410:7;8437:6;;;;;;;;;;;8430:13;;8372:79;:::o;23415:289::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23538:1:::1;23509:31;;:17;:31;;::::0;23501:81:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23620:17;23593:16;;:45;;;;;;;;;;;;;;;;;;23678:17;23654:42;;;;;;;;;;;;23415:289:::0;:::o;10500:31::-;;;;:::o;4613:104::-;4669:13;4702:7;4695:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4613:104;:::o;15569:246::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15678:13:::1;15670:21;;:4;:21;;::::0;15662:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15766:41;15795:4;15801:5;15766:28;:41::i;:::-;15569:246:::0;;:::o;6319:413::-;6412:4;6429:24;6456:11;:25;6468:12;:10;:12::i;:::-;6456:25;;;;;;;;;;;;;;;:34;6482:7;6456:34;;;;;;;;;;;;;;;;6429:61;;6529:15;6509:16;:35;;6501:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6622:67;6631:12;:10;:12::i;:::-;6645:7;6673:15;6654:16;:34;6622:8;:67::i;:::-;6720:4;6713:11;;;6319:413;;;;:::o;10185:31::-;;;;;;;;;;;;;:::o;5077:175::-;5163:4;5180:42;5190:12;:10;:12::i;:::-;5204:9;5215:6;5180:9;:42::i;:::-;5240:4;5233:11;;5077:175;;;;:::o;9979:30::-;;;;:::o;10576:26::-;;;;:::o;11100:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;10229:33::-;;;;;;;;;;;;;:::o;16873:182::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16989:8:::1;16958:19;:28;16978:7;16958:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17029:7;17013:34;;;17038:8;17013:34;;;;;;:::i;:::-;;;;;;;;16873:182:::0;;:::o;16471:394::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16608:13:::1;16589:16;:32;;;;16651:13;16632:16;:32;;;;16689:8;16675:11;:22;;;;16743:16;;16724;;:35;;;;:::i;:::-;16708:13;:51;;;;16811:1;16795:11;;16779:13;;:27;;;;:::i;:::-;16778:34;;16770:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;16471:394:::0;;;:::o;14358:279::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14482:4:::1;14475:5;14470:2;14454:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:26;;;;:::i;:::-;14453:33;;;;:::i;:::-;14443:6;:43;;14435:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;14567:6;14557;:17;;;;:::i;:::-;14539:15;:35;;;;14590:39;14613:15;;14590:39;;;;;;:::i;:::-;;;;;;;;14358:279:::0;:::o;14707:356::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14831:6:::1;14827:1;14811:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;14798:9;:39;;14790:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;14947:3;14943:1;14927:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:23;;;;:::i;:::-;14914:9;:36;;14906:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;15049:6;15036:9;:20;;;;:::i;:::-;15015:18;:41;;;;14707:356:::0;:::o;14081:269::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14203:4:::1;14196:5;14191:2;14175:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:26;;;;:::i;:::-;14174:33;;;;:::i;:::-;14164:6;:43;;14156:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;14284:6;14274;:17;;;;:::i;:::-;14258:13;:33;;;;14307:35;14328:13;;14307:35;;;;;;:::i;:::-;;;;;;;;14081:269:::0;:::o;5260:151::-;5349:7;5376:11;:18;5388:5;5376:18;;;;;;;;;;;;;;;:27;5395:7;5376:27;;;;;;;;;;;;;;;;5369:34;;5260:151;;;;:::o;10143:33::-;;;;:::o;10428:25::-;;;;:::o;10391:30::-;;;;:::o;8744:244::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8853:1:::1;8833:22;;:8;:22;;::::0;8825:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8943:8;8914:38;;8935:6;;;;;;;;;;;8914:38;;;;;;;;;;;;8972:8;8963:6;;:17;;;;;;;;;;;;;;;;;;8744:244:::0;:::o;23247:160::-;8509:12;:10;:12::i;:::-;8499:22;;:6;;;;;;;;;;;:22;;;8491:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23305:12:::1;23349:10;23341:24;;23373:21;23341:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23328:71;;;;;23294:113;23247:160::o:0;10538:31::-;;;;:::o;772:98::-;825:7;852:10;845:17;;772:98;:::o;7661:380::-;7814:1;7797:19;;:5;:19;;;7789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7895:1;7876:21;;:7;:21;;;7868:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7979:6;7949:11;:18;7961:5;7949:18;;;;;;;;;;;;;;;:27;7968:7;7949:27;;;;;;;;;;;;;;;:36;;;;8017:7;8001:32;;8010:5;8001:32;;;8026:6;8001:32;;;;;;:::i;:::-;;;;;;;;7661:380;;;:::o;17063:3360::-;17179:1;17163:18;;:4;:18;;;17155:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17256:1;17242:16;;:2;:16;;;17234:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17326:1;17317:6;:10;17309:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;17415:7;:5;:7::i;:::-;17407:15;;:4;:15;;;;:32;;;;;17432:7;:5;:7::i;:::-;17426:13;;:2;:13;;;;17407:32;:52;;;;;17457:1;17443:16;;:2;:16;;;;17407:52;:77;;;;;17477:6;17463:21;;:2;:21;;;;17407:77;17403:1127;;;17508:13;;;;;;;;;;;17504:148;;17553:19;:25;17573:4;17553:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17582:19;:23;17602:2;17582:23;;;;;;;;;;;;;;;;;;;;;;;;;17553:52;17545:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17504:148;17732:25;:31;17758:4;17732:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;17768:31;:35;17800:2;17768:35;;;;;;;;;;;;;;;;;;;;;;;;;17767:36;17732:71;17728:787;;;17850:12;;17840:6;:22;;17832:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17968:15;;17951:13;17961:2;17951:9;:13::i;:::-;17942:6;:22;;;;:::i;:::-;:41;;17934:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17728:787;;;18089:25;:29;18115:2;18089:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;18123:31;:37;18155:4;18123:37;;;;;;;;;;;;;;;;;;;;;;;;;18122:38;18089:71;18085:430;;;18207:13;;18197:6;:23;;18189:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18085:430;;;18316:31;:35;18348:2;18316:35;;;;;;;;;;;;;;;;;;;;;;;;;18315:36;:78;;;;;18356:31;:37;18388:4;18356:37;;;;;;;;;;;;;;;;;;;;;;;;;18355:38;18315:78;18311:204;;;18451:15;;18434:13;18444:2;18434:9;:13::i;:::-;18425:6;:22;;;;:::i;:::-;:41;;18417:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;18311:204;18085:430;17728:787;17403:1127;18552:28;18583:24;18601:4;18583:9;:24::i;:::-;18552:55;;18628:12;18667:18;;18643:20;:42;;18628:57;;18701:7;:22;;;;;18712:11;;;;;;;;;;;18701:22;:35;;;;;18728:8;;;;;;;;;;;18727:9;18701:35;:71;;;;;18741:25;:31;18767:4;18741:31;;;;;;;;;;;;;;;;;;;;;;;;;18740:32;18701:71;:101;;;;;18777:19;:25;18797:4;18777:25;;;;;;;;;;;;;;;;;;;;;;;;;18776:26;18701:101;:129;;;;;18807:19;:23;18827:2;18807:23;;;;;;;;;;;;;;;;;;;;;;;;;18806:24;18701:129;18698:236;;;18858:4;18847:8;;:15;;;;;;;;;;;;;;;;;;18879:10;:8;:10::i;:::-;18917:5;18906:8;;:16;;;;;;;;;;;;;;;;;;18698:236;18946:12;18961:4;18946:19;;19064;:25;19084:4;19064:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19093:19;:23;19113:2;19093:23;;;;;;;;;;;;;;;;;;;;;;;;;19064:52;19061:99;;;19143:5;19133:15;;19061:99;19180:12;19284:7;19281:1077;;;19350:25;:29;19376:2;19350:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;19399:1;19383:13;;:17;19350:50;19346:727;;;19451:3;19436:13;;19427:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;19420:34;;19521:13;;19502:16;;19495:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;19473:18;;:61;;;;;;;:::i;:::-;;;;;;;;19601:13;;19582:16;;19575:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;19553:18;;:61;;;;;;;:::i;:::-;;;;;;;;19673:3;19659:11;;19650:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;19633:13;;:43;;;;;;;:::i;:::-;;;;;;;;19346:727;;;19739:25;:31;19765:4;19739:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;19789:1;19774:12;;:16;19739:51;19736:337;;;19839:3;19824:12;;19815:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;19808:34;;19905:12;;19887:15;;19880:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;19858:18;;:59;;;;;;;:::i;:::-;;;;;;;;19983:12;;19965:15;;19958:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;19936:18;;:59;;;;;;;:::i;:::-;;;;;;;;20054:3;20040:11;;20031:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;20014:13;;:43;;;;;;;:::i;:::-;;;;;;;;19736:337;19346:727;20111:1;20104:4;:8;20101:94;;;20137:42;20153:4;20167;20174;20137:15;:42::i;:::-;20101:94;20213:53;20229:4;20243:6;20252:13;;20213:15;:53::i;:::-;20300:13;;20293:4;:20;;;;:::i;:::-;20282:32;;;;;:::i;:::-;;;20345:1;20329:13;:17;;;;19281:1077;20382:33;20398:4;20404:2;20408:6;20382:15;:33::i;:::-;17142:3281;;;;17063:3360;;;:::o;15823:248::-;15940:5;15906:25;:31;15932:4;15906:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15966;15993:4;15999:5;15966:26;:39::i;:::-;16057:5;16023:40;;16051:4;16023:40;;;;;;;;;;;;15823:248;;:::o;21564:1219::-;21603:23;21629:24;21647:4;21629:9;:24::i;:::-;21603:50;;21664:25;21713:18;;21692;;:39;;;;:::i;:::-;21664:67;;21774:1;21755:15;:20;:46;;;;21800:1;21779:17;:22;21755:46;21752:60;;;21804:7;;;;21752:60;21866:2;21845:18;;:23;;;;:::i;:::-;21827:15;:41;21824:113;;;21923:2;21902:18;;:23;;;;:::i;:::-;21884:41;;21824:113;21949:12;22031:23;22116:1;22096:17;22075:18;;22057:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;22031:86;;22138:51;22173:15;22155;:33;;;;:::i;:::-;22138:16;:51::i;:::-;22211:18;22232:21;22211:42;;22264:23;22290:10;22264:36;;22313:23;22414:1;22395:18;;:20;;;;:::i;:::-;22374:17;:42;;;;:::i;:::-;22352:18;;22339:10;:31;;;;:::i;:::-;:78;;;;:::i;:::-;22313:104;;22449:15;22430:34;;;;;:::i;:::-;;;22510:1;22489:18;:22;;;;22543:1;22522:18;:22;;;;22588:1;22570:15;:19;:42;;;;;22611:1;22593:15;:19;22570:42;22567:119;;;22628:46;22641:15;22658;22628:12;:46::i;:::-;22567:119;22719:16;;;;;;;;;;;22711:30;;22749:21;22711:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22698:77;;;;;21592:1191;;;;;;;21564:1219;:::o;6740:614::-;6898:1;6880:20;;:6;:20;;;6872:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6982:1;6961:23;;:9;:23;;;6953:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7037:21;7061:9;:17;7071:6;7061:17;;;;;;;;;;;;;;;;7037:41;;7114:6;7097:13;:23;;7089:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7235:6;7219:13;:22;7199:9;:17;7209:6;7199:17;;;;;;;;;;;;;;;:42;;;;7287:6;7263:9;:20;7273:9;7263:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7328:9;7311:35;;7320:6;7311:35;;;7339:6;7311:35;;;;;;:::i;:::-;;;;;;;;6861:493;6740:614;;;:::o;15075:207::-;15205:10;15163:31;:39;15195:6;15163:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;15231:43;15255:6;15263:10;15231:43;;;;;;;:::i;:::-;;;;;;;;15075:207;;:::o;20431:591::-;20559:21;20597:1;20583:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20559:40;;20628:4;20610;20615:1;20610:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20654:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20644:4;20649:1;20644:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;20689:62;20706:4;20721:15;20739:11;20689:8;:62::i;:::-;20790:15;:66;;;20871:11;20897:1;20941:4;20968;20988:15;20790:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20486:536;20431:591;:::o;21034:522::-;21182:62;21199:4;21214:15;21232:11;21182:8;:62::i;:::-;21287:15;:31;;;21326:9;21359:4;21379:11;21405:1;21448;21499:7;:5;:7::i;:::-;21522:15;21287:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21034:522;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:144::-;4195:9;4228:37;4259:5;4228:37;:::i;:::-;4215:50;;4127:144;;;:::o;4277:167::-;4382:55;4431:5;4382:55;:::i;:::-;4377:3;4370:68;4277:167;;:::o;4450:258::-;4561:4;4599:2;4588:9;4584:18;4576:26;;4612:89;4698:1;4687:9;4683:17;4674:6;4612:89;:::i;:::-;4450:258;;;;:::o;4714:118::-;4801:24;4819:5;4801:24;:::i;:::-;4796:3;4789:37;4714:118;;:::o;4838:222::-;4931:4;4969:2;4958:9;4954:18;4946:26;;4982:71;5050:1;5039:9;5035:17;5026:6;4982:71;:::i;:::-;4838:222;;;;:::o;5066:619::-;5143:6;5151;5159;5208:2;5196:9;5187:7;5183:23;5179:32;5176:119;;;5214:79;;:::i;:::-;5176:119;5334:1;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5305:117;5461:2;5487:53;5532:7;5523:6;5512:9;5508:22;5487:53;:::i;:::-;5477:63;;5432:118;5589:2;5615:53;5660:7;5651:6;5640:9;5636:22;5615:53;:::i;:::-;5605:63;;5560:118;5066:619;;;;;:::o;5691:329::-;5750:6;5799:2;5787:9;5778:7;5774:23;5770:32;5767:119;;;5805:79;;:::i;:::-;5767:119;5925:1;5950:53;5995:7;5986:6;5975:9;5971:22;5950:53;:::i;:::-;5940:63;;5896:117;5691:329;;;;:::o;6026:86::-;6061:7;6101:4;6094:5;6090:16;6079:27;;6026:86;;;:::o;6118:112::-;6201:22;6217:5;6201:22;:::i;:::-;6196:3;6189:35;6118:112;;:::o;6236:214::-;6325:4;6363:2;6352:9;6348:18;6340:26;;6376:67;6440:1;6429:9;6425:17;6416:6;6376:67;:::i;:::-;6236:214;;;;:::o;6456:118::-;6543:24;6561:5;6543:24;:::i;:::-;6538:3;6531:37;6456:118;;:::o;6580:222::-;6673:4;6711:2;6700:9;6696:18;6688:26;;6724:71;6792:1;6781:9;6777:17;6768:6;6724:71;:::i;:::-;6580:222;;;;:::o;6808:116::-;6878:21;6893:5;6878:21;:::i;:::-;6871:5;6868:32;6858:60;;6914:1;6911;6904:12;6858:60;6808:116;:::o;6930:133::-;6973:5;7011:6;6998:20;6989:29;;7027:30;7051:5;7027:30;:::i;:::-;6930:133;;;;:::o;7069:468::-;7134:6;7142;7191:2;7179:9;7170:7;7166:23;7162:32;7159:119;;;7197:79;;:::i;:::-;7159:119;7317:1;7342:53;7387:7;7378:6;7367:9;7363:22;7342:53;:::i;:::-;7332:63;;7288:117;7444:2;7470:50;7512:7;7503:6;7492:9;7488:22;7470:50;:::i;:::-;7460:60;;7415:115;7069:468;;;;;:::o;7543:619::-;7620:6;7628;7636;7685:2;7673:9;7664:7;7660:23;7656:32;7653:119;;;7691:79;;:::i;:::-;7653:119;7811:1;7836:53;7881:7;7872:6;7861:9;7857:22;7836:53;:::i;:::-;7826:63;;7782:117;7938:2;7964:53;8009:7;8000:6;7989:9;7985:22;7964:53;:::i;:::-;7954:63;;7909:118;8066:2;8092:53;8137:7;8128:6;8117:9;8113:22;8092:53;:::i;:::-;8082:63;;8037:118;7543:619;;;;;:::o;8168:474::-;8236:6;8244;8293:2;8281:9;8272:7;8268:23;8264:32;8261:119;;;8299:79;;:::i;:::-;8261:119;8419:1;8444:53;8489:7;8480:6;8469:9;8465:22;8444:53;:::i;:::-;8434:63;;8390:117;8546:2;8572:53;8617:7;8608:6;8597:9;8593:22;8572:53;:::i;:::-;8562:63;;8517:118;8168:474;;;;;:::o;8648:180::-;8696:77;8693:1;8686:88;8793:4;8790:1;8783:15;8817:4;8814:1;8807:15;8834:320;8878:6;8915:1;8909:4;8905:12;8895:22;;8962:1;8956:4;8952:12;8983:18;8973:81;;9039:4;9031:6;9027:17;9017:27;;8973:81;9101:2;9093:6;9090:14;9070:18;9067:38;9064:84;;9120:18;;:::i;:::-;9064:84;8885:269;8834:320;;;:::o;9160:227::-;9300:34;9296:1;9288:6;9284:14;9277:58;9369:10;9364:2;9356:6;9352:15;9345:35;9160:227;:::o;9393:366::-;9535:3;9556:67;9620:2;9615:3;9556:67;:::i;:::-;9549:74;;9632:93;9721:3;9632:93;:::i;:::-;9750:2;9745:3;9741:12;9734:19;;9393:366;;;:::o;9765:419::-;9931:4;9969:2;9958:9;9954:18;9946:26;;10018:9;10012:4;10008:20;10004:1;9993:9;9989:17;9982:47;10046:131;10172:4;10046:131;:::i;:::-;10038:139;;9765:419;;;:::o;10190:182::-;10330:34;10326:1;10318:6;10314:14;10307:58;10190:182;:::o;10378:366::-;10520:3;10541:67;10605:2;10600:3;10541:67;:::i;:::-;10534:74;;10617:93;10706:3;10617:93;:::i;:::-;10735:2;10730:3;10726:12;10719:19;;10378:366;;;:::o;10750:419::-;10916:4;10954:2;10943:9;10939:18;10931:26;;11003:9;10997:4;10993:20;10989:1;10978:9;10974:17;10967:47;11031:131;11157:4;11031:131;:::i;:::-;11023:139;;10750:419;;;:::o;11175:180::-;11223:77;11220:1;11213:88;11320:4;11317:1;11310:15;11344:4;11341:1;11334:15;11361:410;11401:7;11424:20;11442:1;11424:20;:::i;:::-;11419:25;;11458:20;11476:1;11458:20;:::i;:::-;11453:25;;11513:1;11510;11506:9;11535:30;11553:11;11535:30;:::i;:::-;11524:41;;11714:1;11705:7;11701:15;11698:1;11695:22;11675:1;11668:9;11648:83;11625:139;;11744:18;;:::i;:::-;11625:139;11409:362;11361:410;;;;:::o;11777:180::-;11825:77;11822:1;11815:88;11922:4;11919:1;11912:15;11946:4;11943:1;11936:15;11963:185;12003:1;12020:20;12038:1;12020:20;:::i;:::-;12015:25;;12054:20;12072:1;12054:20;:::i;:::-;12049:25;;12093:1;12083:35;;12098:18;;:::i;:::-;12083:35;12140:1;12137;12133:9;12128:14;;11963:185;;;;:::o;12154:221::-;12294:34;12290:1;12282:6;12278:14;12271:58;12363:4;12358:2;12350:6;12346:15;12339:29;12154:221;:::o;12381:366::-;12523:3;12544:67;12608:2;12603:3;12544:67;:::i;:::-;12537:74;;12620:93;12709:3;12620:93;:::i;:::-;12738:2;12733:3;12729:12;12722:19;;12381:366;;;:::o;12753:419::-;12919:4;12957:2;12946:9;12942:18;12934:26;;13006:9;13000:4;12996:20;12992:1;12981:9;12977:17;12970:47;13034:131;13160:4;13034:131;:::i;:::-;13026:139;;12753:419;;;:::o;13178:191::-;13218:3;13237:20;13255:1;13237:20;:::i;:::-;13232:25;;13271:20;13289:1;13271:20;:::i;:::-;13266:25;;13314:1;13311;13307:9;13300:16;;13335:3;13332:1;13329:10;13326:36;;;13342:18;;:::i;:::-;13326:36;13178:191;;;;:::o;13375:226::-;13515:34;13511:1;13503:6;13499:14;13492:58;13584:9;13579:2;13571:6;13567:15;13560:34;13375:226;:::o;13607:366::-;13749:3;13770:67;13834:2;13829:3;13770:67;:::i;:::-;13763:74;;13846:93;13935:3;13846:93;:::i;:::-;13964:2;13959:3;13955:12;13948:19;;13607:366;;;:::o;13979:419::-;14145:4;14183:2;14172:9;14168:18;14160:26;;14232:9;14226:4;14222:20;14218:1;14207:9;14203:17;14196:47;14260:131;14386:4;14260:131;:::i;:::-;14252:139;;13979:419;;;:::o;14404:227::-;14544:34;14540:1;14532:6;14528:14;14521:58;14613:10;14608:2;14600:6;14596:15;14589:35;14404:227;:::o;14637:366::-;14779:3;14800:67;14864:2;14859:3;14800:67;:::i;:::-;14793:74;;14876:93;14965:3;14876:93;:::i;:::-;14994:2;14989:3;14985:12;14978:19;;14637:366;;;:::o;15009:419::-;15175:4;15213:2;15202:9;15198:18;15190:26;;15262:9;15256:4;15252:20;15248:1;15237:9;15233:17;15226:47;15290:131;15416:4;15290:131;:::i;:::-;15282:139;;15009:419;;;:::o;15434:178::-;15574:30;15570:1;15562:6;15558:14;15551:54;15434:178;:::o;15618:366::-;15760:3;15781:67;15845:2;15840:3;15781:67;:::i;:::-;15774:74;;15857:93;15946:3;15857:93;:::i;:::-;15975:2;15970:3;15966:12;15959:19;;15618:366;;;:::o;15990:419::-;16156:4;16194:2;16183:9;16179:18;16171:26;;16243:9;16237:4;16233:20;16229:1;16218:9;16214:17;16207:47;16271:131;16397:4;16271:131;:::i;:::-;16263:139;;15990:419;;;:::o;16415:143::-;16472:5;16503:6;16497:13;16488:22;;16519:33;16546:5;16519:33;:::i;:::-;16415:143;;;;:::o;16564:351::-;16634:6;16683:2;16671:9;16662:7;16658:23;16654:32;16651:119;;;16689:79;;:::i;:::-;16651:119;16809:1;16834:64;16890:7;16881:6;16870:9;16866:22;16834:64;:::i;:::-;16824:74;;16780:128;16564:351;;;;:::o;16921:332::-;17042:4;17080:2;17069:9;17065:18;17057:26;;17093:71;17161:1;17150:9;17146:17;17137:6;17093:71;:::i;:::-;17174:72;17242:2;17231:9;17227:18;17218:6;17174:72;:::i;:::-;16921:332;;;;;:::o;17259:137::-;17313:5;17344:6;17338:13;17329:22;;17360:30;17384:5;17360:30;:::i;:::-;17259:137;;;;:::o;17402:345::-;17469:6;17518:2;17506:9;17497:7;17493:23;17489:32;17486:119;;;17524:79;;:::i;:::-;17486:119;17644:1;17669:61;17722:7;17713:6;17702:9;17698:22;17669:61;:::i;:::-;17659:71;;17615:125;17402:345;;;;:::o;17753:173::-;17893:25;17889:1;17881:6;17877:14;17870:49;17753:173;:::o;17932:366::-;18074:3;18095:67;18159:2;18154:3;18095:67;:::i;:::-;18088:74;;18171:93;18260:3;18171:93;:::i;:::-;18289:2;18284:3;18280:12;18273:19;;17932:366;;;:::o;18304:419::-;18470:4;18508:2;18497:9;18493:18;18485:26;;18557:9;18551:4;18547:20;18543:1;18532:9;18528:17;18521:47;18585:131;18711:4;18585:131;:::i;:::-;18577:139;;18304:419;;;:::o;18729:224::-;18869:34;18865:1;18857:6;18853:14;18846:58;18938:7;18933:2;18925:6;18921:15;18914:32;18729:224;:::o;18959:366::-;19101:3;19122:67;19186:2;19181:3;19122:67;:::i;:::-;19115:74;;19198:93;19287:3;19198:93;:::i;:::-;19316:2;19311:3;19307:12;19300:19;;18959:366;;;:::o;19331:419::-;19497:4;19535:2;19524:9;19520:18;19512:26;;19584:9;19578:4;19574:20;19570:1;19559:9;19555:17;19548:47;19612:131;19738:4;19612:131;:::i;:::-;19604:139;;19331:419;;;:::o;19756:244::-;19896:34;19892:1;19884:6;19880:14;19873:58;19965:27;19960:2;19952:6;19948:15;19941:52;19756:244;:::o;20006:366::-;20148:3;20169:67;20233:2;20228:3;20169:67;:::i;:::-;20162:74;;20245:93;20334:3;20245:93;:::i;:::-;20363:2;20358:3;20354:12;20347:19;;20006:366;;;:::o;20378:419::-;20544:4;20582:2;20571:9;20567:18;20559:26;;20631:9;20625:4;20621:20;20617:1;20606:9;20602:17;20595:47;20659:131;20785:4;20659:131;:::i;:::-;20651:139;;20378:419;;;:::o;20803:224::-;20943:34;20939:1;20931:6;20927:14;20920:58;21012:7;21007:2;20999:6;20995:15;20988:32;20803:224;:::o;21033:366::-;21175:3;21196:67;21260:2;21255:3;21196:67;:::i;:::-;21189:74;;21272:93;21361:3;21272:93;:::i;:::-;21390:2;21385:3;21381:12;21374:19;;21033:366;;;:::o;21405:419::-;21571:4;21609:2;21598:9;21594:18;21586:26;;21658:9;21652:4;21648:20;21644:1;21633:9;21629:17;21622:47;21686:131;21812:4;21686:131;:::i;:::-;21678:139;;21405:419;;;:::o;21830:228::-;21970:34;21966:1;21958:6;21954:14;21947:58;22039:11;22034:2;22026:6;22022:15;22015:36;21830:228;:::o;22064:366::-;22206:3;22227:67;22291:2;22286:3;22227:67;:::i;:::-;22220:74;;22303:93;22392:3;22303:93;:::i;:::-;22421:2;22416:3;22412:12;22405:19;;22064:366;;;:::o;22436:419::-;22602:4;22640:2;22629:9;22625:18;22617:26;;22689:9;22683:4;22679:20;22675:1;22664:9;22660:17;22653:47;22717:131;22843:4;22717:131;:::i;:::-;22709:139;;22436:419;;;:::o;22861:224::-;23001:34;22997:1;22989:6;22985:14;22978:58;23070:7;23065:2;23057:6;23053:15;23046:32;22861:224;:::o;23091:366::-;23233:3;23254:67;23318:2;23313:3;23254:67;:::i;:::-;23247:74;;23330:93;23419:3;23330:93;:::i;:::-;23448:2;23443:3;23439:12;23432:19;;23091:366;;;:::o;23463:419::-;23629:4;23667:2;23656:9;23652:18;23644:26;;23716:9;23710:4;23706:20;23702:1;23691:9;23687:17;23680:47;23744:131;23870:4;23744:131;:::i;:::-;23736:139;;23463:419;;;:::o;23888:240::-;24028:34;24024:1;24016:6;24012:14;24005:58;24097:23;24092:2;24084:6;24080:15;24073:48;23888:240;:::o;24134:366::-;24276:3;24297:67;24361:2;24356:3;24297:67;:::i;:::-;24290:74;;24373:93;24462:3;24373:93;:::i;:::-;24491:2;24486:3;24482:12;24475:19;;24134:366;;;:::o;24506:419::-;24672:4;24710:2;24699:9;24695:18;24687:26;;24759:9;24753:4;24749:20;24745:1;24734:9;24730:17;24723:47;24787:131;24913:4;24787:131;:::i;:::-;24779:139;;24506:419;;;:::o;24931:237::-;25071:34;25067:1;25059:6;25055:14;25048:58;25140:20;25135:2;25127:6;25123:15;25116:45;24931:237;:::o;25174:366::-;25316:3;25337:67;25401:2;25396:3;25337:67;:::i;:::-;25330:74;;25413:93;25502:3;25413:93;:::i;:::-;25531:2;25526:3;25522:12;25515:19;;25174:366;;;:::o;25546:419::-;25712:4;25750:2;25739:9;25735:18;25727:26;;25799:9;25793:4;25789:20;25785:1;25774:9;25770:17;25763:47;25827:131;25953:4;25827:131;:::i;:::-;25819:139;;25546:419;;;:::o;25971:222::-;26111:34;26107:1;26099:6;26095:14;26088:58;26180:5;26175:2;26167:6;26163:15;26156:30;25971:222;:::o;26199:366::-;26341:3;26362:67;26426:2;26421:3;26362:67;:::i;:::-;26355:74;;26438:93;26527:3;26438:93;:::i;:::-;26556:2;26551:3;26547:12;26540:19;;26199:366;;;:::o;26571:419::-;26737:4;26775:2;26764:9;26760:18;26752:26;;26824:9;26818:4;26814:20;26810:1;26799:9;26795:17;26788:47;26852:131;26978:4;26852:131;:::i;:::-;26844:139;;26571:419;;;:::o;26996:225::-;27136:34;27132:1;27124:6;27120:14;27113:58;27205:8;27200:2;27192:6;27188:15;27181:33;26996:225;:::o;27227:366::-;27369:3;27390:67;27454:2;27449:3;27390:67;:::i;:::-;27383:74;;27466:93;27555:3;27466:93;:::i;:::-;27584:2;27579:3;27575:12;27568:19;;27227:366;;;:::o;27599:419::-;27765:4;27803:2;27792:9;27788:18;27780:26;;27852:9;27846:4;27842:20;27838:1;27827:9;27823:17;27816:47;27880:131;28006:4;27880:131;:::i;:::-;27872:139;;27599:419;;;:::o;28024:147::-;28125:11;28162:3;28147:18;;28024:147;;;;:::o;28177:114::-;;:::o;28297:398::-;28456:3;28477:83;28558:1;28553:3;28477:83;:::i;:::-;28470:90;;28569:93;28658:3;28569:93;:::i;:::-;28687:1;28682:3;28678:11;28671:18;;28297:398;;;:::o;28701:379::-;28885:3;28907:147;29050:3;28907:147;:::i;:::-;28900:154;;29071:3;29064:10;;28701:379;;;:::o;29086:223::-;29226:34;29222:1;29214:6;29210:14;29203:58;29295:6;29290:2;29282:6;29278:15;29271:31;29086:223;:::o;29315:366::-;29457:3;29478:67;29542:2;29537:3;29478:67;:::i;:::-;29471:74;;29554:93;29643:3;29554:93;:::i;:::-;29672:2;29667:3;29663:12;29656:19;;29315:366;;;:::o;29687:419::-;29853:4;29891:2;29880:9;29876:18;29868:26;;29940:9;29934:4;29930:20;29926:1;29915:9;29911:17;29904:47;29968:131;30094:4;29968:131;:::i;:::-;29960:139;;29687:419;;;:::o;30112:221::-;30252:34;30248:1;30240:6;30236:14;30229:58;30321:4;30316:2;30308:6;30304:15;30297:29;30112:221;:::o;30339:366::-;30481:3;30502:67;30566:2;30561:3;30502:67;:::i;:::-;30495:74;;30578:93;30667:3;30578:93;:::i;:::-;30696:2;30691:3;30687:12;30680:19;;30339:366;;;:::o;30711:419::-;30877:4;30915:2;30904:9;30900:18;30892:26;;30964:9;30958:4;30954:20;30950:1;30939:9;30935:17;30928:47;30992:131;31118:4;30992:131;:::i;:::-;30984:139;;30711:419;;;:::o;31136:224::-;31276:34;31272:1;31264:6;31260:14;31253:58;31345:7;31340:2;31332:6;31328:15;31321:32;31136:224;:::o;31366:366::-;31508:3;31529:67;31593:2;31588:3;31529:67;:::i;:::-;31522:74;;31605:93;31694:3;31605:93;:::i;:::-;31723:2;31718:3;31714:12;31707:19;;31366:366;;;:::o;31738:419::-;31904:4;31942:2;31931:9;31927:18;31919:26;;31991:9;31985:4;31981:20;31977:1;31966:9;31962:17;31955:47;32019:131;32145:4;32019:131;:::i;:::-;32011:139;;31738:419;;;:::o;32163:222::-;32303:34;32299:1;32291:6;32287:14;32280:58;32372:5;32367:2;32359:6;32355:15;32348:30;32163:222;:::o;32391:366::-;32533:3;32554:67;32618:2;32613:3;32554:67;:::i;:::-;32547:74;;32630:93;32719:3;32630:93;:::i;:::-;32748:2;32743:3;32739:12;32732:19;;32391:366;;;:::o;32763:419::-;32929:4;32967:2;32956:9;32952:18;32944:26;;33016:9;33010:4;33006:20;33002:1;32991:9;32987:17;32980:47;33044:131;33170:4;33044:131;:::i;:::-;33036:139;;32763:419;;;:::o;33188:179::-;33328:31;33324:1;33316:6;33312:14;33305:55;33188:179;:::o;33373:366::-;33515:3;33536:67;33600:2;33595:3;33536:67;:::i;:::-;33529:74;;33612:93;33701:3;33612:93;:::i;:::-;33730:2;33725:3;33721:12;33714:19;;33373:366;;;:::o;33745:419::-;33911:4;33949:2;33938:9;33934:18;33926:26;;33998:9;33992:4;33988:20;33984:1;33973:9;33969:17;33962:47;34026:131;34152:4;34026:131;:::i;:::-;34018:139;;33745:419;;;:::o;34170:172::-;34310:24;34306:1;34298:6;34294:14;34287:48;34170:172;:::o;34348:366::-;34490:3;34511:67;34575:2;34570:3;34511:67;:::i;:::-;34504:74;;34587:93;34676:3;34587:93;:::i;:::-;34705:2;34700:3;34696:12;34689:19;;34348:366;;;:::o;34720:419::-;34886:4;34924:2;34913:9;34909:18;34901:26;;34973:9;34967:4;34963:20;34959:1;34948:9;34944:17;34937:47;35001:131;35127:4;35001:131;:::i;:::-;34993:139;;34720:419;;;:::o;35145:227::-;35285:34;35281:1;35273:6;35269:14;35262:58;35354:10;35349:2;35341:6;35337:15;35330:35;35145:227;:::o;35378:366::-;35520:3;35541:67;35605:2;35600:3;35541:67;:::i;:::-;35534:74;;35617:93;35706:3;35617:93;:::i;:::-;35735:2;35730:3;35726:12;35719:19;;35378:366;;;:::o;35750:419::-;35916:4;35954:2;35943:9;35939:18;35931:26;;36003:9;35997:4;35993:20;35989:1;35978:9;35974:17;35967:47;36031:131;36157:4;36031:131;:::i;:::-;36023:139;;35750:419;;;:::o;36175:174::-;36315:26;36311:1;36303:6;36299:14;36292:50;36175:174;:::o;36355:366::-;36497:3;36518:67;36582:2;36577:3;36518:67;:::i;:::-;36511:74;;36594:93;36683:3;36594:93;:::i;:::-;36712:2;36707:3;36703:12;36696:19;;36355:366;;;:::o;36727:419::-;36893:4;36931:2;36920:9;36916:18;36908:26;;36980:9;36974:4;36970:20;36966:1;36955:9;36951:17;36944:47;37008:131;37134:4;37008:131;:::i;:::-;37000:139;;36727:419;;;:::o;37152:229::-;37292:34;37288:1;37280:6;37276:14;37269:58;37361:12;37356:2;37348:6;37344:15;37337:37;37152:229;:::o;37387:366::-;37529:3;37550:67;37614:2;37609:3;37550:67;:::i;:::-;37543:74;;37626:93;37715:3;37626:93;:::i;:::-;37744:2;37739:3;37735:12;37728:19;;37387:366;;;:::o;37759:419::-;37925:4;37963:2;37952:9;37948:18;37940:26;;38012:9;38006:4;38002:20;37998:1;37987:9;37983:17;37976:47;38040:131;38166:4;38040:131;:::i;:::-;38032:139;;37759:419;;;:::o;38184:194::-;38224:4;38244:20;38262:1;38244:20;:::i;:::-;38239:25;;38278:20;38296:1;38278:20;:::i;:::-;38273:25;;38322:1;38319;38315:9;38307:17;;38346:1;38340:4;38337:11;38334:37;;;38351:18;;:::i;:::-;38334:37;38184:194;;;;:::o;38384:225::-;38524:34;38520:1;38512:6;38508:14;38501:58;38593:8;38588:2;38580:6;38576:15;38569:33;38384:225;:::o;38615:366::-;38757:3;38778:67;38842:2;38837:3;38778:67;:::i;:::-;38771:74;;38854:93;38943:3;38854:93;:::i;:::-;38972:2;38967:3;38963:12;38956:19;;38615:366;;;:::o;38987:419::-;39153:4;39191:2;39180:9;39176:18;39168:26;;39240:9;39234:4;39230:20;39226:1;39215:9;39211:17;39204:47;39268:131;39394:4;39268:131;:::i;:::-;39260:139;;38987:419;;;:::o;39412:320::-;39527:4;39565:2;39554:9;39550:18;39542:26;;39578:71;39646:1;39635:9;39631:17;39622:6;39578:71;:::i;:::-;39659:66;39721:2;39710:9;39706:18;39697:6;39659:66;:::i;:::-;39412:320;;;;;:::o;39738:180::-;39786:77;39783:1;39776:88;39883:4;39880:1;39873:15;39907:4;39904:1;39897:15;39924:180;39972:77;39969:1;39962:88;40069:4;40066:1;40059:15;40093:4;40090:1;40083:15;40110:143;40167:5;40198:6;40192:13;40183:22;;40214:33;40241:5;40214:33;:::i;:::-;40110:143;;;;:::o;40259:351::-;40329:6;40378:2;40366:9;40357:7;40353:23;40349:32;40346:119;;;40384:79;;:::i;:::-;40346:119;40504:1;40529:64;40585:7;40576:6;40565:9;40561:22;40529:64;:::i;:::-;40519:74;;40475:128;40259:351;;;;:::o;40616:85::-;40661:7;40690:5;40679:16;;40616:85;;;:::o;40707:158::-;40765:9;40798:61;40816:42;40825:32;40851:5;40825:32;:::i;:::-;40816:42;:::i;:::-;40798:61;:::i;:::-;40785:74;;40707:158;;;:::o;40871:147::-;40966:45;41005:5;40966:45;:::i;:::-;40961:3;40954:58;40871:147;;:::o;41024:114::-;41091:6;41125:5;41119:12;41109:22;;41024:114;;;:::o;41144:184::-;41243:11;41277:6;41272:3;41265:19;41317:4;41312:3;41308:14;41293:29;;41144:184;;;;:::o;41334:132::-;41401:4;41424:3;41416:11;;41454:4;41449:3;41445:14;41437:22;;41334:132;;;:::o;41472:108::-;41549:24;41567:5;41549:24;:::i;:::-;41544:3;41537:37;41472:108;;:::o;41586:179::-;41655:10;41676:46;41718:3;41710:6;41676:46;:::i;:::-;41754:4;41749:3;41745:14;41731:28;;41586:179;;;;:::o;41771:113::-;41841:4;41873;41868:3;41864:14;41856:22;;41771:113;;;:::o;41920:732::-;42039:3;42068:54;42116:5;42068:54;:::i;:::-;42138:86;42217:6;42212:3;42138:86;:::i;:::-;42131:93;;42248:56;42298:5;42248:56;:::i;:::-;42327:7;42358:1;42343:284;42368:6;42365:1;42362:13;42343:284;;;42444:6;42438:13;42471:63;42530:3;42515:13;42471:63;:::i;:::-;42464:70;;42557:60;42610:6;42557:60;:::i;:::-;42547:70;;42403:224;42390:1;42387;42383:9;42378:14;;42343:284;;;42347:14;42643:3;42636:10;;42044:608;;;41920:732;;;;:::o;42658:831::-;42921:4;42959:3;42948:9;42944:19;42936:27;;42973:71;43041:1;43030:9;43026:17;43017:6;42973:71;:::i;:::-;43054:80;43130:2;43119:9;43115:18;43106:6;43054:80;:::i;:::-;43181:9;43175:4;43171:20;43166:2;43155:9;43151:18;43144:48;43209:108;43312:4;43303:6;43209:108;:::i;:::-;43201:116;;43327:72;43395:2;43384:9;43380:18;43371:6;43327:72;:::i;:::-;43409:73;43477:3;43466:9;43462:19;43453:6;43409:73;:::i;:::-;42658:831;;;;;;;;:::o;43495:807::-;43744:4;43782:3;43771:9;43767:19;43759:27;;43796:71;43864:1;43853:9;43849:17;43840:6;43796:71;:::i;:::-;43877:72;43945:2;43934:9;43930:18;43921:6;43877:72;:::i;:::-;43959:80;44035:2;44024:9;44020:18;44011:6;43959:80;:::i;:::-;44049;44125:2;44114:9;44110:18;44101:6;44049:80;:::i;:::-;44139:73;44207:3;44196:9;44192:19;44183:6;44139:73;:::i;:::-;44222;44290:3;44279:9;44275:19;44266:6;44222:73;:::i;:::-;43495:807;;;;;;;;;:::o;44308:663::-;44396:6;44404;44412;44461:2;44449:9;44440:7;44436:23;44432:32;44429:119;;;44467:79;;:::i;:::-;44429:119;44587:1;44612:64;44668:7;44659:6;44648:9;44644:22;44612:64;:::i;:::-;44602:74;;44558:128;44725:2;44751:64;44807:7;44798:6;44787:9;44783:22;44751:64;:::i;:::-;44741:74;;44696:129;44864:2;44890:64;44946:7;44937:6;44926:9;44922:22;44890:64;:::i;:::-;44880:74;;44835:129;44308:663;;;;;:::o

Swarm Source

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