ETH Price: $3,419.06 (+3.15%)

Token

AiNet (AINET)
 

Overview

Max Total Supply

100,000,000 AINET

Holders

283

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 AINET

Value
$0.00
0x1e1cf6550e405890a9dcec7d06d90c0db7068ee9
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:
AINET

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-03
*/

/*
    ___    _       _   __     __ 
   /   |  (_)     / | / /__  / /_
  / /| | / /_____/  |/ / _ \/ __/
 / ___ |/ /_____/ /|  /  __/ /_  
/_/  |_/_/     /_/ |_/\___/\__/

Website: https://Ai-net.io
Docs: https://ai-net.gitbook.io/ai-net.io-documentation
X: https://twitter.com/ainet_io
Telegram : https://t.me/AiNetPortal

SPDX-License-Identifier: MIT */

pragma solidity 0.8.19;

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal returns(bool){
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        return success; // always proceeds
    }
}

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

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

abstract 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() public 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;
    }
}

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 9;
    }

    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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, 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 _create(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

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

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

contract AINET is ERC20, Ownable {
    using Address for address payable;

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public  feeOnBuy;
    uint256 public  feeOnSell;

    address public  feeReceiver;

    uint256 public  swapTokensAtAmount;
    bool    private swapping;

    bool    public swapEnabled;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SwapAndSendFee(uint256 tokensSwapped, uint256 bnbSend);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);

    constructor () ERC20("AiNet", "AINET") 
    {   
        address router;
        address pinkLock;
        
        if (block.chainid == 56) {
            router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router
            pinkLock = 0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE; // BSC PinkLock
        } else if (block.chainid == 97) {
            router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router
            pinkLock = 0x5E5b9bE5fd939c578ABE5800a90C566eeEbA44a5; // BSC Testnet PinkLock
        } else if (block.chainid == 1 || block.chainid == 5) {
            router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet
            pinkLock = 0x71B5759d73262FBb223956913ecF4ecC51057641; // ETH PinkLock
        } else {
            revert();
        }

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        feeOnBuy  = 6;
        feeOnSell = 6;

        feeReceiver = 0x6012EC48D298CA798281Dc2D503A7032E742aa9e;

        maxTransactionLimitEnabled = true;

        _isExcludedFromMaxTxLimit[owner()] = true;
        _isExcludedFromMaxTxLimit[address(this)] = true;
        _isExcludedFromMaxTxLimit[address(0xdead)] = true;
        _isExcludedFromMaxTxLimit[feeReceiver] = true;
        _isExcludedFromMaxTxLimit[pinkLock] = true;

        maxWalletLimitEnabled = true;

        _isExcludedFromMaxWalletLimit[owner()] = true;
        _isExcludedFromMaxWalletLimit[address(this)] = true;
        _isExcludedFromMaxWalletLimit[address(0xdead)] = true;
        _isExcludedFromMaxWalletLimit[feeReceiver] = true;
        _isExcludedFromMaxWalletLimit[pinkLock] = true;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[pinkLock] = true;

        _create(owner(), 100_000_000 * (10 ** decimals()));
        swapTokensAtAmount = totalSupply() / 2_000;
    
        maxTransactionAmountBuy     = totalSupply() * 10 / 1000; // 1%
        maxTransactionAmountSell    = totalSupply() * 10 / 1000; // 1%
    
        maxWalletAmount             = totalSupply() * 20 / 1000; // 2%

        swapEnabled = false;
    }

    receive() external payable {}

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "CSLT: Owner cannot claim contract's balance of its own tokens");
        if (token == address(0x0)) {
            payable(msg.sender).sendValue(address(this).balance);
            return;
        }
        
        IERC20(token).transfer(msg.sender, IERC20(token).balanceOf(address(this)));
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner{
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

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

    event UpdateFees(uint256 feeOnBuy, uint256 feeOnSell);

    function updateFees(uint256 _feeOnSell, uint256 _feeOnBuy) external onlyOwner {
        feeOnBuy = _feeOnBuy;
        feeOnSell = _feeOnSell;

        require(feeOnBuy <= 40, "CSLT: Total Fees cannot exceed the maximum");
        require(feeOnSell <= 40, "CSLT: Total Fees cannot exceed the maximum");

        emit UpdateFees(feeOnSell, feeOnBuy);
    }

    event FeeReceiverChanged(address feeReceiver);

    function changeFeeReceiver(address _feeReceiver) external onlyOwner{
        require(_feeReceiver != address(0), "CSLT: Fee receiver cannot be the zero address");
        feeReceiver = _feeReceiver;

        emit FeeReceiverChanged(feeReceiver);
    }
    
    event TradingEnabled(bool tradingEnabled);

    bool public tradingEnabled;

    function enableTrading() external onlyOwner{
        require(!tradingEnabled, "CSLT: Trading already enabled.");
        tradingEnabled = true;
        swapEnabled = true;

        emit TradingEnabled(tradingEnabled);
    }

    function forceSwap() external {
        require(msg.sender == feeReceiver, "Not authorized");

        swapping = true;
        swapAndSendFee(balanceOf(address(this)));     
        swapping = false;
    }

    function _transfer(address from,address to,uint256 amount) internal  override {
        require(from != address(0), "CSLT: transfer from the zero address");
        require(to != address(0), "CSLT: transfer to the zero address");
        require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "CSLT: Trading not yet enabled!");
       
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (maxTransactionLimitEnabled) 
        {
            if ((from == uniswapV2Pair || to == uniswapV2Pair) &&
                !_isExcludedFromMaxTxLimit[from] && 
                !_isExcludedFromMaxTxLimit[to]
            ) {
                if (from == uniswapV2Pair) {
                    require(
                        amount <= maxTransactionAmountBuy,  
                        "AntiWhale: Transfer amount exceeds the maxTransactionAmount"
                    );
                } else {
                    require(
                        amount <= maxTransactionAmountSell, 
                        "AntiWhale: Transfer amount exceeds the maxTransactionAmount"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            to == uniswapV2Pair &&
            feeOnBuy + feeOnSell > 0 &&
            !_isExcludedFromFees[from] &&
            swapEnabled
        ) {
            swapping = true;

            swapAndSendFee(contractTokenBalance);     

            swapping = false;
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            _totalFees = feeOnBuy;
        } else if (to == uniswapV2Pair) {
            _totalFees =  feeOnSell;
        } else {
            _totalFees = 0;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

        if (maxWalletLimitEnabled) 
        {
            if (!_isExcludedFromMaxWalletLimit[from] && 
                !_isExcludedFromMaxWalletLimit[to] &&
                to != uniswapV2Pair
            ) {
                uint256 balance  = balanceOf(to);
                require(
                    balance + amount <= maxWalletAmount, 
                    "MaxWallet: Recipient exceeds the maxWalletAmount"
                );
            }
        }

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

    function setSwapTokensAtAmount(uint256 newAmount, bool _swapEnabled) external onlyOwner{
        require(newAmount > totalSupply() / 1_000_000, "CSLT: SwapTokensAtAmount must be greater than 0.0001% of total supply");
        swapTokensAtAmount = newAmount;
        swapEnabled = _swapEnabled;

        emit SwapTokensAtAmountUpdated(swapTokensAtAmount);
    }

    function swapAndSendFee(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        uint256 newBalance = address(this).balance - initialBalance;

        payable(feeReceiver).sendValue(newBalance);

        emit SwapAndSendFee(tokenAmount, newBalance);
    }

    mapping(address => bool) private _isExcludedFromMaxWalletLimit;
    bool    public maxWalletLimitEnabled;
    uint256 public maxWalletAmount;

    event ExcludedFromMaxWalletLimit(address indexed account, bool isExcluded);
    event MaxWalletLimitStateChanged(bool maxWalletLimit);
    event MaxWalletLimitAmountChanged(uint256 maxWalletAmount);

    function setEnableMaxWalletLimit(bool enable) external onlyOwner {
        require(enable != maxWalletLimitEnabled,"Max wallet limit is already set to that state");
        maxWalletLimitEnabled = enable;

        emit MaxWalletLimitStateChanged(maxWalletLimitEnabled);
    }

    function setMaxWalletAmount(uint256 _maxWalletAmount) external onlyOwner {
        require(_maxWalletAmount >= (totalSupply() / (10 ** decimals())) / 100, "Max wallet percentage cannot be lower than 1%");
        maxWalletAmount = _maxWalletAmount * (10 ** decimals());

        emit MaxWalletLimitAmountChanged(maxWalletAmount);
    }

    function excludeFromMaxWallet(address account, bool exclude) external onlyOwner {
        require( _isExcludedFromMaxWalletLimit[account] != exclude,"Account is already set to that state");
        require(account != address(this), "Can't set this address.");

        _isExcludedFromMaxWalletLimit[account] = exclude;

        emit ExcludedFromMaxWalletLimit(account, exclude);
    }

    function isExcludedFromMaxWalletLimit(address account) public view returns(bool) {
        return _isExcludedFromMaxWalletLimit[account];
    }

    mapping(address => bool) private _isExcludedFromMaxTxLimit;
    bool    public  maxTransactionLimitEnabled;
    uint256 public  maxTransactionAmountBuy;
    uint256 public  maxTransactionAmountSell;

    event ExcludedFromMaxTransactionLimit(address indexed account, bool isExcluded);
    event MaxTransactionLimitStateChanged(bool maxTransactionLimit);
    event MaxTransactionLimitAmountChanged(uint256 maxTransactionAmountBuy, uint256 maxTransactionAmountSell);

    function setEnableMaxTransactionLimit(bool enable) external onlyOwner {
        require(enable != maxTransactionLimitEnabled, "Max transaction limit is already set to that state");
        maxTransactionLimitEnabled = enable;

        emit MaxTransactionLimitStateChanged(maxTransactionLimitEnabled);
    }

    function setMaxTransactionAmounts(uint256 _maxTransactionAmountBuy, uint256 _maxTransactionAmountSell) external onlyOwner {
        require(
            _maxTransactionAmountBuy  >= (totalSupply() / (10 ** decimals())) / 1_000 && 
            _maxTransactionAmountSell >= (totalSupply() / (10 ** decimals())) / 1_000, 
            "Max Transaction limit cannot be lower than 0.1% of total supply"
        ); 
        maxTransactionAmountBuy  = _maxTransactionAmountBuy  * (10 ** decimals());
        maxTransactionAmountSell = _maxTransactionAmountSell * (10 ** decimals());

        emit MaxTransactionLimitAmountChanged(maxTransactionAmountBuy, maxTransactionAmountSell);
    }

    function excludeFromMaxTransactionLimit(address account, bool exclude) external onlyOwner {
        require( _isExcludedFromMaxTxLimit[account] != exclude, "Account is already set to that state");
        require(account != address(this), "Can't set this address.");

        _isExcludedFromMaxTxLimit[account] = exclude;

        emit ExcludedFromMaxTransactionLimit(account, exclude);
    }

    function isExcludedFromMaxTransaction(address account) public view returns(bool) {
        return _isExcludedFromMaxTxLimit[account];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxWalletLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeReceiver","type":"address"}],"name":"FeeReceiverChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountSell","type":"uint256"}],"name":"MaxTransactionLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxTransactionLimit","type":"bool"}],"name":"MaxTransactionLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"MaxWalletLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxWalletLimit","type":"bool"}],"name":"MaxWalletLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingEnabled","type":"bool"}],"name":"TradingEnabled","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":"uint256","name":"feeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeOnSell","type":"uint256"}],"name":"UpdateFees","type":"event"},{"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_feeReceiver","type":"address"}],"name":"changeFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmountBuy","type":"uint256"},{"internalType":"uint256","name":"_maxTransactionAmountSell","type":"uint256"}],"name":"setMaxTransactionAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"},{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"setSwapTokensAtAmount","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","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":"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 IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeOnSell","type":"uint256"},{"internalType":"uint256","name":"_feeOnBuy","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040518060400160405280600581526020017f41694e65740000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f41494e455400000000000000000000000000000000000000000000000000000081525081600390816200008f91906200115c565b508060049081620000a191906200115c565b5050506000620000b662000b7c60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000806038460362000195577310ed43c718714eb63d5aa57b78b54704e256024e915073407993575c91ce7643a4d4ccacc9a98c36ee1bbe905062000223565b60614603620001d25773d99d1c33f9fc3444f8101754abc46c52416550d19150735e5b9be5fd939c578abe5800a90c566eeeba44a5905062000222565b6001461480620001e25750600546145b156200021c57737a250d5630b4cf539739df2c5dacb4c659f2488d91507371b5759d73262fbb223956913ecf4ecc51057641905062000221565b600080fd5b5b5b600082905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000276573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029c9190620012ad565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000304573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032a9190620012ad565b6040518363ffffffff1660e01b815260040162000349929190620012f0565b6020604051808303816000875af115801562000369573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038f9190620012ad565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200046830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff62000b8460201b60201c565b60066009819055506006600a81905550736012ec48d298ca798281dc2d503a7032e742aa9e600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260006101000a81548160ff021916908315150217905550600160116000620004fe62000d5560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016011600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff0219169083151502179055506001600e60006200070462000d5560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000620008ef62000d5560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000a9962000a5e62000d5560201b60201c565b62000a6e62000d7f60201b60201c565b600a62000a7c9190620014ad565b6305f5e10062000a8d9190620014fe565b62000d8860201b60201c565b6107d062000aac62000ed860201b60201c565b62000ab8919062001578565b600c819055506103e8600a62000ad362000ed860201b60201c565b62000adf9190620014fe565b62000aeb919062001578565b6013819055506103e8600a62000b0662000ed860201b60201c565b62000b129190620014fe565b62000b1e919062001578565b6014819055506103e8601462000b3962000ed860201b60201c565b62000b459190620014fe565b62000b51919062001578565b6010819055506000600d60016101000a81548160ff02191690831515021790555050505050620017cc565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bed9062001637565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000c68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c5f90620016cf565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000d48919062001702565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006009905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000dfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000df1906200176f565b60405180910390fd5b806002600082825462000e0e919062001791565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000e65919062001791565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ecc919062001702565b60405180910390a35050565b6000600254905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f6457607f821691505b60208210810362000f7a5762000f7962000f1c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000fe47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000fa5565b62000ff0868362000fa5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200103d62001037620010318462001008565b62001012565b62001008565b9050919050565b6000819050919050565b62001059836200101c565b62001071620010688262001044565b84845462000fb2565b825550505050565b600090565b6200108862001079565b620010958184846200104e565b505050565b5b81811015620010bd57620010b16000826200107e565b6001810190506200109b565b5050565b601f8211156200110c57620010d68162000f80565b620010e18462000f95565b81016020851015620010f1578190505b62001109620011008562000f95565b8301826200109a565b50505b505050565b600082821c905092915050565b6000620011316000198460080262001111565b1980831691505092915050565b60006200114c83836200111e565b9150826002028217905092915050565b620011678262000ee2565b67ffffffffffffffff81111562001183576200118262000eed565b5b6200118f825462000f4b565b6200119c828285620010c1565b600060209050601f831160018114620011d45760008415620011bf578287015190505b620011cb85826200113e565b8655506200123b565b601f198416620011e48662000f80565b60005b828110156200120e57848901518255600182019150602085019450602081019050620011e7565b868310156200122e57848901516200122a601f8916826200111e565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620012758262001248565b9050919050565b620012878162001268565b81146200129357600080fd5b50565b600081519050620012a7816200127c565b92915050565b600060208284031215620012c657620012c562001243565b5b6000620012d68482850162001296565b91505092915050565b620012ea8162001268565b82525050565b6000604082019050620013076000830185620012df565b620013166020830184620012df565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620013ab578086048111156200138357620013826200131d565b5b6001851615620013935780820291505b8081029050620013a3856200134c565b945062001363565b94509492505050565b600082620013c6576001905062001499565b81620013d6576000905062001499565b8160018114620013ef5760028114620013fa5762001430565b600191505062001499565b60ff8411156200140f576200140e6200131d565b5b8360020a9150848211156200142957620014286200131d565b5b5062001499565b5060208310610133831016604e8410600b84101617156200146a5782820a9050838111156200146457620014636200131d565b5b62001499565b62001479848484600162001359565b925090508184048111156200149357620014926200131d565b5b81810290505b9392505050565b600060ff82169050919050565b6000620014ba8262001008565b9150620014c783620014a0565b9250620014f67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013b4565b905092915050565b60006200150b8262001008565b9150620015188362001008565b9250828202620015288162001008565b915082820484148315176200154257620015416200131d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620015858262001008565b9150620015928362001008565b925082620015a557620015a462001549565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006200161f602483620015b0565b91506200162c82620015c1565b604082019050919050565b60006020820190508181036000830152620016528162001610565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000620016b7602283620015b0565b9150620016c48262001659565b604082019050919050565b60006020820190508181036000830152620016ea81620016a8565b9050919050565b620016fc8162001008565b82525050565b6000602082019050620017196000830184620016f1565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001757601f83620015b0565b915062001764826200171f565b602082019050919050565b600060208201905081810360008301526200178a8162001748565b9050919050565b60006200179e8262001008565b9150620017ab8362001008565b9250828201905080821115620017c657620017c56200131d565b5b92915050565b61533c80620017dc6000396000f3fe6080604052600436106102605760003560e01c806370a0823111610144578063b1fde9f8116100b6578063d2fcc0011161007a578063d2fcc0011461090b578063dd62ed3e14610934578063df778d2614610971578063e2f4560514610988578063f2fde38b146109b3578063f9d0831a146109dc57610267565b8063b1fde9f81461083a578063b3f0067414610863578063b6f7f6811461088e578063bb8c3ee0146108b7578063c0246668146108e257610267565b80638da5cb5b116101085780638da5cb5b1461070257806395d89b411461072d578063a457c2d714610758578063a8a69b9d14610795578063a9059cbb146107d2578063aa4bde281461080f57610267565b806370a0823114610645578063715018a6146106825780637c08b96414610699578063880bcbc1146106c25780638a8c523c146106eb57610267565b80632ba86bf2116101dd5780634fbee193116101a15780634fbee1931461053557806356a6cabf1461057257806359136fa51461059b57806365048d08146105c65780636db79437146105f15780636ddd17131461061a57610267565b80632ba86bf21461044c578063313ce5671461047757806339509351146104a257806349bd5a5e146104df5780634ada218b1461050a57610267565b806318d9ceae1161022457806318d9ceae1461035557806321a9d82a1461039257806323b872dd146103bd57806327a14fc2146103fa5780632a6c7dba1461042357610267565b80630105d0fd1461026c57806306fdde0314610297578063095ea7b3146102c25780631694505e146102ff57806318160ddd1461032a57610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a05565b60405161028e9190613985565b60405180910390f35b3480156102a357600080fd5b506102ac610a0b565b6040516102b99190613a30565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190613ae1565b610a9d565b6040516102f69190613b3c565b60405180910390f35b34801561030b57600080fd5b50610314610abb565b6040516103219190613bb6565b60405180910390f35b34801561033657600080fd5b5061033f610ae1565b60405161034c9190613985565b60405180910390f35b34801561036157600080fd5b5061037c60048036038101906103779190613bd1565b610aeb565b6040516103899190613b3c565b60405180910390f35b34801561039e57600080fd5b506103a7610b41565b6040516103b49190613b3c565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190613bfe565b610b54565b6040516103f19190613b3c565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c9190613c51565b610c73565b005b34801561042f57600080fd5b5061044a60048036038101906104459190613caa565b610ddf565b005b34801561045857600080fd5b50610461610f2e565b60405161046e9190613b3c565b60405180910390f35b34801561048357600080fd5b5061048c610f41565b6040516104999190613cf3565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190613ae1565b610f4a565b6040516104d69190613b3c565b60405180910390f35b3480156104eb57600080fd5b506104f4610ff6565b6040516105019190613d1d565b60405180910390f35b34801561051657600080fd5b5061051f61101c565b60405161052c9190613b3c565b60405180910390f35b34801561054157600080fd5b5061055c60048036038101906105579190613bd1565b61102f565b6040516105699190613b3c565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190613caa565b611085565b005b3480156105a757600080fd5b506105b06111d4565b6040516105bd9190613985565b60405180910390f35b3480156105d257600080fd5b506105db6111da565b6040516105e89190613985565b60405180910390f35b3480156105fd57600080fd5b5061061860048036038101906106139190613d38565b6111e0565b005b34801561062657600080fd5b5061062f611352565b60405161063c9190613b3c565b60405180910390f35b34801561065157600080fd5b5061066c60048036038101906106679190613bd1565b611365565b6040516106799190613985565b60405180910390f35b34801561068e57600080fd5b506106976113ad565b005b3480156106a557600080fd5b506106c060048036038101906106bb9190613bd1565b611505565b005b3480156106ce57600080fd5b506106e960048036038101906106e49190613d78565b6116a8565b005b3480156106f757600080fd5b506107006118e8565b005b34801561070e57600080fd5b50610717611a4d565b6040516107249190613d1d565b60405180910390f35b34801561073957600080fd5b50610742611a77565b60405161074f9190613a30565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a9190613ae1565b611b09565b60405161078c9190613b3c565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b79190613bd1565b611bf4565b6040516107c99190613b3c565b60405180910390f35b3480156107de57600080fd5b506107f960048036038101906107f49190613ae1565b611c4a565b6040516108069190613b3c565b60405180910390f35b34801561081b57600080fd5b50610824611c68565b6040516108319190613985565b60405180910390f35b34801561084657600080fd5b50610861600480360381019061085c9190613db8565b611c6e565b005b34801561086f57600080fd5b50610878611dba565b6040516108859190613d1d565b60405180910390f35b34801561089a57600080fd5b506108b560048036038101906108b09190613d38565b611de0565b005b3480156108c357600080fd5b506108cc611fb5565b6040516108d99190613985565b60405180910390f35b3480156108ee57600080fd5b5061090960048036038101906109049190613d78565b611fbb565b005b34801561091757600080fd5b50610932600480360381019061092d9190613d78565b6120fb565b005b34801561094057600080fd5b5061095b60048036038101906109569190613df8565b61233b565b6040516109689190613985565b60405180910390f35b34801561097d57600080fd5b506109866123c2565b005b34801561099457600080fd5b5061099d61249b565b6040516109aa9190613985565b60405180910390f35b3480156109bf57600080fd5b506109da60048036038101906109d59190613bd1565b6124a1565b005b3480156109e857600080fd5b50610a0360048036038101906109fe9190613bd1565b612667565b005b60135481565b606060038054610a1a90613e67565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4690613e67565b8015610a935780601f10610a6857610100808354040283529160200191610a93565b820191906000526020600020905b815481529060010190602001808311610a7657829003601f168201915b5050505050905090565b6000610ab1610aaa6128cb565b84846128d3565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f60009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ba06128cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c5c5782811015610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e90613f0a565b60405180910390fd5b610c5b85610c536128cb565b8584036128d3565b5b610c67858585612a9c565b60019150509392505050565b610c7b6128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0190613f76565b60405180910390fd5b6064610d14610f41565b600a610d2091906140f8565b610d28610ae1565b610d329190614172565b610d3c9190614172565b811015610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590614215565b60405180910390fd5b610d86610f41565b600a610d9291906140f8565b81610d9d9190614235565b6010819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb5942601054604051610dd49190613985565b60405180910390a150565b610de76128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d90613f76565b60405180910390fd5b600f60009054906101000a900460ff16151581151503610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec2906142e9565b60405180910390fd5b80600f60006101000a81548160ff0219169083151502179055507f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f1600f60009054906101000a900460ff16604051610f239190613b3c565b60405180910390a150565b601260009054906101000a900460ff1681565b60006009905090565b6000610fec610f576128cb565b848460016000610f656128cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fe79190614309565b6128d3565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61108d6128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390613f76565b60405180910390fd5b601260009054906101000a900460ff16151581151503611171576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611168906143af565b60405180910390fd5b80601260006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601260009054906101000a900460ff166040516111c99190613b3c565b60405180910390a150565b60145481565b600a5481565b6111e86128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126e90613f76565b60405180910390fd5b8060098190555081600a81905550602860095411156112cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c290614441565b60405180910390fd5b6028600a541115611311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130890614441565b60405180910390fd5b7f53482196ef67ac615caab1c3eca2c270acbfdcd75e57c5f24c1b98b10c8e6e04600a54600954604051611346929190614461565b60405180910390a15050565b600d60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113b56128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143b90613f76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61150d6128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159390613f76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361160b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611602906144fc565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161169d9190613d1d565b60405180910390a150565b6116b06128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461173f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173690613f76565b60405180910390fd5b801515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036117d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c89061458e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361183f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611836906145fa565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c10826040516118dc9190613b3c565b60405180910390a25050565b6118f06128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197690613f76565b60405180910390fd5b600d60029054906101000a900460ff16156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c690614666565b60405180910390fd5b6001600d60026101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff0219169083151502179055507fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a600d60029054906101000a900460ff16604051611a439190613b3c565b60405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611a8690613e67565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab290613e67565b8015611aff5780601f10611ad457610100808354040283529160200191611aff565b820191906000526020600020905b815481529060010190602001808311611ae257829003601f168201915b5050505050905090565b60008060016000611b186128cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc906146f8565b60405180910390fd5b611be9611be06128cb565b858584036128d3565b600191505092915050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611c5e611c576128cb565b8484612a9c565b6001905092915050565b60105481565b611c766128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfc90613f76565b60405180910390fd5b620f4240611d11610ae1565b611d1b9190614172565b8211611d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d53906147b0565b60405180910390fd5b81600c8190555080600d60016101000a81548160ff0219169083151502179055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600c54604051611dae9190613985565b60405180910390a15050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611de86128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6e90613f76565b60405180910390fd5b6103e8611e82610f41565b600a611e8e91906140f8565b611e96610ae1565b611ea09190614172565b611eaa9190614172565b8210158015611eeb57506103e8611ebf610f41565b600a611ecb91906140f8565b611ed3610ae1565b611edd9190614172565b611ee79190614172565b8110155b611f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2190614842565b60405180910390fd5b611f32610f41565b600a611f3e91906140f8565b82611f499190614235565b601381905550611f57610f41565b600a611f6391906140f8565b81611f6e9190614235565b6014819055507f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131601354601454604051611fa9929190614461565b60405180910390a15050565b60095481565b611fc36128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204990613f76565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120ef9190613b3c565b60405180910390a25050565b6121036128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218990613f76565b60405180910390fd5b801515600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221b9061458e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612292576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612289906145fa565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c8260405161232f9190613b3c565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612452576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612449906148ae565b60405180910390fd5b6001600d60006101000a81548160ff02191690831515021790555061247e61247930611365565b613391565b6000600d60006101000a81548160ff021916908315150217905550565b600c5481565b6124a96128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252f90613f76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259e90614940565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61266f6128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f590613f76565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361276c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612763906149d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127cf576127c9473373ffffffffffffffffffffffffffffffffffffffff1661364890919063ffffffff16565b506128c8565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016128259190613d1d565b602060405180830381865afa158015612842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128669190614a07565b6040518363ffffffff1660e01b8152600401612883929190614a34565b6020604051808303816000875af11580156128a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c69190614a72565b505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293990614b11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a890614ba3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a8f9190613985565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0290614c35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7190614cc7565b60405180910390fd5b600d60029054906101000a900460ff1680612bde5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612c325750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6890614d33565b60405180910390fd5b60008103612c8a57612c8583836000613703565b61338c565b601260009054906101000a900460ff1615612ee057600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612d485750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015612d9e5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612df45750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612edf57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e9857601354811115612e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8a90614dc5565b60405180910390fd5b612ede565b601454811115612edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed490614dc5565b60405180910390fd5b5b5b5b6000612eeb30611365565b90506000600c548210159050808015612f115750600d60009054906101000a900460ff16155b8015612f6a5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015612f8557506000600a54600954612f839190614309565b115b8015612fdb5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ff35750600d60019054906101000a900460ff165b15613038576001600d60006101000a81548160ff02191690831515021790555061301c82613391565b6000600d60006101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130db5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806130f25750600d60009054906101000a900460ff165b1561310057600090506131c5565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361315f5760095490506131c4565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036131be57600a5490506131c3565b600090505b5b5b6000811115613205576000606482866131de9190614235565b6131e89190614172565b905080856131f69190614de5565b9450613203873083613703565b505b600f60009054906101000a900460ff161561337d57600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132be5750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133185750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561337c57600061332886611365565b905060105485826133399190614309565b111561337a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337190614e8b565b60405180910390fd5b505b5b613388868686613703565b5050505b505050565b60004790506000600267ffffffffffffffff8111156133b3576133b2614eab565b5b6040519080825280602002602001820160405280156133e15781602001602082028036833780820191505090505b50905030816000815181106133f9576133f8614eda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c49190614f1e565b816001815181106134d8576134d7614eda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401613576959493929190615044565b600060405180830381600087803b15801561359057600080fd5b505af19250505080156135a1575060015b6135ac575050613645565b600082476135ba9190614de5565b905061360781600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661364890919063ffffffff16565b507f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b8482604051613639929190614461565b60405180910390a15050505b50565b60008147101561368d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613684906150ea565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff16836040516136b39061513b565b60006040518083038185875af1925050503d80600081146136f0576040519150601f19603f3d011682016040523d82523d6000602084013e6136f5565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613772576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613769906151c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d890615254565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161385e906152e6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546138fa9190614309565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161395e9190613985565b60405180910390a350505050565b6000819050919050565b61397f8161396c565b82525050565b600060208201905061399a6000830184613976565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139da5780820151818401526020810190506139bf565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a02826139a0565b613a0c81856139ab565b9350613a1c8185602086016139bc565b613a25816139e6565b840191505092915050565b60006020820190508181036000830152613a4a81846139f7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a8282613a57565b9050919050565b613a9281613a77565b8114613a9d57600080fd5b50565b600081359050613aaf81613a89565b92915050565b613abe8161396c565b8114613ac957600080fd5b50565b600081359050613adb81613ab5565b92915050565b60008060408385031215613af857613af7613a52565b5b6000613b0685828601613aa0565b9250506020613b1785828601613acc565b9150509250929050565b60008115159050919050565b613b3681613b21565b82525050565b6000602082019050613b516000830184613b2d565b92915050565b6000819050919050565b6000613b7c613b77613b7284613a57565b613b57565b613a57565b9050919050565b6000613b8e82613b61565b9050919050565b6000613ba082613b83565b9050919050565b613bb081613b95565b82525050565b6000602082019050613bcb6000830184613ba7565b92915050565b600060208284031215613be757613be6613a52565b5b6000613bf584828501613aa0565b91505092915050565b600080600060608486031215613c1757613c16613a52565b5b6000613c2586828701613aa0565b9350506020613c3686828701613aa0565b9250506040613c4786828701613acc565b9150509250925092565b600060208284031215613c6757613c66613a52565b5b6000613c7584828501613acc565b91505092915050565b613c8781613b21565b8114613c9257600080fd5b50565b600081359050613ca481613c7e565b92915050565b600060208284031215613cc057613cbf613a52565b5b6000613cce84828501613c95565b91505092915050565b600060ff82169050919050565b613ced81613cd7565b82525050565b6000602082019050613d086000830184613ce4565b92915050565b613d1781613a77565b82525050565b6000602082019050613d326000830184613d0e565b92915050565b60008060408385031215613d4f57613d4e613a52565b5b6000613d5d85828601613acc565b9250506020613d6e85828601613acc565b9150509250929050565b60008060408385031215613d8f57613d8e613a52565b5b6000613d9d85828601613aa0565b9250506020613dae85828601613c95565b9150509250929050565b60008060408385031215613dcf57613dce613a52565b5b6000613ddd85828601613acc565b9250506020613dee85828601613c95565b9150509250929050565b60008060408385031215613e0f57613e0e613a52565b5b6000613e1d85828601613aa0565b9250506020613e2e85828601613aa0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e7f57607f821691505b602082108103613e9257613e91613e38565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613ef46028836139ab565b9150613eff82613e98565b604082019050919050565b60006020820190508181036000830152613f2381613ee7565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f606020836139ab565b9150613f6b82613f2a565b602082019050919050565b60006020820190508181036000830152613f8f81613f53565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561401c57808604811115613ff857613ff7613f96565b5b60018516156140075780820291505b808102905061401585613fc5565b9450613fdc565b94509492505050565b60008261403557600190506140f1565b8161404357600090506140f1565b8160018114614059576002811461406357614092565b60019150506140f1565b60ff84111561407557614074613f96565b5b8360020a91508482111561408c5761408b613f96565b5b506140f1565b5060208310610133831016604e8410600b84101617156140c75782820a9050838111156140c2576140c1613f96565b5b6140f1565b6140d48484846001613fd2565b925090508184048111156140eb576140ea613f96565b5b81810290505b9392505050565b60006141038261396c565b915061410e83613cd7565b925061413b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614025565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061417d8261396c565b91506141888361396c565b92508261419857614197614143565b5b828204905092915050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b60006141ff602d836139ab565b915061420a826141a3565b604082019050919050565b6000602082019050818103600083015261422e816141f2565b9050919050565b60006142408261396c565b915061424b8361396c565b92508282026142598161396c565b915082820484148315176142705761426f613f96565b5b5092915050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060008201527f746f207468617420737461746500000000000000000000000000000000000000602082015250565b60006142d3602d836139ab565b91506142de82614277565b604082019050919050565b60006020820190508181036000830152614302816142c6565b9050919050565b60006143148261396c565b915061431f8361396c565b925082820190508082111561433757614336613f96565b5b92915050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b60006143996032836139ab565b91506143a48261433d565b604082019050919050565b600060208201905081810360008301526143c88161438c565b9050919050565b7f43534c543a20546f74616c20466565732063616e6e6f7420657863656564207460008201527f6865206d6178696d756d00000000000000000000000000000000000000000000602082015250565b600061442b602a836139ab565b9150614436826143cf565b604082019050919050565b6000602082019050818103600083015261445a8161441e565b9050919050565b60006040820190506144766000830185613976565b6144836020830184613976565b9392505050565b7f43534c543a204665652072656365697665722063616e6e6f742062652074686560008201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b60006144e6602d836139ab565b91506144f18261448a565b604082019050919050565b60006020820190508181036000830152614515816144d9565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b60006145786024836139ab565b91506145838261451c565b604082019050919050565b600060208201905081810360008301526145a78161456b565b9050919050565b7f43616e277420736574207468697320616464726573732e000000000000000000600082015250565b60006145e46017836139ab565b91506145ef826145ae565b602082019050919050565b60006020820190508181036000830152614613816145d7565b9050919050565b7f43534c543a2054726164696e6720616c726561647920656e61626c65642e0000600082015250565b6000614650601e836139ab565b915061465b8261461a565b602082019050919050565b6000602082019050818103600083015261467f81614643565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006146e26025836139ab565b91506146ed82614686565b604082019050919050565b60006020820190508181036000830152614711816146d5565b9050919050565b7f43534c543a2053776170546f6b656e734174416d6f756e74206d75737420626560008201527f2067726561746572207468616e20302e3030303125206f6620746f74616c207360208201527f7570706c79000000000000000000000000000000000000000000000000000000604082015250565b600061479a6045836139ab565b91506147a582614718565b606082019050919050565b600060208201905081810360008301526147c98161478d565b9050919050565b7f4d6178205472616e73616374696f6e206c696d69742063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b600061482c603f836139ab565b9150614837826147d0565b604082019050919050565b6000602082019050818103600083015261485b8161481f565b9050919050565b7f4e6f7420617574686f72697a6564000000000000000000000000000000000000600082015250565b6000614898600e836139ab565b91506148a382614862565b602082019050919050565b600060208201905081810360008301526148c78161488b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061492a6026836139ab565b9150614935826148ce565b604082019050919050565b600060208201905081810360008301526149598161491d565b9050919050565b7f43534c543a204f776e65722063616e6e6f7420636c61696d20636f6e7472616360008201527f7427732062616c616e6365206f6620697473206f776e20746f6b656e73000000602082015250565b60006149bc603d836139ab565b91506149c782614960565b604082019050919050565b600060208201905081810360008301526149eb816149af565b9050919050565b600081519050614a0181613ab5565b92915050565b600060208284031215614a1d57614a1c613a52565b5b6000614a2b848285016149f2565b91505092915050565b6000604082019050614a496000830185613d0e565b614a566020830184613976565b9392505050565b600081519050614a6c81613c7e565b92915050565b600060208284031215614a8857614a87613a52565b5b6000614a9684828501614a5d565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614afb6024836139ab565b9150614b0682614a9f565b604082019050919050565b60006020820190508181036000830152614b2a81614aee565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b8d6022836139ab565b9150614b9882614b31565b604082019050919050565b60006020820190508181036000830152614bbc81614b80565b9050919050565b7f43534c543a207472616e736665722066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c1f6024836139ab565b9150614c2a82614bc3565b604082019050919050565b60006020820190508181036000830152614c4e81614c12565b9050919050565b7f43534c543a207472616e7366657220746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cb16022836139ab565b9150614cbc82614c55565b604082019050919050565b60006020820190508181036000830152614ce081614ca4565b9050919050565b7f43534c543a2054726164696e67206e6f742079657420656e61626c6564210000600082015250565b6000614d1d601e836139ab565b9150614d2882614ce7565b602082019050919050565b60006020820190508181036000830152614d4c81614d10565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b6000614daf603b836139ab565b9150614dba82614d53565b604082019050919050565b60006020820190508181036000830152614dde81614da2565b9050919050565b6000614df08261396c565b9150614dfb8361396c565b9250828203905081811115614e1357614e12613f96565b5b92915050565b7f4d617857616c6c65743a20526563697069656e7420657863656564732074686560008201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b6000614e756030836139ab565b9150614e8082614e19565b604082019050919050565b60006020820190508181036000830152614ea481614e68565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614f1881613a89565b92915050565b600060208284031215614f3457614f33613a52565b5b6000614f4284828501614f09565b91505092915050565b6000819050919050565b6000614f70614f6b614f6684614f4b565b613b57565b61396c565b9050919050565b614f8081614f55565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614fbb81613a77565b82525050565b6000614fcd8383614fb2565b60208301905092915050565b6000602082019050919050565b6000614ff182614f86565b614ffb8185614f91565b935061500683614fa2565b8060005b8381101561503757815161501e8882614fc1565b975061502983614fd9565b92505060018101905061500a565b5085935050505092915050565b600060a0820190506150596000830188613976565b6150666020830187614f77565b81810360408301526150788186614fe6565b90506150876060830185613d0e565b6150946080830184613976565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006150d4601d836139ab565b91506150df8261509e565b602082019050919050565b60006020820190508181036000830152615103816150c7565b9050919050565b600081905092915050565b50565b600061512560008361510a565b915061513082615115565b600082019050919050565b600061514682615118565b9150819050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151ac6025836139ab565b91506151b782615150565b604082019050919050565b600060208201905081810360008301526151db8161519f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061523e6023836139ab565b9150615249826151e2565b604082019050919050565b6000602082019050818103600083015261526d81615231565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006152d06026836139ab565b91506152db82615274565b604082019050919050565b600060208201905081810360008301526152ff816152c3565b905091905056fea26469706673582212202e0f31026203a0827d95fe8eb06dc97b93266de1952ff3f3d3b1c783dce01a0d64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102605760003560e01c806370a0823111610144578063b1fde9f8116100b6578063d2fcc0011161007a578063d2fcc0011461090b578063dd62ed3e14610934578063df778d2614610971578063e2f4560514610988578063f2fde38b146109b3578063f9d0831a146109dc57610267565b8063b1fde9f81461083a578063b3f0067414610863578063b6f7f6811461088e578063bb8c3ee0146108b7578063c0246668146108e257610267565b80638da5cb5b116101085780638da5cb5b1461070257806395d89b411461072d578063a457c2d714610758578063a8a69b9d14610795578063a9059cbb146107d2578063aa4bde281461080f57610267565b806370a0823114610645578063715018a6146106825780637c08b96414610699578063880bcbc1146106c25780638a8c523c146106eb57610267565b80632ba86bf2116101dd5780634fbee193116101a15780634fbee1931461053557806356a6cabf1461057257806359136fa51461059b57806365048d08146105c65780636db79437146105f15780636ddd17131461061a57610267565b80632ba86bf21461044c578063313ce5671461047757806339509351146104a257806349bd5a5e146104df5780634ada218b1461050a57610267565b806318d9ceae1161022457806318d9ceae1461035557806321a9d82a1461039257806323b872dd146103bd57806327a14fc2146103fa5780632a6c7dba1461042357610267565b80630105d0fd1461026c57806306fdde0314610297578063095ea7b3146102c25780631694505e146102ff57806318160ddd1461032a57610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a05565b60405161028e9190613985565b60405180910390f35b3480156102a357600080fd5b506102ac610a0b565b6040516102b99190613a30565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190613ae1565b610a9d565b6040516102f69190613b3c565b60405180910390f35b34801561030b57600080fd5b50610314610abb565b6040516103219190613bb6565b60405180910390f35b34801561033657600080fd5b5061033f610ae1565b60405161034c9190613985565b60405180910390f35b34801561036157600080fd5b5061037c60048036038101906103779190613bd1565b610aeb565b6040516103899190613b3c565b60405180910390f35b34801561039e57600080fd5b506103a7610b41565b6040516103b49190613b3c565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df9190613bfe565b610b54565b6040516103f19190613b3c565b60405180910390f35b34801561040657600080fd5b50610421600480360381019061041c9190613c51565b610c73565b005b34801561042f57600080fd5b5061044a60048036038101906104459190613caa565b610ddf565b005b34801561045857600080fd5b50610461610f2e565b60405161046e9190613b3c565b60405180910390f35b34801561048357600080fd5b5061048c610f41565b6040516104999190613cf3565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c49190613ae1565b610f4a565b6040516104d69190613b3c565b60405180910390f35b3480156104eb57600080fd5b506104f4610ff6565b6040516105019190613d1d565b60405180910390f35b34801561051657600080fd5b5061051f61101c565b60405161052c9190613b3c565b60405180910390f35b34801561054157600080fd5b5061055c60048036038101906105579190613bd1565b61102f565b6040516105699190613b3c565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190613caa565b611085565b005b3480156105a757600080fd5b506105b06111d4565b6040516105bd9190613985565b60405180910390f35b3480156105d257600080fd5b506105db6111da565b6040516105e89190613985565b60405180910390f35b3480156105fd57600080fd5b5061061860048036038101906106139190613d38565b6111e0565b005b34801561062657600080fd5b5061062f611352565b60405161063c9190613b3c565b60405180910390f35b34801561065157600080fd5b5061066c60048036038101906106679190613bd1565b611365565b6040516106799190613985565b60405180910390f35b34801561068e57600080fd5b506106976113ad565b005b3480156106a557600080fd5b506106c060048036038101906106bb9190613bd1565b611505565b005b3480156106ce57600080fd5b506106e960048036038101906106e49190613d78565b6116a8565b005b3480156106f757600080fd5b506107006118e8565b005b34801561070e57600080fd5b50610717611a4d565b6040516107249190613d1d565b60405180910390f35b34801561073957600080fd5b50610742611a77565b60405161074f9190613a30565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a9190613ae1565b611b09565b60405161078c9190613b3c565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b79190613bd1565b611bf4565b6040516107c99190613b3c565b60405180910390f35b3480156107de57600080fd5b506107f960048036038101906107f49190613ae1565b611c4a565b6040516108069190613b3c565b60405180910390f35b34801561081b57600080fd5b50610824611c68565b6040516108319190613985565b60405180910390f35b34801561084657600080fd5b50610861600480360381019061085c9190613db8565b611c6e565b005b34801561086f57600080fd5b50610878611dba565b6040516108859190613d1d565b60405180910390f35b34801561089a57600080fd5b506108b560048036038101906108b09190613d38565b611de0565b005b3480156108c357600080fd5b506108cc611fb5565b6040516108d99190613985565b60405180910390f35b3480156108ee57600080fd5b5061090960048036038101906109049190613d78565b611fbb565b005b34801561091757600080fd5b50610932600480360381019061092d9190613d78565b6120fb565b005b34801561094057600080fd5b5061095b60048036038101906109569190613df8565b61233b565b6040516109689190613985565b60405180910390f35b34801561097d57600080fd5b506109866123c2565b005b34801561099457600080fd5b5061099d61249b565b6040516109aa9190613985565b60405180910390f35b3480156109bf57600080fd5b506109da60048036038101906109d59190613bd1565b6124a1565b005b3480156109e857600080fd5b50610a0360048036038101906109fe9190613bd1565b612667565b005b60135481565b606060038054610a1a90613e67565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4690613e67565b8015610a935780601f10610a6857610100808354040283529160200191610a93565b820191906000526020600020905b815481529060010190602001808311610a7657829003601f168201915b5050505050905090565b6000610ab1610aaa6128cb565b84846128d3565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f60009054906101000a900460ff1681565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ba06128cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c5c5782811015610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e90613f0a565b60405180910390fd5b610c5b85610c536128cb565b8584036128d3565b5b610c67858585612a9c565b60019150509392505050565b610c7b6128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0190613f76565b60405180910390fd5b6064610d14610f41565b600a610d2091906140f8565b610d28610ae1565b610d329190614172565b610d3c9190614172565b811015610d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7590614215565b60405180910390fd5b610d86610f41565b600a610d9291906140f8565b81610d9d9190614235565b6010819055507f21bc0ea3406acb92d4449ab33befb4ae82f873a22f3b6cf0e466b2710beb5942601054604051610dd49190613985565b60405180910390a150565b610de76128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d90613f76565b60405180910390fd5b600f60009054906101000a900460ff16151581151503610ecb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec2906142e9565b60405180910390fd5b80600f60006101000a81548160ff0219169083151502179055507f670f884265aba2d05e7c26efbc42f8365effc4cb3fcfcefddba0c0b71a6231f1600f60009054906101000a900460ff16604051610f239190613b3c565b60405180910390a150565b601260009054906101000a900460ff1681565b60006009905090565b6000610fec610f576128cb565b848460016000610f656128cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fe79190614309565b6128d3565b6001905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60029054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61108d6128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111390613f76565b60405180910390fd5b601260009054906101000a900460ff16151581151503611171576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611168906143af565b60405180910390fd5b80601260006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf601260009054906101000a900460ff166040516111c99190613b3c565b60405180910390a150565b60145481565b600a5481565b6111e86128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126e90613f76565b60405180910390fd5b8060098190555081600a81905550602860095411156112cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c290614441565b60405180910390fd5b6028600a541115611311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130890614441565b60405180910390fd5b7f53482196ef67ac615caab1c3eca2c270acbfdcd75e57c5f24c1b98b10c8e6e04600a54600954604051611346929190614461565b60405180910390a15050565b600d60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113b56128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143b90613f76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61150d6128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159390613f76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361160b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611602906144fc565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660405161169d9190613d1d565b60405180910390a150565b6116b06128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461173f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173690613f76565b60405180910390fd5b801515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036117d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c89061458e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361183f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611836906145fa565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c10826040516118dc9190613b3c565b60405180910390a25050565b6118f06128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197690613f76565b60405180910390fd5b600d60029054906101000a900460ff16156119cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c690614666565b60405180910390fd5b6001600d60026101000a81548160ff0219169083151502179055506001600d60016101000a81548160ff0219169083151502179055507fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a600d60029054906101000a900460ff16604051611a439190613b3c565b60405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611a8690613e67565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab290613e67565b8015611aff5780601f10611ad457610100808354040283529160200191611aff565b820191906000526020600020905b815481529060010190602001808311611ae257829003601f168201915b5050505050905090565b60008060016000611b186128cb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc906146f8565b60405180910390fd5b611be9611be06128cb565b858584036128d3565b600191505092915050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611c5e611c576128cb565b8484612a9c565b6001905092915050565b60105481565b611c766128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfc90613f76565b60405180910390fd5b620f4240611d11610ae1565b611d1b9190614172565b8211611d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d53906147b0565b60405180910390fd5b81600c8190555080600d60016101000a81548160ff0219169083151502179055507f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145600c54604051611dae9190613985565b60405180910390a15050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611de86128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6e90613f76565b60405180910390fd5b6103e8611e82610f41565b600a611e8e91906140f8565b611e96610ae1565b611ea09190614172565b611eaa9190614172565b8210158015611eeb57506103e8611ebf610f41565b600a611ecb91906140f8565b611ed3610ae1565b611edd9190614172565b611ee79190614172565b8110155b611f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2190614842565b60405180910390fd5b611f32610f41565b600a611f3e91906140f8565b82611f499190614235565b601381905550611f57610f41565b600a611f6391906140f8565b81611f6e9190614235565b6014819055507f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131601354601454604051611fa9929190614461565b60405180910390a15050565b60095481565b611fc36128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204990613f76565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516120ef9190613b3c565b60405180910390a25050565b6121036128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218990613f76565b60405180910390fd5b801515600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221b9061458e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612292576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612289906145fa565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f1d9a11e204b58ad56c619c61600e42167624659d218f0143f1f64956b0daae6c8260405161232f9190613b3c565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612452576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612449906148ae565b60405180910390fd5b6001600d60006101000a81548160ff02191690831515021790555061247e61247930611365565b613391565b6000600d60006101000a81548160ff021916908315150217905550565b600c5481565b6124a96128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252f90613f76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259e90614940565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61266f6128cb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f590613f76565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361276c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612763906149d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127cf576127c9473373ffffffffffffffffffffffffffffffffffffffff1661364890919063ffffffff16565b506128c8565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016128259190613d1d565b602060405180830381865afa158015612842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128669190614a07565b6040518363ffffffff1660e01b8152600401612883929190614a34565b6020604051808303816000875af11580156128a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c69190614a72565b505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293990614b11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a890614ba3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612a8f9190613985565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0290614c35565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7190614cc7565b60405180910390fd5b600d60029054906101000a900460ff1680612bde5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612c325750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6890614d33565b60405180910390fd5b60008103612c8a57612c8583836000613703565b61338c565b601260009054906101000a900460ff1615612ee057600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612d485750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015612d9e5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612df45750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612edf57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e9857601354811115612e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8a90614dc5565b60405180910390fd5b612ede565b601454811115612edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed490614dc5565b60405180910390fd5b5b5b5b6000612eeb30611365565b90506000600c548210159050808015612f115750600d60009054906101000a900460ff16155b8015612f6a5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015612f8557506000600a54600954612f839190614309565b115b8015612fdb5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ff35750600d60019054906101000a900460ff165b15613038576001600d60006101000a81548160ff02191690831515021790555061301c82613391565b6000600d60006101000a81548160ff0219169083151502179055505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130db5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806130f25750600d60009054906101000a900460ff165b1561310057600090506131c5565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361315f5760095490506131c4565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036131be57600a5490506131c3565b600090505b5b5b6000811115613205576000606482866131de9190614235565b6131e89190614172565b905080856131f69190614de5565b9450613203873083613703565b505b600f60009054906101000a900460ff161561337d57600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132be5750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133185750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561337c57600061332886611365565b905060105485826133399190614309565b111561337a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337190614e8b565b60405180910390fd5b505b5b613388868686613703565b5050505b505050565b60004790506000600267ffffffffffffffff8111156133b3576133b2614eab565b5b6040519080825280602002602001820160405280156133e15781602001602082028036833780820191505090505b50905030816000815181106133f9576133f8614eda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c49190614f1e565b816001815181106134d8576134d7614eda565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b8152600401613576959493929190615044565b600060405180830381600087803b15801561359057600080fd5b505af19250505080156135a1575060015b6135ac575050613645565b600082476135ba9190614de5565b905061360781600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661364890919063ffffffff16565b507f54c5e193a68e36b996e0c85b164c5953625d951c488fbad0e67aa32e1c45307b8482604051613639929190614461565b60405180910390a15050505b50565b60008147101561368d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613684906150ea565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff16836040516136b39061513b565b60006040518083038185875af1925050503d80600081146136f0576040519150601f19603f3d011682016040523d82523d6000602084013e6136f5565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613772576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613769906151c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137d890615254565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161385e906152e6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546138fa9190614309565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161395e9190613985565b60405180910390a350505050565b6000819050919050565b61397f8161396c565b82525050565b600060208201905061399a6000830184613976565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139da5780820151818401526020810190506139bf565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a02826139a0565b613a0c81856139ab565b9350613a1c8185602086016139bc565b613a25816139e6565b840191505092915050565b60006020820190508181036000830152613a4a81846139f7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a8282613a57565b9050919050565b613a9281613a77565b8114613a9d57600080fd5b50565b600081359050613aaf81613a89565b92915050565b613abe8161396c565b8114613ac957600080fd5b50565b600081359050613adb81613ab5565b92915050565b60008060408385031215613af857613af7613a52565b5b6000613b0685828601613aa0565b9250506020613b1785828601613acc565b9150509250929050565b60008115159050919050565b613b3681613b21565b82525050565b6000602082019050613b516000830184613b2d565b92915050565b6000819050919050565b6000613b7c613b77613b7284613a57565b613b57565b613a57565b9050919050565b6000613b8e82613b61565b9050919050565b6000613ba082613b83565b9050919050565b613bb081613b95565b82525050565b6000602082019050613bcb6000830184613ba7565b92915050565b600060208284031215613be757613be6613a52565b5b6000613bf584828501613aa0565b91505092915050565b600080600060608486031215613c1757613c16613a52565b5b6000613c2586828701613aa0565b9350506020613c3686828701613aa0565b9250506040613c4786828701613acc565b9150509250925092565b600060208284031215613c6757613c66613a52565b5b6000613c7584828501613acc565b91505092915050565b613c8781613b21565b8114613c9257600080fd5b50565b600081359050613ca481613c7e565b92915050565b600060208284031215613cc057613cbf613a52565b5b6000613cce84828501613c95565b91505092915050565b600060ff82169050919050565b613ced81613cd7565b82525050565b6000602082019050613d086000830184613ce4565b92915050565b613d1781613a77565b82525050565b6000602082019050613d326000830184613d0e565b92915050565b60008060408385031215613d4f57613d4e613a52565b5b6000613d5d85828601613acc565b9250506020613d6e85828601613acc565b9150509250929050565b60008060408385031215613d8f57613d8e613a52565b5b6000613d9d85828601613aa0565b9250506020613dae85828601613c95565b9150509250929050565b60008060408385031215613dcf57613dce613a52565b5b6000613ddd85828601613acc565b9250506020613dee85828601613c95565b9150509250929050565b60008060408385031215613e0f57613e0e613a52565b5b6000613e1d85828601613aa0565b9250506020613e2e85828601613aa0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e7f57607f821691505b602082108103613e9257613e91613e38565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613ef46028836139ab565b9150613eff82613e98565b604082019050919050565b60006020820190508181036000830152613f2381613ee7565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613f606020836139ab565b9150613f6b82613f2a565b602082019050919050565b60006020820190508181036000830152613f8f81613f53565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561401c57808604811115613ff857613ff7613f96565b5b60018516156140075780820291505b808102905061401585613fc5565b9450613fdc565b94509492505050565b60008261403557600190506140f1565b8161404357600090506140f1565b8160018114614059576002811461406357614092565b60019150506140f1565b60ff84111561407557614074613f96565b5b8360020a91508482111561408c5761408b613f96565b5b506140f1565b5060208310610133831016604e8410600b84101617156140c75782820a9050838111156140c2576140c1613f96565b5b6140f1565b6140d48484846001613fd2565b925090508184048111156140eb576140ea613f96565b5b81810290505b9392505050565b60006141038261396c565b915061410e83613cd7565b925061413b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614025565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061417d8261396c565b91506141888361396c565b92508261419857614197614143565b5b828204905092915050565b7f4d61782077616c6c65742070657263656e746167652063616e6e6f742062652060008201527f6c6f776572207468616e20312500000000000000000000000000000000000000602082015250565b60006141ff602d836139ab565b915061420a826141a3565b604082019050919050565b6000602082019050818103600083015261422e816141f2565b9050919050565b60006142408261396c565b915061424b8361396c565b92508282026142598161396c565b915082820484148315176142705761426f613f96565b5b5092915050565b7f4d61782077616c6c6574206c696d697420697320616c7265616479207365742060008201527f746f207468617420737461746500000000000000000000000000000000000000602082015250565b60006142d3602d836139ab565b91506142de82614277565b604082019050919050565b60006020820190508181036000830152614302816142c6565b9050919050565b60006143148261396c565b915061431f8361396c565b925082820190508082111561433757614336613f96565b5b92915050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b60006143996032836139ab565b91506143a48261433d565b604082019050919050565b600060208201905081810360008301526143c88161438c565b9050919050565b7f43534c543a20546f74616c20466565732063616e6e6f7420657863656564207460008201527f6865206d6178696d756d00000000000000000000000000000000000000000000602082015250565b600061442b602a836139ab565b9150614436826143cf565b604082019050919050565b6000602082019050818103600083015261445a8161441e565b9050919050565b60006040820190506144766000830185613976565b6144836020830184613976565b9392505050565b7f43534c543a204665652072656365697665722063616e6e6f742062652074686560008201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b60006144e6602d836139ab565b91506144f18261448a565b604082019050919050565b60006020820190508181036000830152614515816144d9565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b60006145786024836139ab565b91506145838261451c565b604082019050919050565b600060208201905081810360008301526145a78161456b565b9050919050565b7f43616e277420736574207468697320616464726573732e000000000000000000600082015250565b60006145e46017836139ab565b91506145ef826145ae565b602082019050919050565b60006020820190508181036000830152614613816145d7565b9050919050565b7f43534c543a2054726164696e6720616c726561647920656e61626c65642e0000600082015250565b6000614650601e836139ab565b915061465b8261461a565b602082019050919050565b6000602082019050818103600083015261467f81614643565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006146e26025836139ab565b91506146ed82614686565b604082019050919050565b60006020820190508181036000830152614711816146d5565b9050919050565b7f43534c543a2053776170546f6b656e734174416d6f756e74206d75737420626560008201527f2067726561746572207468616e20302e3030303125206f6620746f74616c207360208201527f7570706c79000000000000000000000000000000000000000000000000000000604082015250565b600061479a6045836139ab565b91506147a582614718565b606082019050919050565b600060208201905081810360008301526147c98161478d565b9050919050565b7f4d6178205472616e73616374696f6e206c696d69742063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b600061482c603f836139ab565b9150614837826147d0565b604082019050919050565b6000602082019050818103600083015261485b8161481f565b9050919050565b7f4e6f7420617574686f72697a6564000000000000000000000000000000000000600082015250565b6000614898600e836139ab565b91506148a382614862565b602082019050919050565b600060208201905081810360008301526148c78161488b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061492a6026836139ab565b9150614935826148ce565b604082019050919050565b600060208201905081810360008301526149598161491d565b9050919050565b7f43534c543a204f776e65722063616e6e6f7420636c61696d20636f6e7472616360008201527f7427732062616c616e6365206f6620697473206f776e20746f6b656e73000000602082015250565b60006149bc603d836139ab565b91506149c782614960565b604082019050919050565b600060208201905081810360008301526149eb816149af565b9050919050565b600081519050614a0181613ab5565b92915050565b600060208284031215614a1d57614a1c613a52565b5b6000614a2b848285016149f2565b91505092915050565b6000604082019050614a496000830185613d0e565b614a566020830184613976565b9392505050565b600081519050614a6c81613c7e565b92915050565b600060208284031215614a8857614a87613a52565b5b6000614a9684828501614a5d565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614afb6024836139ab565b9150614b0682614a9f565b604082019050919050565b60006020820190508181036000830152614b2a81614aee565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b8d6022836139ab565b9150614b9882614b31565b604082019050919050565b60006020820190508181036000830152614bbc81614b80565b9050919050565b7f43534c543a207472616e736665722066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c1f6024836139ab565b9150614c2a82614bc3565b604082019050919050565b60006020820190508181036000830152614c4e81614c12565b9050919050565b7f43534c543a207472616e7366657220746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614cb16022836139ab565b9150614cbc82614c55565b604082019050919050565b60006020820190508181036000830152614ce081614ca4565b9050919050565b7f43534c543a2054726164696e67206e6f742079657420656e61626c6564210000600082015250565b6000614d1d601e836139ab565b9150614d2882614ce7565b602082019050919050565b60006020820190508181036000830152614d4c81614d10565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b6000614daf603b836139ab565b9150614dba82614d53565b604082019050919050565b60006020820190508181036000830152614dde81614da2565b9050919050565b6000614df08261396c565b9150614dfb8361396c565b9250828203905081811115614e1357614e12613f96565b5b92915050565b7f4d617857616c6c65743a20526563697069656e7420657863656564732074686560008201527f206d617857616c6c6574416d6f756e7400000000000000000000000000000000602082015250565b6000614e756030836139ab565b9150614e8082614e19565b604082019050919050565b60006020820190508181036000830152614ea481614e68565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614f1881613a89565b92915050565b600060208284031215614f3457614f33613a52565b5b6000614f4284828501614f09565b91505092915050565b6000819050919050565b6000614f70614f6b614f6684614f4b565b613b57565b61396c565b9050919050565b614f8081614f55565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614fbb81613a77565b82525050565b6000614fcd8383614fb2565b60208301905092915050565b6000602082019050919050565b6000614ff182614f86565b614ffb8185614f91565b935061500683614fa2565b8060005b8381101561503757815161501e8882614fc1565b975061502983614fd9565b92505060018101905061500a565b5085935050505092915050565b600060a0820190506150596000830188613976565b6150666020830187614f77565b81810360408301526150788186614fe6565b90506150876060830185613d0e565b6150946080830184613976565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006150d4601d836139ab565b91506150df8261509e565b602082019050919050565b60006020820190508181036000830152615103816150c7565b9050919050565b600081905092915050565b50565b600061512560008361510a565b915061513082615115565b600082019050919050565b600061514682615118565b9150819050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151ac6025836139ab565b91506151b782615150565b604082019050919050565b600060208201905081810360008301526151db8161519f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061523e6023836139ab565b9150615249826151e2565b604082019050919050565b6000602082019050818103600083015261526d81615231565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006152d06026836139ab565b91506152db82615274565b604082019050919050565b600060208201905081810360008301526152ff816152c3565b905091905056fea26469706673582212202e0f31026203a0827d95fe8eb06dc97b93266de1952ff3f3d3b1c783dce01a0d64736f6c63430008130033

Deployed Bytecode Sourcemap

8289:12811:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19168:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4203:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5116:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8371:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4523:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20956:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17576:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5293:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18154:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17866:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19119:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4423:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5874:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8419:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13147:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12210:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19533:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19214:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8550:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12405:362;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8694:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4639:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3392:148;;;;;;;;;;;;;:::i;:::-;;12829:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20549:399;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13182:229;;;;;;;;;;;;;:::i;:::-;;3178:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4311:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6097:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18901:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4774:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17619:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16438:366;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8584:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19852:689;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8519:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12017:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18502:391;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4957:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13419:212;;;;;;;;;;;;;:::i;:::-;;8620:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3548:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11602:407;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19168:39;;;;:::o;4203:100::-;4257:13;4290:5;4283:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4203:100;:::o;5116:169::-;5199:4;5216:39;5225:12;:10;:12::i;:::-;5239:7;5248:6;5216:8;:39::i;:::-;5273:4;5266:11;;5116:169;;;;:::o;8371:41::-;;;;;;;;;;;;;:::o;4523:108::-;4584:7;4611:12;;4604:19;;4523:108;:::o;20956:141::-;21031:4;21055:25;:34;21081:7;21055:34;;;;;;;;;;;;;;;;;;;;;;;;;21048:41;;20956:141;;;:::o;17576:36::-;;;;;;;;;;;;;:::o;5293:573::-;5433:4;5450:24;5477:11;:19;5489:6;5477:19;;;;;;;;;;;;;;;:33;5497:12;:10;:12::i;:::-;5477:33;;;;;;;;;;;;;;;;5450:60;;5545:17;5525:16;:37;5521:265;;5607:6;5587:16;:26;;5579:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5702:57;5711:6;5719:12;:10;:12::i;:::-;5752:6;5733:16;:25;5702:8;:57::i;:::-;5521:265;5798:36;5808:6;5816:9;5827:6;5798:9;:36::i;:::-;5854:4;5847:11;;;5293:573;;;;;:::o;18154:340::-;3315:12;:10;:12::i;:::-;3305:22;;:6;;;;;;;;;;;:22;;;3297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18305:3:::1;18290:10;:8;:10::i;:::-;18284:2;:16;;;;:::i;:::-;18267:13;:11;:13::i;:::-;:34;;;;:::i;:::-;18266:42;;;;:::i;:::-;18246:16;:62;;18238:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;18413:10;:8;:10::i;:::-;18407:2;:16;;;;:::i;:::-;18387;:37;;;;:::i;:::-;18369:15;:55;;;;18442:44;18470:15;;18442:44;;;;;;:::i;:::-;;;;;;;;18154:340:::0;:::o;17866:280::-;3315:12;:10;:12::i;:::-;3305:22;;:6;;;;;;;;;;;:22;;;3297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17960:21:::1;;;;;;;;;;;17950:31;;:6;:31;;::::0;17942:88:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18065:6;18041:21;;:30;;;;;;;;;;;;;;;;;;18089:49;18116:21;;;;;;;;;;;18089:49;;;;;;:::i;:::-;;;;;;;;17866:280:::0;:::o;19119:42::-;;;;;;;;;;;;;:::o;4423:92::-;4481:5;4506:1;4499:8;;4423:92;:::o;5874:215::-;5962:4;5979:80;5988:12;:10;:12::i;:::-;6002:7;6048:10;6011:11;:25;6023:12;:10;:12::i;:::-;6011:25;;;;;;;;;;;;;;;:34;6037:7;6011:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5979:8;:80::i;:::-;6077:4;6070:11;;5874:215;;;;:::o;8419:29::-;;;;;;;;;;;;;:::o;13147:26::-;;;;;;;;;;;;;:::o;12210:125::-;12275:4;12299:19;:28;12319:7;12299:28;;;;;;;;;;;;;;;;;;;;;;;;;12292:35;;12210:125;;;:::o;19533:311::-;3315:12;:10;:12::i;:::-;3305:22;;:6;;;;;;;;;;;:22;;;3297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19632:26:::1;;;;;;;;;;;19622:36;;:6;:36;;::::0;19614:99:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19753:6;19724:26;;:35;;;;;;;;;;;;;;;;;;19777:59;19809:26;;;;;;;;;;;19777:59;;;;;;:::i;:::-;;;;;;;;19533:311:::0;:::o;19214:40::-;;;;:::o;8550:25::-;;;;:::o;12405:362::-;3315:12;:10;:12::i;:::-;3305:22;;:6;;;;;;;;;;;:22;;;3297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12505:9:::1;12494:8;:20;;;;12537:10;12525:9;:22;;;;12580:2;12568:8;;:14;;12560:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12661:2;12648:9;;:15;;12640:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12728:31;12739:9;;12750:8;;12728:31;;;;;;;:::i;:::-;;;;;;;;12405:362:::0;;:::o;8694:26::-;;;;;;;;;;;;;:::o;4639:127::-;4713:7;4740:9;:18;4750:7;4740:18;;;;;;;;;;;;;;;;4733:25;;4639:127;;;:::o;3392:148::-;3315:12;:10;:12::i;:::-;3305:22;;:6;;;;;;;;;;;:22;;;3297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3499:1:::1;3462:40;;3483:6;;;;;;;;;;;3462:40;;;;;;;;;;;;3530:1;3513:6;;:19;;;;;;;;;;;;;;;;;;3392:148::o:0;12829:256::-;3315:12;:10;:12::i;:::-;3305:22;;:6;;;;;;;;;;;:22;;;3297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12939:1:::1;12915:26;;:12;:26;;::::0;12907:84:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13016:12;13002:11;;:26;;;;;;;;;;;;;;;;;;13046:31;13065:11;;;;;;;;;;;13046:31;;;;;;:::i;:::-;;;;;;;;12829:256:::0;:::o;20549:399::-;3315:12;:10;:12::i;:::-;3305:22;;:6;;;;;;;;;;;:22;;;3297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20697:7:::1;20659:45;;:25;:34;20685:7;20659:34;;;;;;;;;;;;;;;;;;;;;;;;;:45;;::::0;20650:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20783:4;20764:24;;:7;:24;;::::0;20756:60:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20866:7;20829:25;:34;20855:7;20829:34;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;20923:7;20891:49;;;20932:7;20891:49;;;;;;:::i;:::-;;;;;;;;20549:399:::0;;:::o;13182:229::-;3315:12;:10;:12::i;:::-;3305:22;;:6;;;;;;;;;;;:22;;;3297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13245:14:::1;;;;;;;;;;;13244:15;13236:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13322:4;13305:14;;:21;;;;;;;;;;;;;;;;;;13351:4;13337:11;;:18;;;;;;;;;;;;;;;;;;13373:30;13388:14;;;;;;;;;;;13373:30;;;;;;:::i;:::-;;;;;;;;13182:229::o:0;3178:79::-;3216:7;3243:6;;;;;;;;;;;3236:13;;3178:79;:::o;4311:104::-;4367:13;4400:7;4393:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4311:104;:::o;6097:413::-;6190:4;6207:24;6234:11;:25;6246:12;:10;:12::i;:::-;6234:25;;;;;;;;;;;;;;;:34;6260:7;6234:34;;;;;;;;;;;;;;;;6207:61;;6307:15;6287:16;:35;;6279:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6400:67;6409:12;:10;:12::i;:::-;6423:7;6451:15;6432:16;:34;6400:8;:67::i;:::-;6498:4;6491:11;;;6097:413;;;;:::o;18901:145::-;18976:4;19000:29;:38;19030:7;19000:38;;;;;;;;;;;;;;;;;;;;;;;;;18993:45;;18901:145;;;:::o;4774:175::-;4860:4;4877:42;4887:12;:10;:12::i;:::-;4901:9;4912:6;4877:9;:42::i;:::-;4937:4;4930:11;;4774:175;;;;:::o;17619:30::-;;;;:::o;16438:366::-;3315:12;:10;:12::i;:::-;3305:22;;:6;;;;;;;;;;;:22;;;3297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16572:9:::1;16556:13;:11;:13::i;:::-;:25;;;;:::i;:::-;16544:9;:37;16536:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;16687:9;16666:18;:30;;;;16721:12;16707:11;;:26;;;;;;;;;;;;;;;;;;16751:45;16777:18;;16751:45;;;;;;:::i;:::-;;;;;;;;16438:366:::0;;:::o;8584:27::-;;;;;;;;;;;;;:::o;19852:689::-;3315:12;:10;:12::i;:::-;3305:22;;:6;;;;;;;;;;;:22;;;3297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20075:5:::1;20060:10;:8;:10::i;:::-;20054:2;:16;;;;:::i;:::-;20037:13;:11;:13::i;:::-;:34;;;;:::i;:::-;20036:44;;;;:::i;:::-;20007:24;:73;;:164;;;;;20166:5;20151:10;:8;:10::i;:::-;20145:2;:16;;;;:::i;:::-;20128:13;:11;:13::i;:::-;:34;;;;:::i;:::-;20127:44;;;;:::i;:::-;20098:25;:73;;20007:164;19985:278;;;;;;;;;;;;:::i;:::-;;;;;;;;;20337:10;:8;:10::i;:::-;20331:2;:16;;;;:::i;:::-;20302:24;:46;;;;:::i;:::-;20275:23;:73;;;;20421:10;:8;:10::i;:::-;20415:2;:16;;;;:::i;:::-;20386:25;:46;;;;:::i;:::-;20359:24;:73;;;;20450:83;20483:23;;20508:24;;20450:83;;;;;;;:::i;:::-;;;;;;;;19852:689:::0;;:::o;8519:24::-;;;;:::o;12017:185::-;3315:12;:10;:12::i;:::-;3305:22;;:6;;;;;;;;;;;:22;;;3297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12134:8:::1;12103:19;:28;12123:7;12103:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;12176:7;12160:34;;;12185:8;12160:34;;;;;;:::i;:::-;;;;;;;;12017:185:::0;;:::o;18502:391::-;3315:12;:10;:12::i;:::-;3305:22;;:6;;;;;;;;;;;:22;;;3297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18644:7:::1;18602:49;;:29;:38;18632:7;18602:38;;;;;;;;;;;;;;;;;;;;;;;;;:49;;::::0;18593:98:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18729:4;18710:24;;:7;:24;;::::0;18702:60:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18816:7;18775:29;:38;18805:7;18775:38;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;18868:7;18841:44;;;18877:7;18841:44;;;;;;:::i;:::-;;;;;;;;18502:391:::0;;:::o;4957:151::-;5046:7;5073:11;:18;5085:5;5073:18;;;;;;;;;;;;;;;:27;5092:7;5073:27;;;;;;;;;;;;;;;;5066:34;;4957:151;;;;:::o;13419:212::-;13482:11;;;;;;;;;;;13468:25;;:10;:25;;;13460:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;13536:4;13525:8;;:15;;;;;;;;;;;;;;;;;;13551:40;13566:24;13584:4;13566:9;:24::i;:::-;13551:14;:40::i;:::-;13618:5;13607:8;;:16;;;;;;;;;;;;;;;;;;13419:212::o;8620:34::-;;;;:::o;3548:244::-;3315:12;:10;:12::i;:::-;3305:22;;:6;;;;;;;;;;;:22;;;3297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3657:1:::1;3637:22;;:8;:22;;::::0;3629:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3747:8;3718:38;;3739:6;;;;;;;;;;;3718:38;;;;;;;;;;;;3776:8;3767:6;;:17;;;;;;;;;;;;;;;;;;3548:244:::0;:::o;11602:407::-;3315:12;:10;:12::i;:::-;3305:22;;:6;;;;;;;;;;;:22;;;3297:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11698:4:::1;11681:22;;:5;:22;;::::0;11673:96:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11801:3;11784:21;;:5;:21;;::::0;11780:127:::1;;11822:52;11852:21;11830:10;11822:29;;;;:52;;;;:::i;:::-;;11889:7;;11780:127;11934:5;11927:22;;;11950:10;11969:5;11962:23;;;11994:4;11962:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11927:74;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3375:1;11602:407:::0;:::o;2501:98::-;2554:7;2581:10;2574:17;;2501:98;:::o;7902:380::-;8055:1;8038:19;;:5;:19;;;8030:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8136:1;8117:21;;:7;:21;;;8109:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8220:6;8190:11;:18;8202:5;8190:18;;;;;;;;;;;;;;;:27;8209:7;8190:27;;;;;;;;;;;;;;;:36;;;;8258:7;8242:32;;8251:5;8242:32;;;8267:6;8242:32;;;;;;:::i;:::-;;;;;;;;7902:380;;;:::o;13639:2791::-;13752:1;13736:18;;:4;:18;;;13728:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13828:1;13814:16;;:2;:16;;;13806:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;13888:14;;;;;;;;;;;:43;;;;13906:19;:25;13926:4;13906:25;;;;;;;;;;;;;;;;;;;;;;;;;13888:43;:70;;;;13935:19;:23;13955:2;13935:23;;;;;;;;;;;;;;;;;;;;;;;;;13888:70;13880:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;14027:1;14017:6;:11;14013:93;;14045:28;14061:4;14067:2;14071:1;14045:15;:28::i;:::-;14088:7;;14013:93;14122:26;;;;;;;;;;;14118:752;;;14188:13;;;;;;;;;;;14180:21;;:4;:21;;;:44;;;;14211:13;;;;;;;;;;;14205:19;;:2;:19;;;14180:44;14179:99;;;;;14247:25;:31;14273:4;14247:31;;;;;;;;;;;;;;;;;;;;;;;;;14246:32;14179:99;:151;;;;;14301:25;:29;14327:2;14301:29;;;;;;;;;;;;;;;;;;;;;;;;;14300:30;14179:151;14175:684;;;14377:13;;;;;;;;;;;14369:21;;:4;:21;;;14365:479;;14459:23;;14449:6;:33;;14415:180;;;;;;;;;;;;:::i;:::-;;;;;;;;;14365:479;;;14688:24;;14678:6;:34;;14644:180;;;;;;;;;;;;:::i;:::-;;;;;;;;;14365:479;14175:684;14118:752;14882:28;14913:24;14931:4;14913:9;:24::i;:::-;14882:55;;14950:12;14989:18;;14965:20;:42;;14950:57;;15024:7;:33;;;;;15049:8;;;;;;;;;;;15048:9;15024:33;:69;;;;;15080:13;;;;;;;;;;;15074:19;;:2;:19;;;15024:69;:110;;;;;15133:1;15121:9;;15110:8;;:20;;;;:::i;:::-;:24;15024:110;:153;;;;;15152:19;:25;15172:4;15152:25;;;;;;;;;;;;;;;;;;;;;;;;;15151:26;15024:153;:181;;;;;15194:11;;;;;;;;;;;15024:181;15020:330;;;15243:4;15232:8;;:15;;;;;;;;;;;;;;;;;;15264:36;15279:20;15264:14;:36::i;:::-;15333:5;15322:8;;:16;;;;;;;;;;;;;;;;;;15020:330;15362:18;15395:19;:25;15415:4;15395:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;15424:19;:23;15444:2;15424:23;;;;;;;;;;;;;;;;;;;;;;;;;15395:52;:64;;;;15451:8;;;;;;;;;;;15395:64;15391:320;;;15489:1;15476:14;;15391:320;;;15520:13;;;;;;;;;;;15512:21;;:4;:21;;;15508:203;;15563:8;;15550:21;;15508:203;;;15599:13;;;;;;;;;;;15593:19;;:2;:19;;;15589:122;;15643:9;;15629:23;;15589:122;;;15698:1;15685:14;;15589:122;15508:203;15391:320;15740:1;15727:10;:14;15723:183;;;15758:12;15797:3;15783:10;15774:6;:19;;;;:::i;:::-;15773:27;;;;:::i;:::-;15758:42;;15833:4;15824:6;:13;;;;:::i;:::-;15815:22;;15852:42;15868:4;15882;15889;15852:15;:42::i;:::-;15743:163;15723:183;15922:21;;;;;;;;;;;15918:459;;;15975:29;:35;16005:4;15975:35;;;;;;;;;;;;;;;;;;;;;;;;;15974:36;:92;;;;;16033:29;:33;16063:2;16033:33;;;;;;;;;;;;;;;;;;;;;;;;;16032:34;15974:92;:132;;;;;16093:13;;;;;;;;;;;16087:19;;:2;:19;;;;15974:132;15970:396;;;16141:15;16160:13;16170:2;16160:9;:13::i;:::-;16141:32;;16242:15;;16232:6;16222:7;:16;;;;:::i;:::-;:35;;16192:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;16122:244;15970:396;15918:459;16389:33;16405:4;16411:2;16415:6;16389:15;:33::i;:::-;13717:2713;;;13639:2791;;;;:::o;16812:687::-;16876:22;16901:21;16876:46;;16935:21;16973:1;16959:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16935:40;;17004:4;16986;16991:1;16986:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17030:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17020:4;17025:1;17020:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;17069:15;;;;;;;;;;;:66;;;17150:11;17176:1;17192:4;17219;17239:15;17069:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17065:243;;17290:7;;;;17065:243;17320:18;17365:14;17341:21;:38;;;;:::i;:::-;17320:59;;17392:42;17423:10;17400:11;;;;;;;;;;;17392:30;;;;:42;;;;:::i;:::-;;17452:39;17467:11;17480:10;17452:39;;;;;;;:::i;:::-;;;;;;;;16865:634;;;16812:687;;:::o;2176:285::-;2255:4;2304:6;2279:21;:31;;2271:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2358:12;2376:9;:14;;2398:6;2376:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2357:52;;;2427:7;2420:14;;;2176:285;;;;:::o;6518:614::-;6676:1;6658:20;;:6;:20;;;6650:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6760:1;6739:23;;:9;:23;;;6731:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6815:21;6839:9;:17;6849:6;6839:17;;;;;;;;;;;;;;;;6815:41;;6892:6;6875:13;:23;;6867:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7013:6;6997:13;:22;6977:9;:17;6987:6;6977:17;;;;;;;;;;;;;;;:42;;;;7065:6;7041:9;:20;7051:9;7041:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7106:9;7089:35;;7098:6;7089:35;;;7117:6;7089:35;;;;;;:::i;:::-;;;;;;;;6639:493;6518:614;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:151::-;4219:9;4252:37;4283:5;4252:37;:::i;:::-;4239:50;;4144:151;;;:::o;4301:181::-;4413:62;4469:5;4413:62;:::i;:::-;4408:3;4401:75;4301:181;;:::o;4488:272::-;4606:4;4644:2;4633:9;4629:18;4621:26;;4657:96;4750:1;4739:9;4735:17;4726:6;4657:96;:::i;:::-;4488:272;;;;:::o;4766:329::-;4825:6;4874:2;4862:9;4853:7;4849:23;4845:32;4842:119;;;4880:79;;:::i;:::-;4842:119;5000:1;5025:53;5070:7;5061:6;5050:9;5046:22;5025:53;:::i;:::-;5015:63;;4971:117;4766:329;;;;:::o;5101:619::-;5178:6;5186;5194;5243:2;5231:9;5222:7;5218:23;5214:32;5211:119;;;5249:79;;:::i;:::-;5211:119;5369:1;5394:53;5439:7;5430:6;5419:9;5415:22;5394:53;:::i;:::-;5384:63;;5340:117;5496:2;5522:53;5567:7;5558:6;5547:9;5543:22;5522:53;:::i;:::-;5512:63;;5467:118;5624:2;5650:53;5695:7;5686:6;5675:9;5671:22;5650:53;:::i;:::-;5640:63;;5595:118;5101:619;;;;;:::o;5726:329::-;5785:6;5834:2;5822:9;5813:7;5809:23;5805:32;5802:119;;;5840:79;;:::i;:::-;5802:119;5960:1;5985:53;6030:7;6021:6;6010:9;6006:22;5985:53;:::i;:::-;5975:63;;5931:117;5726:329;;;;:::o;6061:116::-;6131:21;6146:5;6131:21;:::i;:::-;6124:5;6121:32;6111:60;;6167:1;6164;6157:12;6111:60;6061:116;:::o;6183:133::-;6226:5;6264:6;6251:20;6242:29;;6280:30;6304:5;6280:30;:::i;:::-;6183:133;;;;:::o;6322:323::-;6378:6;6427:2;6415:9;6406:7;6402:23;6398:32;6395:119;;;6433:79;;:::i;:::-;6395:119;6553:1;6578:50;6620:7;6611:6;6600:9;6596:22;6578:50;:::i;:::-;6568:60;;6524:114;6322:323;;;;:::o;6651:86::-;6686:7;6726:4;6719:5;6715:16;6704:27;;6651:86;;;:::o;6743:112::-;6826:22;6842:5;6826:22;:::i;:::-;6821:3;6814:35;6743:112;;:::o;6861:214::-;6950:4;6988:2;6977:9;6973:18;6965:26;;7001:67;7065:1;7054:9;7050:17;7041:6;7001:67;:::i;:::-;6861:214;;;;:::o;7081:118::-;7168:24;7186:5;7168:24;:::i;:::-;7163:3;7156:37;7081:118;;:::o;7205:222::-;7298:4;7336:2;7325:9;7321:18;7313:26;;7349:71;7417:1;7406:9;7402:17;7393:6;7349:71;:::i;:::-;7205:222;;;;:::o;7433:474::-;7501:6;7509;7558:2;7546:9;7537:7;7533:23;7529:32;7526:119;;;7564:79;;:::i;:::-;7526:119;7684:1;7709:53;7754:7;7745:6;7734:9;7730:22;7709:53;:::i;:::-;7699:63;;7655:117;7811:2;7837:53;7882:7;7873:6;7862:9;7858:22;7837:53;:::i;:::-;7827:63;;7782:118;7433:474;;;;;:::o;7913:468::-;7978:6;7986;8035:2;8023:9;8014:7;8010:23;8006:32;8003:119;;;8041:79;;:::i;:::-;8003:119;8161:1;8186:53;8231:7;8222:6;8211:9;8207:22;8186:53;:::i;:::-;8176:63;;8132:117;8288:2;8314:50;8356:7;8347:6;8336:9;8332:22;8314:50;:::i;:::-;8304:60;;8259:115;7913:468;;;;;:::o;8387:::-;8452:6;8460;8509:2;8497:9;8488:7;8484:23;8480:32;8477:119;;;8515:79;;:::i;:::-;8477:119;8635:1;8660:53;8705:7;8696:6;8685:9;8681:22;8660:53;:::i;:::-;8650:63;;8606:117;8762:2;8788:50;8830:7;8821:6;8810:9;8806:22;8788:50;:::i;:::-;8778:60;;8733:115;8387:468;;;;;:::o;8861:474::-;8929:6;8937;8986:2;8974:9;8965:7;8961:23;8957:32;8954:119;;;8992:79;;:::i;:::-;8954:119;9112:1;9137:53;9182:7;9173:6;9162:9;9158:22;9137:53;:::i;:::-;9127:63;;9083:117;9239:2;9265:53;9310:7;9301:6;9290:9;9286:22;9265:53;:::i;:::-;9255:63;;9210:118;8861:474;;;;;:::o;9341:180::-;9389:77;9386:1;9379:88;9486:4;9483:1;9476:15;9510:4;9507:1;9500:15;9527:320;9571:6;9608:1;9602:4;9598:12;9588:22;;9655:1;9649:4;9645:12;9676:18;9666:81;;9732:4;9724:6;9720:17;9710:27;;9666:81;9794:2;9786:6;9783:14;9763:18;9760:38;9757:84;;9813:18;;:::i;:::-;9757:84;9578:269;9527:320;;;:::o;9853:227::-;9993:34;9989:1;9981:6;9977:14;9970:58;10062:10;10057:2;10049:6;10045:15;10038:35;9853:227;:::o;10086:366::-;10228:3;10249:67;10313:2;10308:3;10249:67;:::i;:::-;10242:74;;10325:93;10414:3;10325:93;:::i;:::-;10443:2;10438:3;10434:12;10427:19;;10086:366;;;:::o;10458:419::-;10624:4;10662:2;10651:9;10647:18;10639:26;;10711:9;10705:4;10701:20;10697:1;10686:9;10682:17;10675:47;10739:131;10865:4;10739:131;:::i;:::-;10731:139;;10458:419;;;:::o;10883:182::-;11023:34;11019:1;11011:6;11007:14;11000:58;10883:182;:::o;11071:366::-;11213:3;11234:67;11298:2;11293:3;11234:67;:::i;:::-;11227:74;;11310:93;11399:3;11310:93;:::i;:::-;11428:2;11423:3;11419:12;11412:19;;11071:366;;;:::o;11443:419::-;11609:4;11647:2;11636:9;11632:18;11624:26;;11696:9;11690:4;11686:20;11682:1;11671:9;11667:17;11660:47;11724:131;11850:4;11724:131;:::i;:::-;11716:139;;11443:419;;;:::o;11868:180::-;11916:77;11913:1;11906:88;12013:4;12010:1;12003:15;12037:4;12034:1;12027:15;12054:102;12096:8;12143:5;12140:1;12136:13;12115:34;;12054:102;;;:::o;12162:848::-;12223:5;12230:4;12254:6;12245:15;;12278:5;12269:14;;12292:712;12313:1;12303:8;12300:15;12292:712;;;12408:4;12403:3;12399:14;12393:4;12390:24;12387:50;;;12417:18;;:::i;:::-;12387:50;12467:1;12457:8;12453:16;12450:451;;;12882:4;12875:5;12871:16;12862:25;;12450:451;12932:4;12926;12922:15;12914:23;;12962:32;12985:8;12962:32;:::i;:::-;12950:44;;12292:712;;;12162:848;;;;;;;:::o;13016:1073::-;13070:5;13261:8;13251:40;;13282:1;13273:10;;13284:5;;13251:40;13310:4;13300:36;;13327:1;13318:10;;13329:5;;13300:36;13396:4;13444:1;13439:27;;;;13480:1;13475:191;;;;13389:277;;13439:27;13457:1;13448:10;;13459:5;;;13475:191;13520:3;13510:8;13507:17;13504:43;;;13527:18;;:::i;:::-;13504:43;13576:8;13573:1;13569:16;13560:25;;13611:3;13604:5;13601:14;13598:40;;;13618:18;;:::i;:::-;13598:40;13651:5;;;13389:277;;13775:2;13765:8;13762:16;13756:3;13750:4;13747:13;13743:36;13725:2;13715:8;13712:16;13707:2;13701:4;13698:12;13694:35;13678:111;13675:246;;;13831:8;13825:4;13821:19;13812:28;;13866:3;13859:5;13856:14;13853:40;;;13873:18;;:::i;:::-;13853:40;13906:5;;13675:246;13946:42;13984:3;13974:8;13968:4;13965:1;13946:42;:::i;:::-;13931:57;;;;14020:4;14015:3;14011:14;14004:5;14001:25;13998:51;;;14029:18;;:::i;:::-;13998:51;14078:4;14071:5;14067:16;14058:25;;13016:1073;;;;;;:::o;14095:281::-;14153:5;14177:23;14195:4;14177:23;:::i;:::-;14169:31;;14221:25;14237:8;14221:25;:::i;:::-;14209:37;;14265:104;14302:66;14292:8;14286:4;14265:104;:::i;:::-;14256:113;;14095:281;;;;:::o;14382:180::-;14430:77;14427:1;14420:88;14527:4;14524:1;14517:15;14551:4;14548:1;14541:15;14568:185;14608:1;14625:20;14643:1;14625:20;:::i;:::-;14620:25;;14659:20;14677:1;14659:20;:::i;:::-;14654:25;;14698:1;14688:35;;14703:18;;:::i;:::-;14688:35;14745:1;14742;14738:9;14733:14;;14568:185;;;;:::o;14759:232::-;14899:34;14895:1;14887:6;14883:14;14876:58;14968:15;14963:2;14955:6;14951:15;14944:40;14759:232;:::o;14997:366::-;15139:3;15160:67;15224:2;15219:3;15160:67;:::i;:::-;15153:74;;15236:93;15325:3;15236:93;:::i;:::-;15354:2;15349:3;15345:12;15338:19;;14997:366;;;:::o;15369:419::-;15535:4;15573:2;15562:9;15558:18;15550:26;;15622:9;15616:4;15612:20;15608:1;15597:9;15593:17;15586:47;15650:131;15776:4;15650:131;:::i;:::-;15642:139;;15369:419;;;:::o;15794:410::-;15834:7;15857:20;15875:1;15857:20;:::i;:::-;15852:25;;15891:20;15909:1;15891:20;:::i;:::-;15886:25;;15946:1;15943;15939:9;15968:30;15986:11;15968:30;:::i;:::-;15957:41;;16147:1;16138:7;16134:15;16131:1;16128:22;16108:1;16101:9;16081:83;16058:139;;16177:18;;:::i;:::-;16058:139;15842:362;15794:410;;;;:::o;16210:232::-;16350:34;16346:1;16338:6;16334:14;16327:58;16419:15;16414:2;16406:6;16402:15;16395:40;16210:232;:::o;16448:366::-;16590:3;16611:67;16675:2;16670:3;16611:67;:::i;:::-;16604:74;;16687:93;16776:3;16687:93;:::i;:::-;16805:2;16800:3;16796:12;16789:19;;16448:366;;;:::o;16820:419::-;16986:4;17024:2;17013:9;17009:18;17001:26;;17073:9;17067:4;17063:20;17059:1;17048:9;17044:17;17037:47;17101:131;17227:4;17101:131;:::i;:::-;17093:139;;16820:419;;;:::o;17245:191::-;17285:3;17304:20;17322:1;17304:20;:::i;:::-;17299:25;;17338:20;17356:1;17338:20;:::i;:::-;17333:25;;17381:1;17378;17374:9;17367:16;;17402:3;17399:1;17396:10;17393:36;;;17409:18;;:::i;:::-;17393:36;17245:191;;;;:::o;17442:237::-;17582:34;17578:1;17570:6;17566:14;17559:58;17651:20;17646:2;17638:6;17634:15;17627:45;17442:237;:::o;17685:366::-;17827:3;17848:67;17912:2;17907:3;17848:67;:::i;:::-;17841:74;;17924:93;18013:3;17924:93;:::i;:::-;18042:2;18037:3;18033:12;18026:19;;17685:366;;;:::o;18057:419::-;18223:4;18261:2;18250:9;18246:18;18238:26;;18310:9;18304:4;18300:20;18296:1;18285:9;18281:17;18274:47;18338:131;18464:4;18338:131;:::i;:::-;18330:139;;18057:419;;;:::o;18482:229::-;18622:34;18618:1;18610:6;18606:14;18599:58;18691:12;18686:2;18678:6;18674:15;18667:37;18482:229;:::o;18717:366::-;18859:3;18880:67;18944:2;18939:3;18880:67;:::i;:::-;18873:74;;18956:93;19045:3;18956:93;:::i;:::-;19074:2;19069:3;19065:12;19058:19;;18717:366;;;:::o;19089:419::-;19255:4;19293:2;19282:9;19278:18;19270:26;;19342:9;19336:4;19332:20;19328:1;19317:9;19313:17;19306:47;19370:131;19496:4;19370:131;:::i;:::-;19362:139;;19089:419;;;:::o;19514:332::-;19635:4;19673:2;19662:9;19658:18;19650:26;;19686:71;19754:1;19743:9;19739:17;19730:6;19686:71;:::i;:::-;19767:72;19835:2;19824:9;19820:18;19811:6;19767:72;:::i;:::-;19514:332;;;;;:::o;19852:232::-;19992:34;19988:1;19980:6;19976:14;19969:58;20061:15;20056:2;20048:6;20044:15;20037:40;19852:232;:::o;20090:366::-;20232:3;20253:67;20317:2;20312:3;20253:67;:::i;:::-;20246:74;;20329:93;20418:3;20329:93;:::i;:::-;20447:2;20442:3;20438:12;20431:19;;20090:366;;;:::o;20462:419::-;20628:4;20666:2;20655:9;20651:18;20643:26;;20715:9;20709:4;20705:20;20701:1;20690:9;20686:17;20679:47;20743:131;20869:4;20743:131;:::i;:::-;20735:139;;20462:419;;;:::o;20887:223::-;21027:34;21023:1;21015:6;21011:14;21004:58;21096:6;21091:2;21083:6;21079:15;21072:31;20887:223;:::o;21116:366::-;21258:3;21279:67;21343:2;21338:3;21279:67;:::i;:::-;21272:74;;21355:93;21444:3;21355:93;:::i;:::-;21473:2;21468:3;21464:12;21457:19;;21116:366;;;:::o;21488:419::-;21654:4;21692:2;21681:9;21677:18;21669:26;;21741:9;21735:4;21731:20;21727:1;21716:9;21712:17;21705:47;21769:131;21895:4;21769:131;:::i;:::-;21761:139;;21488:419;;;:::o;21913:173::-;22053:25;22049:1;22041:6;22037:14;22030:49;21913:173;:::o;22092:366::-;22234:3;22255:67;22319:2;22314:3;22255:67;:::i;:::-;22248:74;;22331:93;22420:3;22331:93;:::i;:::-;22449:2;22444:3;22440:12;22433:19;;22092:366;;;:::o;22464:419::-;22630:4;22668:2;22657:9;22653:18;22645:26;;22717:9;22711:4;22707:20;22703:1;22692:9;22688:17;22681:47;22745:131;22871:4;22745:131;:::i;:::-;22737:139;;22464:419;;;:::o;22889:180::-;23029:32;23025:1;23017:6;23013:14;23006:56;22889:180;:::o;23075:366::-;23217:3;23238:67;23302:2;23297:3;23238:67;:::i;:::-;23231:74;;23314:93;23403:3;23314:93;:::i;:::-;23432:2;23427:3;23423:12;23416:19;;23075:366;;;:::o;23447:419::-;23613:4;23651:2;23640:9;23636:18;23628:26;;23700:9;23694:4;23690:20;23686:1;23675:9;23671:17;23664:47;23728:131;23854:4;23728:131;:::i;:::-;23720:139;;23447:419;;;:::o;23872:224::-;24012:34;24008:1;24000:6;23996:14;23989:58;24081:7;24076:2;24068:6;24064:15;24057:32;23872:224;:::o;24102:366::-;24244:3;24265:67;24329:2;24324:3;24265:67;:::i;:::-;24258:74;;24341:93;24430:3;24341:93;:::i;:::-;24459:2;24454:3;24450:12;24443:19;;24102:366;;;:::o;24474:419::-;24640:4;24678:2;24667:9;24663:18;24655:26;;24727:9;24721:4;24717:20;24713:1;24702:9;24698:17;24691:47;24755:131;24881:4;24755:131;:::i;:::-;24747:139;;24474:419;;;:::o;24899:293::-;25039:34;25035:1;25027:6;25023:14;25016:58;25108:34;25103:2;25095:6;25091:15;25084:59;25177:7;25172:2;25164:6;25160:15;25153:32;24899:293;:::o;25198:366::-;25340:3;25361:67;25425:2;25420:3;25361:67;:::i;:::-;25354:74;;25437:93;25526:3;25437:93;:::i;:::-;25555:2;25550:3;25546:12;25539:19;;25198:366;;;:::o;25570:419::-;25736:4;25774:2;25763:9;25759:18;25751:26;;25823:9;25817:4;25813:20;25809:1;25798:9;25794:17;25787:47;25851:131;25977:4;25851:131;:::i;:::-;25843:139;;25570:419;;;:::o;25995:250::-;26135:34;26131:1;26123:6;26119:14;26112:58;26204:33;26199:2;26191:6;26187:15;26180:58;25995:250;:::o;26251:366::-;26393:3;26414:67;26478:2;26473:3;26414:67;:::i;:::-;26407:74;;26490:93;26579:3;26490:93;:::i;:::-;26608:2;26603:3;26599:12;26592:19;;26251:366;;;:::o;26623:419::-;26789:4;26827:2;26816:9;26812:18;26804:26;;26876:9;26870:4;26866:20;26862:1;26851:9;26847:17;26840:47;26904:131;27030:4;26904:131;:::i;:::-;26896:139;;26623:419;;;:::o;27048:164::-;27188:16;27184:1;27176:6;27172:14;27165:40;27048:164;:::o;27218:366::-;27360:3;27381:67;27445:2;27440:3;27381:67;:::i;:::-;27374:74;;27457:93;27546:3;27457:93;:::i;:::-;27575:2;27570:3;27566:12;27559:19;;27218:366;;;:::o;27590:419::-;27756:4;27794:2;27783:9;27779:18;27771:26;;27843:9;27837:4;27833:20;27829:1;27818:9;27814:17;27807:47;27871:131;27997:4;27871:131;:::i;:::-;27863:139;;27590:419;;;:::o;28015:225::-;28155:34;28151:1;28143:6;28139:14;28132:58;28224:8;28219:2;28211:6;28207:15;28200:33;28015:225;:::o;28246:366::-;28388:3;28409:67;28473:2;28468:3;28409:67;:::i;:::-;28402:74;;28485:93;28574:3;28485:93;:::i;:::-;28603:2;28598:3;28594:12;28587:19;;28246:366;;;:::o;28618:419::-;28784:4;28822:2;28811:9;28807:18;28799:26;;28871:9;28865:4;28861:20;28857:1;28846:9;28842:17;28835:47;28899:131;29025:4;28899:131;:::i;:::-;28891:139;;28618:419;;;:::o;29043:248::-;29183:34;29179:1;29171:6;29167:14;29160:58;29252:31;29247:2;29239:6;29235:15;29228:56;29043:248;:::o;29297:366::-;29439:3;29460:67;29524:2;29519:3;29460:67;:::i;:::-;29453:74;;29536:93;29625:3;29536:93;:::i;:::-;29654:2;29649:3;29645:12;29638:19;;29297:366;;;:::o;29669:419::-;29835:4;29873:2;29862:9;29858:18;29850:26;;29922:9;29916:4;29912:20;29908:1;29897:9;29893:17;29886:47;29950:131;30076:4;29950:131;:::i;:::-;29942:139;;29669:419;;;:::o;30094:143::-;30151:5;30182:6;30176:13;30167:22;;30198:33;30225:5;30198:33;:::i;:::-;30094:143;;;;:::o;30243:351::-;30313:6;30362:2;30350:9;30341:7;30337:23;30333:32;30330:119;;;30368:79;;:::i;:::-;30330:119;30488:1;30513:64;30569:7;30560:6;30549:9;30545:22;30513:64;:::i;:::-;30503:74;;30459:128;30243:351;;;;:::o;30600:332::-;30721:4;30759:2;30748:9;30744:18;30736:26;;30772:71;30840:1;30829:9;30825:17;30816:6;30772:71;:::i;:::-;30853:72;30921:2;30910:9;30906:18;30897:6;30853:72;:::i;:::-;30600:332;;;;;:::o;30938:137::-;30992:5;31023:6;31017:13;31008:22;;31039:30;31063:5;31039:30;:::i;:::-;30938:137;;;;:::o;31081:345::-;31148:6;31197:2;31185:9;31176:7;31172:23;31168:32;31165:119;;;31203:79;;:::i;:::-;31165:119;31323:1;31348:61;31401:7;31392:6;31381:9;31377:22;31348:61;:::i;:::-;31338:71;;31294:125;31081:345;;;;:::o;31432:223::-;31572:34;31568:1;31560:6;31556:14;31549:58;31641:6;31636:2;31628:6;31624:15;31617:31;31432:223;:::o;31661:366::-;31803:3;31824:67;31888:2;31883:3;31824:67;:::i;:::-;31817:74;;31900:93;31989:3;31900:93;:::i;:::-;32018:2;32013:3;32009:12;32002:19;;31661:366;;;:::o;32033:419::-;32199:4;32237:2;32226:9;32222:18;32214:26;;32286:9;32280:4;32276:20;32272:1;32261:9;32257:17;32250:47;32314:131;32440:4;32314:131;:::i;:::-;32306:139;;32033:419;;;:::o;32458:221::-;32598:34;32594:1;32586:6;32582:14;32575:58;32667:4;32662:2;32654:6;32650:15;32643:29;32458:221;:::o;32685:366::-;32827:3;32848:67;32912:2;32907:3;32848:67;:::i;:::-;32841:74;;32924:93;33013:3;32924:93;:::i;:::-;33042:2;33037:3;33033:12;33026:19;;32685:366;;;:::o;33057:419::-;33223:4;33261:2;33250:9;33246:18;33238:26;;33310:9;33304:4;33300:20;33296:1;33285:9;33281:17;33274:47;33338:131;33464:4;33338:131;:::i;:::-;33330:139;;33057:419;;;:::o;33482:223::-;33622:34;33618:1;33610:6;33606:14;33599:58;33691:6;33686:2;33678:6;33674:15;33667:31;33482:223;:::o;33711:366::-;33853:3;33874:67;33938:2;33933:3;33874:67;:::i;:::-;33867:74;;33950:93;34039:3;33950:93;:::i;:::-;34068:2;34063:3;34059:12;34052:19;;33711:366;;;:::o;34083:419::-;34249:4;34287:2;34276:9;34272:18;34264:26;;34336:9;34330:4;34326:20;34322:1;34311:9;34307:17;34300:47;34364:131;34490:4;34364:131;:::i;:::-;34356:139;;34083:419;;;:::o;34508:221::-;34648:34;34644:1;34636:6;34632:14;34625:58;34717:4;34712:2;34704:6;34700:15;34693:29;34508:221;:::o;34735:366::-;34877:3;34898:67;34962:2;34957:3;34898:67;:::i;:::-;34891:74;;34974:93;35063:3;34974:93;:::i;:::-;35092:2;35087:3;35083:12;35076:19;;34735:366;;;:::o;35107:419::-;35273:4;35311:2;35300:9;35296:18;35288:26;;35360:9;35354:4;35350:20;35346:1;35335:9;35331:17;35324:47;35388:131;35514:4;35388:131;:::i;:::-;35380:139;;35107:419;;;:::o;35532:180::-;35672:32;35668:1;35660:6;35656:14;35649:56;35532:180;:::o;35718:366::-;35860:3;35881:67;35945:2;35940:3;35881:67;:::i;:::-;35874:74;;35957:93;36046:3;35957:93;:::i;:::-;36075:2;36070:3;36066:12;36059:19;;35718:366;;;:::o;36090:419::-;36256:4;36294:2;36283:9;36279:18;36271:26;;36343:9;36337:4;36333:20;36329:1;36318:9;36314:17;36307:47;36371:131;36497:4;36371:131;:::i;:::-;36363:139;;36090:419;;;:::o;36515:246::-;36655:34;36651:1;36643:6;36639:14;36632:58;36724:29;36719:2;36711:6;36707:15;36700:54;36515:246;:::o;36767:366::-;36909:3;36930:67;36994:2;36989:3;36930:67;:::i;:::-;36923:74;;37006:93;37095:3;37006:93;:::i;:::-;37124:2;37119:3;37115:12;37108:19;;36767:366;;;:::o;37139:419::-;37305:4;37343:2;37332:9;37328:18;37320:26;;37392:9;37386:4;37382:20;37378:1;37367:9;37363:17;37356:47;37420:131;37546:4;37420:131;:::i;:::-;37412:139;;37139:419;;;:::o;37564:194::-;37604:4;37624:20;37642:1;37624:20;:::i;:::-;37619:25;;37658:20;37676:1;37658:20;:::i;:::-;37653:25;;37702:1;37699;37695:9;37687:17;;37726:1;37720:4;37717:11;37714:37;;;37731:18;;:::i;:::-;37714:37;37564:194;;;;:::o;37764:235::-;37904:34;37900:1;37892:6;37888:14;37881:58;37973:18;37968:2;37960:6;37956:15;37949:43;37764:235;:::o;38005:366::-;38147:3;38168:67;38232:2;38227:3;38168:67;:::i;:::-;38161:74;;38244:93;38333:3;38244:93;:::i;:::-;38362:2;38357:3;38353:12;38346:19;;38005:366;;;:::o;38377:419::-;38543:4;38581:2;38570:9;38566:18;38558:26;;38630:9;38624:4;38620:20;38616:1;38605:9;38601:17;38594:47;38658:131;38784:4;38658:131;:::i;:::-;38650:139;;38377:419;;;:::o;38802:180::-;38850:77;38847:1;38840:88;38947:4;38944:1;38937:15;38971:4;38968:1;38961:15;38988:180;39036:77;39033:1;39026:88;39133:4;39130:1;39123:15;39157:4;39154:1;39147:15;39174:143;39231:5;39262:6;39256:13;39247:22;;39278:33;39305:5;39278:33;:::i;:::-;39174:143;;;;:::o;39323:351::-;39393:6;39442:2;39430:9;39421:7;39417:23;39413:32;39410:119;;;39448:79;;:::i;:::-;39410:119;39568:1;39593:64;39649:7;39640:6;39629:9;39625:22;39593:64;:::i;:::-;39583:74;;39539:128;39323:351;;;;:::o;39680:85::-;39725:7;39754:5;39743:16;;39680:85;;;:::o;39771:158::-;39829:9;39862:61;39880:42;39889:32;39915:5;39889:32;:::i;:::-;39880:42;:::i;:::-;39862:61;:::i;:::-;39849:74;;39771:158;;;:::o;39935:147::-;40030:45;40069:5;40030:45;:::i;:::-;40025:3;40018:58;39935:147;;:::o;40088:114::-;40155:6;40189:5;40183:12;40173:22;;40088:114;;;:::o;40208:184::-;40307:11;40341:6;40336:3;40329:19;40381:4;40376:3;40372:14;40357:29;;40208:184;;;;:::o;40398:132::-;40465:4;40488:3;40480:11;;40518:4;40513:3;40509:14;40501:22;;40398:132;;;:::o;40536:108::-;40613:24;40631:5;40613:24;:::i;:::-;40608:3;40601:37;40536:108;;:::o;40650:179::-;40719:10;40740:46;40782:3;40774:6;40740:46;:::i;:::-;40818:4;40813:3;40809:14;40795:28;;40650:179;;;;:::o;40835:113::-;40905:4;40937;40932:3;40928:14;40920:22;;40835:113;;;:::o;40984:732::-;41103:3;41132:54;41180:5;41132:54;:::i;:::-;41202:86;41281:6;41276:3;41202:86;:::i;:::-;41195:93;;41312:56;41362:5;41312:56;:::i;:::-;41391:7;41422:1;41407:284;41432:6;41429:1;41426:13;41407:284;;;41508:6;41502:13;41535:63;41594:3;41579:13;41535:63;:::i;:::-;41528:70;;41621:60;41674:6;41621:60;:::i;:::-;41611:70;;41467:224;41454:1;41451;41447:9;41442:14;;41407:284;;;41411:14;41707:3;41700:10;;41108:608;;;40984:732;;;;:::o;41722:831::-;41985:4;42023:3;42012:9;42008:19;42000:27;;42037:71;42105:1;42094:9;42090:17;42081:6;42037:71;:::i;:::-;42118:80;42194:2;42183:9;42179:18;42170:6;42118:80;:::i;:::-;42245:9;42239:4;42235:20;42230:2;42219:9;42215:18;42208:48;42273:108;42376:4;42367:6;42273:108;:::i;:::-;42265:116;;42391:72;42459:2;42448:9;42444:18;42435:6;42391:72;:::i;:::-;42473:73;42541:3;42530:9;42526:19;42517:6;42473:73;:::i;:::-;41722:831;;;;;;;;:::o;42559:179::-;42699:31;42695:1;42687:6;42683:14;42676:55;42559:179;:::o;42744:366::-;42886:3;42907:67;42971:2;42966:3;42907:67;:::i;:::-;42900:74;;42983:93;43072:3;42983:93;:::i;:::-;43101:2;43096:3;43092:12;43085:19;;42744:366;;;:::o;43116:419::-;43282:4;43320:2;43309:9;43305:18;43297:26;;43369:9;43363:4;43359:20;43355:1;43344:9;43340:17;43333:47;43397:131;43523:4;43397:131;:::i;:::-;43389:139;;43116:419;;;:::o;43541:147::-;43642:11;43679:3;43664:18;;43541:147;;;;:::o;43694:114::-;;:::o;43814:398::-;43973:3;43994:83;44075:1;44070:3;43994:83;:::i;:::-;43987:90;;44086:93;44175:3;44086:93;:::i;:::-;44204:1;44199:3;44195:11;44188:18;;43814:398;;;:::o;44218:379::-;44402:3;44424:147;44567:3;44424:147;:::i;:::-;44417:154;;44588:3;44581:10;;44218:379;;;:::o;44603:224::-;44743:34;44739:1;44731:6;44727:14;44720:58;44812:7;44807:2;44799:6;44795:15;44788:32;44603:224;:::o;44833:366::-;44975:3;44996:67;45060:2;45055:3;44996:67;:::i;:::-;44989:74;;45072:93;45161:3;45072:93;:::i;:::-;45190:2;45185:3;45181:12;45174:19;;44833:366;;;:::o;45205:419::-;45371:4;45409:2;45398:9;45394:18;45386:26;;45458:9;45452:4;45448:20;45444:1;45433:9;45429:17;45422:47;45486:131;45612:4;45486:131;:::i;:::-;45478:139;;45205:419;;;:::o;45630:222::-;45770:34;45766:1;45758:6;45754:14;45747:58;45839:5;45834:2;45826:6;45822:15;45815:30;45630:222;:::o;45858:366::-;46000:3;46021:67;46085:2;46080:3;46021:67;:::i;:::-;46014:74;;46097:93;46186:3;46097:93;:::i;:::-;46215:2;46210:3;46206:12;46199:19;;45858:366;;;:::o;46230:419::-;46396:4;46434:2;46423:9;46419:18;46411:26;;46483:9;46477:4;46473:20;46469:1;46458:9;46454:17;46447:47;46511:131;46637:4;46511:131;:::i;:::-;46503:139;;46230:419;;;:::o;46655:225::-;46795:34;46791:1;46783:6;46779:14;46772:58;46864:8;46859:2;46851:6;46847:15;46840:33;46655:225;:::o;46886:366::-;47028:3;47049:67;47113:2;47108:3;47049:67;:::i;:::-;47042:74;;47125:93;47214:3;47125:93;:::i;:::-;47243:2;47238:3;47234:12;47227:19;;46886:366;;;:::o;47258:419::-;47424:4;47462:2;47451:9;47447:18;47439:26;;47511:9;47505:4;47501:20;47497:1;47486:9;47482:17;47475:47;47539:131;47665:4;47539:131;:::i;:::-;47531:139;;47258:419;;;:::o

Swarm Source

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