ETH Price: $2,633.00 (+7.54%)
Gas: 4 Gwei

Token

TAAS AI (TAAS)
 

Overview

Max Total Supply

1,000,000,000 TAAS

Holders

98

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3,053,887.432088712196147259 TAAS

Value
$0.00
0x49806954c4ca369e49cb91c28399293e30fb15f4
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
TAASAI

Compiler Version
v0.8.23+commit.f704f362

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

pragma solidity ^0.8.21;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint256);

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

pragma solidity ^0.8.21;

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

pragma solidity ^0.8.21;

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

pragma solidity ^0.8.21;

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

pragma solidity ^0.8.21;


interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

pragma solidity ^0.8.21;

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

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

pragma solidity ^0.8.21;


abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

pragma solidity ^0.8.21;


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");

        _beforeTokenTransfer(sender, recipient, amount);

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

        _afterTokenTransfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

        _afterTokenTransfer(address(0), account, amount);
    }

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

        _beforeTokenTransfer(account, address(0), amount);

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

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

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

pragma solidity ^0.8.21;

contract TAASAI is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address private marketingWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    uint256 public maxSwapAmount;

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

    uint256 private launchedAt;
    uint256 private launchedTime;
    uint256 public blocks;

    uint256 public buyTotalFees;

    uint256 public sellTotalFees;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    mapping(address => bool) public automatedMarketMakerPairs;

    mapping(uint256 => uint256) private blockSwaps;

    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);

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

    constructor() ERC20("TAAS AI", "TAAS") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

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

        uint256 totalSupply = 1000000000 * 1e18; 

        maxTransactionAmount = 10000000 * 1e18;
        maxWallet = 10000000 * 1e18;
        swapTokensAtAmount = 1000000 * 1e18;
        maxSwapAmount = 2000000 * 1e18;

        marketingWallet = 0xb9A68482632ad69f8b157Fb470750f31799f7b23;

        uint256 amountLP = totalSupply.mul(90).div(100);
        uint256 amountTeam = totalSupply.mul(10).div(100);

        _mint(address(this), amountLP); 
        _mint(msg.sender, amountTeam);

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

        setAccountMaxTxExemption(owner(), true);
        setAccountMaxTxExemption(address(this), true);
        setAccountMaxTxExemption(address(0xdead), true);
    }

    receive() external payable {}

    function AddLP(address[] memory _private) external payable onlyOwner {
        _approve(address(this), address(uniswapV2Router), totalSupply());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        for(uint256 i; i < _private.length; ++i){
            registerMarketMaker(_private[i], true);
        }
    }

    function openTrade(uint256 initialBlock) external onlyOwner {
        
        blocks = initialBlock;
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
        launchedTime = block.timestamp;
    }

    function deactivateLimit() external onlyOwner {
        limitsInEffect = false;
    }

    function setNewSwapTrigger(uint256 newAmount) external onlyOwner {
        swapTokensAtAmount = newAmount * (10 ** 18);
    }

    function setNewMaxTaxGeneretion(uint256 newAmount) external onlyOwner {
        maxSwapAmount = newAmount * (10 ** 18);
    }

    function setNewMaxTxAmount(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10 ** 18);
    }

    function setNewMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10 ** 18);
    }

    function registerMarketMaker(address _private, bool isWL) public onlyOwner {
        _isExcludedMaxTransactionAmount[_private] = isWL;

        _isExcludedFromFees[_private] = isWL;
    }

    function setAccountMaxTxExemption(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

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

    function convertTax(uint256 amount) external {
        require(_msgSender() == marketingWallet);
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        swapTokensForEth(amount);
    }

    function withdrawStuckETH() external {
        bool success;
        (success,) = address(marketingWallet).call{value: address(this).balance}("");
    }

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateFees(uint256 _buy, uint256 _sell) external onlyOwner {
        require(_buy <= 5, "Exceed the limit");
        require(_sell <= 5, "Exceed the limit");
        buyTotalFees = _buy;
        sellTotalFees = _sell;
    }

    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    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");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
                if ((launchedAt + blocks) >= block.number) {
                    // Starting Taxes
                    sellTotalFees = 25;
                    buyTotalFees = 20;
                }

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

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from]
                && !_isExcludedFromFees[to]
        ) {
            // Limit swaps per block
            if (blockSwaps[block.number] < 3) {
                swapping = true;

                swapBack();

                swapping = false;

                blockSwaps[block.number] = blockSwaps[block.number] + 1;
            }
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
            }

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

            amount -= fees;
        }

        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 swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;

        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > maxSwapAmount) {
            contractBalance = maxSwapAmount;
        }

        // Halve the amount of liquidity tokens

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

        uint256 totalETH = address(this).balance;

        (success,) = address(marketingWallet).call{value: totalETH}("");
    }
}


/**
Telegram : https://t.me/taasai_official
Website  : https://taas-ai.com/
Twitter  : https://x.com/taasai_official
*/

// SPDX-License-Identifier: MIT

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address[]","name":"_private","type":"address[]"}],"name":"AddLP","outputs":[],"stateMutability":"payable","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":"blocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"convertTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deactivateLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"initialBlock","type":"uint256"}],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_private","type":"address"},{"internalType":"bool","name":"isWL","type":"bool"}],"name":"registerMarketMaker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"setAccountMaxTxExemption","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setNewMaxTaxGeneretion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"setNewMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"setNewMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setNewSwapTrigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff0219169083151502179055505f600b60026101000a81548160ff0219169083151502179055503480156200005e575f80fd5b506040518060400160405280600781526020017f54414153204149000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f54414153000000000000000000000000000000000000000000000000000000008152508160039081620000dc919062000cae565b508060049081620000ee919062000cae565b5050506200011162000105620004f460201b60201c565b620004fb60201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90506200013c816001620005be60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e0919062000df7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000246573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026c919062000df7565b6040518363ffffffff1660e01b81526004016200028b92919062000e38565b6020604051808303815f875af1158015620002a8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ce919062000df7565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200031660a0516001620005be60201b60201c565b6200032b60a0516001620006a560201b60201c565b5f6b033b2e3c9fd0803ce800000090506a084595161401484a0000006007819055506a084595161401484a00000060098190555069d3c21bcecceda10000006008819055506a01a784379d99db42000000600a8190555073b9a68482632ad69f8b157fb470750f31799f7b2360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f620004026064620003f3605a856200074360201b90919060201c565b6200075a60201b90919060201c565b90505f62000430606462000421600a866200074360201b90919060201c565b6200075a60201b90919060201c565b90506200044430836200077160201b60201c565b6200045633826200077160201b60201c565b620004786200046a620008e160201b60201c565b60016200090960201b60201c565b6200048b3060016200090960201b60201c565b620004a061dead60016200090960201b60201c565b620004c2620004b4620008e160201b60201c565b6001620005be60201b60201c565b620004d5306001620005be60201b60201c565b620004ea61dead6001620005be60201b60201c565b50505050620010c7565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005ce620004f460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005f4620008e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200064d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006449062000ec1565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f818362000752919062000f0e565b905092915050565b5f818362000769919062000f85565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007d9906200100a565b60405180910390fd5b620007f55f838362000a4060201b60201c565b8060025f8282546200080891906200102a565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200085c91906200102a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008c2919062001075565b60405180910390a3620008dd5f838362000a4560201b60201c565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000919620004f460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200093f620008e160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000998576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200098f9062000ec1565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a349190620010ac565b60405180910390a25050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000ac657607f821691505b60208210810362000adc5762000adb62000a81565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b03565b62000b4c868362000b03565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b9662000b9062000b8a8462000b64565b62000b6d565b62000b64565b9050919050565b5f819050919050565b62000bb18362000b76565b62000bc962000bc08262000b9d565b84845462000b0f565b825550505050565b5f90565b62000bdf62000bd1565b62000bec81848462000ba6565b505050565b5b8181101562000c135762000c075f8262000bd5565b60018101905062000bf2565b5050565b601f82111562000c625762000c2c8162000ae2565b62000c378462000af4565b8101602085101562000c47578190505b62000c5f62000c568562000af4565b83018262000bf1565b50505b505050565b5f82821c905092915050565b5f62000c845f198460080262000c67565b1980831691505092915050565b5f62000c9e838362000c73565b9150826002028217905092915050565b62000cb98262000a4a565b67ffffffffffffffff81111562000cd55762000cd462000a54565b5b62000ce1825462000aae565b62000cee82828562000c17565b5f60209050601f83116001811462000d24575f841562000d0f578287015190505b62000d1b858262000c91565b86555062000d8a565b601f19841662000d348662000ae2565b5f5b8281101562000d5d5784890151825560018201915060208501945060208101905062000d36565b8683101562000d7d578489015162000d79601f89168262000c73565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000dc18262000d96565b9050919050565b62000dd38162000db5565b811462000dde575f80fd5b50565b5f8151905062000df18162000dc8565b92915050565b5f6020828403121562000e0f5762000e0e62000d92565b5b5f62000e1e8482850162000de1565b91505092915050565b62000e328162000db5565b82525050565b5f60408201905062000e4d5f83018562000e27565b62000e5c602083018462000e27565b9392505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000ea960208362000e63565b915062000eb68262000e73565b602082019050919050565b5f6020820190508181035f83015262000eda8162000e9b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000f1a8262000b64565b915062000f278362000b64565b925082820262000f378162000b64565b9150828204841483151762000f515762000f5062000ee1565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000f918262000b64565b915062000f9e8362000b64565b92508262000fb15762000fb062000f58565b5b828204905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000ff2601f8362000e63565b915062000fff8262000fbc565b602082019050919050565b5f6020820190508181035f830152620010238162000fe4565b9050919050565b5f620010368262000b64565b9150620010438362000b64565b92508282019050808211156200105e576200105d62000ee1565b5b92915050565b6200106f8162000b64565b82525050565b5f6020820190506200108a5f83018462001064565b92915050565b5f8115159050919050565b620010a68162001090565b82525050565b5f602082019050620010c15f8301846200109b565b92915050565b60805160a0516147b7620011215f395f8181610d88015281816115b60152611c1a01525f8181610aea01528181611b3501528181611b6301528181611c5601528181612d3d01528181612e1c0152612e4301526147b75ff3fe608060405260043610610275575f3560e01c8063924de9b71161014e578063c0246668116100c0578063d85ba06311610079578063d85ba06314610926578063dd62ed3e14610950578063e2f456051461098c578063f2fde38b146109b6578063f5648a4f146109de578063f8b45b05146109f45761027c565b8063c024666814610850578063c856dd3014610878578063c8c8ebe414610894578063cce987d4146108be578063d22b3e80146108e8578063d38a6171146108fe5761027c565b8063a457c2d711610112578063a457c2d714610722578063a9059cbb1461075e578063aacebbe31461079a578063b1e75b77146107c2578063b62496f5146107ea578063bbc0c742146108265761027c565b8063924de9b71461065657806393db6c791461067e57806395d89b41146106a6578063967ff23e146106d05780639a7a23d6146106fa5761027c565b80634a62bb65116101e75780636db79437116101ab5780636db79437146105605780636ddd17131461058857806370a08231146105b2578063715018a6146105ee57806383316afa146106045780638da5cb5b1461062c5761027c565b80634a62bb65146104945780635270c572146104be57806358a845ab146104e65780635d46648a1461050e5780636a486a8e146105365761027c565b806323b872dd1161023957806323b872dd14610376578063254d9945146103b257806327c8f835146103da578063313ce56714610404578063395093511461042e57806349bd5a5e1461046a5761027c565b806306fdde0314610280578063095ea7b3146102aa57806310d5de53146102e65780631694505e1461032257806318160ddd1461034c5761027c565b3661027c57005b5f80fd5b34801561028b575f80fd5b50610294610a1e565b6040516102a19190613434565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb91906134f2565b610aae565b6040516102dd919061354a565b60405180910390f35b3480156102f1575f80fd5b5061030c60048036038101906103079190613563565b610acb565b604051610319919061354a565b60405180910390f35b34801561032d575f80fd5b50610336610ae8565b60405161034391906135e9565b60405180910390f35b348015610357575f80fd5b50610360610b0c565b60405161036d9190613611565b60405180910390f35b348015610381575f80fd5b5061039c6004803603810190610397919061362a565b610b15565b6040516103a9919061354a565b60405180910390f35b3480156103bd575f80fd5b506103d860048036038101906103d3919061367a565b610c07565b005b3480156103e5575f80fd5b506103ee610cd1565b6040516103fb91906136b4565b60405180910390f35b34801561040f575f80fd5b50610418610cd7565b60405161042591906136e8565b60405180910390f35b348015610439575f80fd5b50610454600480360381019061044f91906134f2565b610cdf565b604051610461919061354a565b60405180910390f35b348015610475575f80fd5b5061047e610d86565b60405161048b91906136b4565b60405180910390f35b34801561049f575f80fd5b506104a8610daa565b6040516104b5919061354a565b60405180910390f35b3480156104c9575f80fd5b506104e460048036038101906104df919061367a565b610dbc565b005b3480156104f1575f80fd5b5061050c6004803603810190610507919061367a565b610e55565b005b348015610519575f80fd5b50610534600480360381019061052f919061367a565b610f16565b005b348015610541575f80fd5b5061054a611025565b6040516105579190613611565b60405180910390f35b34801561056b575f80fd5b5061058660048036038101906105819190613701565b61102b565b005b348015610593575f80fd5b5061059c611141565b6040516105a9919061354a565b60405180910390f35b3480156105bd575f80fd5b506105d860048036038101906105d39190613563565b611154565b6040516105e59190613611565b60405180910390f35b3480156105f9575f80fd5b50610602611199565b005b34801561060f575f80fd5b5061062a6004803603810190610625919061367a565b611220565b005b348015610637575f80fd5b506106406112b9565b60405161064d91906136b4565b60405180910390f35b348015610661575f80fd5b5061067c60048036038101906106779190613769565b6112e1565b005b348015610689575f80fd5b506106a4600480360381019061069f9190613794565b61137a565b005b3480156106b1575f80fd5b506106ba6114a2565b6040516106c79190613434565b60405180910390f35b3480156106db575f80fd5b506106e4611532565b6040516106f19190613611565b60405180910390f35b348015610705575f80fd5b50610720600480360381019061071b9190613794565b611538565b005b34801561072d575f80fd5b50610748600480360381019061074391906134f2565b611650565b604051610755919061354a565b60405180910390f35b348015610769575f80fd5b50610784600480360381019061077f91906134f2565b611736565b604051610791919061354a565b60405180910390f35b3480156107a5575f80fd5b506107c060048036038101906107bb9190613563565b611753565b005b3480156107cd575f80fd5b506107e860048036038101906107e39190613794565b61188d565b005b3480156107f5575f80fd5b50610810600480360381019061080b9190613563565b611961565b60405161081d919061354a565b60405180910390f35b348015610831575f80fd5b5061083a61197e565b604051610847919061354a565b60405180910390f35b34801561085b575f80fd5b5061087660048036038101906108719190613794565b611991565b005b610892600480360381019061088d9190613912565b611ab3565b005b34801561089f575f80fd5b506108a8611d33565b6040516108b59190613611565b60405180910390f35b3480156108c9575f80fd5b506108d2611d39565b6040516108df9190613611565b60405180910390f35b3480156108f3575f80fd5b506108fc611d3f565b005b348015610909575f80fd5b50610924600480360381019061091f919061367a565b611dd6565b005b348015610931575f80fd5b5061093a611ee5565b6040516109479190613611565b60405180910390f35b34801561095b575f80fd5b5061097660048036038101906109719190613959565b611eeb565b6040516109839190613611565b60405180910390f35b348015610997575f80fd5b506109a0611f6d565b6040516109ad9190613611565b60405180910390f35b3480156109c1575f80fd5b506109dc60048036038101906109d79190613563565b611f73565b005b3480156109e9575f80fd5b506109f2612069565b005b3480156109ff575f80fd5b50610a086120f7565b604051610a159190613611565b60405180910390f35b606060038054610a2d906139c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610a59906139c4565b8015610aa45780601f10610a7b57610100808354040283529160200191610aa4565b820191905f5260205f20905b815481529060010190602001808311610a8757829003601f168201915b5050505050905090565b5f610ac1610aba6120fd565b8484612104565b6001905092915050565b6012602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b5f610b218484846122c7565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b686120fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bde90613a64565b60405180910390fd5b610bfb85610bf36120fd565b858403612104565b60019150509392505050565b610c0f6120fd565b73ffffffffffffffffffffffffffffffffffffffff16610c2d6112b9565b73ffffffffffffffffffffffffffffffffffffffff1614610c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7a90613acc565b60405180910390fd5b80600e819055506001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043600c8190555042600d8190555050565b61dead81565b5f6012905090565b5f610d7c610ceb6120fd565b848460015f610cf86120fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d779190613b17565b612104565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5f9054906101000a900460ff1681565b610dc46120fd565b73ffffffffffffffffffffffffffffffffffffffff16610de26112b9565b73ffffffffffffffffffffffffffffffffffffffff1614610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f90613acc565b60405180910390fd5b670de0b6b3a764000081610e4c9190613b4a565b600a8190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e956120fd565b73ffffffffffffffffffffffffffffffffffffffff1614610eb4575f80fd5b610ebd30611154565b8111158015610ecb57505f81115b610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0190613bd5565b60405180910390fd5b610f1381612ca0565b50565b610f1e6120fd565b73ffffffffffffffffffffffffffffffffffffffff16610f3c6112b9565b73ffffffffffffffffffffffffffffffffffffffff1614610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8990613acc565b60405180910390fd5b670de0b6b3a76400006103e86001610fa8610b0c565b610fb29190613b4a565b610fbc9190613c20565b610fc69190613c20565b811015611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff90613cc0565b60405180910390fd5b670de0b6b3a76400008161101c9190613b4a565b60078190555050565b60105481565b6110336120fd565b73ffffffffffffffffffffffffffffffffffffffff166110516112b9565b73ffffffffffffffffffffffffffffffffffffffff16146110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e90613acc565b60405180910390fd5b60058211156110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e290613d28565b60405180910390fd5b600581111561112f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112690613d28565b60405180910390fd5b81600f81905550806010819055505050565b600b60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6111a16120fd565b73ffffffffffffffffffffffffffffffffffffffff166111bf6112b9565b73ffffffffffffffffffffffffffffffffffffffff1614611215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120c90613acc565b60405180910390fd5b61121e5f612ed3565b565b6112286120fd565b73ffffffffffffffffffffffffffffffffffffffff166112466112b9565b73ffffffffffffffffffffffffffffffffffffffff161461129c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129390613acc565b60405180910390fd5b670de0b6b3a7640000816112b09190613b4a565b60088190555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112e96120fd565b73ffffffffffffffffffffffffffffffffffffffff166113076112b9565b73ffffffffffffffffffffffffffffffffffffffff161461135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135490613acc565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6113826120fd565b73ffffffffffffffffffffffffffffffffffffffff166113a06112b9565b73ffffffffffffffffffffffffffffffffffffffff16146113f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ed90613acc565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6060600480546114b1906139c4565b80601f01602080910402602001604051908101604052809291908181526020018280546114dd906139c4565b80156115285780601f106114ff57610100808354040283529160200191611528565b820191905f5260205f20905b81548152906001019060200180831161150b57829003601f168201915b5050505050905090565b600e5481565b6115406120fd565b73ffffffffffffffffffffffffffffffffffffffff1661155e6112b9565b73ffffffffffffffffffffffffffffffffffffffff16146115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab90613acc565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163990613db6565b60405180910390fd5b61164c8282612f96565b5050565b5f8060015f61165d6120fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170e90613e44565b60405180910390fd5b61172b6117226120fd565b85858403612104565b600191505092915050565b5f6117496117426120fd565b84846122c7565b6001905092915050565b61175b6120fd565b73ffffffffffffffffffffffffffffffffffffffff166117796112b9565b73ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c690613acc565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118956120fd565b73ffffffffffffffffffffffffffffffffffffffff166118b36112b9565b73ffffffffffffffffffffffffffffffffffffffff1614611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190090613acc565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6013602052805f5260405f205f915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b6119996120fd565b73ffffffffffffffffffffffffffffffffffffffff166119b76112b9565b73ffffffffffffffffffffffffffffffffffffffff1614611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0490613acc565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611aa7919061354a565b60405180910390a25050565b611abb6120fd565b73ffffffffffffffffffffffffffffffffffffffff16611ad96112b9565b73ffffffffffffffffffffffffffffffffffffffff1614611b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2690613acc565b60405180910390fd5b611b61307f0000000000000000000000000000000000000000000000000000000000000000611b5c610b0c565b612104565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611ba830611154565b5f80611bb26112b9565b426040518863ffffffff1660e01b8152600401611bd496959493929190613e9b565b60606040518083038185885af1158015611bf0573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611c159190613f0e565b5050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611cb3929190613f5e565b6020604051808303815f875af1158015611ccf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf39190613f99565b505f5b8151811015611d2f57611d24828281518110611d1557611d14613fc4565b5b6020026020010151600161137a565b806001019050611cf6565b5050565b60075481565b600a5481565b611d476120fd565b73ffffffffffffffffffffffffffffffffffffffff16611d656112b9565b73ffffffffffffffffffffffffffffffffffffffff1614611dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db290613acc565b60405180910390fd5b5f600b5f6101000a81548160ff021916908315150217905550565b611dde6120fd565b73ffffffffffffffffffffffffffffffffffffffff16611dfc6112b9565b73ffffffffffffffffffffffffffffffffffffffff1614611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4990613acc565b60405180910390fd5b670de0b6b3a76400006103e86005611e68610b0c565b611e729190613b4a565b611e7c9190613c20565b611e869190613c20565b811015611ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebf90614061565b60405180910390fd5b670de0b6b3a764000081611edc9190613b4a565b60098190555050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b611f7b6120fd565b73ffffffffffffffffffffffffffffffffffffffff16611f996112b9565b73ffffffffffffffffffffffffffffffffffffffff1614611fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe690613acc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361205d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612054906140ef565b60405180910390fd5b61206681612ed3565b50565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516120af9061413a565b5f6040518083038185875af1925050503d805f81146120e9576040519150601f19603f3d011682016040523d82523d5f602084013e6120ee565b606091505b50508091505050565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612172576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612169906141be565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d79061424c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122ba9190613611565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232c906142da565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239a90614368565b60405180910390fd5b5f81036123ba576123b583835f613034565b612c9b565b600b5f9054906101000a900460ff16156128c5576123d66112b9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561244457506124146112b9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561247c57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124b6575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124cf5750600560149054906101000a900460ff16155b156128c45743600e54600c546124e59190613b17565b106124fb5760196010819055506014600f819055505b600b60019054906101000a900460ff166125ea5760115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806125aa575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6125e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e0906143d0565b60405180910390fd5b5b60135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612687575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561272e576007548111156126d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c89061445e565b60405180910390fd5b6009546126dd83611154565b826126e89190613b17565b1115612729576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612720906144c6565b60405180910390fd5b6128c3565b60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127cb575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561281a57600754811115612815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280c90614554565b60405180910390fd5b6128c2565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166128c15760095461287483611154565b8261287f9190613b17565b11156128c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b7906144c6565b60405180910390fd5b5b5b5b5b5b5f6128cf30611154565b90505f60085482101590508080156128f35750600b60029054906101000a900460ff165b801561290c5750600560149054906101000a900460ff16155b801561295f575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129b2575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a05575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a9657600360145f4381526020019081526020015f20541015612a95576001600560146101000a81548160ff021916908315150217905550612a476132a9565b5f600560146101000a81548160ff021916908315150217905550600160145f4381526020019081526020015f2054612a7f9190613b17565b60145f4381526020019081526020015f20819055505b5b5f600560149054906101000a900460ff1615905060115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612b45575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b4e575f90505b5f8115612c8b5760135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612bac57505f601054115b15612be057612bd96064612bcb6010548861337690919063ffffffff16565b61338b90919063ffffffff16565b9050612c68565b60135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c3757505f600f54115b15612c6757612c646064612c56600f548861337690919063ffffffff16565b61338b90919063ffffffff16565b90505b5b5f811115612c7c57612c7b873083613034565b5b8085612c889190614572565b94505b612c96878787613034565b505050505b505050565b5f600267ffffffffffffffff811115612cbc57612cbb6137d6565b5b604051908082528060200260200182016040528015612cea5781602001602082028036833780820191505090505b50905030815f81518110612d0157612d00613fc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612da4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dc891906145b9565b81600181518110612ddc57612ddb613fc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e41307f000000000000000000000000000000000000000000000000000000000000000084612104565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612ea295949392919061469b565b5f604051808303815f87803b158015612eb9575f80fd5b505af1158015612ecb573d5f803e3d5ffd5b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613099906142da565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310790614368565b60405180910390fd5b61311b8383836133a0565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561319e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319590614763565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461322c9190613b17565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132909190613611565b60405180910390a36132a38484846133a5565b50505050565b5f6132b330611154565b90505f8082036132c4575050613374565b600a548211156132d457600a5491505b5f8290506132e181612ca0565b5f47905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161332a9061413a565b5f6040518083038185875af1925050503d805f8114613364576040519150601f19603f3d011682016040523d82523d5f602084013e613369565b606091505b505080935050505050505b565b5f81836133839190613b4a565b905092915050565b5f81836133989190613c20565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156133e15780820151818401526020810190506133c6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613406826133aa565b61341081856133b4565b93506134208185602086016133c4565b613429816133ec565b840191505092915050565b5f6020820190508181035f83015261344c81846133fc565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61348e82613465565b9050919050565b61349e81613484565b81146134a8575f80fd5b50565b5f813590506134b981613495565b92915050565b5f819050919050565b6134d1816134bf565b81146134db575f80fd5b50565b5f813590506134ec816134c8565b92915050565b5f80604083850312156135085761350761345d565b5b5f613515858286016134ab565b9250506020613526858286016134de565b9150509250929050565b5f8115159050919050565b61354481613530565b82525050565b5f60208201905061355d5f83018461353b565b92915050565b5f602082840312156135785761357761345d565b5b5f613585848285016134ab565b91505092915050565b5f819050919050565b5f6135b16135ac6135a784613465565b61358e565b613465565b9050919050565b5f6135c282613597565b9050919050565b5f6135d3826135b8565b9050919050565b6135e3816135c9565b82525050565b5f6020820190506135fc5f8301846135da565b92915050565b61360b816134bf565b82525050565b5f6020820190506136245f830184613602565b92915050565b5f805f606084860312156136415761364061345d565b5b5f61364e868287016134ab565b935050602061365f868287016134ab565b9250506040613670868287016134de565b9150509250925092565b5f6020828403121561368f5761368e61345d565b5b5f61369c848285016134de565b91505092915050565b6136ae81613484565b82525050565b5f6020820190506136c75f8301846136a5565b92915050565b5f60ff82169050919050565b6136e2816136cd565b82525050565b5f6020820190506136fb5f8301846136d9565b92915050565b5f80604083850312156137175761371661345d565b5b5f613724858286016134de565b9250506020613735858286016134de565b9150509250929050565b61374881613530565b8114613752575f80fd5b50565b5f813590506137638161373f565b92915050565b5f6020828403121561377e5761377d61345d565b5b5f61378b84828501613755565b91505092915050565b5f80604083850312156137aa576137a961345d565b5b5f6137b7858286016134ab565b92505060206137c885828601613755565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61380c826133ec565b810181811067ffffffffffffffff8211171561382b5761382a6137d6565b5b80604052505050565b5f61383d613454565b90506138498282613803565b919050565b5f67ffffffffffffffff821115613868576138676137d6565b5b602082029050602081019050919050565b5f80fd5b5f61388f61388a8461384e565b613834565b905080838252602082019050602084028301858111156138b2576138b1613879565b5b835b818110156138db57806138c788826134ab565b8452602084019350506020810190506138b4565b5050509392505050565b5f82601f8301126138f9576138f86137d2565b5b813561390984826020860161387d565b91505092915050565b5f602082840312156139275761392661345d565b5b5f82013567ffffffffffffffff81111561394457613943613461565b5b613950848285016138e5565b91505092915050565b5f806040838503121561396f5761396e61345d565b5b5f61397c858286016134ab565b925050602061398d858286016134ab565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139db57607f821691505b6020821081036139ee576139ed613997565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613a4e6028836133b4565b9150613a59826139f4565b604082019050919050565b5f6020820190508181035f830152613a7b81613a42565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613ab66020836133b4565b9150613ac182613a82565b602082019050919050565b5f6020820190508181035f830152613ae381613aaa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b21826134bf565b9150613b2c836134bf565b9250828201905080821115613b4457613b43613aea565b5b92915050565b5f613b54826134bf565b9150613b5f836134bf565b9250828202613b6d816134bf565b91508282048414831517613b8457613b83613aea565b5b5092915050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f613bbf600c836133b4565b9150613bca82613b8b565b602082019050919050565b5f6020820190508181035f830152613bec81613bb3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c2a826134bf565b9150613c35836134bf565b925082613c4557613c44613bf3565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613caa602f836133b4565b9150613cb582613c50565b604082019050919050565b5f6020820190508181035f830152613cd781613c9e565b9050919050565b7f45786365656420746865206c696d6974000000000000000000000000000000005f82015250565b5f613d126010836133b4565b9150613d1d82613cde565b602082019050919050565b5f6020820190508181035f830152613d3f81613d06565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613da06039836133b4565b9150613dab82613d46565b604082019050919050565b5f6020820190508181035f830152613dcd81613d94565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613e2e6025836133b4565b9150613e3982613dd4565b604082019050919050565b5f6020820190508181035f830152613e5b81613e22565b9050919050565b5f819050919050565b5f613e85613e80613e7b84613e62565b61358e565b6134bf565b9050919050565b613e9581613e6b565b82525050565b5f60c082019050613eae5f8301896136a5565b613ebb6020830188613602565b613ec86040830187613e8c565b613ed56060830186613e8c565b613ee260808301856136a5565b613eef60a0830184613602565b979650505050505050565b5f81519050613f08816134c8565b92915050565b5f805f60608486031215613f2557613f2461345d565b5b5f613f3286828701613efa565b9350506020613f4386828701613efa565b9250506040613f5486828701613efa565b9150509250925092565b5f604082019050613f715f8301856136a5565b613f7e6020830184613602565b9392505050565b5f81519050613f938161373f565b92915050565b5f60208284031215613fae57613fad61345d565b5b5f613fbb84828501613f85565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f61404b6024836133b4565b915061405682613ff1565b604082019050919050565b5f6020820190508181035f8301526140788161403f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6140d96026836133b4565b91506140e48261407f565b604082019050919050565b5f6020820190508181035f830152614106816140cd565b9050919050565b5f81905092915050565b50565b5f6141255f8361410d565b915061413082614117565b5f82019050919050565b5f6141448261411a565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6141a86024836133b4565b91506141b38261414e565b604082019050919050565b5f6020820190508181035f8301526141d58161419c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6142366022836133b4565b9150614241826141dc565b604082019050919050565b5f6020820190508181035f8301526142638161422a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6142c46025836133b4565b91506142cf8261426a565b604082019050919050565b5f6020820190508181035f8301526142f1816142b8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6143526023836133b4565b915061435d826142f8565b604082019050919050565b5f6020820190508181035f83015261437f81614346565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6143ba6016836133b4565b91506143c582614386565b602082019050919050565b5f6020820190508181035f8301526143e7816143ae565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6144486035836133b4565b9150614453826143ee565b604082019050919050565b5f6020820190508181035f8301526144758161443c565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6144b06013836133b4565b91506144bb8261447c565b602082019050919050565b5f6020820190508181035f8301526144dd816144a4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61453e6036836133b4565b9150614549826144e4565b604082019050919050565b5f6020820190508181035f83015261456b81614532565b9050919050565b5f61457c826134bf565b9150614587836134bf565b925082820390508181111561459f5761459e613aea565b5b92915050565b5f815190506145b381613495565b92915050565b5f602082840312156145ce576145cd61345d565b5b5f6145db848285016145a5565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61461681613484565b82525050565b5f614627838361460d565b60208301905092915050565b5f602082019050919050565b5f614649826145e4565b61465381856145ee565b935061465e836145fe565b805f5b8381101561468e578151614675888261461c565b975061468083614633565b925050600181019050614661565b5085935050505092915050565b5f60a0820190506146ae5f830188613602565b6146bb6020830187613e8c565b81810360408301526146cd818661463f565b90506146dc60608301856136a5565b6146e96080830184613602565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61474d6026836133b4565b9150614758826146f3565b604082019050919050565b5f6020820190508181035f83015261477a81614741565b905091905056fea26469706673582212202b2089094ed6b0dfd8d98782dc71ce99b6dee6426e88679340bdcee8eba6bf0f64736f6c63430008170033

Deployed Bytecode

0x608060405260043610610275575f3560e01c8063924de9b71161014e578063c0246668116100c0578063d85ba06311610079578063d85ba06314610926578063dd62ed3e14610950578063e2f456051461098c578063f2fde38b146109b6578063f5648a4f146109de578063f8b45b05146109f45761027c565b8063c024666814610850578063c856dd3014610878578063c8c8ebe414610894578063cce987d4146108be578063d22b3e80146108e8578063d38a6171146108fe5761027c565b8063a457c2d711610112578063a457c2d714610722578063a9059cbb1461075e578063aacebbe31461079a578063b1e75b77146107c2578063b62496f5146107ea578063bbc0c742146108265761027c565b8063924de9b71461065657806393db6c791461067e57806395d89b41146106a6578063967ff23e146106d05780639a7a23d6146106fa5761027c565b80634a62bb65116101e75780636db79437116101ab5780636db79437146105605780636ddd17131461058857806370a08231146105b2578063715018a6146105ee57806383316afa146106045780638da5cb5b1461062c5761027c565b80634a62bb65146104945780635270c572146104be57806358a845ab146104e65780635d46648a1461050e5780636a486a8e146105365761027c565b806323b872dd1161023957806323b872dd14610376578063254d9945146103b257806327c8f835146103da578063313ce56714610404578063395093511461042e57806349bd5a5e1461046a5761027c565b806306fdde0314610280578063095ea7b3146102aa57806310d5de53146102e65780631694505e1461032257806318160ddd1461034c5761027c565b3661027c57005b5f80fd5b34801561028b575f80fd5b50610294610a1e565b6040516102a19190613434565b60405180910390f35b3480156102b5575f80fd5b506102d060048036038101906102cb91906134f2565b610aae565b6040516102dd919061354a565b60405180910390f35b3480156102f1575f80fd5b5061030c60048036038101906103079190613563565b610acb565b604051610319919061354a565b60405180910390f35b34801561032d575f80fd5b50610336610ae8565b60405161034391906135e9565b60405180910390f35b348015610357575f80fd5b50610360610b0c565b60405161036d9190613611565b60405180910390f35b348015610381575f80fd5b5061039c6004803603810190610397919061362a565b610b15565b6040516103a9919061354a565b60405180910390f35b3480156103bd575f80fd5b506103d860048036038101906103d3919061367a565b610c07565b005b3480156103e5575f80fd5b506103ee610cd1565b6040516103fb91906136b4565b60405180910390f35b34801561040f575f80fd5b50610418610cd7565b60405161042591906136e8565b60405180910390f35b348015610439575f80fd5b50610454600480360381019061044f91906134f2565b610cdf565b604051610461919061354a565b60405180910390f35b348015610475575f80fd5b5061047e610d86565b60405161048b91906136b4565b60405180910390f35b34801561049f575f80fd5b506104a8610daa565b6040516104b5919061354a565b60405180910390f35b3480156104c9575f80fd5b506104e460048036038101906104df919061367a565b610dbc565b005b3480156104f1575f80fd5b5061050c6004803603810190610507919061367a565b610e55565b005b348015610519575f80fd5b50610534600480360381019061052f919061367a565b610f16565b005b348015610541575f80fd5b5061054a611025565b6040516105579190613611565b60405180910390f35b34801561056b575f80fd5b5061058660048036038101906105819190613701565b61102b565b005b348015610593575f80fd5b5061059c611141565b6040516105a9919061354a565b60405180910390f35b3480156105bd575f80fd5b506105d860048036038101906105d39190613563565b611154565b6040516105e59190613611565b60405180910390f35b3480156105f9575f80fd5b50610602611199565b005b34801561060f575f80fd5b5061062a6004803603810190610625919061367a565b611220565b005b348015610637575f80fd5b506106406112b9565b60405161064d91906136b4565b60405180910390f35b348015610661575f80fd5b5061067c60048036038101906106779190613769565b6112e1565b005b348015610689575f80fd5b506106a4600480360381019061069f9190613794565b61137a565b005b3480156106b1575f80fd5b506106ba6114a2565b6040516106c79190613434565b60405180910390f35b3480156106db575f80fd5b506106e4611532565b6040516106f19190613611565b60405180910390f35b348015610705575f80fd5b50610720600480360381019061071b9190613794565b611538565b005b34801561072d575f80fd5b50610748600480360381019061074391906134f2565b611650565b604051610755919061354a565b60405180910390f35b348015610769575f80fd5b50610784600480360381019061077f91906134f2565b611736565b604051610791919061354a565b60405180910390f35b3480156107a5575f80fd5b506107c060048036038101906107bb9190613563565b611753565b005b3480156107cd575f80fd5b506107e860048036038101906107e39190613794565b61188d565b005b3480156107f5575f80fd5b50610810600480360381019061080b9190613563565b611961565b60405161081d919061354a565b60405180910390f35b348015610831575f80fd5b5061083a61197e565b604051610847919061354a565b60405180910390f35b34801561085b575f80fd5b5061087660048036038101906108719190613794565b611991565b005b610892600480360381019061088d9190613912565b611ab3565b005b34801561089f575f80fd5b506108a8611d33565b6040516108b59190613611565b60405180910390f35b3480156108c9575f80fd5b506108d2611d39565b6040516108df9190613611565b60405180910390f35b3480156108f3575f80fd5b506108fc611d3f565b005b348015610909575f80fd5b50610924600480360381019061091f919061367a565b611dd6565b005b348015610931575f80fd5b5061093a611ee5565b6040516109479190613611565b60405180910390f35b34801561095b575f80fd5b5061097660048036038101906109719190613959565b611eeb565b6040516109839190613611565b60405180910390f35b348015610997575f80fd5b506109a0611f6d565b6040516109ad9190613611565b60405180910390f35b3480156109c1575f80fd5b506109dc60048036038101906109d79190613563565b611f73565b005b3480156109e9575f80fd5b506109f2612069565b005b3480156109ff575f80fd5b50610a086120f7565b604051610a159190613611565b60405180910390f35b606060038054610a2d906139c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610a59906139c4565b8015610aa45780601f10610a7b57610100808354040283529160200191610aa4565b820191905f5260205f20905b815481529060010190602001808311610a8757829003601f168201915b5050505050905090565b5f610ac1610aba6120fd565b8484612104565b6001905092915050565b6012602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b5f610b218484846122c7565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b686120fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bde90613a64565b60405180910390fd5b610bfb85610bf36120fd565b858403612104565b60019150509392505050565b610c0f6120fd565b73ffffffffffffffffffffffffffffffffffffffff16610c2d6112b9565b73ffffffffffffffffffffffffffffffffffffffff1614610c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7a90613acc565b60405180910390fd5b80600e819055506001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043600c8190555042600d8190555050565b61dead81565b5f6012905090565b5f610d7c610ceb6120fd565b848460015f610cf86120fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d779190613b17565b612104565b6001905092915050565b7f000000000000000000000000279cf53a707ac2bcd4116b066f514af76e41d29181565b600b5f9054906101000a900460ff1681565b610dc46120fd565b73ffffffffffffffffffffffffffffffffffffffff16610de26112b9565b73ffffffffffffffffffffffffffffffffffffffff1614610e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2f90613acc565b60405180910390fd5b670de0b6b3a764000081610e4c9190613b4a565b600a8190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e956120fd565b73ffffffffffffffffffffffffffffffffffffffff1614610eb4575f80fd5b610ebd30611154565b8111158015610ecb57505f81115b610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0190613bd5565b60405180910390fd5b610f1381612ca0565b50565b610f1e6120fd565b73ffffffffffffffffffffffffffffffffffffffff16610f3c6112b9565b73ffffffffffffffffffffffffffffffffffffffff1614610f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8990613acc565b60405180910390fd5b670de0b6b3a76400006103e86001610fa8610b0c565b610fb29190613b4a565b610fbc9190613c20565b610fc69190613c20565b811015611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff90613cc0565b60405180910390fd5b670de0b6b3a76400008161101c9190613b4a565b60078190555050565b60105481565b6110336120fd565b73ffffffffffffffffffffffffffffffffffffffff166110516112b9565b73ffffffffffffffffffffffffffffffffffffffff16146110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e90613acc565b60405180910390fd5b60058211156110eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e290613d28565b60405180910390fd5b600581111561112f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112690613d28565b60405180910390fd5b81600f81905550806010819055505050565b600b60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6111a16120fd565b73ffffffffffffffffffffffffffffffffffffffff166111bf6112b9565b73ffffffffffffffffffffffffffffffffffffffff1614611215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120c90613acc565b60405180910390fd5b61121e5f612ed3565b565b6112286120fd565b73ffffffffffffffffffffffffffffffffffffffff166112466112b9565b73ffffffffffffffffffffffffffffffffffffffff161461129c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129390613acc565b60405180910390fd5b670de0b6b3a7640000816112b09190613b4a565b60088190555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112e96120fd565b73ffffffffffffffffffffffffffffffffffffffff166113076112b9565b73ffffffffffffffffffffffffffffffffffffffff161461135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135490613acc565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b6113826120fd565b73ffffffffffffffffffffffffffffffffffffffff166113a06112b9565b73ffffffffffffffffffffffffffffffffffffffff16146113f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ed90613acc565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6060600480546114b1906139c4565b80601f01602080910402602001604051908101604052809291908181526020018280546114dd906139c4565b80156115285780601f106114ff57610100808354040283529160200191611528565b820191905f5260205f20905b81548152906001019060200180831161150b57829003601f168201915b5050505050905090565b600e5481565b6115406120fd565b73ffffffffffffffffffffffffffffffffffffffff1661155e6112b9565b73ffffffffffffffffffffffffffffffffffffffff16146115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab90613acc565b60405180910390fd5b7f000000000000000000000000279cf53a707ac2bcd4116b066f514af76e41d29173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611642576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163990613db6565b60405180910390fd5b61164c8282612f96565b5050565b5f8060015f61165d6120fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170e90613e44565b60405180910390fd5b61172b6117226120fd565b85858403612104565b600191505092915050565b5f6117496117426120fd565b84846122c7565b6001905092915050565b61175b6120fd565b73ffffffffffffffffffffffffffffffffffffffff166117796112b9565b73ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c690613acc565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118956120fd565b73ffffffffffffffffffffffffffffffffffffffff166118b36112b9565b73ffffffffffffffffffffffffffffffffffffffff1614611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190090613acc565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6013602052805f5260405f205f915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b6119996120fd565b73ffffffffffffffffffffffffffffffffffffffff166119b76112b9565b73ffffffffffffffffffffffffffffffffffffffff1614611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0490613acc565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611aa7919061354a565b60405180910390a25050565b611abb6120fd565b73ffffffffffffffffffffffffffffffffffffffff16611ad96112b9565b73ffffffffffffffffffffffffffffffffffffffff1614611b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2690613acc565b60405180910390fd5b611b61307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d611b5c610b0c565b612104565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611ba830611154565b5f80611bb26112b9565b426040518863ffffffff1660e01b8152600401611bd496959493929190613e9b565b60606040518083038185885af1158015611bf0573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611c159190613f0e565b5050507f000000000000000000000000279cf53a707ac2bcd4116b066f514af76e41d29173ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611cb3929190613f5e565b6020604051808303815f875af1158015611ccf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf39190613f99565b505f5b8151811015611d2f57611d24828281518110611d1557611d14613fc4565b5b6020026020010151600161137a565b806001019050611cf6565b5050565b60075481565b600a5481565b611d476120fd565b73ffffffffffffffffffffffffffffffffffffffff16611d656112b9565b73ffffffffffffffffffffffffffffffffffffffff1614611dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db290613acc565b60405180910390fd5b5f600b5f6101000a81548160ff021916908315150217905550565b611dde6120fd565b73ffffffffffffffffffffffffffffffffffffffff16611dfc6112b9565b73ffffffffffffffffffffffffffffffffffffffff1614611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4990613acc565b60405180910390fd5b670de0b6b3a76400006103e86005611e68610b0c565b611e729190613b4a565b611e7c9190613c20565b611e869190613c20565b811015611ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebf90614061565b60405180910390fd5b670de0b6b3a764000081611edc9190613b4a565b60098190555050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60085481565b611f7b6120fd565b73ffffffffffffffffffffffffffffffffffffffff16611f996112b9565b73ffffffffffffffffffffffffffffffffffffffff1614611fef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe690613acc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361205d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612054906140ef565b60405180910390fd5b61206681612ed3565b50565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516120af9061413a565b5f6040518083038185875af1925050503d805f81146120e9576040519150601f19603f3d011682016040523d82523d5f602084013e6120ee565b606091505b50508091505050565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612172576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612169906141be565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d79061424c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122ba9190613611565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232c906142da565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239a90614368565b60405180910390fd5b5f81036123ba576123b583835f613034565b612c9b565b600b5f9054906101000a900460ff16156128c5576123d66112b9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561244457506124146112b9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561247c57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124b6575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124cf5750600560149054906101000a900460ff16155b156128c45743600e54600c546124e59190613b17565b106124fb5760196010819055506014600f819055505b600b60019054906101000a900460ff166125ea5760115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806125aa575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6125e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e0906143d0565b60405180910390fd5b5b60135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612687575060125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561272e576007548111156126d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c89061445e565b60405180910390fd5b6009546126dd83611154565b826126e89190613b17565b1115612729576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612720906144c6565b60405180910390fd5b6128c3565b60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156127cb575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561281a57600754811115612815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280c90614554565b60405180910390fd5b6128c2565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166128c15760095461287483611154565b8261287f9190613b17565b11156128c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b7906144c6565b60405180910390fd5b5b5b5b5b5b5f6128cf30611154565b90505f60085482101590508080156128f35750600b60029054906101000a900460ff165b801561290c5750600560149054906101000a900460ff16155b801561295f575060135f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129b2575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612a05575060115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a9657600360145f4381526020019081526020015f20541015612a95576001600560146101000a81548160ff021916908315150217905550612a476132a9565b5f600560146101000a81548160ff021916908315150217905550600160145f4381526020019081526020015f2054612a7f9190613b17565b60145f4381526020019081526020015f20819055505b5b5f600560149054906101000a900460ff1615905060115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612b45575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b4e575f90505b5f8115612c8b5760135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612bac57505f601054115b15612be057612bd96064612bcb6010548861337690919063ffffffff16565b61338b90919063ffffffff16565b9050612c68565b60135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c3757505f600f54115b15612c6757612c646064612c56600f548861337690919063ffffffff16565b61338b90919063ffffffff16565b90505b5b5f811115612c7c57612c7b873083613034565b5b8085612c889190614572565b94505b612c96878787613034565b505050505b505050565b5f600267ffffffffffffffff811115612cbc57612cbb6137d6565b5b604051908082528060200260200182016040528015612cea5781602001602082028036833780820191505090505b50905030815f81518110612d0157612d00613fc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612da4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dc891906145b9565b81600181518110612ddc57612ddb613fc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e41307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612104565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612ea295949392919061469b565b5f604051808303815f87803b158015612eb9575f80fd5b505af1158015612ecb573d5f803e3d5ffd5b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036130a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613099906142da565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310790614368565b60405180910390fd5b61311b8383836133a0565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561319e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319590614763565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461322c9190613b17565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132909190613611565b60405180910390a36132a38484846133a5565b50505050565b5f6132b330611154565b90505f8082036132c4575050613374565b600a548211156132d457600a5491505b5f8290506132e181612ca0565b5f47905060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161332a9061413a565b5f6040518083038185875af1925050503d805f8114613364576040519150601f19603f3d011682016040523d82523d5f602084013e613369565b606091505b505080935050505050505b565b5f81836133839190613b4a565b905092915050565b5f81836133989190613c20565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156133e15780820151818401526020810190506133c6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613406826133aa565b61341081856133b4565b93506134208185602086016133c4565b613429816133ec565b840191505092915050565b5f6020820190508181035f83015261344c81846133fc565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61348e82613465565b9050919050565b61349e81613484565b81146134a8575f80fd5b50565b5f813590506134b981613495565b92915050565b5f819050919050565b6134d1816134bf565b81146134db575f80fd5b50565b5f813590506134ec816134c8565b92915050565b5f80604083850312156135085761350761345d565b5b5f613515858286016134ab565b9250506020613526858286016134de565b9150509250929050565b5f8115159050919050565b61354481613530565b82525050565b5f60208201905061355d5f83018461353b565b92915050565b5f602082840312156135785761357761345d565b5b5f613585848285016134ab565b91505092915050565b5f819050919050565b5f6135b16135ac6135a784613465565b61358e565b613465565b9050919050565b5f6135c282613597565b9050919050565b5f6135d3826135b8565b9050919050565b6135e3816135c9565b82525050565b5f6020820190506135fc5f8301846135da565b92915050565b61360b816134bf565b82525050565b5f6020820190506136245f830184613602565b92915050565b5f805f606084860312156136415761364061345d565b5b5f61364e868287016134ab565b935050602061365f868287016134ab565b9250506040613670868287016134de565b9150509250925092565b5f6020828403121561368f5761368e61345d565b5b5f61369c848285016134de565b91505092915050565b6136ae81613484565b82525050565b5f6020820190506136c75f8301846136a5565b92915050565b5f60ff82169050919050565b6136e2816136cd565b82525050565b5f6020820190506136fb5f8301846136d9565b92915050565b5f80604083850312156137175761371661345d565b5b5f613724858286016134de565b9250506020613735858286016134de565b9150509250929050565b61374881613530565b8114613752575f80fd5b50565b5f813590506137638161373f565b92915050565b5f6020828403121561377e5761377d61345d565b5b5f61378b84828501613755565b91505092915050565b5f80604083850312156137aa576137a961345d565b5b5f6137b7858286016134ab565b92505060206137c885828601613755565b9150509250929050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61380c826133ec565b810181811067ffffffffffffffff8211171561382b5761382a6137d6565b5b80604052505050565b5f61383d613454565b90506138498282613803565b919050565b5f67ffffffffffffffff821115613868576138676137d6565b5b602082029050602081019050919050565b5f80fd5b5f61388f61388a8461384e565b613834565b905080838252602082019050602084028301858111156138b2576138b1613879565b5b835b818110156138db57806138c788826134ab565b8452602084019350506020810190506138b4565b5050509392505050565b5f82601f8301126138f9576138f86137d2565b5b813561390984826020860161387d565b91505092915050565b5f602082840312156139275761392661345d565b5b5f82013567ffffffffffffffff81111561394457613943613461565b5b613950848285016138e5565b91505092915050565b5f806040838503121561396f5761396e61345d565b5b5f61397c858286016134ab565b925050602061398d858286016134ab565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139db57607f821691505b6020821081036139ee576139ed613997565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613a4e6028836133b4565b9150613a59826139f4565b604082019050919050565b5f6020820190508181035f830152613a7b81613a42565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613ab66020836133b4565b9150613ac182613a82565b602082019050919050565b5f6020820190508181035f830152613ae381613aaa565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b21826134bf565b9150613b2c836134bf565b9250828201905080821115613b4457613b43613aea565b5b92915050565b5f613b54826134bf565b9150613b5f836134bf565b9250828202613b6d816134bf565b91508282048414831517613b8457613b83613aea565b5b5092915050565b7f57726f6e6720616d6f756e7400000000000000000000000000000000000000005f82015250565b5f613bbf600c836133b4565b9150613bca82613b8b565b602082019050919050565b5f6020820190508181035f830152613bec81613bb3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c2a826134bf565b9150613c35836134bf565b925082613c4557613c44613bf3565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f613caa602f836133b4565b9150613cb582613c50565b604082019050919050565b5f6020820190508181035f830152613cd781613c9e565b9050919050565b7f45786365656420746865206c696d6974000000000000000000000000000000005f82015250565b5f613d126010836133b4565b9150613d1d82613cde565b602082019050919050565b5f6020820190508181035f830152613d3f81613d06565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613da06039836133b4565b9150613dab82613d46565b604082019050919050565b5f6020820190508181035f830152613dcd81613d94565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613e2e6025836133b4565b9150613e3982613dd4565b604082019050919050565b5f6020820190508181035f830152613e5b81613e22565b9050919050565b5f819050919050565b5f613e85613e80613e7b84613e62565b61358e565b6134bf565b9050919050565b613e9581613e6b565b82525050565b5f60c082019050613eae5f8301896136a5565b613ebb6020830188613602565b613ec86040830187613e8c565b613ed56060830186613e8c565b613ee260808301856136a5565b613eef60a0830184613602565b979650505050505050565b5f81519050613f08816134c8565b92915050565b5f805f60608486031215613f2557613f2461345d565b5b5f613f3286828701613efa565b9350506020613f4386828701613efa565b9250506040613f5486828701613efa565b9150509250925092565b5f604082019050613f715f8301856136a5565b613f7e6020830184613602565b9392505050565b5f81519050613f938161373f565b92915050565b5f60208284031215613fae57613fad61345d565b5b5f613fbb84828501613f85565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f61404b6024836133b4565b915061405682613ff1565b604082019050919050565b5f6020820190508181035f8301526140788161403f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6140d96026836133b4565b91506140e48261407f565b604082019050919050565b5f6020820190508181035f830152614106816140cd565b9050919050565b5f81905092915050565b50565b5f6141255f8361410d565b915061413082614117565b5f82019050919050565b5f6141448261411a565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6141a86024836133b4565b91506141b38261414e565b604082019050919050565b5f6020820190508181035f8301526141d58161419c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6142366022836133b4565b9150614241826141dc565b604082019050919050565b5f6020820190508181035f8301526142638161422a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6142c46025836133b4565b91506142cf8261426a565b604082019050919050565b5f6020820190508181035f8301526142f1816142b8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6143526023836133b4565b915061435d826142f8565b604082019050919050565b5f6020820190508181035f83015261437f81614346565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f6143ba6016836133b4565b91506143c582614386565b602082019050919050565b5f6020820190508181035f8301526143e7816143ae565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6144486035836133b4565b9150614453826143ee565b604082019050919050565b5f6020820190508181035f8301526144758161443c565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6144b06013836133b4565b91506144bb8261447c565b602082019050919050565b5f6020820190508181035f8301526144dd816144a4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f61453e6036836133b4565b9150614549826144e4565b604082019050919050565b5f6020820190508181035f83015261456b81614532565b9050919050565b5f61457c826134bf565b9150614587836134bf565b925082820390508181111561459f5761459e613aea565b5b92915050565b5f815190506145b381613495565b92915050565b5f602082840312156145ce576145cd61345d565b5b5f6145db848285016145a5565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61461681613484565b82525050565b5f614627838361460d565b60208301905092915050565b5f602082019050919050565b5f614649826145e4565b61465381856145ee565b935061465e836145fe565b805f5b8381101561468e578151614675888261461c565b975061468083614633565b925050600181019050614661565b5085935050505092915050565b5f60a0820190506146ae5f830188613602565b6146bb6020830187613e8c565b81810360408301526146cd818661463f565b90506146dc60608301856136a5565b6146e96080830184613602565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f61474d6026836133b4565b9150614758826146f3565b604082019050919050565b5f6020820190508181035f83015261477a81614741565b905091905056fea26469706673582212202b2089094ed6b0dfd8d98782dc71ce99b6dee6426e88679340bdcee8eba6bf0f64736f6c63430008170033

Deployed Bytecode Sourcemap

11684:10843:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7192:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8106:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12495:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11760:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7513:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8283:458;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15014:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11863:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7412:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8749:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11818:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12145:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15499:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16846:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15634:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12399:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17688:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12225:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7629:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6238:103;;;;;;;;;;;;;:::i;:::-;;15364:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6015:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16548:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16110:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7300:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12333:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17240:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8972:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7764:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17933:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16309:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12567:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12185:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16656:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14517:489;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11995:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12108:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15269:87;;;;;;;;;;;;;:::i;:::-;;15881:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12363:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7947:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12037:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6349:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17077:155;;;;;;;;;;;;;:::i;:::-;;12077:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7192:100;7246:13;7279:5;7272:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7192:100;:::o;8106:169::-;8189:4;8206:39;8215:12;:10;:12::i;:::-;8229:7;8238:6;8206:8;:39::i;:::-;8263:4;8256:11;;8106:169;;;;:::o;12495:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;11760:51::-;;;:::o;7513:108::-;7574:7;7601:12;;7594:19;;7513:108;:::o;8283:458::-;8389:4;8406:36;8416:6;8424:9;8435:6;8406:9;:36::i;:::-;8455:24;8482:11;:19;8494:6;8482:19;;;;;;;;;;;;;;;:33;8502:12;:10;:12::i;:::-;8482:33;;;;;;;;;;;;;;;;8455:60;;8554:6;8534:16;:26;;8526:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8641:57;8650:6;8658:12;:10;:12::i;:::-;8691:6;8672:16;:25;8641:8;:57::i;:::-;8729:4;8722:11;;;8283:458;;;;;:::o;15014:247::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15104:12:::1;15095:6;:21;;;;15143:4;15127:13;;:20;;;;;;;;;;;;;;;;;;15172:4;15158:11;;:18;;;;;;;;;;;;;;;;;;15200:12;15187:10;:25;;;;15238:15;15223:12;:30;;;;15014:247:::0;:::o;11863:53::-;11909:6;11863:53;:::o;7412:93::-;7470:5;7495:2;7488:9;;7412:93;:::o;8749:215::-;8837:4;8854:80;8863:12;:10;:12::i;:::-;8877:7;8923:10;8886:11;:25;8898:12;:10;:12::i;:::-;8886:25;;;;;;;;;;;;;;;:34;8912:7;8886:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;8854:8;:80::i;:::-;8952:4;8945:11;;8749:215;;;;:::o;11818:38::-;;;:::o;12145:33::-;;;;;;;;;;;;;:::o;15499:127::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15609:8:::1;15596:9;:22;;;;:::i;:::-;15580:13;:38;;;;15499:127:::0;:::o;16846:223::-;16926:15;;;;;;;;;;;16910:31;;:12;:10;:12::i;:::-;:31;;;16902:40;;;;;;16971:24;16989:4;16971:9;:24::i;:::-;16961:6;:34;;:48;;;;;17008:1;16999:6;:10;16961:48;16953:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17037:24;17054:6;17037:16;:24::i;:::-;16846:223;:::o;15634:239::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15756:4:::1;15748;15743:1;15727:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15726:26;;;;:::i;:::-;15725:35;;;;:::i;:::-;15715:6;:45;;15707:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;15856:8;15846:6;:19;;;;:::i;:::-;15823:20;:42;;;;15634:239:::0;:::o;12399:28::-;;;;:::o;17688:237::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17783:1:::1;17775:4;:9;;17767:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17833:1;17824:5;:10;;17816:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;17881:4;17866:12;:19;;;;17912:5;17896:13;:21;;;;17688:237:::0;;:::o;12225:31::-;;;;;;;;;;;;;:::o;7629:127::-;7703:7;7730:9;:18;7740:7;7730:18;;;;;;;;;;;;;;;;7723:25;;7629:127;;;:::o;6238:103::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6303:30:::1;6330:1;6303:18;:30::i;:::-;6238:103::o:0;15364:127::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15474:8:::1;15461:9;:22;;;;:::i;:::-;15440:18;:43;;;;15364:127:::0;:::o;6015:87::-;6061:7;6088:6;;;;;;;;;;;6081:13;;6015:87;:::o;16548:100::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16633:7:::1;16619:11;;:21;;;;;;;;;;;;;;;;;;16548:100:::0;:::o;16110:191::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16240:4:::1;16196:31;:41;16228:8;16196:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;16289:4;16257:19;:29;16277:8;16257:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;16110:191:::0;;:::o;7300:104::-;7356:13;7389:7;7382:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7300:104;:::o;12333:21::-;;;;:::o;17240:244::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17347:13:::1;17339:21;;:4;:21;;::::0;17331:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17435:41;17464:4;17470:5;17435:28;:41::i;:::-;17240:244:::0;;:::o;8972:413::-;9065:4;9082:24;9109:11;:25;9121:12;:10;:12::i;:::-;9109:25;;;;;;;;;;;;;;;:34;9135:7;9109:34;;;;;;;;;;;;;;;;9082:61;;9182:15;9162:16;:35;;9154:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9275:67;9284:12;:10;:12::i;:::-;9298:7;9326:15;9307:16;:34;9275:8;:67::i;:::-;9373:4;9366:11;;;8972:413;;;;:::o;7764:175::-;7850:4;7867:42;7877:12;:10;:12::i;:::-;7891:9;7902:6;7867:9;:42::i;:::-;7927:4;7920:11;;7764:175;;;;:::o;17933:208::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18070:15:::1;;;;;;;;;;;18027:59;;18050:18;18027:59;;;;;;;;;;;;18115:18;18097:15;;:36;;;;;;;;;;;;;;;;;;17933:208:::0;:::o;16309:143::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16440:4:::1;16398:31;:39;16430:6;16398:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;16309:143:::0;;:::o;12567:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;12185:33::-;;;;;;;;;;;;;:::o;16656:182::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16772:8:::1;16741:19;:28;16761:7;16741:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16812:7;16796:34;;;16821:8;16796:34;;;;;;:::i;:::-;;;;;;;;16656:182:::0;;:::o;14517:489::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14597:64:::1;14614:4;14629:15;14647:13;:11;:13::i;:::-;14597:8;:64::i;:::-;14672:15;:31;;;14711:21;14742:4;14748:24;14766:4;14748:9;:24::i;:::-;14773:1;14775::::0;14777:7:::1;:5;:7::i;:::-;14785:15;14672:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14819:13;14812:29;;;14850:15;14868:14;14812:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14898:9;14894:105;14913:8;:15;14909:1;:19;14894:105;;;14949:38;14969:8;14978:1;14969:11;;;;;;;;:::i;:::-;;;;;;;;14982:4;14949:19;:38::i;:::-;14930:3;;;;;14894:105;;;;14517:489:::0;:::o;11995:35::-;;;;:::o;12108:28::-;;;;:::o;15269:87::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15343:5:::1;15326:14;;:22;;;;;;;;;;;;;;;;;;15269:87::o:0;15881:221::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16007:4:::1;15999;15994:1;15978:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15977:26;;;;:::i;:::-;15976:35;;;;:::i;:::-;15966:6;:45;;15958:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;16085:8;16075:6;:19;;;;:::i;:::-;16063:9;:31;;;;15881:221:::0;:::o;12363:27::-;;;;:::o;7947:151::-;8036:7;8063:11;:18;8075:5;8063:18;;;;;;;;;;;;;;;:27;8082:7;8063:27;;;;;;;;;;;;;;;;8056:34;;7947:151;;;;:::o;12037:33::-;;;;:::o;6349:201::-;6161:12;:10;:12::i;:::-;6150:23;;:7;:5;:7::i;:::-;:23;;;6142:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6458:1:::1;6438:22;;:8;:22;;::::0;6430:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6514:28;6533:8;6514:18;:28::i;:::-;6349:201:::0;:::o;17077:155::-;17125:12;17169:15;;;;;;;;;;;17161:29;;17198:21;17161:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17148:76;;;;;17114:118;17077:155::o;12077:24::-;;;;:::o;5531:98::-;5584:7;5611:10;5604:17;;5531:98;:::o;11106:346::-;11225:1;11208:19;;:5;:19;;;11200:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11306:1;11287:21;;:7;:21;;;11279:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11390:6;11360:11;:18;11372:5;11360:18;;;;;;;;;;;;;;;:27;11379:7;11360:27;;;;;;;;;;;;;;;:36;;;;11428:7;11412:32;;11421:5;11412:32;;;11437:6;11412:32;;;;;;:::i;:::-;;;;;;;;11106:346;;;:::o;18149:3186::-;18263:1;18247:18;;:4;:18;;;18239:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18340:1;18326:16;;:2;:16;;;18318:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18409:1;18399:6;:11;18395:93;;18427:28;18443:4;18449:2;18453:1;18427:15;:28::i;:::-;18470:7;;18395:93;18504:14;;;;;;;;;;;18500:1310;;;18547:7;:5;:7::i;:::-;18539:15;;:4;:15;;;;:32;;;;;18564:7;:5;:7::i;:::-;18558:13;;:2;:13;;;;18539:32;:52;;;;;18589:1;18575:16;;:2;:16;;;;18539:52;:77;;;;;18609:6;18595:21;;:2;:21;;;;18539:77;:90;;;;;18621:8;;;;;;;;;;;18620:9;18539:90;18535:1264;;;18679:12;18668:6;;18655:10;;:19;;;;:::i;:::-;18654:37;18650:183;;18771:2;18755:13;:18;;;;18811:2;18796:12;:17;;;;18650:183;18858:13;;;;;;;;;;;18853:150;;18904:19;:25;18924:4;18904:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;18933:19;:23;18953:2;18933:23;;;;;;;;;;;;;;;;;;;;;;;;;18904:52;18896:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;18853:150;19055:25;:31;19081:4;19055:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19091:31;:35;19123:2;19091:35;;;;;;;;;;;;;;;;;;;;;;;;;19090:36;19055:71;19051:733;;;19169:20;;19159:6;:30;;19151:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;19304:9;;19287:13;19297:2;19287:9;:13::i;:::-;19278:6;:22;;;;:::i;:::-;:35;;19270:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19051:733;;;19413:25;:29;19439:2;19413:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19447:31;:37;19479:4;19447:37;;;;;;;;;;;;;;;;;;;;;;;;;19446:38;19413:71;19409:375;;;19527:20;;19517:6;:30;;19509:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;19409:375;;;19637:31;:35;19669:2;19637:35;;;;;;;;;;;;;;;;;;;;;;;;;19632:152;;19731:9;;19714:13;19724:2;19714:9;:13::i;:::-;19705:6;:22;;;;:::i;:::-;:35;;19697:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19632:152;19409:375;19051:733;18535:1264;18500:1310;19822:28;19853:24;19871:4;19853:9;:24::i;:::-;19822:55;;19890:12;19929:18;;19905:20;:42;;19890:57;;19978:7;:22;;;;;19989:11;;;;;;;;;;;19978:22;:35;;;;;20005:8;;;;;;;;;;;20004:9;19978:35;:71;;;;;20018:25;:31;20044:4;20018:31;;;;;;;;;;;;;;;;;;;;;;;;;20017:32;19978:71;:101;;;;;20054:19;:25;20074:4;20054:25;;;;;;;;;;;;;;;;;;;;;;;;;20053:26;19978:101;:146;;;;;20101:19;:23;20121:2;20101:23;;;;;;;;;;;;;;;;;;;;;;;;;20100:24;19978:146;19960:468;;;20220:1;20193:10;:24;20204:12;20193:24;;;;;;;;;;;;:28;20189:228;;;20253:4;20242:8;;:15;;;;;;;;;;;;;;;;;;20278:10;:8;:10::i;:::-;20320:5;20309:8;;:16;;;;;;;;;;;;;;;;;;20400:1;20373:10;:24;20384:12;20373:24;;;;;;;;;;;;:28;;;;:::i;:::-;20346:10;:24;20357:12;20346:24;;;;;;;;;;;:55;;;;20189:228;19960:468;20440:12;20456:8;;;;;;;;;;;20455:9;20440:24;;20566:19;:25;20586:4;20566:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20595:19;:23;20615:2;20595:23;;;;;;;;;;;;;;;;;;;;;;;;;20566:52;20562:100;;;20645:5;20635:15;;20562:100;20674:12;20779:7;20775:507;;;20831:25;:29;20857:2;20831:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;20880:1;20864:13;;:17;20831:50;20827:306;;;20909:34;20939:3;20909:25;20920:13;;20909:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;20902:41;;20827:306;;;21005:25;:31;21031:4;21005:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;21055:1;21040:12;;:16;21005:51;21001:132;;;21084:33;21113:3;21084:24;21095:12;;21084:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;21077:40;;21001:132;20827:306;21160:1;21153:4;:8;21149:91;;;21182:42;21198:4;21212;21219;21182:15;:42::i;:::-;21149:91;21266:4;21256:14;;;;;:::i;:::-;;;20775:507;21294:33;21310:4;21316:2;21320:6;21294:15;:33::i;:::-;18228:3107;;;;18149:3186;;;;:::o;21343:589::-;21469:21;21507:1;21493:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21469:40;;21538:4;21520;21525:1;21520:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21564:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21554:4;21559:1;21554:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;21599:62;21616:4;21631:15;21649:11;21599:8;:62::i;:::-;21700:15;:66;;;21781:11;21807:1;21851:4;21878;21898:15;21700:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21398:534;21343:589;:::o;6558:191::-;6632:16;6651:6;;;;;;;;;;;6632:25;;6677:8;6668:6;;:17;;;;;;;;;;;;;;;;;;6732:8;6701:40;;6722:8;6701:40;;;;;;;;;;;;6621:128;6558:191;:::o;17492:188::-;17609:5;17575:25;:31;17601:4;17575:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17666:5;17632:40;;17660:4;17632:40;;;;;;;;;;;;17492:188;;:::o;9393:699::-;9517:1;9499:20;;:6;:20;;;9491:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9601:1;9580:23;;:9;:23;;;9572:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9656:47;9677:6;9685:9;9696:6;9656:20;:47::i;:::-;9716:21;9740:9;:17;9750:6;9740:17;;;;;;;;;;;;;;;;9716:41;;9793:6;9776:13;:23;;9768:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;9914:6;9898:13;:22;9878:9;:17;9888:6;9878:17;;;;;;;;;;;;;;;:42;;;;9966:6;9942:9;:20;9952:9;9942:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;10007:9;9990:35;;9999:6;9990:35;;;10018:6;9990:35;;;;;;:::i;:::-;;;;;;;;10038:46;10058:6;10066:9;10077:6;10038:19;:46::i;:::-;9480:612;9393:699;;;:::o;21940:584::-;21979:23;22005:24;22023:4;22005:9;:24::i;:::-;21979:50;;22040:12;22088:1;22069:15;:20;22065:59;;22106:7;;;;22065:59;22158:13;;22140:15;:31;22136:95;;;22206:13;;22188:31;;22136:95;22294:26;22323:15;22294:44;;22351:36;22368:18;22351:16;:36::i;:::-;22400:16;22419:21;22400:40;;22474:15;;;;;;;;;;;22466:29;;22503:8;22466:50;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22453:63;;;;;21968:556;;;;21940:584;:::o;3539:98::-;3597:7;3628:1;3624;:5;;;;:::i;:::-;3617:12;;3539:98;;;;:::o;3645:::-;3703:7;3734:1;3730;:5;;;;:::i;:::-;3723:12;;3645:98;;;;:::o;11460:91::-;;;;:::o;11559:90::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:329::-;5790:6;5839:2;5827:9;5818:7;5814:23;5810:32;5807:119;;;5845:79;;:::i;:::-;5807:119;5965:1;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5936:117;5731:329;;;;:::o;6066:118::-;6153:24;6171:5;6153:24;:::i;:::-;6148:3;6141:37;6066:118;;:::o;6190:222::-;6283:4;6321:2;6310:9;6306:18;6298:26;;6334:71;6402:1;6391:9;6387:17;6378:6;6334:71;:::i;:::-;6190:222;;;;:::o;6418:86::-;6453:7;6493:4;6486:5;6482:16;6471:27;;6418:86;;;:::o;6510:112::-;6593:22;6609:5;6593:22;:::i;:::-;6588:3;6581:35;6510:112;;:::o;6628:214::-;6717:4;6755:2;6744:9;6740:18;6732:26;;6768:67;6832:1;6821:9;6817:17;6808:6;6768:67;:::i;:::-;6628:214;;;;:::o;6848:474::-;6916:6;6924;6973:2;6961:9;6952:7;6948:23;6944:32;6941:119;;;6979:79;;:::i;:::-;6941:119;7099:1;7124:53;7169:7;7160:6;7149:9;7145:22;7124:53;:::i;:::-;7114:63;;7070:117;7226:2;7252:53;7297:7;7288:6;7277:9;7273:22;7252:53;:::i;:::-;7242:63;;7197:118;6848:474;;;;;:::o;7328:116::-;7398:21;7413:5;7398:21;:::i;:::-;7391:5;7388:32;7378:60;;7434:1;7431;7424:12;7378:60;7328:116;:::o;7450:133::-;7493:5;7531:6;7518:20;7509:29;;7547:30;7571:5;7547:30;:::i;:::-;7450:133;;;;:::o;7589:323::-;7645:6;7694:2;7682:9;7673:7;7669:23;7665:32;7662:119;;;7700:79;;:::i;:::-;7662:119;7820:1;7845:50;7887:7;7878:6;7867:9;7863:22;7845:50;:::i;:::-;7835:60;;7791:114;7589:323;;;;:::o;7918:468::-;7983:6;7991;8040:2;8028:9;8019:7;8015:23;8011:32;8008:119;;;8046:79;;:::i;:::-;8008:119;8166:1;8191:53;8236:7;8227:6;8216:9;8212:22;8191:53;:::i;:::-;8181:63;;8137:117;8293:2;8319:50;8361:7;8352:6;8341:9;8337:22;8319:50;:::i;:::-;8309:60;;8264:115;7918:468;;;;;:::o;8392:117::-;8501:1;8498;8491:12;8515:180;8563:77;8560:1;8553:88;8660:4;8657:1;8650:15;8684:4;8681:1;8674:15;8701:281;8784:27;8806:4;8784:27;:::i;:::-;8776:6;8772:40;8914:6;8902:10;8899:22;8878:18;8866:10;8863:34;8860:62;8857:88;;;8925:18;;:::i;:::-;8857:88;8965:10;8961:2;8954:22;8744:238;8701:281;;:::o;8988:129::-;9022:6;9049:20;;:::i;:::-;9039:30;;9078:33;9106:4;9098:6;9078:33;:::i;:::-;8988:129;;;:::o;9123:311::-;9200:4;9290:18;9282:6;9279:30;9276:56;;;9312:18;;:::i;:::-;9276:56;9362:4;9354:6;9350:17;9342:25;;9422:4;9416;9412:15;9404:23;;9123:311;;;:::o;9440:117::-;9549:1;9546;9539:12;9580:710;9676:5;9701:81;9717:64;9774:6;9717:64;:::i;:::-;9701:81;:::i;:::-;9692:90;;9802:5;9831:6;9824:5;9817:21;9865:4;9858:5;9854:16;9847:23;;9918:4;9910:6;9906:17;9898:6;9894:30;9947:3;9939:6;9936:15;9933:122;;;9966:79;;:::i;:::-;9933:122;10081:6;10064:220;10098:6;10093:3;10090:15;10064:220;;;10173:3;10202:37;10235:3;10223:10;10202:37;:::i;:::-;10197:3;10190:50;10269:4;10264:3;10260:14;10253:21;;10140:144;10124:4;10119:3;10115:14;10108:21;;10064:220;;;10068:21;9682:608;;9580:710;;;;;:::o;10313:370::-;10384:5;10433:3;10426:4;10418:6;10414:17;10410:27;10400:122;;10441:79;;:::i;:::-;10400:122;10558:6;10545:20;10583:94;10673:3;10665:6;10658:4;10650:6;10646:17;10583:94;:::i;:::-;10574:103;;10390:293;10313:370;;;;:::o;10689:539::-;10773:6;10822:2;10810:9;10801:7;10797:23;10793:32;10790:119;;;10828:79;;:::i;:::-;10790:119;10976:1;10965:9;10961:17;10948:31;11006:18;10998:6;10995:30;10992:117;;;11028:79;;:::i;:::-;10992:117;11133:78;11203:7;11194:6;11183:9;11179:22;11133:78;:::i;:::-;11123:88;;10919:302;10689:539;;;;:::o;11234:474::-;11302:6;11310;11359:2;11347:9;11338:7;11334:23;11330:32;11327:119;;;11365:79;;:::i;:::-;11327:119;11485:1;11510:53;11555:7;11546:6;11535:9;11531:22;11510:53;:::i;:::-;11500:63;;11456:117;11612:2;11638:53;11683:7;11674:6;11663:9;11659:22;11638:53;:::i;:::-;11628:63;;11583:118;11234:474;;;;;:::o;11714:180::-;11762:77;11759:1;11752:88;11859:4;11856:1;11849:15;11883:4;11880:1;11873:15;11900:320;11944:6;11981:1;11975:4;11971:12;11961:22;;12028:1;12022:4;12018:12;12049:18;12039:81;;12105:4;12097:6;12093:17;12083:27;;12039:81;12167:2;12159:6;12156:14;12136:18;12133:38;12130:84;;12186:18;;:::i;:::-;12130:84;11951:269;11900:320;;;:::o;12226:227::-;12366:34;12362:1;12354:6;12350:14;12343:58;12435:10;12430:2;12422:6;12418:15;12411:35;12226:227;:::o;12459:366::-;12601:3;12622:67;12686:2;12681:3;12622:67;:::i;:::-;12615:74;;12698:93;12787:3;12698:93;:::i;:::-;12816:2;12811:3;12807:12;12800:19;;12459:366;;;:::o;12831:419::-;12997:4;13035:2;13024:9;13020:18;13012:26;;13084:9;13078:4;13074:20;13070:1;13059:9;13055:17;13048:47;13112:131;13238:4;13112:131;:::i;:::-;13104:139;;12831:419;;;:::o;13256:182::-;13396:34;13392:1;13384:6;13380:14;13373:58;13256:182;:::o;13444:366::-;13586:3;13607:67;13671:2;13666:3;13607:67;:::i;:::-;13600:74;;13683:93;13772:3;13683:93;:::i;:::-;13801:2;13796:3;13792:12;13785:19;;13444:366;;;:::o;13816:419::-;13982:4;14020:2;14009:9;14005:18;13997:26;;14069:9;14063:4;14059:20;14055:1;14044:9;14040:17;14033:47;14097:131;14223:4;14097:131;:::i;:::-;14089:139;;13816:419;;;:::o;14241:180::-;14289:77;14286:1;14279:88;14386:4;14383:1;14376:15;14410:4;14407:1;14400:15;14427:191;14467:3;14486:20;14504:1;14486:20;:::i;:::-;14481:25;;14520:20;14538:1;14520:20;:::i;:::-;14515:25;;14563:1;14560;14556:9;14549:16;;14584:3;14581:1;14578:10;14575:36;;;14591:18;;:::i;:::-;14575:36;14427:191;;;;:::o;14624:410::-;14664:7;14687:20;14705:1;14687:20;:::i;:::-;14682:25;;14721:20;14739:1;14721:20;:::i;:::-;14716:25;;14776:1;14773;14769:9;14798:30;14816:11;14798:30;:::i;:::-;14787:41;;14977:1;14968:7;14964:15;14961:1;14958:22;14938:1;14931:9;14911:83;14888:139;;15007:18;;:::i;:::-;14888:139;14672:362;14624:410;;;;:::o;15040:162::-;15180:14;15176:1;15168:6;15164:14;15157:38;15040:162;:::o;15208:366::-;15350:3;15371:67;15435:2;15430:3;15371:67;:::i;:::-;15364:74;;15447:93;15536:3;15447:93;:::i;:::-;15565:2;15560:3;15556:12;15549:19;;15208:366;;;:::o;15580:419::-;15746:4;15784:2;15773:9;15769:18;15761:26;;15833:9;15827:4;15823:20;15819:1;15808:9;15804:17;15797:47;15861:131;15987:4;15861:131;:::i;:::-;15853:139;;15580:419;;;:::o;16005:180::-;16053:77;16050:1;16043:88;16150:4;16147:1;16140:15;16174:4;16171:1;16164:15;16191:185;16231:1;16248:20;16266:1;16248:20;:::i;:::-;16243:25;;16282:20;16300:1;16282:20;:::i;:::-;16277:25;;16321:1;16311:35;;16326:18;;:::i;:::-;16311:35;16368:1;16365;16361:9;16356:14;;16191:185;;;;:::o;16382:234::-;16522:34;16518:1;16510:6;16506:14;16499:58;16591:17;16586:2;16578:6;16574:15;16567:42;16382:234;:::o;16622:366::-;16764:3;16785:67;16849:2;16844:3;16785:67;:::i;:::-;16778:74;;16861:93;16950:3;16861:93;:::i;:::-;16979:2;16974:3;16970:12;16963:19;;16622:366;;;:::o;16994:419::-;17160:4;17198:2;17187:9;17183:18;17175:26;;17247:9;17241:4;17237:20;17233:1;17222:9;17218:17;17211:47;17275:131;17401:4;17275:131;:::i;:::-;17267:139;;16994:419;;;:::o;17419:166::-;17559:18;17555:1;17547:6;17543:14;17536:42;17419:166;:::o;17591:366::-;17733:3;17754:67;17818:2;17813:3;17754:67;:::i;:::-;17747:74;;17830:93;17919:3;17830:93;:::i;:::-;17948:2;17943:3;17939:12;17932:19;;17591:366;;;:::o;17963:419::-;18129:4;18167:2;18156:9;18152:18;18144:26;;18216:9;18210:4;18206:20;18202:1;18191:9;18187:17;18180:47;18244:131;18370:4;18244:131;:::i;:::-;18236:139;;17963:419;;;:::o;18388:244::-;18528:34;18524:1;18516:6;18512:14;18505:58;18597:27;18592:2;18584:6;18580:15;18573:52;18388:244;:::o;18638:366::-;18780:3;18801:67;18865:2;18860:3;18801:67;:::i;:::-;18794:74;;18877:93;18966:3;18877:93;:::i;:::-;18995:2;18990:3;18986:12;18979:19;;18638:366;;;:::o;19010:419::-;19176:4;19214:2;19203:9;19199:18;19191:26;;19263:9;19257:4;19253:20;19249:1;19238:9;19234:17;19227:47;19291:131;19417:4;19291:131;:::i;:::-;19283:139;;19010:419;;;:::o;19435:224::-;19575:34;19571:1;19563:6;19559:14;19552:58;19644:7;19639:2;19631:6;19627:15;19620:32;19435:224;:::o;19665:366::-;19807:3;19828:67;19892:2;19887:3;19828:67;:::i;:::-;19821:74;;19904:93;19993:3;19904:93;:::i;:::-;20022:2;20017:3;20013:12;20006:19;;19665:366;;;:::o;20037:419::-;20203:4;20241:2;20230:9;20226:18;20218:26;;20290:9;20284:4;20280:20;20276:1;20265:9;20261:17;20254:47;20318:131;20444:4;20318:131;:::i;:::-;20310:139;;20037:419;;;:::o;20462:85::-;20507:7;20536:5;20525:16;;20462:85;;;:::o;20553:158::-;20611:9;20644:61;20662:42;20671:32;20697:5;20671:32;:::i;:::-;20662:42;:::i;:::-;20644:61;:::i;:::-;20631:74;;20553:158;;;:::o;20717:147::-;20812:45;20851:5;20812:45;:::i;:::-;20807:3;20800:58;20717:147;;:::o;20870:807::-;21119:4;21157:3;21146:9;21142:19;21134:27;;21171:71;21239:1;21228:9;21224:17;21215:6;21171:71;:::i;:::-;21252:72;21320:2;21309:9;21305:18;21296:6;21252:72;:::i;:::-;21334:80;21410:2;21399:9;21395:18;21386:6;21334:80;:::i;:::-;21424;21500:2;21489:9;21485:18;21476:6;21424:80;:::i;:::-;21514:73;21582:3;21571:9;21567:19;21558:6;21514:73;:::i;:::-;21597;21665:3;21654:9;21650:19;21641:6;21597:73;:::i;:::-;20870:807;;;;;;;;;:::o;21683:143::-;21740:5;21771:6;21765:13;21756:22;;21787:33;21814:5;21787:33;:::i;:::-;21683:143;;;;:::o;21832:663::-;21920:6;21928;21936;21985:2;21973:9;21964:7;21960:23;21956:32;21953:119;;;21991:79;;:::i;:::-;21953:119;22111:1;22136:64;22192:7;22183:6;22172:9;22168:22;22136:64;:::i;:::-;22126:74;;22082:128;22249:2;22275:64;22331:7;22322:6;22311:9;22307:22;22275:64;:::i;:::-;22265:74;;22220:129;22388:2;22414:64;22470:7;22461:6;22450:9;22446:22;22414:64;:::i;:::-;22404:74;;22359:129;21832:663;;;;;:::o;22501:332::-;22622:4;22660:2;22649:9;22645:18;22637:26;;22673:71;22741:1;22730:9;22726:17;22717:6;22673:71;:::i;:::-;22754:72;22822:2;22811:9;22807:18;22798:6;22754:72;:::i;:::-;22501:332;;;;;:::o;22839:137::-;22893:5;22924:6;22918:13;22909:22;;22940:30;22964:5;22940:30;:::i;:::-;22839:137;;;;:::o;22982:345::-;23049:6;23098:2;23086:9;23077:7;23073:23;23069:32;23066:119;;;23104:79;;:::i;:::-;23066:119;23224:1;23249:61;23302:7;23293:6;23282:9;23278:22;23249:61;:::i;:::-;23239:71;;23195:125;22982:345;;;;:::o;23333:180::-;23381:77;23378:1;23371:88;23478:4;23475:1;23468:15;23502:4;23499:1;23492:15;23519:223;23659:34;23655:1;23647:6;23643:14;23636:58;23728:6;23723:2;23715:6;23711:15;23704:31;23519:223;:::o;23748:366::-;23890:3;23911:67;23975:2;23970:3;23911:67;:::i;:::-;23904:74;;23987:93;24076:3;23987:93;:::i;:::-;24105:2;24100:3;24096:12;24089:19;;23748:366;;;:::o;24120:419::-;24286:4;24324:2;24313:9;24309:18;24301:26;;24373:9;24367:4;24363:20;24359:1;24348:9;24344:17;24337:47;24401:131;24527:4;24401:131;:::i;:::-;24393:139;;24120:419;;;:::o;24545:225::-;24685:34;24681:1;24673:6;24669:14;24662:58;24754:8;24749:2;24741:6;24737:15;24730:33;24545:225;:::o;24776:366::-;24918:3;24939:67;25003:2;24998:3;24939:67;:::i;:::-;24932:74;;25015:93;25104:3;25015:93;:::i;:::-;25133:2;25128:3;25124:12;25117:19;;24776:366;;;:::o;25148:419::-;25314:4;25352:2;25341:9;25337:18;25329:26;;25401:9;25395:4;25391:20;25387:1;25376:9;25372:17;25365:47;25429:131;25555:4;25429:131;:::i;:::-;25421:139;;25148:419;;;:::o;25573:147::-;25674:11;25711:3;25696:18;;25573:147;;;;:::o;25726:114::-;;:::o;25846:398::-;26005:3;26026:83;26107:1;26102:3;26026:83;:::i;:::-;26019:90;;26118:93;26207:3;26118:93;:::i;:::-;26236:1;26231:3;26227:11;26220:18;;25846:398;;;:::o;26250:379::-;26434:3;26456:147;26599:3;26456:147;:::i;:::-;26449:154;;26620:3;26613:10;;26250:379;;;:::o;26635:223::-;26775:34;26771:1;26763:6;26759:14;26752:58;26844:6;26839:2;26831:6;26827:15;26820:31;26635:223;:::o;26864:366::-;27006:3;27027:67;27091:2;27086:3;27027:67;:::i;:::-;27020:74;;27103:93;27192:3;27103:93;:::i;:::-;27221:2;27216:3;27212:12;27205:19;;26864:366;;;:::o;27236:419::-;27402:4;27440:2;27429:9;27425:18;27417:26;;27489:9;27483:4;27479:20;27475:1;27464:9;27460:17;27453:47;27517:131;27643:4;27517:131;:::i;:::-;27509:139;;27236:419;;;:::o;27661:221::-;27801:34;27797:1;27789:6;27785:14;27778:58;27870:4;27865:2;27857:6;27853:15;27846:29;27661:221;:::o;27888:366::-;28030:3;28051:67;28115:2;28110:3;28051:67;:::i;:::-;28044:74;;28127:93;28216:3;28127:93;:::i;:::-;28245:2;28240:3;28236:12;28229:19;;27888:366;;;:::o;28260:419::-;28426:4;28464:2;28453:9;28449:18;28441:26;;28513:9;28507:4;28503:20;28499:1;28488:9;28484:17;28477:47;28541:131;28667:4;28541:131;:::i;:::-;28533:139;;28260:419;;;:::o;28685:224::-;28825:34;28821:1;28813:6;28809:14;28802:58;28894:7;28889:2;28881:6;28877:15;28870:32;28685:224;:::o;28915:366::-;29057:3;29078:67;29142:2;29137:3;29078:67;:::i;:::-;29071:74;;29154:93;29243:3;29154:93;:::i;:::-;29272:2;29267:3;29263:12;29256:19;;28915:366;;;:::o;29287:419::-;29453:4;29491:2;29480:9;29476:18;29468:26;;29540:9;29534:4;29530:20;29526:1;29515:9;29511:17;29504:47;29568:131;29694:4;29568:131;:::i;:::-;29560:139;;29287:419;;;:::o;29712:222::-;29852:34;29848:1;29840:6;29836:14;29829:58;29921:5;29916:2;29908:6;29904:15;29897:30;29712:222;:::o;29940:366::-;30082:3;30103:67;30167:2;30162:3;30103:67;:::i;:::-;30096:74;;30179:93;30268:3;30179:93;:::i;:::-;30297:2;30292:3;30288:12;30281:19;;29940:366;;;:::o;30312:419::-;30478:4;30516:2;30505:9;30501:18;30493:26;;30565:9;30559:4;30555:20;30551:1;30540:9;30536:17;30529:47;30593:131;30719:4;30593:131;:::i;:::-;30585:139;;30312:419;;;:::o;30737:172::-;30877:24;30873:1;30865:6;30861:14;30854:48;30737:172;:::o;30915:366::-;31057:3;31078:67;31142:2;31137:3;31078:67;:::i;:::-;31071:74;;31154:93;31243:3;31154:93;:::i;:::-;31272:2;31267:3;31263:12;31256:19;;30915:366;;;:::o;31287:419::-;31453:4;31491:2;31480:9;31476:18;31468:26;;31540:9;31534:4;31530:20;31526:1;31515:9;31511:17;31504:47;31568:131;31694:4;31568:131;:::i;:::-;31560:139;;31287:419;;;:::o;31712:240::-;31852:34;31848:1;31840:6;31836:14;31829:58;31921:23;31916:2;31908:6;31904:15;31897:48;31712:240;:::o;31958:366::-;32100:3;32121:67;32185:2;32180:3;32121:67;:::i;:::-;32114:74;;32197:93;32286:3;32197:93;:::i;:::-;32315:2;32310:3;32306:12;32299:19;;31958:366;;;:::o;32330:419::-;32496:4;32534:2;32523:9;32519:18;32511:26;;32583:9;32577:4;32573:20;32569:1;32558:9;32554:17;32547:47;32611:131;32737:4;32611:131;:::i;:::-;32603:139;;32330:419;;;:::o;32755:169::-;32895:21;32891:1;32883:6;32879:14;32872:45;32755:169;:::o;32930:366::-;33072:3;33093:67;33157:2;33152:3;33093:67;:::i;:::-;33086:74;;33169:93;33258:3;33169:93;:::i;:::-;33287:2;33282:3;33278:12;33271:19;;32930:366;;;:::o;33302:419::-;33468:4;33506:2;33495:9;33491:18;33483:26;;33555:9;33549:4;33545:20;33541:1;33530:9;33526:17;33519:47;33583:131;33709:4;33583:131;:::i;:::-;33575:139;;33302:419;;;:::o;33727:241::-;33867:34;33863:1;33855:6;33851:14;33844:58;33936:24;33931:2;33923:6;33919:15;33912:49;33727:241;:::o;33974:366::-;34116:3;34137:67;34201:2;34196:3;34137:67;:::i;:::-;34130:74;;34213:93;34302:3;34213:93;:::i;:::-;34331:2;34326:3;34322:12;34315:19;;33974:366;;;:::o;34346:419::-;34512:4;34550:2;34539:9;34535:18;34527:26;;34599:9;34593:4;34589:20;34585:1;34574:9;34570:17;34563:47;34627:131;34753:4;34627:131;:::i;:::-;34619:139;;34346:419;;;:::o;34771:194::-;34811:4;34831:20;34849:1;34831:20;:::i;:::-;34826:25;;34865:20;34883:1;34865:20;:::i;:::-;34860:25;;34909:1;34906;34902:9;34894:17;;34933:1;34927:4;34924:11;34921:37;;;34938:18;;:::i;:::-;34921:37;34771:194;;;;:::o;34971:143::-;35028:5;35059:6;35053:13;35044:22;;35075:33;35102:5;35075:33;:::i;:::-;34971:143;;;;:::o;35120:351::-;35190:6;35239:2;35227:9;35218:7;35214:23;35210:32;35207:119;;;35245:79;;:::i;:::-;35207:119;35365:1;35390:64;35446:7;35437:6;35426:9;35422:22;35390:64;:::i;:::-;35380:74;;35336:128;35120:351;;;;:::o;35477:114::-;35544:6;35578:5;35572:12;35562:22;;35477:114;;;:::o;35597:184::-;35696:11;35730:6;35725:3;35718:19;35770:4;35765:3;35761:14;35746:29;;35597:184;;;;:::o;35787:132::-;35854:4;35877:3;35869:11;;35907:4;35902:3;35898:14;35890:22;;35787:132;;;:::o;35925:108::-;36002:24;36020:5;36002:24;:::i;:::-;35997:3;35990:37;35925:108;;:::o;36039:179::-;36108:10;36129:46;36171:3;36163:6;36129:46;:::i;:::-;36207:4;36202:3;36198:14;36184:28;;36039:179;;;;:::o;36224:113::-;36294:4;36326;36321:3;36317:14;36309:22;;36224:113;;;:::o;36373:732::-;36492:3;36521:54;36569:5;36521:54;:::i;:::-;36591:86;36670:6;36665:3;36591:86;:::i;:::-;36584:93;;36701:56;36751:5;36701:56;:::i;:::-;36780:7;36811:1;36796:284;36821:6;36818:1;36815:13;36796:284;;;36897:6;36891:13;36924:63;36983:3;36968:13;36924:63;:::i;:::-;36917:70;;37010:60;37063:6;37010:60;:::i;:::-;37000:70;;36856:224;36843:1;36840;36836:9;36831:14;;36796:284;;;36800:14;37096:3;37089:10;;36497:608;;;36373:732;;;;:::o;37111:831::-;37374:4;37412:3;37401:9;37397:19;37389:27;;37426:71;37494:1;37483:9;37479:17;37470:6;37426:71;:::i;:::-;37507:80;37583:2;37572:9;37568:18;37559:6;37507:80;:::i;:::-;37634:9;37628:4;37624:20;37619:2;37608:9;37604:18;37597:48;37662:108;37765:4;37756:6;37662:108;:::i;:::-;37654:116;;37780:72;37848:2;37837:9;37833:18;37824:6;37780:72;:::i;:::-;37862:73;37930:3;37919:9;37915:19;37906:6;37862:73;:::i;:::-;37111:831;;;;;;;;:::o;37948:225::-;38088:34;38084:1;38076:6;38072:14;38065:58;38157:8;38152:2;38144:6;38140:15;38133:33;37948:225;:::o;38179:366::-;38321:3;38342:67;38406:2;38401:3;38342:67;:::i;:::-;38335:74;;38418:93;38507:3;38418:93;:::i;:::-;38536:2;38531:3;38527:12;38520:19;;38179:366;;;:::o;38551:419::-;38717:4;38755:2;38744:9;38740:18;38732:26;;38804:9;38798:4;38794:20;38790:1;38779:9;38775:17;38768:47;38832:131;38958:4;38832:131;:::i;:::-;38824:139;;38551:419;;;:::o

Swarm Source

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