ETH Price: $3,381.79 (-1.90%)
Gas: 3 Gwei

Token

Voidz (VDZ)
 

Overview

Max Total Supply

100,000,000 VDZ

Holders

5,170 (0.00%)

Market

Price

$0.00 @ 0.000001 ETH (-1.06%)

Onchain Market Cap

$320,928.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
11,347.831973745506182154 VDZ

Value
$36.42 ( ~0.0107694537002911 Eth) [0.0113%]
0xB7e82C204B2D24357B97E9763AaCfB6512d47339
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

The Nexus Gateway is an integral component of our product suite, designed to democratize asset ownership and create the perfect environment for digital asset trading. Infinite tokenization awaits

Market

Volume (24H):$18.75
Market Capitalization:$0.00
Circulating Supply:0.00 VDZ
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Voidz

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
/*

VoidZ - Tokenization of Gaming Assets for Players and GPU Rental for Gaming Studios

Website: https://voidz.app/
Twitter/X: https://twitter.com/VoidZToken
Whitepaper: https://voidz.gitbook.io/voidz
TG: https://t.me/VoidZtoken

*/
pragma solidity 0.8.12;

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

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

interface IERC20 {
    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);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

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

contract Voidz is ERC20, Ownable {

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

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public TreasuryAddress;
    address public EcosystemAddress;

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

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyLiquidityFee;
    uint256 public buyRewardsFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellLiquidityFee;
    uint256 public sellRewardsFee;

    uint256 public tokensForTreasury;
    uint256 public tokensForLiquidity;
    uint256 public tokensForRewards;


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

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

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

    event EnabledTrading(bool tradingActive);
    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedTreasuryAddress(address indexed newWallet);

    event UpdatedEcosystemAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

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

    event TransferForeignToken(address token, uint256 amount);


    constructor() ERC20("Voidz", "VDZ") {

        address newOwner = msg.sender; 

        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 100000000 * 1e18;

        maxBuyAmount = totalSupply *  5 / 1000;
        maxSellAmount = totalSupply *  5 / 1000;
        maxWalletAmount = totalSupply * 10 / 1000;
        swapTokensAtAmount = totalSupply * 50 / 100000; 

        buyTreasuryFee = 2;
        buyLiquidityFee = 0;
        buyRewardsFee = 3;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyRewardsFee;

        sellTreasuryFee = 20;
        sellLiquidityFee = 10;
        sellRewardsFee = 20;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellRewardsFee;

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

        TreasuryAddress = address(0xfb4b03dfC856FFe43472C98bB9126f92c4585bef);
        EcosystemAddress = address(0xF06E41193C5abD8664586C3061fB01Eafded0B19);

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

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

    receive() external payable {}

    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }
    
    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }


    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

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

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

    function updateSwapThreshold(uint256 newAmount) public  {
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        swapTokensAtAmount = newAmount* (10**18);
    }


    function transferForeignToken(address _token, address _to) public returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

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

    function updateBuyFees(uint256 _treasuryFee, uint256 _liquidityFee, uint256 _rewardsFee) external onlyOwner {
        buyTreasuryFee = _treasuryFee;
        buyLiquidityFee = _liquidityFee;
        buyRewardsFee = _rewardsFee;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyRewardsFee;
        require(buyTotalFees <= 30, "Fees must be 30%  or less");
    }

    function updateSellFees(uint256 _treasuryFee, uint256 _liquidityFee, uint256 _rewardsFee) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellLiquidityFee = _liquidityFee;
        sellRewardsFee = _rewardsFee;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellRewardsFee;
        require(sellTotalFees <= 30, "Fees must be 30%  or less");
    }

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


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

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");


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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        uint256 penaltyAmount = 0;

        // only take fees on Trades, not on wallet transfers
        if(takeFee){       
            if(tradingActiveBlock>0 && (tradingActiveBlock + 1) > block.number){
                penaltyAmount = amount * 10 / 100;
                super._transfer(from, EcosystemAddress, penaltyAmount);
            }
            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForTreasury += fees * sellTreasuryFee / sellTotalFees;
                tokensForRewards += fees * sellRewardsFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForTreasury += fees * buyTreasuryFee / buyTotalFees;
                tokensForRewards += fees * buyRewardsFee / buyTotalFees;
            }  
            if(fees > 0){
                super._transfer(from, address(this), fees);
            }
            amount -= fees + penaltyAmount;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

     // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot re enable trading");
        tradingActive = true;
        swapEnabled = true;
        emit EnabledTrading(tradingActive);

        if (tradingActive && tradingActiveBlock == 0) {
            tradingActiveBlock = block.number;
        }
    }

    function setTreasuryAddress(address _TreasuryAddress) external onlyOwner {
        require(_TreasuryAddress != address(0), "_TreasuryAddress address cannot be 0");
        TreasuryAddress = payable(_TreasuryAddress);
        emit UpdatedTreasuryAddress(_TreasuryAddress);
    }

    function setEcosystemAddress(address _EcosystemAddress) external onlyOwner {
        require(_EcosystemAddress != address(0), "_EcosystemAddress address cannot be 0");
        EcosystemAddress = payable(_EcosystemAddress);
        emit UpdatedEcosystemAddress(_EcosystemAddress);
    }
   
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForTreasury + tokensForRewards;

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

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

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForTreasury = ethBalance * tokensForTreasury / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForRewards = ethBalance * tokensForRewards / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForTreasury + ethForRewards;

        tokensForLiquidity = 0;
        tokensForTreasury = 0;
        tokensForRewards = 0;

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

        (success,) = address(EcosystemAddress).call{value: ethForRewards}("");

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingActive","type":"bool"}],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedEcosystemAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[],"name":"EcosystemAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TreasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_EcosystemAddress","type":"address"}],"name":"setEcosystemAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_TreasuryAddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600d556001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055503480156200006757600080fd5b506040518060400160405280600581526020017f566f69647a0000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f56445a00000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000ec92919062000c2e565b5080600490805190602001906200010592919062000c2e565b50505060006200011a6200066a60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ea8160016200067260201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000d48565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e919062000d48565b6040518363ffffffff1660e01b81526004016200033d92919062000d8b565b6020604051808303816000875af11580156200035d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000383919062000d48565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003cb60a05160016200070860201b60201c565b60006a52b7d2dcc80cd2e400000090506103e8600582620003ed919062000df1565b620003f9919062000e81565b6006819055506103e860058262000411919062000df1565b6200041d919062000e81565b6007819055506103e8600a8262000435919062000df1565b62000441919062000e81565b600881905550620186a06032826200045a919062000df1565b62000466919062000e81565b600a8190555060026010819055506000601181905550600360128190555060125460115460105462000499919062000eb9565b620004a5919062000eb9565b600f8190555060148081905550600a6015819055506014601681905550601654601554601454620004d7919062000eb9565b620004e3919062000eb9565b601381905550620004fc8360016200067260201b60201c565b6200050f3060016200067260201b60201c565b6200052461dead60016200067260201b60201c565b73fb4b03dfc856ffe43472c98bb9126f92c4585bef600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f06e41193c5abd8664586c3061fb01eafded0b19600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005e1836001620007bb60201b60201c565b620005f4306001620007bb60201b60201c565b6200060961dead6001620007bb60201b60201c565b6200063e600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007bb60201b60201c565b6200065083826200090860201b60201c565b620006618362000a5960201b60201c565b5050506200119d565b600033905090565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620006fc92919062000f33565b60405180910390a15050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200077182826200067260201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620007cb6200066a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200085d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008549062000fc1565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008fc919062000fe3565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200097b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009729062001050565b60405180910390fd5b80600260008282546200098f919062000eb9565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009e6919062000eb9565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a4d919062001083565b60405180910390a35050565b62000a696200066a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000afb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000af29062000fc1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000b6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b659062001116565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b82805462000c3c9062001167565b90600052602060002090601f01602090048101928262000c60576000855562000cac565b82601f1062000c7b57805160ff191683800117855562000cac565b8280016001018555821562000cac579182015b8281111562000cab57825182559160200191906001019062000c8e565b5b50905062000cbb919062000cbf565b5090565b5b8082111562000cda57600081600090555060010162000cc0565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d108262000ce3565b9050919050565b62000d228162000d03565b811462000d2e57600080fd5b50565b60008151905062000d428162000d17565b92915050565b60006020828403121562000d615762000d6062000cde565b5b600062000d718482850162000d31565b91505092915050565b62000d858162000d03565b82525050565b600060408201905062000da2600083018562000d7a565b62000db1602083018462000d7a565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000dfe8262000db8565b915062000e0b8362000db8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e475762000e4662000dc2565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e8e8262000db8565b915062000e9b8362000db8565b92508262000eae5762000ead62000e52565b5b828204905092915050565b600062000ec68262000db8565b915062000ed38362000db8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000f0b5762000f0a62000dc2565b5b828201905092915050565b60008115159050919050565b62000f2d8162000f16565b82525050565b600060408201905062000f4a600083018562000d7a565b62000f59602083018462000f22565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fa960208362000f60565b915062000fb68262000f71565b602082019050919050565b6000602082019050818103600083015262000fdc8162000f9a565b9050919050565b600060208201905062000ffa600083018462000f22565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001038601f8362000f60565b9150620010458262001000565b602082019050919050565b600060208201905081810360008301526200106b8162001029565b9050919050565b6200107d8162000db8565b82525050565b60006020820190506200109a600083018462001072565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620010fe60268362000f60565b91506200110b82620010a0565b604082019050919050565b600060208201905081810360008301526200113181620010ef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200118057607f821691505b6020821081141562001197576200119662001138565b5b50919050565b60805160a0516158d1620011f4600039600081816110b9015281816115eb0152611d44015260008181610d7501528181613e6601528181613f4701528181613f6e0152818161400a015261403101526158d16000f3fe6080604052600436106103395760003560e01c806388e765ff116101ab578063c17b5b8c116100f7578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610c0d578063f54afa7814610c36578063f5648a4f14610c61578063f637434214610c7857610340565b8063e2f4560514610b8c578063ee40166e14610bb7578063f11a24d314610be257610340565b8063cc2ffe7c116100d1578063cc2ffe7c14610ad0578063d85ba06314610afb578063dc3f0d0f14610b26578063dd62ed3e14610b4f57610340565b8063c17b5b8c14610a55578063c18bc19514610a7e578063cc274b2914610aa757610340565b8063a8e01b2811610164578063b62496f51161013e578063b62496f514610999578063bb8d5131146109d6578063bbc0c74214610a01578063c024666814610a2c57610340565b8063a8e01b2814610908578063a9059cbb14610931578063aa4bde281461096e57610340565b806388e765ff1461080a5780638a8c523c146108355780638da5cb5b1461084c57806395d89b41146108775780639a7a23d6146108a2578063a457c2d7146108cb57610340565b80635c068a8c11610285578063715018a61161022357806377a3b609116101fd57806377a3b6091461074e5780638013f73a146107795780638095d564146107a45780638366e79a146107cd57610340565b8063715018a6146106f7578063751039fc1461070e5780637571336a1461072557610340565b80636a486a8e1161025f5780636a486a8e146106395780636b2fb124146106645780636ddd17131461068f57806370a08231146106ba57610340565b80635c068a8c146105ba5780636605bfda146105e557806366d602ae1461060e57610340565b806323b872dd116102f257806339509351116102cc57806339509351146104fc57806349bd5a5e146105395780634a62bb65146105645780635b5c251f1461058f57610340565b806323b872dd1461046b5780632be32b61146104a8578063313ce567146104d157610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad5780631694505e146103ea57806318160ddd146104155780631a8145bb1461044057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ca3565b604051610367919061417e565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190614239565b610d35565b6040516103a49190614294565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf91906142af565b610d53565b6040516103e19190614294565b60405180910390f35b3480156103f657600080fd5b506103ff610d73565b60405161040c919061433b565b60405180910390f35b34801561042157600080fd5b5061042a610d97565b6040516104379190614365565b60405180910390f35b34801561044c57600080fd5b50610455610da1565b6040516104629190614365565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d9190614380565b610da7565b60405161049f9190614294565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca91906143d3565b610e9f565b005b3480156104dd57600080fd5b506104e6611002565b6040516104f3919061441c565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e9190614239565b61100b565b6040516105309190614294565b60405180910390f35b34801561054557600080fd5b5061054e6110b7565b60405161055b9190614446565b60405180910390f35b34801561057057600080fd5b506105796110db565b6040516105869190614294565b60405180910390f35b34801561059b57600080fd5b506105a46110ee565b6040516105b19190614446565b60405180910390f35b3480156105c657600080fd5b506105cf611114565b6040516105dc9190614365565b60405180910390f35b3480156105f157600080fd5b5061060c600480360381019061060791906142af565b61111a565b005b34801561061a57600080fd5b506106236112a8565b6040516106309190614365565b60405180910390f35b34801561064557600080fd5b5061064e6112ae565b60405161065b9190614365565b60405180910390f35b34801561067057600080fd5b506106796112b4565b6040516106869190614365565b60405180910390f35b34801561069b57600080fd5b506106a46112ba565b6040516106b19190614294565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc91906142af565b6112cd565b6040516106ee9190614365565b60405180910390f35b34801561070357600080fd5b5061070c611315565b005b34801561071a57600080fd5b5061072361146d565b005b34801561073157600080fd5b5061074c6004803603810190610747919061448d565b61154d565b005b34801561075a57600080fd5b506107636116d4565b6040516107709190614365565b60405180910390f35b34801561078557600080fd5b5061078e6116da565b60405161079b9190614446565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c691906144cd565b611700565b005b3480156107d957600080fd5b506107f460048036038101906107ef9190614520565b61181a565b6040516108019190614294565b60405180910390f35b34801561081657600080fd5b5061081f611a59565b60405161082c9190614365565b60405180910390f35b34801561084157600080fd5b5061084a611a5f565b005b34801561085857600080fd5b50610861611bef565b60405161086e9190614446565b60405180910390f35b34801561088357600080fd5b5061088c611c19565b604051610899919061417e565b60405180910390f35b3480156108ae57600080fd5b506108c960048036038101906108c4919061448d565b611cab565b005b3480156108d757600080fd5b506108f260048036038101906108ed9190614239565b611ddf565b6040516108ff9190614294565b60405180910390f35b34801561091457600080fd5b5061092f600480360381019061092a91906142af565b611eca565b005b34801561093d57600080fd5b5061095860048036038101906109539190614239565b612058565b6040516109659190614294565b60405180910390f35b34801561097a57600080fd5b50610983612076565b6040516109909190614365565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb91906142af565b61207c565b6040516109cd9190614294565b60405180910390f35b3480156109e257600080fd5b506109eb61209c565b6040516109f89190614365565b60405180910390f35b348015610a0d57600080fd5b50610a166120a2565b604051610a239190614294565b60405180910390f35b348015610a3857600080fd5b50610a536004803603810190610a4e919061448d565b6120b5565b005b348015610a6157600080fd5b50610a7c6004803603810190610a7791906144cd565b6121f5565b005b348015610a8a57600080fd5b50610aa56004803603810190610aa091906143d3565b61230f565b005b348015610ab357600080fd5b50610ace6004803603810190610ac991906143d3565b612472565b005b348015610adc57600080fd5b50610ae561251f565b604051610af29190614365565b60405180910390f35b348015610b0757600080fd5b50610b10612525565b604051610b1d9190614365565b60405180910390f35b348015610b3257600080fd5b50610b4d6004803603810190610b4891906143d3565b61252b565b005b348015610b5b57600080fd5b50610b766004803603810190610b719190614520565b61268e565b604051610b839190614365565b60405180910390f35b348015610b9857600080fd5b50610ba1612715565b604051610bae9190614365565b60405180910390f35b348015610bc357600080fd5b50610bcc61271b565b604051610bd99190614365565b60405180910390f35b348015610bee57600080fd5b50610bf7612721565b604051610c049190614365565b60405180910390f35b348015610c1957600080fd5b50610c346004803603810190610c2f91906142af565b612727565b005b348015610c4257600080fd5b50610c4b6128ee565b604051610c589190614365565b60405180910390f35b348015610c6d57600080fd5b50610c766128f4565b005b348015610c8457600080fd5b50610c8d6129f5565b604051610c9a9190614365565b60405180910390f35b606060038054610cb29061458f565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde9061458f565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b6000610d49610d426129fb565b8484612a03565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60185481565b6000610db4848484612bce565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dff6129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7690614633565b60405180910390fd5b610e9385610e8b6129fb565b858403612a03565b60019150509392505050565b610ea76129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d9061469f565b60405180910390fd5b670de0b6b3a76400006103e86001610f4c610d97565b610f5691906146ee565b610f609190614777565b610f6a9190614777565b811015610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa39061481a565b60405180910390fd5b670de0b6b3a764000081610fc091906146ee565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610ff79190614365565b60405180910390a150565b60006012905090565b60006110ad6110186129fb565b8484600160006110266129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110a8919061483a565b612a03565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6111226129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a89061469f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890614902565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60075481565b60135481565b60145481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61131d6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a39061469f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114756129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb9061469f565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6115556129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db9061469f565b60405180910390fd5b80611679577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f90614994565b60405180910390fd5b5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117086129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e9061469f565b60405180910390fd5b8260108190555081601181905550806012819055506012546011546010546117bf919061483a565b6117c9919061483a565b600f81905550601e600f541115611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c90614a00565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290614a6c565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191290614afe565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119569190614446565b602060405180830381865afa158015611973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119979190614b33565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016119d4929190614b60565b6020604051808303816000875af11580156119f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a179190614b9e565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611a4a929190614b60565b60405180910390a15092915050565b60065481565b611a676129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aed9061469f565b60405180910390fd5b600e60019054906101000a900460ff1615611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90614c17565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089600e60019054906101000a900460ff16604051611bba9190614294565b60405180910390a1600e60019054906101000a900460ff168015611be057506000600d54145b15611bed5743600d819055505b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611c289061458f565b80601f0160208091040260200160405190810160405280929190818152602001828054611c549061458f565b8015611ca15780601f10611c7657610100808354040283529160200191611ca1565b820191906000526020600020905b815481529060010190602001808311611c8457829003601f168201915b5050505050905090565b611cb36129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d399061469f565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc890614ca9565b60405180910390fd5b611ddb8282613780565b5050565b60008060016000611dee6129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea290614d3b565b60405180910390fd5b611ebf611eb66129fb565b85858403612a03565b600191505092915050565b611ed26129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f589061469f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc890614dcd565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f3a687f29cd2e7ea2126d7cf7ad8c5facb38ce4a43cc356eb40f9fb6e628172e560405160405180910390a250565b600061206c6120656129fb565b8484612bce565b6001905092915050565b60085481565b601c6020528060005260406000206000915054906101000a900460ff1681565b60165481565b600e60019054906101000a900460ff1681565b6120bd6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461214c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121439061469f565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121e99190614294565b60405180910390a25050565b6121fd6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122839061469f565b60405180910390fd5b8260148190555081601581905550806016819055506016546015546014546122b4919061483a565b6122be919061483a565b601381905550601e601354111561230a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230190614a00565b60405180910390fd5b505050565b6123176129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239d9061469f565b60405180910390fd5b670de0b6b3a76400006103e860036123bc610d97565b6123c691906146ee565b6123d09190614777565b6123da9190614777565b81101561241c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241390614e5f565b60405180910390fd5b670de0b6b3a76400008161243091906146ee565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516124679190614365565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f990614afe565b60405180910390fd5b670de0b6b3a76400008161251691906146ee565b600a8190555050565b60175481565b600f5481565b6125336129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b99061469f565b60405180910390fd5b670de0b6b3a76400006103e860016125d8610d97565b6125e291906146ee565b6125ec9190614777565b6125f69190614777565b811015612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f90614ef1565b60405180910390fd5b670de0b6b3a76400008161264c91906146ee565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516126839190614365565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b60115481565b61272f6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b59061469f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561282e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282590614f83565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d90614afe565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16476040516129aa90614fd4565b60006040518083038185875af1925050503d80600081146129e7576040519150601f19603f3d011682016040523d82523d6000602084013e6129ec565b606091505b50508091505050565b60155481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6a9061505b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ada906150ed565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bc19190614365565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c359061517f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca590615211565b60405180910390fd5b60008111612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce89061527d565b60405180910390fd5b600e60009054906101000a900460ff161561325057612d0e611bef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d7c5750612d4c611bef565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612db55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612def575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561324f57600e60019054906101000a900460ff16612f5e57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ea95750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edf906152e9565b60405180910390fd5b612ef0611bef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5490615355565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130015750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561300e5750600d5443115b1561305d57600654811115613058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304f906153e7565b60405180910390fd5b61314c565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131005750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561314b5760075481111561314a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314190615479565b60405180910390fd5b5b5b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131f05750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561324e57600854613201836112cd565b8261320c919061483a565b111561324d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613244906154e5565b60405180910390fd5b5b5b5b600061325b306112cd565b90506000600a5482101590508080156132805750600e60029054906101000a900460ff165b80156132995750600960009054906101000a900460ff16155b80156132ef5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133455750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561339b5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133df576001600960006101000a81548160ff0219169083151502179055506133c361382b565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134865750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561349057600090505b600080821561376b576000600d541180156134b85750436001600d546134b6919061483a565b115b1561350a576064600a876134cc91906146ee565b6134d69190614777565b905061350588600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613ac8565b61373c565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561356557506000601354115b156136245760646013548761357a91906146ee565b6135849190614777565b91506013546015548361359791906146ee565b6135a19190614777565b601860008282546135b2919061483a565b92505081905550601354601454836135ca91906146ee565b6135d49190614777565b601760008282546135e5919061483a565b92505081905550601354601654836135fd91906146ee565b6136079190614777565b60196000828254613618919061483a565b9250508190555061373b565b601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561367f57506000600f54115b1561373a576064600f548761369491906146ee565b61369e9190614777565b9150600f54601154836136b191906146ee565b6136bb9190614777565b601860008282546136cc919061483a565b92505081905550600f54601054836136e491906146ee565b6136ee9190614777565b601760008282546136ff919061483a565b92505081905550600f546012548361371791906146ee565b6137219190614777565b60196000828254613732919061483a565b925050819055505b5b5b600082111561375157613750883084613ac8565b5b808261375d919061483a565b866137689190615505565b95505b613776888888613ac8565b5050505050505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506137e18282613d33565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613836306112cd565b9050600060195460175460185461384d919061483a565b613857919061483a565b905060008214806138685750600081145b15613874575050613ac6565b6005600a5461388391906146ee565b82111561389c576005600a5461389991906146ee565b91505b600080600283601854866138b091906146ee565b6138ba9190614777565b6138c49190614777565b90506138da81856138d59190615505565b613dc7565b60004790506000819050600060026018546138f59190614777565b866139009190615505565b6017548461390e91906146ee565b6139189190614777565b90506000600260185461392b9190614777565b876139369190615505565b6019548561394491906146ee565b61394e9190614777565b9050808261395c919061483a565b836139679190615505565b92506000601881905550600060178190555060006019819055506000851180156139915750600083115b156139a1576139a08584614004565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516139e790614fd4565b60006040518083038185875af1925050503d8060008114613a24576040519150601f19603f3d011682016040523d82523d6000602084013e613a29565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613a7590614fd4565b60006040518083038185875af1925050503d8060008114613ab2576040519150601f19603f3d011682016040523d82523d6000602084013e613ab7565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b2f9061517f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b9f90615211565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c25906155ab565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613cc1919061483a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d259190614365565b60405180910390a350505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613dbb9291906155cb565b60405180910390a15050565b6000600267ffffffffffffffff811115613de457613de36155f4565b5b604051908082528060200260200182016040528015613e125781602001602082028036833780820191505090505b5090503081600081518110613e2a57613e29615623565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ecf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ef39190615667565b81600181518110613f0757613f06615623565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f6c307f000000000000000000000000000000000000000000000000000000000000000084612a03565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fce95949392919061578d565b600060405180830381600087803b158015613fe857600080fd5b505af1158015613ffc573d6000803e3d6000fd5b505050505050565b61402f307f000000000000000000000000000000000000000000000000000000000000000084612a03565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614079611bef565b426040518863ffffffff1660e01b815260040161409b969594939291906157e7565b60606040518083038185885af11580156140b9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140de9190615848565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561411f578082015181840152602081019050614104565b8381111561412e576000848401525b50505050565b6000601f19601f8301169050919050565b6000614150826140e5565b61415a81856140f0565b935061416a818560208601614101565b61417381614134565b840191505092915050565b600060208201905081810360008301526141988184614145565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141d0826141a5565b9050919050565b6141e0816141c5565b81146141eb57600080fd5b50565b6000813590506141fd816141d7565b92915050565b6000819050919050565b61421681614203565b811461422157600080fd5b50565b6000813590506142338161420d565b92915050565b600080604083850312156142505761424f6141a0565b5b600061425e858286016141ee565b925050602061426f85828601614224565b9150509250929050565b60008115159050919050565b61428e81614279565b82525050565b60006020820190506142a96000830184614285565b92915050565b6000602082840312156142c5576142c46141a0565b5b60006142d3848285016141ee565b91505092915050565b6000819050919050565b60006143016142fc6142f7846141a5565b6142dc565b6141a5565b9050919050565b6000614313826142e6565b9050919050565b600061432582614308565b9050919050565b6143358161431a565b82525050565b6000602082019050614350600083018461432c565b92915050565b61435f81614203565b82525050565b600060208201905061437a6000830184614356565b92915050565b600080600060608486031215614399576143986141a0565b5b60006143a7868287016141ee565b93505060206143b8868287016141ee565b92505060406143c986828701614224565b9150509250925092565b6000602082840312156143e9576143e86141a0565b5b60006143f784828501614224565b91505092915050565b600060ff82169050919050565b61441681614400565b82525050565b6000602082019050614431600083018461440d565b92915050565b614440816141c5565b82525050565b600060208201905061445b6000830184614437565b92915050565b61446a81614279565b811461447557600080fd5b50565b60008135905061448781614461565b92915050565b600080604083850312156144a4576144a36141a0565b5b60006144b2858286016141ee565b92505060206144c385828601614478565b9150509250929050565b6000806000606084860312156144e6576144e56141a0565b5b60006144f486828701614224565b935050602061450586828701614224565b925050604061451686828701614224565b9150509250925092565b60008060408385031215614537576145366141a0565b5b6000614545858286016141ee565b9250506020614556858286016141ee565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145a757607f821691505b602082108114156145bb576145ba614560565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061461d6028836140f0565b9150614628826145c1565b604082019050919050565b6000602082019050818103600083015261464c81614610565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146896020836140f0565b915061469482614653565b602082019050919050565b600060208201905081810360008301526146b88161467c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146f982614203565b915061470483614203565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561473d5761473c6146bf565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061478282614203565b915061478d83614203565b92508261479d5761479c614748565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b60006148046029836140f0565b915061480f826147a8565b604082019050919050565b60006020820190508181036000830152614833816147f7565b9050919050565b600061484582614203565b915061485083614203565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614885576148846146bf565b5b828201905092915050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b60006148ec6024836140f0565b91506148f782614890565b604082019050919050565b6000602082019050818103600083015261491b816148df565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b600061497e6027836140f0565b915061498982614922565b604082019050919050565b600060208201905081810360008301526149ad81614971565b9050919050565b7f46656573206d7573742062652033302520206f72206c65737300000000000000600082015250565b60006149ea6019836140f0565b91506149f5826149b4565b602082019050919050565b60006020820190508181036000830152614a19816149dd565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614a56601a836140f0565b9150614a6182614a20565b602082019050919050565b60006020820190508181036000830152614a8581614a49565b9050919050565b7f6f6e6c79205472656173757279416464726573732063616e207769746864726160008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ae86021836140f0565b9150614af382614a8c565b604082019050919050565b60006020820190508181036000830152614b1781614adb565b9050919050565b600081519050614b2d8161420d565b92915050565b600060208284031215614b4957614b486141a0565b5b6000614b5784828501614b1e565b91505092915050565b6000604082019050614b756000830185614437565b614b826020830184614356565b9392505050565b600081519050614b9881614461565b92915050565b600060208284031215614bb457614bb36141a0565b5b6000614bc284828501614b89565b91505092915050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614c016018836140f0565b9150614c0c82614bcb565b602082019050919050565b60006020820190508181036000830152614c3081614bf4565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614c936039836140f0565b9150614c9e82614c37565b604082019050919050565b60006020820190508181036000830152614cc281614c86565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614d256025836140f0565b9150614d3082614cc9565b604082019050919050565b60006020820190508181036000830152614d5481614d18565b9050919050565b7f5f45636f73797374656d4164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b6000614db76025836140f0565b9150614dc282614d5b565b604082019050919050565b60006020820190508181036000830152614de681614daa565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614e49602c836140f0565b9150614e5482614ded565b604082019050919050565b60006020820190508181036000830152614e7881614e3c565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614edb602a836140f0565b9150614ee682614e7f565b604082019050919050565b60006020820190508181036000830152614f0a81614ece565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f6d6026836140f0565b9150614f7882614f11565b604082019050919050565b60006020820190508181036000830152614f9c81614f60565b9050919050565b600081905092915050565b50565b6000614fbe600083614fa3565b9150614fc982614fae565b600082019050919050565b6000614fdf82614fb1565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006150456024836140f0565b915061505082614fe9565b604082019050919050565b6000602082019050818103600083015261507481615038565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150d76022836140f0565b91506150e28261507b565b604082019050919050565b60006020820190508181036000830152615106816150ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151696025836140f0565b91506151748261510d565b604082019050919050565b600060208201905081810360008301526151988161515c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151fb6023836140f0565b91506152068261519f565b604082019050919050565b6000602082019050818103600083015261522a816151ee565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615267601d836140f0565b915061527282615231565b602082019050919050565b600060208201905081810360008301526152968161525a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006152d36016836140f0565b91506152de8261529d565b602082019050919050565b60006020820190508181036000830152615302816152c6565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b600061533f6016836140f0565b915061534a82615309565b602082019050919050565b6000602082019050818103600083015261536e81615332565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b60006153d16028836140f0565b91506153dc82615375565b604082019050919050565b60006020820190508181036000830152615400816153c4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615463602a836140f0565b915061546e82615407565b604082019050919050565b6000602082019050818103600083015261549281615456565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b60006154cf6018836140f0565b91506154da82615499565b602082019050919050565b600060208201905081810360008301526154fe816154c2565b9050919050565b600061551082614203565b915061551b83614203565b92508282101561552e5761552d6146bf565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006155956026836140f0565b91506155a082615539565b604082019050919050565b600060208201905081810360008301526155c481615588565b9050919050565b60006040820190506155e06000830185614437565b6155ed6020830184614285565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615661816141d7565b92915050565b60006020828403121561567d5761567c6141a0565b5b600061568b84828501615652565b91505092915050565b6000819050919050565b60006156b96156b46156af84615694565b6142dc565b614203565b9050919050565b6156c98161569e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615704816141c5565b82525050565b600061571683836156fb565b60208301905092915050565b6000602082019050919050565b600061573a826156cf565b61574481856156da565b935061574f836156eb565b8060005b83811015615780578151615767888261570a565b975061577283615722565b925050600181019050615753565b5085935050505092915050565b600060a0820190506157a26000830188614356565b6157af60208301876156c0565b81810360408301526157c1818661572f565b90506157d06060830185614437565b6157dd6080830184614356565b9695505050505050565b600060c0820190506157fc6000830189614437565b6158096020830188614356565b61581660408301876156c0565b61582360608301866156c0565b6158306080830185614437565b61583d60a0830184614356565b979650505050505050565b600080600060608486031215615861576158606141a0565b5b600061586f86828701614b1e565b935050602061588086828701614b1e565b925050604061589186828701614b1e565b915050925092509256fea2646970667358221220c64e049f6fb2666360a2a9d583491ecf97b54e451def04e67671746f4c49a84d64736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106103395760003560e01c806388e765ff116101ab578063c17b5b8c116100f7578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b14610c0d578063f54afa7814610c36578063f5648a4f14610c61578063f637434214610c7857610340565b8063e2f4560514610b8c578063ee40166e14610bb7578063f11a24d314610be257610340565b8063cc2ffe7c116100d1578063cc2ffe7c14610ad0578063d85ba06314610afb578063dc3f0d0f14610b26578063dd62ed3e14610b4f57610340565b8063c17b5b8c14610a55578063c18bc19514610a7e578063cc274b2914610aa757610340565b8063a8e01b2811610164578063b62496f51161013e578063b62496f514610999578063bb8d5131146109d6578063bbc0c74214610a01578063c024666814610a2c57610340565b8063a8e01b2814610908578063a9059cbb14610931578063aa4bde281461096e57610340565b806388e765ff1461080a5780638a8c523c146108355780638da5cb5b1461084c57806395d89b41146108775780639a7a23d6146108a2578063a457c2d7146108cb57610340565b80635c068a8c11610285578063715018a61161022357806377a3b609116101fd57806377a3b6091461074e5780638013f73a146107795780638095d564146107a45780638366e79a146107cd57610340565b8063715018a6146106f7578063751039fc1461070e5780637571336a1461072557610340565b80636a486a8e1161025f5780636a486a8e146106395780636b2fb124146106645780636ddd17131461068f57806370a08231146106ba57610340565b80635c068a8c146105ba5780636605bfda146105e557806366d602ae1461060e57610340565b806323b872dd116102f257806339509351116102cc57806339509351146104fc57806349bd5a5e146105395780634a62bb65146105645780635b5c251f1461058f57610340565b806323b872dd1461046b5780632be32b61146104a8578063313ce567146104d157610340565b806306fdde0314610345578063095ea7b31461037057806310d5de53146103ad5780631694505e146103ea57806318160ddd146104155780631a8145bb1461044057610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ca3565b604051610367919061417e565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190614239565b610d35565b6040516103a49190614294565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf91906142af565b610d53565b6040516103e19190614294565b60405180910390f35b3480156103f657600080fd5b506103ff610d73565b60405161040c919061433b565b60405180910390f35b34801561042157600080fd5b5061042a610d97565b6040516104379190614365565b60405180910390f35b34801561044c57600080fd5b50610455610da1565b6040516104629190614365565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d9190614380565b610da7565b60405161049f9190614294565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca91906143d3565b610e9f565b005b3480156104dd57600080fd5b506104e6611002565b6040516104f3919061441c565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e9190614239565b61100b565b6040516105309190614294565b60405180910390f35b34801561054557600080fd5b5061054e6110b7565b60405161055b9190614446565b60405180910390f35b34801561057057600080fd5b506105796110db565b6040516105869190614294565b60405180910390f35b34801561059b57600080fd5b506105a46110ee565b6040516105b19190614446565b60405180910390f35b3480156105c657600080fd5b506105cf611114565b6040516105dc9190614365565b60405180910390f35b3480156105f157600080fd5b5061060c600480360381019061060791906142af565b61111a565b005b34801561061a57600080fd5b506106236112a8565b6040516106309190614365565b60405180910390f35b34801561064557600080fd5b5061064e6112ae565b60405161065b9190614365565b60405180910390f35b34801561067057600080fd5b506106796112b4565b6040516106869190614365565b60405180910390f35b34801561069b57600080fd5b506106a46112ba565b6040516106b19190614294565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc91906142af565b6112cd565b6040516106ee9190614365565b60405180910390f35b34801561070357600080fd5b5061070c611315565b005b34801561071a57600080fd5b5061072361146d565b005b34801561073157600080fd5b5061074c6004803603810190610747919061448d565b61154d565b005b34801561075a57600080fd5b506107636116d4565b6040516107709190614365565b60405180910390f35b34801561078557600080fd5b5061078e6116da565b60405161079b9190614446565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c691906144cd565b611700565b005b3480156107d957600080fd5b506107f460048036038101906107ef9190614520565b61181a565b6040516108019190614294565b60405180910390f35b34801561081657600080fd5b5061081f611a59565b60405161082c9190614365565b60405180910390f35b34801561084157600080fd5b5061084a611a5f565b005b34801561085857600080fd5b50610861611bef565b60405161086e9190614446565b60405180910390f35b34801561088357600080fd5b5061088c611c19565b604051610899919061417e565b60405180910390f35b3480156108ae57600080fd5b506108c960048036038101906108c4919061448d565b611cab565b005b3480156108d757600080fd5b506108f260048036038101906108ed9190614239565b611ddf565b6040516108ff9190614294565b60405180910390f35b34801561091457600080fd5b5061092f600480360381019061092a91906142af565b611eca565b005b34801561093d57600080fd5b5061095860048036038101906109539190614239565b612058565b6040516109659190614294565b60405180910390f35b34801561097a57600080fd5b50610983612076565b6040516109909190614365565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb91906142af565b61207c565b6040516109cd9190614294565b60405180910390f35b3480156109e257600080fd5b506109eb61209c565b6040516109f89190614365565b60405180910390f35b348015610a0d57600080fd5b50610a166120a2565b604051610a239190614294565b60405180910390f35b348015610a3857600080fd5b50610a536004803603810190610a4e919061448d565b6120b5565b005b348015610a6157600080fd5b50610a7c6004803603810190610a7791906144cd565b6121f5565b005b348015610a8a57600080fd5b50610aa56004803603810190610aa091906143d3565b61230f565b005b348015610ab357600080fd5b50610ace6004803603810190610ac991906143d3565b612472565b005b348015610adc57600080fd5b50610ae561251f565b604051610af29190614365565b60405180910390f35b348015610b0757600080fd5b50610b10612525565b604051610b1d9190614365565b60405180910390f35b348015610b3257600080fd5b50610b4d6004803603810190610b4891906143d3565b61252b565b005b348015610b5b57600080fd5b50610b766004803603810190610b719190614520565b61268e565b604051610b839190614365565b60405180910390f35b348015610b9857600080fd5b50610ba1612715565b604051610bae9190614365565b60405180910390f35b348015610bc357600080fd5b50610bcc61271b565b604051610bd99190614365565b60405180910390f35b348015610bee57600080fd5b50610bf7612721565b604051610c049190614365565b60405180910390f35b348015610c1957600080fd5b50610c346004803603810190610c2f91906142af565b612727565b005b348015610c4257600080fd5b50610c4b6128ee565b604051610c589190614365565b60405180910390f35b348015610c6d57600080fd5b50610c766128f4565b005b348015610c8457600080fd5b50610c8d6129f5565b604051610c9a9190614365565b60405180910390f35b606060038054610cb29061458f565b80601f0160208091040260200160405190810160405280929190818152602001828054610cde9061458f565b8015610d2b5780601f10610d0057610100808354040283529160200191610d2b565b820191906000526020600020905b815481529060010190602001808311610d0e57829003601f168201915b5050505050905090565b6000610d49610d426129fb565b8484612a03565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60185481565b6000610db4848484612bce565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610dff6129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7690614633565b60405180910390fd5b610e9385610e8b6129fb565b858403612a03565b60019150509392505050565b610ea76129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d9061469f565b60405180910390fd5b670de0b6b3a76400006103e86001610f4c610d97565b610f5691906146ee565b610f609190614777565b610f6a9190614777565b811015610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa39061481a565b60405180910390fd5b670de0b6b3a764000081610fc091906146ee565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610ff79190614365565b60405180910390a150565b60006012905090565b60006110ad6110186129fb565b8484600160006110266129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110a8919061483a565b612a03565b6001905092915050565b7f000000000000000000000000661ecc03a464be662133b9a5964a51f1370077f981565b600e60009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6111226129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a89061469f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890614902565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60075481565b60135481565b60145481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61131d6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a39061469f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114756129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb9061469f565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6115556129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db9061469f565b60405180910390fd5b80611679577f000000000000000000000000661ecc03a464be662133b9a5964a51f1370077f973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f90614994565b60405180910390fd5b5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117086129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178e9061469f565b60405180910390fd5b8260108190555081601181905550806012819055506012546011546010546117bf919061483a565b6117c9919061483a565b600f81905550601e600f541115611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c90614a00565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290614a6c565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191290614afe565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119569190614446565b602060405180830381865afa158015611973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119979190614b33565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016119d4929190614b60565b6020604051808303816000875af11580156119f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a179190614b9e565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611a4a929190614b60565b60405180910390a15092915050565b60065481565b611a676129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aed9061469f565b60405180910390fd5b600e60019054906101000a900460ff1615611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90614c17565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff0219169083151502179055507fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe52089600e60019054906101000a900460ff16604051611bba9190614294565b60405180910390a1600e60019054906101000a900460ff168015611be057506000600d54145b15611bed5743600d819055505b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611c289061458f565b80601f0160208091040260200160405190810160405280929190818152602001828054611c549061458f565b8015611ca15780601f10611c7657610100808354040283529160200191611ca1565b820191906000526020600020905b815481529060010190602001808311611c8457829003601f168201915b5050505050905090565b611cb36129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d399061469f565b60405180910390fd5b7f000000000000000000000000661ecc03a464be662133b9a5964a51f1370077f973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc890614ca9565b60405180910390fd5b611ddb8282613780565b5050565b60008060016000611dee6129fb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea290614d3b565b60405180910390fd5b611ebf611eb66129fb565b85858403612a03565b600191505092915050565b611ed26129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f589061469f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc890614dcd565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f3a687f29cd2e7ea2126d7cf7ad8c5facb38ce4a43cc356eb40f9fb6e628172e560405160405180910390a250565b600061206c6120656129fb565b8484612bce565b6001905092915050565b60085481565b601c6020528060005260406000206000915054906101000a900460ff1681565b60165481565b600e60019054906101000a900460ff1681565b6120bd6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461214c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121439061469f565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121e99190614294565b60405180910390a25050565b6121fd6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461228c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122839061469f565b60405180910390fd5b8260148190555081601581905550806016819055506016546015546014546122b4919061483a565b6122be919061483a565b601381905550601e601354111561230a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230190614a00565b60405180910390fd5b505050565b6123176129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239d9061469f565b60405180910390fd5b670de0b6b3a76400006103e860036123bc610d97565b6123c691906146ee565b6123d09190614777565b6123da9190614777565b81101561241c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241390614e5f565b60405180910390fd5b670de0b6b3a76400008161243091906146ee565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516124679190614365565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f990614afe565b60405180910390fd5b670de0b6b3a76400008161251691906146ee565b600a8190555050565b60175481565b600f5481565b6125336129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b99061469f565b60405180910390fd5b670de0b6b3a76400006103e860016125d8610d97565b6125e291906146ee565b6125ec9190614777565b6125f69190614777565b811015612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f90614ef1565b60405180910390fd5b670de0b6b3a76400008161264c91906146ee565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516126839190614365565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b60115481565b61272f6129fb565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b59061469f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561282e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282590614f83565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297d90614afe565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16476040516129aa90614fd4565b60006040518083038185875af1925050503d80600081146129e7576040519150601f19603f3d011682016040523d82523d6000602084013e6129ec565b606091505b50508091505050565b60155481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6a9061505b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ada906150ed565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bc19190614365565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c359061517f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca590615211565b60405180910390fd5b60008111612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce89061527d565b60405180910390fd5b600e60009054906101000a900460ff161561325057612d0e611bef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d7c5750612d4c611bef565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612db55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612def575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561324f57600e60019054906101000a900460ff16612f5e57601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ea95750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612edf906152e9565b60405180910390fd5b612ef0611bef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5490615355565b60405180910390fd5b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130015750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561300e5750600d5443115b1561305d57600654811115613058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161304f906153e7565b60405180910390fd5b61314c565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131005750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561314b5760075481111561314a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314190615479565b60405180910390fd5b5b5b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131f05750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561324e57600854613201836112cd565b8261320c919061483a565b111561324d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613244906154e5565b60405180910390fd5b5b5b5b600061325b306112cd565b90506000600a5482101590508080156132805750600e60029054906101000a900460ff165b80156132995750600960009054906101000a900460ff16155b80156132ef5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133455750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561339b5750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133df576001600960006101000a81548160ff0219169083151502179055506133c361382b565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134865750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561349057600090505b600080821561376b576000600d541180156134b85750436001600d546134b6919061483a565b115b1561350a576064600a876134cc91906146ee565b6134d69190614777565b905061350588600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613ac8565b61373c565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561356557506000601354115b156136245760646013548761357a91906146ee565b6135849190614777565b91506013546015548361359791906146ee565b6135a19190614777565b601860008282546135b2919061483a565b92505081905550601354601454836135ca91906146ee565b6135d49190614777565b601760008282546135e5919061483a565b92505081905550601354601654836135fd91906146ee565b6136079190614777565b60196000828254613618919061483a565b9250508190555061373b565b601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561367f57506000600f54115b1561373a576064600f548761369491906146ee565b61369e9190614777565b9150600f54601154836136b191906146ee565b6136bb9190614777565b601860008282546136cc919061483a565b92505081905550600f54601054836136e491906146ee565b6136ee9190614777565b601760008282546136ff919061483a565b92505081905550600f546012548361371791906146ee565b6137219190614777565b60196000828254613732919061483a565b925050819055505b5b5b600082111561375157613750883084613ac8565b5b808261375d919061483a565b866137689190615505565b95505b613776888888613ac8565b5050505050505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506137e18282613d33565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613836306112cd565b9050600060195460175460185461384d919061483a565b613857919061483a565b905060008214806138685750600081145b15613874575050613ac6565b6005600a5461388391906146ee565b82111561389c576005600a5461389991906146ee565b91505b600080600283601854866138b091906146ee565b6138ba9190614777565b6138c49190614777565b90506138da81856138d59190615505565b613dc7565b60004790506000819050600060026018546138f59190614777565b866139009190615505565b6017548461390e91906146ee565b6139189190614777565b90506000600260185461392b9190614777565b876139369190615505565b6019548561394491906146ee565b61394e9190614777565b9050808261395c919061483a565b836139679190615505565b92506000601881905550600060178190555060006019819055506000851180156139915750600083115b156139a1576139a08584614004565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516139e790614fd4565b60006040518083038185875af1925050503d8060008114613a24576040519150601f19603f3d011682016040523d82523d6000602084013e613a29565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613a7590614fd4565b60006040518083038185875af1925050503d8060008114613ab2576040519150601f19603f3d011682016040523d82523d6000602084013e613ab7565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613b38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b2f9061517f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b9f90615211565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c25906155ab565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613cc1919061483a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d259190614365565b60405180910390a350505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613dbb9291906155cb565b60405180910390a15050565b6000600267ffffffffffffffff811115613de457613de36155f4565b5b604051908082528060200260200182016040528015613e125781602001602082028036833780820191505090505b5090503081600081518110613e2a57613e29615623565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ecf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ef39190615667565b81600181518110613f0757613f06615623565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f6c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612a03565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fce95949392919061578d565b600060405180830381600087803b158015613fe857600080fd5b505af1158015613ffc573d6000803e3d6000fd5b505050505050565b61402f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612a03565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614079611bef565b426040518863ffffffff1660e01b815260040161409b969594939291906157e7565b60606040518083038185885af11580156140b9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140de9190615848565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561411f578082015181840152602081019050614104565b8381111561412e576000848401525b50505050565b6000601f19601f8301169050919050565b6000614150826140e5565b61415a81856140f0565b935061416a818560208601614101565b61417381614134565b840191505092915050565b600060208201905081810360008301526141988184614145565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141d0826141a5565b9050919050565b6141e0816141c5565b81146141eb57600080fd5b50565b6000813590506141fd816141d7565b92915050565b6000819050919050565b61421681614203565b811461422157600080fd5b50565b6000813590506142338161420d565b92915050565b600080604083850312156142505761424f6141a0565b5b600061425e858286016141ee565b925050602061426f85828601614224565b9150509250929050565b60008115159050919050565b61428e81614279565b82525050565b60006020820190506142a96000830184614285565b92915050565b6000602082840312156142c5576142c46141a0565b5b60006142d3848285016141ee565b91505092915050565b6000819050919050565b60006143016142fc6142f7846141a5565b6142dc565b6141a5565b9050919050565b6000614313826142e6565b9050919050565b600061432582614308565b9050919050565b6143358161431a565b82525050565b6000602082019050614350600083018461432c565b92915050565b61435f81614203565b82525050565b600060208201905061437a6000830184614356565b92915050565b600080600060608486031215614399576143986141a0565b5b60006143a7868287016141ee565b93505060206143b8868287016141ee565b92505060406143c986828701614224565b9150509250925092565b6000602082840312156143e9576143e86141a0565b5b60006143f784828501614224565b91505092915050565b600060ff82169050919050565b61441681614400565b82525050565b6000602082019050614431600083018461440d565b92915050565b614440816141c5565b82525050565b600060208201905061445b6000830184614437565b92915050565b61446a81614279565b811461447557600080fd5b50565b60008135905061448781614461565b92915050565b600080604083850312156144a4576144a36141a0565b5b60006144b2858286016141ee565b92505060206144c385828601614478565b9150509250929050565b6000806000606084860312156144e6576144e56141a0565b5b60006144f486828701614224565b935050602061450586828701614224565b925050604061451686828701614224565b9150509250925092565b60008060408385031215614537576145366141a0565b5b6000614545858286016141ee565b9250506020614556858286016141ee565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145a757607f821691505b602082108114156145bb576145ba614560565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061461d6028836140f0565b9150614628826145c1565b604082019050919050565b6000602082019050818103600083015261464c81614610565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146896020836140f0565b915061469482614653565b602082019050919050565b600060208201905081810360008301526146b88161467c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146f982614203565b915061470483614203565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561473d5761473c6146bf565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061478282614203565b915061478d83614203565b92508261479d5761479c614748565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b60006148046029836140f0565b915061480f826147a8565b604082019050919050565b60006020820190508181036000830152614833816147f7565b9050919050565b600061484582614203565b915061485083614203565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614885576148846146bf565b5b828201905092915050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b60006148ec6024836140f0565b91506148f782614890565b604082019050919050565b6000602082019050818103600083015261491b816148df565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b600061497e6027836140f0565b915061498982614922565b604082019050919050565b600060208201905081810360008301526149ad81614971565b9050919050565b7f46656573206d7573742062652033302520206f72206c65737300000000000000600082015250565b60006149ea6019836140f0565b91506149f5826149b4565b602082019050919050565b60006020820190508181036000830152614a19816149dd565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614a56601a836140f0565b9150614a6182614a20565b602082019050919050565b60006020820190508181036000830152614a8581614a49565b9050919050565b7f6f6e6c79205472656173757279416464726573732063616e207769746864726160008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ae86021836140f0565b9150614af382614a8c565b604082019050919050565b60006020820190508181036000830152614b1781614adb565b9050919050565b600081519050614b2d8161420d565b92915050565b600060208284031215614b4957614b486141a0565b5b6000614b5784828501614b1e565b91505092915050565b6000604082019050614b756000830185614437565b614b826020830184614356565b9392505050565b600081519050614b9881614461565b92915050565b600060208284031215614bb457614bb36141a0565b5b6000614bc284828501614b89565b91505092915050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614c016018836140f0565b9150614c0c82614bcb565b602082019050919050565b60006020820190508181036000830152614c3081614bf4565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614c936039836140f0565b9150614c9e82614c37565b604082019050919050565b60006020820190508181036000830152614cc281614c86565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614d256025836140f0565b9150614d3082614cc9565b604082019050919050565b60006020820190508181036000830152614d5481614d18565b9050919050565b7f5f45636f73797374656d4164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b6000614db76025836140f0565b9150614dc282614d5b565b604082019050919050565b60006020820190508181036000830152614de681614daa565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614e49602c836140f0565b9150614e5482614ded565b604082019050919050565b60006020820190508181036000830152614e7881614e3c565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614edb602a836140f0565b9150614ee682614e7f565b604082019050919050565b60006020820190508181036000830152614f0a81614ece565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f6d6026836140f0565b9150614f7882614f11565b604082019050919050565b60006020820190508181036000830152614f9c81614f60565b9050919050565b600081905092915050565b50565b6000614fbe600083614fa3565b9150614fc982614fae565b600082019050919050565b6000614fdf82614fb1565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006150456024836140f0565b915061505082614fe9565b604082019050919050565b6000602082019050818103600083015261507481615038565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150d76022836140f0565b91506150e28261507b565b604082019050919050565b60006020820190508181036000830152615106816150ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151696025836140f0565b91506151748261510d565b604082019050919050565b600060208201905081810360008301526151988161515c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151fb6023836140f0565b91506152068261519f565b604082019050919050565b6000602082019050818103600083015261522a816151ee565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615267601d836140f0565b915061527282615231565b602082019050919050565b600060208201905081810360008301526152968161525a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006152d36016836140f0565b91506152de8261529d565b602082019050919050565b60006020820190508181036000830152615302816152c6565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b600061533f6016836140f0565b915061534a82615309565b602082019050919050565b6000602082019050818103600083015261536e81615332565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b60006153d16028836140f0565b91506153dc82615375565b604082019050919050565b60006020820190508181036000830152615400816153c4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615463602a836140f0565b915061546e82615407565b604082019050919050565b6000602082019050818103600083015261549281615456565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b60006154cf6018836140f0565b91506154da82615499565b602082019050919050565b600060208201905081810360008301526154fe816154c2565b9050919050565b600061551082614203565b915061551b83614203565b92508282101561552e5761552d6146bf565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006155956026836140f0565b91506155a082615539565b604082019050919050565b600060208201905081810360008301526155c481615588565b9050919050565b60006040820190506155e06000830185614437565b6155ed6020830184614285565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615661816141d7565b92915050565b60006020828403121561567d5761567c6141a0565b5b600061568b84828501615652565b91505092915050565b6000819050919050565b60006156b96156b46156af84615694565b6142dc565b614203565b9050919050565b6156c98161569e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615704816141c5565b82525050565b600061571683836156fb565b60208301905092915050565b6000602082019050919050565b600061573a826156cf565b61574481856156da565b935061574f836156eb565b8060005b83811015615780578151615767888261570a565b975061577283615722565b925050600181019050615753565b5085935050505092915050565b600060a0820190506157a26000830188614356565b6157af60208301876156c0565b81810360408301526157c1818661572f565b90506157d06060830185614437565b6157dd6080830184614356565b9695505050505050565b600060c0820190506157fc6000830189614437565b6158096020830188614356565b61581660408301876156c0565b61582360608301866156c0565b6158306080830185614437565b61583d60a0830184614356565b979650505050505050565b600080600060608486031215615861576158606141a0565b5b600061586f86828701614b1e565b935050602061588086828701614b1e565b925050604061589186828701614b1e565b915050925092509256fea2646970667358221220c64e049f6fb2666360a2a9d583491ecf97b54e451def04e67671746f4c49a84d64736f6c634300080c0033

Deployed Bytecode Sourcemap

7180:14920:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1898:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2812:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8299:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7330:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2219:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8104:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2989:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11140:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2118:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3477:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7380:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7653:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7497:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7807:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20093:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7256:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7917;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7952:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7733:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2335:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5939:150;;;;;;;;;;;;;:::i;:::-;;11747:115;;;;;;;;;;;;;:::i;:::-;;12087:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7880:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7534:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13623:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12862:452;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7222:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19748:337;;;;;;;;;;;;;:::i;:::-;;5725:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2006:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18669:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3700:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20382:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2470:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7291:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8521:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8027:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7693:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14402:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14008:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12362:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12654:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8065:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7773:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11417:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2653:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7455:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7574:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7843:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6097:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8144:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13384:231;;;;;;;;;;;;;:::i;:::-;;7989:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1898:100;1952:13;1985:5;1978:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1898:100;:::o;2812:169::-;2895:4;2912:39;2921:12;:10;:12::i;:::-;2935:7;2944:6;2912:8;:39::i;:::-;2969:4;2962:11;;2812:169;;;;:::o;8299:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;7330:43::-;;;:::o;2219:108::-;2280:7;2307:12;;2300:19;;2219:108;:::o;8104:33::-;;;;:::o;2989:480::-;3129:4;3146:36;3156:6;3164:9;3175:6;3146:9;:36::i;:::-;3195:24;3222:11;:19;3234:6;3222:19;;;;;;;;;;;;;;;:33;3242:12;:10;:12::i;:::-;3222:33;;;;;;;;;;;;;;;;3195:60;;3294:6;3274:16;:26;;3266:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3373:57;3382:6;3390:12;:10;:12::i;:::-;3423:6;3404:16;:25;3373:8;:57::i;:::-;3457:4;3450:11;;;2989:480;;;;;:::o;11140:269::-;5862:12;:10;:12::i;:::-;5852:22;;:6;;;;;;;;;;;:22;;;5844:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11259:4:::1;11253;11249:1;11233:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11232:31;;;;:::i;:::-;11222:6;:41;;11214:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;11345:6;11335;:17;;;;:::i;:::-;11320:12;:32;;;;11368:33;11388:12;;11368:33;;;;;;:::i;:::-;;;;;;;;11140:269:::0;:::o;2118:93::-;2176:5;2201:2;2194:9;;2118:93;:::o;3477:215::-;3565:4;3582:80;3591:12;:10;:12::i;:::-;3605:7;3651:10;3614:11;:25;3626:12;:10;:12::i;:::-;3614:25;;;;;;;;;;;;;;;:34;3640:7;3614:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3582:8;:80::i;:::-;3680:4;3673:11;;3477:215;;;;:::o;7380:38::-;;;:::o;7653:33::-;;;;;;;;;;;;;:::o;7497:30::-;;;;;;;;;;;;;:::o;7807:29::-;;;;:::o;20093:281::-;5862:12;:10;:12::i;:::-;5852:22;;:6;;;;;;;;;;;:22;;;5844:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20213:1:::1;20185:30;;:16;:30;;;;20177:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;20293:16;20267:15;;:43;;;;;;;;;;;;;;;;;;20349:16;20326:40;;;;;;;;;;;;20093:281:::0;:::o;7256:28::-;;;;:::o;7917:::-;;;;:::o;7952:30::-;;;;:::o;7733:31::-;;;;;;;;;;;;;:::o;2335:127::-;2409:7;2436:9;:18;2446:7;2436:18;;;;;;;;;;;;;;;;2429:25;;2335:127;;;:::o;5939:150::-;5862:12;:10;:12::i;:::-;5852:22;;:6;;;;;;;;;;;:22;;;5844:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6048:1:::1;6011:40;;6032:6;;;;;;;;;;;6011:40;;;;;;;;;;;;6079:1;6062:6;;:19;;;;;;;;;;;;;;;;;;5939:150::o:0;11747:115::-;5862:12;:10;:12::i;:::-;5852:22;;:6;;;;;;;;;;;:22;;;5844:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11818:5:::1;11801:14;;:22;;;;;;;;;;;;;;;;;;11839:15;;;;;;;;;;11747:115::o:0;12087:267::-;5862:12;:10;:12::i;:::-;5852:22;;:6;;;;;;;;;;;:22;;;5844:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12183:4:::1;12179:111;;12221:13;12211:23;;:6;:23;;;;12203:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12179:111;12342:4;12300:31;:39;12332:6;12300:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;12087:267:::0;;:::o;7880:28::-;;;;:::o;7534:31::-;;;;;;;;;;;;;:::o;13623:377::-;5862:12;:10;:12::i;:::-;5852:22;;:6;;;;;;;;;;;:22;;;5844:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13759:12:::1;13742:14;:29;;;;13800:13;13782:15;:31;;;;13840:11;13824:13;:27;;;;13912:13;;13894:15;;13877:14;;:32;;;;:::i;:::-;:48;;;;:::i;:::-;13862:12;:63;;;;13960:2;13944:12;;:18;;13936:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13623:377:::0;;;:::o;12862:452::-;12937:10;12986:1;12968:20;;:6;:20;;;;12960:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13050:15;;;;;;;;;;;13038:27;;:10;:27;;;13030:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13113:24;13147:6;13140:24;;;13173:4;13140:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13113:66;;13205:6;13198:23;;;13222:3;13227:16;13198:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13190:54;;13260:46;13281:6;13289:16;13260:46;;;;;;;:::i;:::-;;;;;;;;12949:365;12862:452;;;;:::o;7222:27::-;;;;:::o;19748:337::-;5862:12;:10;:12::i;:::-;5852:22;;:6;;;;;;;;;;;:22;;;5844:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19812:13:::1;;;;;;;;;;;19811:14;19803:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19881:4;19865:13;;:20;;;;;;;;;;;;;;;;;;19910:4;19896:11;;:18;;;;;;;;;;;;;;;;;;19930:29;19945:13;;;;;;;;;;;19930:29;;;;;;:::i;:::-;;;;;;;;19976:13;;;;;;;;;;;:40;;;;;20015:1;19993:18;;:23;19976:40;19972:106;;;20054:12;20033:18;:33;;;;19972:106;19748:337::o:0;5725:79::-;5763:7;5790:6;;;;;;;;;;;5783:13;;5725:79;:::o;2006:104::-;2062:13;2095:7;2088:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2006:104;:::o;18669:246::-;5862:12;:10;:12::i;:::-;5852:22;;:6;;;;;;;;;;;:22;;;5844:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18778:13:::1;18770:21;;:4;:21;;;;18762:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;18866:41;18895:4;18901:5;18866:28;:41::i;:::-;18669:246:::0;;:::o;3700:401::-;3793:4;3810:24;3837:11;:25;3849:12;:10;:12::i;:::-;3837:25;;;;;;;;;;;;;;;:34;3863:7;3837:34;;;;;;;;;;;;;;;;3810:61;;3910:15;3890:16;:35;;3882:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3995:67;4004:12;:10;:12::i;:::-;4018:7;4046:15;4027:16;:34;3995:8;:67::i;:::-;4089:4;4082:11;;;3700:401;;;;:::o;20382:289::-;5862:12;:10;:12::i;:::-;5852:22;;:6;;;;;;;;;;;:22;;;5844:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20505:1:::1;20476:31;;:17;:31;;;;20468:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;20587:17;20560:16;;:45;;;;;;;;;;;;;;;;;;20645:17;20621:42;;;;;;;;;;;;20382:289:::0;:::o;2470:175::-;2556:4;2573:42;2583:12;:10;:12::i;:::-;2597:9;2608:6;2573:9;:42::i;:::-;2633:4;2626:11;;2470:175;;;;:::o;7291:30::-;;;;:::o;8521:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;8027:29::-;;;;:::o;7693:33::-;;;;;;;;;;;;;:::o;14402:182::-;5862:12;:10;:12::i;:::-;5852:22;;:6;;;;;;;;;;;:22;;;5844:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14518:8:::1;14487:19;:28;14507:7;14487:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14558:7;14542:34;;;14567:8;14542:34;;;;;;:::i;:::-;;;;;;;;14402:182:::0;;:::o;14008:386::-;5862:12;:10;:12::i;:::-;5852:22;;:6;;;;;;;;;;;:22;;;5844:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14146:12:::1;14128:15;:30;;;;14188:13;14169:16;:32;;;;14229:11;14212:14;:28;;;;14304:14;;14285:16;;14267:15;;:34;;;;:::i;:::-;:51;;;;:::i;:::-;14251:13;:67;;;;14354:2;14337:13;;:19;;14329:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14008:386:::0;;;:::o;12362:284::-;5862:12;:10;:12::i;:::-;5852:22;;:6;;;;;;;;;;;:22;;;5844:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12484:4:::1;12478;12474:1;12458:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12457:31;;;;:::i;:::-;12447:6;:41;;12439:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;12576:6;12566;:17;;;;:::i;:::-;12548:15;:35;;;;12599:39;12622:15;;12599:39;;;;;;:::i;:::-;;;;;;;;12362:284:::0;:::o;12654:198::-;12741:15;;;;;;;;;;;12729:27;;:10;:27;;;12721:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12837:6;12825:9;:19;;;;:::i;:::-;12804:18;:40;;;;12654:198;:::o;8065:32::-;;;;:::o;7773:27::-;;;;:::o;11417:274::-;5862:12;:10;:12::i;:::-;5852:22;;:6;;;;;;;;;;;:22;;;5844:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11537:4:::1;11531;11527:1;11511:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11510:31;;;;:::i;:::-;11500:6;:41;;11492:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;11625:6;11615;:17;;;;:::i;:::-;11599:13;:33;;;;11648:35;11669:13;;11648:35;;;;;;:::i;:::-;;;;;;;;11417:274:::0;:::o;2653:151::-;2742:7;2769:11;:18;2781:5;2769:18;;;;;;;;;;;;;;;:27;2788:7;2769:27;;;;;;;;;;;;;;;;2762:34;;2653:151;;;;:::o;7455:33::-;;;;:::o;7574:37::-;;;;:::o;7843:30::-;;;;:::o;6097:244::-;5862:12;:10;:12::i;:::-;5852:22;;:6;;;;;;;;;;;:22;;;5844:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6206:1:::1;6186:22;;:8;:22;;;;6178:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6296:8;6267:38;;6288:6;;;;;;;;;;;6267:38;;;;;;;;;;;;6325:8;6316:6;;:17;;;;;;;;;;;;;;;;;;6097:244:::0;:::o;8144:31::-;;;;:::o;13384:231::-;13430:12;13473:15;;;;;;;;;;;13461:27;;:10;:27;;;13453:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13557:10;13549:24;;13581:21;13549:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13536:71;;;;;13419:196;13384:231::o;7989:31::-;;;;:::o;337:98::-;390:7;417:10;410:17;;337:98;:::o;5018:380::-;5171:1;5154:19;;:5;:19;;;;5146:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5252:1;5233:21;;:7;:21;;;;5225:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5336:6;5306:11;:18;5318:5;5306:18;;;;;;;;;;;;;;;:27;5325:7;5306:27;;;;;;;;;;;;;;;:36;;;;5374:7;5358:32;;5367:5;5358:32;;;5383:6;5358:32;;;;;;:::i;:::-;;;;;;;;5018:380;;;:::o;14594:3468::-;14710:1;14694:18;;:4;:18;;;;14686:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14787:1;14773:16;;:2;:16;;;;14765:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14857:1;14848:6;:10;14840:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;14910:14;;;;;;;;;;;14907:1153;;;14952:7;:5;:7::i;:::-;14944:15;;:4;:15;;;;:32;;;;;14969:7;:5;:7::i;:::-;14963:13;;:2;:13;;;;14944:32;:52;;;;;14994:1;14980:16;;:2;:16;;;;14944:52;:77;;;;;15014:6;15000:21;;:2;:21;;;;14944:77;14940:1109;;;15045:13;;;;;;;;;;;15041:245;;15090:31;:37;15122:4;15090:37;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;15131:31;:35;15163:2;15131:35;;;;;;;;;;;;;;;;;;;;;;;;;15090:76;15082:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;15232:7;:5;:7::i;:::-;15224:15;;:4;:15;;;15216:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;15041:245;15336:25;:31;15362:4;15336:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15372:31;:35;15404:2;15372:35;;;;;;;;;;;;;;;;;;;;;;;;;15371:36;15336:71;:106;;;;;15424:18;;15411:12;:31;15336:106;15332:480;;;15485:12;;15475:6;:22;;15467:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15332:480;;;15618:25;:29;15644:2;15618:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15652:31;:37;15684:4;15652:37;;;;;;;;;;;;;;;;;;;;;;;;;15651:38;15618:71;15614:198;;;15732:13;;15722:6;:23;;15714:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15614:198;15332:480;15835:31;:35;15867:2;15835:35;;;;;;;;;;;;;;;;;;;;;;;;;15834:36;:78;;;;;15875:31;:37;15907:4;15875:37;;;;;;;;;;;;;;;;;;;;;;;;;15874:38;15834:78;15830:204;;;15970:15;;15953:13;15963:2;15953:9;:13::i;:::-;15944:6;:22;;;;:::i;:::-;:41;;15936:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15830:204;14940:1109;14907:1153;16072:28;16103:24;16121:4;16103:9;:24::i;:::-;16072:55;;16140:12;16179:18;;16155:20;:42;;16140:57;;16213:7;:22;;;;;16224:11;;;;;;;;;;;16213:22;:35;;;;;16240:8;;;;;;;;;;;16239:9;16213:35;:71;;;;;16253:25;:31;16279:4;16253:31;;;;;;;;;;;;;;;;;;;;;;;;;16252:32;16213:71;:101;;;;;16289:19;:25;16309:4;16289:25;;;;;;;;;;;;;;;;;;;;;;;;;16288:26;16213:101;:129;;;;;16319:19;:23;16339:2;16319:23;;;;;;;;;;;;;;;;;;;;;;;;;16318:24;16213:129;16210:236;;;16370:4;16359:8;;:15;;;;;;;;;;;;;;;;;;16391:10;:8;:10::i;:::-;16429:5;16418:8;;:16;;;;;;;;;;;;;;;;;;16210:236;16458:12;16473:4;16458:19;;16576;:25;16596:4;16576:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16605:19;:23;16625:2;16605:23;;;;;;;;;;;;;;;;;;;;;;;;;16576:52;16573:99;;;16655:5;16645:15;;16573:99;16684:12;16711:21;16814:7;16811:1198;;;16866:1;16847:18;;:20;:63;;;;;16898:12;16893:1;16872:18;;:22;;;;:::i;:::-;16871:39;16847:63;16844:1004;;;16960:3;16955:2;16946:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;16930:33;;16982:54;16998:4;17004:16;;;;;;;;;;;17022:13;16982:15;:54::i;:::-;16844:1004;;;17099:25;:29;17125:2;17099:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;17148:1;17132:13;;:17;17099:50;17095:753;;;17200:3;17185:13;;17176:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;17169:34;;17270:13;;17251:16;;17244:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;17222:18;;:61;;;;;;;:::i;:::-;;;;;;;;17348:13;;17330:15;;17323:4;:22;;;;:::i;:::-;:38;;;;:::i;:::-;17302:17;;:59;;;;;;;:::i;:::-;;;;;;;;17424:13;;17407:14;;17400:4;:21;;;;:::i;:::-;:37;;;;:::i;:::-;17380:16;;:57;;;;;;;:::i;:::-;;;;;;;;17095:753;;;17498:25;:31;17524:4;17498:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;17548:1;17533:12;;:16;17498:51;17495:353;;;17601:3;17586:12;;17577:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17570:34;;17670:12;;17652:15;;17645:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;17623:18;;:59;;;;;;;:::i;:::-;;;;;;;;17746:12;;17729:14;;17722:4;:21;;;;:::i;:::-;:36;;;;:::i;:::-;17701:17;;:57;;;;;;;:::i;:::-;;;;;;;;17820:12;;17804:13;;17797:4;:20;;;;:::i;:::-;:35;;;;:::i;:::-;17777:16;;:55;;;;;;;:::i;:::-;;;;;;;;17495:353;17095:753;16844:1004;17874:1;17867:4;:8;17864:89;;;17895:42;17911:4;17925;17932;17895:15;:42::i;:::-;17864:89;17984:13;17977:4;:20;;;;:::i;:::-;17967:30;;;;;:::i;:::-;;;16811:1198;18021:33;18037:4;18043:2;18047:6;18021:15;:33::i;:::-;14673:3389;;;;;14594:3468;;;:::o;18923:240::-;19040:5;19006:25;:31;19032:4;19006:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19058;19085:4;19091:5;19058:26;:39::i;:::-;19149:5;19115:40;;19143:4;19115:40;;;;;;;;;;;;18923:240;;:::o;20682:1415::-;20721:23;20747:24;20765:4;20747:9;:24::i;:::-;20721:50;;20782:25;20851:16;;20831:17;;20810:18;;:38;;;;:::i;:::-;:57;;;;:::i;:::-;20782:85;;20902:1;20883:15;:20;:46;;;;20928:1;20907:17;:22;20883:46;20880:60;;;20932:7;;;;20880:60;20994:1;20973:18;;:22;;;;:::i;:::-;20955:15;:40;20952:111;;;21050:1;21029:18;;:22;;;;:::i;:::-;21011:40;;20952:111;21075:12;21149:23;21234:1;21214:17;21193:18;;21175:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;21149:86;;21248:51;21283:15;21265;:33;;;;:::i;:::-;21248:16;:51::i;:::-;21312:18;21333:21;21312:42;;21365:23;21391:10;21365:36;;21414:22;21513:1;21494:18;;:20;;;;:::i;:::-;21473:17;:42;;;;:::i;:::-;21452:17;;21439:10;:30;;;;:::i;:::-;:77;;;;:::i;:::-;21414:102;;21527:21;21624:1;21605:18;;:20;;;;:::i;:::-;21584:17;:42;;;;:::i;:::-;21564:16;;21551:10;:29;;;;:::i;:::-;:76;;;;:::i;:::-;21527:100;;21676:13;21659:14;:30;;;;:::i;:::-;21640:49;;;;;:::i;:::-;;;21723:1;21702:18;:22;;;;21755:1;21735:17;:21;;;;21786:1;21767:16;:20;;;;21821:1;21803:15;:19;:42;;;;;21844:1;21826:15;:19;21803:42;21800:119;;;21861:46;21874:15;21891;21861:12;:46::i;:::-;21800:119;21952:16;;;;;;;;;;;21944:30;;21982:13;21944:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21931:69;;;;;22034:15;;;;;;;;;;;22026:29;;22063:21;22026:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22013:76;;;;;20710:1387;;;;;;;;20682:1415;:::o;4109:602::-;4267:1;4249:20;;:6;:20;;;;4241:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4351:1;4330:23;;:9;:23;;;;4322:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4406:21;4430:9;:17;4440:6;4430:17;;;;;;;;;;;;;;;;4406:41;;4483:6;4466:13;:23;;4458:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4596:6;4580:13;:22;4560:9;:17;4570:6;4560:17;;;;;;;;;;;;;;;:42;;;;4644:6;4620:9;:20;4630:9;4620:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4685:9;4668:35;;4677:6;4668:35;;;4696:6;4668:35;;;;;;:::i;:::-;;;;;;;;4230:481;4109:602;;;:::o;11872:207::-;12002:10;11960:31;:39;11992:6;11960:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;12028:43;12052:6;12060:10;12028:43;;;;;;;:::i;:::-;;;;;;;;11872:207;;:::o;18070:591::-;18198:21;18236:1;18222:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18198:40;;18267:4;18249;18254:1;18249:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18293:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18283:4;18288:1;18283:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18328:62;18345:4;18360:15;18378:11;18328:8;:62::i;:::-;18429:15;:66;;;18510:11;18536:1;18580:4;18607;18627:15;18429:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18125:536;18070:591;:::o;19171:522::-;19319:62;19336:4;19351:15;19369:11;19319:8;:62::i;:::-;19424:15;:31;;;19463:9;19496:4;19516:11;19542:1;19585;19636:7;:5;:7::i;:::-;19659:15;19424:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19171:522;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:144::-;4243:9;4276:37;4307:5;4276:37;:::i;:::-;4263:50;;4175:144;;;:::o;4325:167::-;4430:55;4479:5;4430:55;:::i;:::-;4425:3;4418:68;4325:167;;:::o;4498:258::-;4609:4;4647:2;4636:9;4632:18;4624:26;;4660:89;4746:1;4735:9;4731:17;4722:6;4660:89;:::i;:::-;4498:258;;;;:::o;4762:118::-;4849:24;4867:5;4849:24;:::i;:::-;4844:3;4837:37;4762:118;;:::o;4886:222::-;4979:4;5017:2;5006:9;5002:18;4994:26;;5030:71;5098:1;5087:9;5083:17;5074:6;5030:71;:::i;:::-;4886:222;;;;:::o;5114:619::-;5191:6;5199;5207;5256:2;5244:9;5235:7;5231:23;5227:32;5224:119;;;5262:79;;:::i;:::-;5224:119;5382:1;5407:53;5452:7;5443:6;5432:9;5428:22;5407:53;:::i;:::-;5397:63;;5353:117;5509:2;5535:53;5580:7;5571:6;5560:9;5556:22;5535:53;:::i;:::-;5525:63;;5480:118;5637:2;5663:53;5708:7;5699:6;5688:9;5684:22;5663:53;:::i;:::-;5653:63;;5608:118;5114:619;;;;;:::o;5739:329::-;5798:6;5847:2;5835:9;5826:7;5822:23;5818:32;5815:119;;;5853:79;;:::i;:::-;5815:119;5973:1;5998:53;6043:7;6034:6;6023:9;6019:22;5998:53;:::i;:::-;5988:63;;5944:117;5739:329;;;;:::o;6074:86::-;6109:7;6149:4;6142:5;6138:16;6127:27;;6074:86;;;:::o;6166:112::-;6249:22;6265:5;6249:22;:::i;:::-;6244:3;6237:35;6166:112;;:::o;6284:214::-;6373:4;6411:2;6400:9;6396:18;6388:26;;6424:67;6488:1;6477:9;6473:17;6464:6;6424:67;:::i;:::-;6284:214;;;;:::o;6504:118::-;6591:24;6609:5;6591:24;:::i;:::-;6586:3;6579:37;6504:118;;:::o;6628:222::-;6721:4;6759:2;6748:9;6744:18;6736:26;;6772:71;6840:1;6829:9;6825:17;6816:6;6772:71;:::i;:::-;6628:222;;;;:::o;6856:116::-;6926:21;6941:5;6926:21;:::i;:::-;6919:5;6916:32;6906:60;;6962:1;6959;6952:12;6906:60;6856:116;:::o;6978:133::-;7021:5;7059:6;7046:20;7037:29;;7075:30;7099:5;7075:30;:::i;:::-;6978:133;;;;:::o;7117:468::-;7182:6;7190;7239:2;7227:9;7218:7;7214:23;7210:32;7207:119;;;7245:79;;:::i;:::-;7207:119;7365:1;7390:53;7435:7;7426:6;7415:9;7411:22;7390:53;:::i;:::-;7380:63;;7336:117;7492:2;7518:50;7560:7;7551:6;7540:9;7536:22;7518:50;:::i;:::-;7508:60;;7463:115;7117:468;;;;;:::o;7591:619::-;7668:6;7676;7684;7733:2;7721:9;7712:7;7708:23;7704:32;7701:119;;;7739:79;;:::i;:::-;7701:119;7859:1;7884:53;7929:7;7920:6;7909:9;7905:22;7884:53;:::i;:::-;7874:63;;7830:117;7986:2;8012:53;8057:7;8048:6;8037:9;8033:22;8012:53;:::i;:::-;8002:63;;7957:118;8114:2;8140:53;8185:7;8176:6;8165:9;8161:22;8140:53;:::i;:::-;8130:63;;8085:118;7591:619;;;;;:::o;8216:474::-;8284:6;8292;8341:2;8329:9;8320:7;8316:23;8312:32;8309:119;;;8347:79;;:::i;:::-;8309:119;8467:1;8492:53;8537:7;8528:6;8517:9;8513:22;8492:53;:::i;:::-;8482:63;;8438:117;8594:2;8620:53;8665:7;8656:6;8645:9;8641:22;8620:53;:::i;:::-;8610:63;;8565:118;8216:474;;;;;:::o;8696:180::-;8744:77;8741:1;8734:88;8841:4;8838:1;8831:15;8865:4;8862:1;8855:15;8882:320;8926:6;8963:1;8957:4;8953:12;8943:22;;9010:1;9004:4;9000:12;9031:18;9021:81;;9087:4;9079:6;9075:17;9065:27;;9021:81;9149:2;9141:6;9138:14;9118:18;9115:38;9112:84;;;9168:18;;:::i;:::-;9112:84;8933:269;8882:320;;;:::o;9208:227::-;9348:34;9344:1;9336:6;9332:14;9325:58;9417:10;9412:2;9404:6;9400:15;9393:35;9208:227;:::o;9441:366::-;9583:3;9604:67;9668:2;9663:3;9604:67;:::i;:::-;9597:74;;9680:93;9769:3;9680:93;:::i;:::-;9798:2;9793:3;9789:12;9782:19;;9441:366;;;:::o;9813:419::-;9979:4;10017:2;10006:9;10002:18;9994:26;;10066:9;10060:4;10056:20;10052:1;10041:9;10037:17;10030:47;10094:131;10220:4;10094:131;:::i;:::-;10086:139;;9813:419;;;:::o;10238:182::-;10378:34;10374:1;10366:6;10362:14;10355:58;10238:182;:::o;10426:366::-;10568:3;10589:67;10653:2;10648:3;10589:67;:::i;:::-;10582:74;;10665:93;10754:3;10665:93;:::i;:::-;10783:2;10778:3;10774:12;10767:19;;10426:366;;;:::o;10798:419::-;10964:4;11002:2;10991:9;10987:18;10979:26;;11051:9;11045:4;11041:20;11037:1;11026:9;11022:17;11015:47;11079:131;11205:4;11079:131;:::i;:::-;11071:139;;10798:419;;;:::o;11223:180::-;11271:77;11268:1;11261:88;11368:4;11365:1;11358:15;11392:4;11389:1;11382:15;11409:348;11449:7;11472:20;11490:1;11472:20;:::i;:::-;11467:25;;11506:20;11524:1;11506:20;:::i;:::-;11501:25;;11694:1;11626:66;11622:74;11619:1;11616:81;11611:1;11604:9;11597:17;11593:105;11590:131;;;11701:18;;:::i;:::-;11590:131;11749:1;11746;11742:9;11731:20;;11409:348;;;;:::o;11763:180::-;11811:77;11808:1;11801:88;11908:4;11905:1;11898:15;11932:4;11929:1;11922:15;11949:185;11989:1;12006:20;12024:1;12006:20;:::i;:::-;12001:25;;12040:20;12058:1;12040:20;:::i;:::-;12035:25;;12079:1;12069:35;;12084:18;;:::i;:::-;12069:35;12126:1;12123;12119:9;12114:14;;11949:185;;;;:::o;12140:228::-;12280:34;12276:1;12268:6;12264:14;12257:58;12349:11;12344:2;12336:6;12332:15;12325:36;12140:228;:::o;12374:366::-;12516:3;12537:67;12601:2;12596:3;12537:67;:::i;:::-;12530:74;;12613:93;12702:3;12613:93;:::i;:::-;12731:2;12726:3;12722:12;12715:19;;12374:366;;;:::o;12746:419::-;12912:4;12950:2;12939:9;12935:18;12927:26;;12999:9;12993:4;12989:20;12985:1;12974:9;12970:17;12963:47;13027:131;13153:4;13027:131;:::i;:::-;13019:139;;12746:419;;;:::o;13171:305::-;13211:3;13230:20;13248:1;13230:20;:::i;:::-;13225:25;;13264:20;13282:1;13264:20;:::i;:::-;13259:25;;13418:1;13350:66;13346:74;13343:1;13340:81;13337:107;;;13424:18;;:::i;:::-;13337:107;13468:1;13465;13461:9;13454:16;;13171:305;;;;:::o;13482:223::-;13622:34;13618:1;13610:6;13606:14;13599:58;13691:6;13686:2;13678:6;13674:15;13667:31;13482:223;:::o;13711:366::-;13853:3;13874:67;13938:2;13933:3;13874:67;:::i;:::-;13867:74;;13950:93;14039:3;13950:93;:::i;:::-;14068:2;14063:3;14059:12;14052:19;;13711:366;;;:::o;14083:419::-;14249:4;14287:2;14276:9;14272:18;14264:26;;14336:9;14330:4;14326:20;14322:1;14311:9;14307:17;14300:47;14364:131;14490:4;14364:131;:::i;:::-;14356:139;;14083:419;;;:::o;14508:226::-;14648:34;14644:1;14636:6;14632:14;14625:58;14717:9;14712:2;14704:6;14700:15;14693:34;14508:226;:::o;14740:366::-;14882:3;14903:67;14967:2;14962:3;14903:67;:::i;:::-;14896:74;;14979:93;15068:3;14979:93;:::i;:::-;15097:2;15092:3;15088:12;15081:19;;14740:366;;;:::o;15112:419::-;15278:4;15316:2;15305:9;15301:18;15293:26;;15365:9;15359:4;15355:20;15351:1;15340:9;15336:17;15329:47;15393:131;15519:4;15393:131;:::i;:::-;15385:139;;15112:419;;;:::o;15537:175::-;15677:27;15673:1;15665:6;15661:14;15654:51;15537:175;:::o;15718:366::-;15860:3;15881:67;15945:2;15940:3;15881:67;:::i;:::-;15874:74;;15957:93;16046:3;15957:93;:::i;:::-;16075:2;16070:3;16066:12;16059:19;;15718:366;;;:::o;16090:419::-;16256:4;16294:2;16283:9;16279:18;16271:26;;16343:9;16337:4;16333:20;16329:1;16318:9;16314:17;16307:47;16371:131;16497:4;16371:131;:::i;:::-;16363:139;;16090:419;;;:::o;16515:176::-;16655:28;16651:1;16643:6;16639:14;16632:52;16515:176;:::o;16697:366::-;16839:3;16860:67;16924:2;16919:3;16860:67;:::i;:::-;16853:74;;16936:93;17025:3;16936:93;:::i;:::-;17054:2;17049:3;17045:12;17038:19;;16697:366;;;:::o;17069:419::-;17235:4;17273:2;17262:9;17258:18;17250:26;;17322:9;17316:4;17312:20;17308:1;17297:9;17293:17;17286:47;17350:131;17476:4;17350:131;:::i;:::-;17342:139;;17069:419;;;:::o;17494:220::-;17634:34;17630:1;17622:6;17618:14;17611:58;17703:3;17698:2;17690:6;17686:15;17679:28;17494:220;:::o;17720:366::-;17862:3;17883:67;17947:2;17942:3;17883:67;:::i;:::-;17876:74;;17959:93;18048:3;17959:93;:::i;:::-;18077:2;18072:3;18068:12;18061:19;;17720:366;;;:::o;18092:419::-;18258:4;18296:2;18285:9;18281:18;18273:26;;18345:9;18339:4;18335:20;18331:1;18320:9;18316:17;18309:47;18373:131;18499:4;18373:131;:::i;:::-;18365:139;;18092:419;;;:::o;18517:143::-;18574:5;18605:6;18599:13;18590:22;;18621:33;18648:5;18621:33;:::i;:::-;18517:143;;;;:::o;18666:351::-;18736:6;18785:2;18773:9;18764:7;18760:23;18756:32;18753:119;;;18791:79;;:::i;:::-;18753:119;18911:1;18936:64;18992:7;18983:6;18972:9;18968:22;18936:64;:::i;:::-;18926:74;;18882:128;18666:351;;;;:::o;19023:332::-;19144:4;19182:2;19171:9;19167:18;19159:26;;19195:71;19263:1;19252:9;19248:17;19239:6;19195:71;:::i;:::-;19276:72;19344:2;19333:9;19329:18;19320:6;19276:72;:::i;:::-;19023:332;;;;;:::o;19361:137::-;19415:5;19446:6;19440:13;19431:22;;19462:30;19486:5;19462:30;:::i;:::-;19361:137;;;;:::o;19504:345::-;19571:6;19620:2;19608:9;19599:7;19595:23;19591:32;19588:119;;;19626:79;;:::i;:::-;19588:119;19746:1;19771:61;19824:7;19815:6;19804:9;19800:22;19771:61;:::i;:::-;19761:71;;19717:125;19504:345;;;;:::o;19855:174::-;19995:26;19991:1;19983:6;19979:14;19972:50;19855:174;:::o;20035:366::-;20177:3;20198:67;20262:2;20257:3;20198:67;:::i;:::-;20191:74;;20274:93;20363:3;20274:93;:::i;:::-;20392:2;20387:3;20383:12;20376:19;;20035:366;;;:::o;20407:419::-;20573:4;20611:2;20600:9;20596:18;20588:26;;20660:9;20654:4;20650:20;20646:1;20635:9;20631:17;20624:47;20688:131;20814:4;20688:131;:::i;:::-;20680:139;;20407:419;;;:::o;20832:244::-;20972:34;20968:1;20960:6;20956:14;20949:58;21041:27;21036:2;21028:6;21024:15;21017:52;20832:244;:::o;21082:366::-;21224:3;21245:67;21309:2;21304:3;21245:67;:::i;:::-;21238:74;;21321:93;21410:3;21321:93;:::i;:::-;21439:2;21434:3;21430:12;21423:19;;21082:366;;;:::o;21454:419::-;21620:4;21658:2;21647:9;21643:18;21635:26;;21707:9;21701:4;21697:20;21693:1;21682:9;21678:17;21671:47;21735:131;21861:4;21735:131;:::i;:::-;21727:139;;21454:419;;;:::o;21879:224::-;22019:34;22015:1;22007:6;22003:14;21996:58;22088:7;22083:2;22075:6;22071:15;22064:32;21879:224;:::o;22109:366::-;22251:3;22272:67;22336:2;22331:3;22272:67;:::i;:::-;22265:74;;22348:93;22437:3;22348:93;:::i;:::-;22466:2;22461:3;22457:12;22450:19;;22109:366;;;:::o;22481:419::-;22647:4;22685:2;22674:9;22670:18;22662:26;;22734:9;22728:4;22724:20;22720:1;22709:9;22705:17;22698:47;22762:131;22888:4;22762:131;:::i;:::-;22754:139;;22481:419;;;:::o;22906:224::-;23046:34;23042:1;23034:6;23030:14;23023:58;23115:7;23110:2;23102:6;23098:15;23091:32;22906:224;:::o;23136:366::-;23278:3;23299:67;23363:2;23358:3;23299:67;:::i;:::-;23292:74;;23375:93;23464:3;23375:93;:::i;:::-;23493:2;23488:3;23484:12;23477:19;;23136:366;;;:::o;23508:419::-;23674:4;23712:2;23701:9;23697:18;23689:26;;23761:9;23755:4;23751:20;23747:1;23736:9;23732:17;23725:47;23789:131;23915:4;23789:131;:::i;:::-;23781:139;;23508:419;;;:::o;23933:231::-;24073:34;24069:1;24061:6;24057:14;24050:58;24142:14;24137:2;24129:6;24125:15;24118:39;23933:231;:::o;24170:366::-;24312:3;24333:67;24397:2;24392:3;24333:67;:::i;:::-;24326:74;;24409:93;24498:3;24409:93;:::i;:::-;24527:2;24522:3;24518:12;24511:19;;24170:366;;;:::o;24542:419::-;24708:4;24746:2;24735:9;24731:18;24723:26;;24795:9;24789:4;24785:20;24781:1;24770:9;24766:17;24759:47;24823:131;24949:4;24823:131;:::i;:::-;24815:139;;24542:419;;;:::o;24967:229::-;25107:34;25103:1;25095:6;25091:14;25084:58;25176:12;25171:2;25163:6;25159:15;25152:37;24967:229;:::o;25202:366::-;25344:3;25365:67;25429:2;25424:3;25365:67;:::i;:::-;25358:74;;25441:93;25530:3;25441:93;:::i;:::-;25559:2;25554:3;25550:12;25543:19;;25202:366;;;:::o;25574:419::-;25740:4;25778:2;25767:9;25763:18;25755:26;;25827:9;25821:4;25817:20;25813:1;25802:9;25798:17;25791:47;25855:131;25981:4;25855:131;:::i;:::-;25847:139;;25574:419;;;:::o;25999:225::-;26139:34;26135:1;26127:6;26123:14;26116:58;26208:8;26203:2;26195:6;26191:15;26184:33;25999:225;:::o;26230:366::-;26372:3;26393:67;26457:2;26452:3;26393:67;:::i;:::-;26386:74;;26469:93;26558:3;26469:93;:::i;:::-;26587:2;26582:3;26578:12;26571:19;;26230:366;;;:::o;26602:419::-;26768:4;26806:2;26795:9;26791:18;26783:26;;26855:9;26849:4;26845:20;26841:1;26830:9;26826:17;26819:47;26883:131;27009:4;26883:131;:::i;:::-;26875:139;;26602:419;;;:::o;27027:147::-;27128:11;27165:3;27150:18;;27027:147;;;;:::o;27180:114::-;;:::o;27300:398::-;27459:3;27480:83;27561:1;27556:3;27480:83;:::i;:::-;27473:90;;27572:93;27661:3;27572:93;:::i;:::-;27690:1;27685:3;27681:11;27674:18;;27300:398;;;:::o;27704:379::-;27888:3;27910:147;28053:3;27910:147;:::i;:::-;27903:154;;28074:3;28067:10;;27704:379;;;:::o;28089:223::-;28229:34;28225:1;28217:6;28213:14;28206:58;28298:6;28293:2;28285:6;28281:15;28274:31;28089:223;:::o;28318:366::-;28460:3;28481:67;28545:2;28540:3;28481:67;:::i;:::-;28474:74;;28557:93;28646:3;28557:93;:::i;:::-;28675:2;28670:3;28666:12;28659:19;;28318:366;;;:::o;28690:419::-;28856:4;28894:2;28883:9;28879:18;28871:26;;28943:9;28937:4;28933:20;28929:1;28918:9;28914:17;28907:47;28971:131;29097:4;28971:131;:::i;:::-;28963:139;;28690:419;;;:::o;29115:221::-;29255:34;29251:1;29243:6;29239:14;29232:58;29324:4;29319:2;29311:6;29307:15;29300:29;29115:221;:::o;29342:366::-;29484:3;29505:67;29569:2;29564:3;29505:67;:::i;:::-;29498:74;;29581:93;29670:3;29581:93;:::i;:::-;29699:2;29694:3;29690:12;29683:19;;29342:366;;;:::o;29714:419::-;29880:4;29918:2;29907:9;29903:18;29895:26;;29967:9;29961:4;29957:20;29953:1;29942:9;29938:17;29931:47;29995:131;30121:4;29995:131;:::i;:::-;29987:139;;29714:419;;;:::o;30139:224::-;30279:34;30275:1;30267:6;30263:14;30256:58;30348:7;30343:2;30335:6;30331:15;30324:32;30139:224;:::o;30369:366::-;30511:3;30532:67;30596:2;30591:3;30532:67;:::i;:::-;30525:74;;30608:93;30697:3;30608:93;:::i;:::-;30726:2;30721:3;30717:12;30710:19;;30369:366;;;:::o;30741:419::-;30907:4;30945:2;30934:9;30930:18;30922:26;;30994:9;30988:4;30984:20;30980:1;30969:9;30965:17;30958:47;31022:131;31148:4;31022:131;:::i;:::-;31014:139;;30741:419;;;:::o;31166:222::-;31306:34;31302:1;31294:6;31290:14;31283:58;31375:5;31370:2;31362:6;31358:15;31351:30;31166:222;:::o;31394:366::-;31536:3;31557:67;31621:2;31616:3;31557:67;:::i;:::-;31550:74;;31633:93;31722:3;31633:93;:::i;:::-;31751:2;31746:3;31742:12;31735:19;;31394:366;;;:::o;31766:419::-;31932:4;31970:2;31959:9;31955:18;31947:26;;32019:9;32013:4;32009:20;32005:1;31994:9;31990:17;31983:47;32047:131;32173:4;32047:131;:::i;:::-;32039:139;;31766:419;;;:::o;32191:179::-;32331:31;32327:1;32319:6;32315:14;32308:55;32191:179;:::o;32376:366::-;32518:3;32539:67;32603:2;32598:3;32539:67;:::i;:::-;32532:74;;32615:93;32704:3;32615:93;:::i;:::-;32733:2;32728:3;32724:12;32717:19;;32376:366;;;:::o;32748:419::-;32914:4;32952:2;32941:9;32937:18;32929:26;;33001:9;32995:4;32991:20;32987:1;32976:9;32972:17;32965:47;33029:131;33155:4;33029:131;:::i;:::-;33021:139;;32748:419;;;:::o;33173:172::-;33313:24;33309:1;33301:6;33297:14;33290:48;33173:172;:::o;33351:366::-;33493:3;33514:67;33578:2;33573:3;33514:67;:::i;:::-;33507:74;;33590:93;33679:3;33590:93;:::i;:::-;33708:2;33703:3;33699:12;33692:19;;33351:366;;;:::o;33723:419::-;33889:4;33927:2;33916:9;33912:18;33904:26;;33976:9;33970:4;33966:20;33962:1;33951:9;33947:17;33940:47;34004:131;34130:4;34004:131;:::i;:::-;33996:139;;33723:419;;;:::o;34148:172::-;34288:24;34284:1;34276:6;34272:14;34265:48;34148:172;:::o;34326:366::-;34468:3;34489:67;34553:2;34548:3;34489:67;:::i;:::-;34482:74;;34565:93;34654:3;34565:93;:::i;:::-;34683:2;34678:3;34674:12;34667:19;;34326:366;;;:::o;34698:419::-;34864:4;34902:2;34891:9;34887:18;34879:26;;34951:9;34945:4;34941:20;34937:1;34926:9;34922:17;34915:47;34979:131;35105:4;34979:131;:::i;:::-;34971:139;;34698:419;;;:::o;35123:227::-;35263:34;35259:1;35251:6;35247:14;35240:58;35332:10;35327:2;35319:6;35315:15;35308:35;35123:227;:::o;35356:366::-;35498:3;35519:67;35583:2;35578:3;35519:67;:::i;:::-;35512:74;;35595:93;35684:3;35595:93;:::i;:::-;35713:2;35708:3;35704:12;35697:19;;35356:366;;;:::o;35728:419::-;35894:4;35932:2;35921:9;35917:18;35909:26;;35981:9;35975:4;35971:20;35967:1;35956:9;35952:17;35945:47;36009:131;36135:4;36009:131;:::i;:::-;36001:139;;35728:419;;;:::o;36153:229::-;36293:34;36289:1;36281:6;36277:14;36270:58;36362:12;36357:2;36349:6;36345:15;36338:37;36153:229;:::o;36388:366::-;36530:3;36551:67;36615:2;36610:3;36551:67;:::i;:::-;36544:74;;36627:93;36716:3;36627:93;:::i;:::-;36745:2;36740:3;36736:12;36729:19;;36388:366;;;:::o;36760:419::-;36926:4;36964:2;36953:9;36949:18;36941:26;;37013:9;37007:4;37003:20;36999:1;36988:9;36984:17;36977:47;37041:131;37167:4;37041:131;:::i;:::-;37033:139;;36760:419;;;:::o;37185:174::-;37325:26;37321:1;37313:6;37309:14;37302:50;37185:174;:::o;37365:366::-;37507:3;37528:67;37592:2;37587:3;37528:67;:::i;:::-;37521:74;;37604:93;37693:3;37604:93;:::i;:::-;37722:2;37717:3;37713:12;37706:19;;37365:366;;;:::o;37737:419::-;37903:4;37941:2;37930:9;37926:18;37918:26;;37990:9;37984:4;37980:20;37976:1;37965:9;37961:17;37954:47;38018:131;38144:4;38018:131;:::i;:::-;38010:139;;37737:419;;;:::o;38162:191::-;38202:4;38222:20;38240:1;38222:20;:::i;:::-;38217:25;;38256:20;38274:1;38256:20;:::i;:::-;38251:25;;38295:1;38292;38289:8;38286:34;;;38300:18;;:::i;:::-;38286:34;38345:1;38342;38338:9;38330:17;;38162:191;;;;:::o;38359:225::-;38499:34;38495:1;38487:6;38483:14;38476:58;38568:8;38563:2;38555:6;38551:15;38544:33;38359:225;:::o;38590:366::-;38732:3;38753:67;38817:2;38812:3;38753:67;:::i;:::-;38746:74;;38829:93;38918:3;38829:93;:::i;:::-;38947:2;38942:3;38938:12;38931:19;;38590:366;;;:::o;38962:419::-;39128:4;39166:2;39155:9;39151:18;39143:26;;39215:9;39209:4;39205:20;39201:1;39190:9;39186:17;39179:47;39243:131;39369:4;39243:131;:::i;:::-;39235:139;;38962:419;;;:::o;39387:320::-;39502:4;39540:2;39529:9;39525:18;39517:26;;39553:71;39621:1;39610:9;39606:17;39597:6;39553:71;:::i;:::-;39634:66;39696:2;39685:9;39681:18;39672:6;39634:66;:::i;:::-;39387:320;;;;;:::o;39713:180::-;39761:77;39758:1;39751:88;39858:4;39855:1;39848:15;39882:4;39879:1;39872:15;39899:180;39947:77;39944:1;39937:88;40044:4;40041:1;40034:15;40068:4;40065:1;40058:15;40085:143;40142:5;40173:6;40167:13;40158:22;;40189:33;40216:5;40189:33;:::i;:::-;40085:143;;;;:::o;40234:351::-;40304:6;40353:2;40341:9;40332:7;40328:23;40324:32;40321:119;;;40359:79;;:::i;:::-;40321:119;40479:1;40504:64;40560:7;40551:6;40540:9;40536:22;40504:64;:::i;:::-;40494:74;;40450:128;40234:351;;;;:::o;40591:85::-;40636:7;40665:5;40654:16;;40591:85;;;:::o;40682:158::-;40740:9;40773:61;40791:42;40800:32;40826:5;40800:32;:::i;:::-;40791:42;:::i;:::-;40773:61;:::i;:::-;40760:74;;40682:158;;;:::o;40846:147::-;40941:45;40980:5;40941:45;:::i;:::-;40936:3;40929:58;40846:147;;:::o;40999:114::-;41066:6;41100:5;41094:12;41084:22;;40999:114;;;:::o;41119:184::-;41218:11;41252:6;41247:3;41240:19;41292:4;41287:3;41283:14;41268:29;;41119:184;;;;:::o;41309:132::-;41376:4;41399:3;41391:11;;41429:4;41424:3;41420:14;41412:22;;41309:132;;;:::o;41447:108::-;41524:24;41542:5;41524:24;:::i;:::-;41519:3;41512:37;41447:108;;:::o;41561:179::-;41630:10;41651:46;41693:3;41685:6;41651:46;:::i;:::-;41729:4;41724:3;41720:14;41706:28;;41561:179;;;;:::o;41746:113::-;41816:4;41848;41843:3;41839:14;41831:22;;41746:113;;;:::o;41895:732::-;42014:3;42043:54;42091:5;42043:54;:::i;:::-;42113:86;42192:6;42187:3;42113:86;:::i;:::-;42106:93;;42223:56;42273:5;42223:56;:::i;:::-;42302:7;42333:1;42318:284;42343:6;42340:1;42337:13;42318:284;;;42419:6;42413:13;42446:63;42505:3;42490:13;42446:63;:::i;:::-;42439:70;;42532:60;42585:6;42532:60;:::i;:::-;42522:70;;42378:224;42365:1;42362;42358:9;42353:14;;42318:284;;;42322:14;42618:3;42611:10;;42019:608;;;41895:732;;;;:::o;42633:831::-;42896:4;42934:3;42923:9;42919:19;42911:27;;42948:71;43016:1;43005:9;43001:17;42992:6;42948:71;:::i;:::-;43029:80;43105:2;43094:9;43090:18;43081:6;43029:80;:::i;:::-;43156:9;43150:4;43146:20;43141:2;43130:9;43126:18;43119:48;43184:108;43287:4;43278:6;43184:108;:::i;:::-;43176:116;;43302:72;43370:2;43359:9;43355:18;43346:6;43302:72;:::i;:::-;43384:73;43452:3;43441:9;43437:19;43428:6;43384:73;:::i;:::-;42633:831;;;;;;;;:::o;43470:807::-;43719:4;43757:3;43746:9;43742:19;43734:27;;43771:71;43839:1;43828:9;43824:17;43815:6;43771:71;:::i;:::-;43852:72;43920:2;43909:9;43905:18;43896:6;43852:72;:::i;:::-;43934:80;44010:2;43999:9;43995:18;43986:6;43934:80;:::i;:::-;44024;44100:2;44089:9;44085:18;44076:6;44024:80;:::i;:::-;44114:73;44182:3;44171:9;44167:19;44158:6;44114:73;:::i;:::-;44197;44265:3;44254:9;44250:19;44241:6;44197:73;:::i;:::-;43470:807;;;;;;;;;:::o;44283:663::-;44371:6;44379;44387;44436:2;44424:9;44415:7;44411:23;44407:32;44404:119;;;44442:79;;:::i;:::-;44404:119;44562:1;44587:64;44643:7;44634:6;44623:9;44619:22;44587:64;:::i;:::-;44577:74;;44533:128;44700:2;44726:64;44782:7;44773:6;44762:9;44758:22;44726:64;:::i;:::-;44716:74;;44671:129;44839:2;44865:64;44921:7;44912:6;44901:9;44897:22;44865:64;:::i;:::-;44855:74;;44810:129;44283:663;;;;;:::o

Swarm Source

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