ETH Price: $3,074.35 (-1.48%)
Gas: 3 Gwei

Token

Lanify (LAN)
 

Overview

Max Total Supply

100,000,000 LAN

Holders

1,721

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.617381180595326591 LAN

Value
$0.00
0x6083ad48523daeacfc48ccfcf242661ba0253c8d
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:
Lanify

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

contract Lanify is ERC20, Ownable {

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

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public TreasuryAddress;
    address public RewardsAddress;

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

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

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

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

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


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

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

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

    event EnabledTrading(bool tradingActive, uint256 deadBlocks);
    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedTreasuryAddress(address indexed newWallet);

    event UpdatedRewardsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

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

    event TransferForeignToken(address token, uint256 amount);


    constructor() ERC20("Lanify", "LAN") {

        address newOwner = msg.sender; 

        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

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

        uint256 totalSupply = 100000000 * 1e18;

        maxBuyAmount = totalSupply *  2 / 1000; // 0.2%
        maxSellAmount = totalSupply *  2 / 1000; // 0.2%
        maxWalletAmount = totalSupply * 6 / 1000; // 0.6%
        swapTokensAtAmount = totalSupply * 50 / 100000; // 0.05%

        buyTreasuryFee = 25;
        buyLiquidityFee = 0;
        buyRewardsFee = 0;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyRewardsFee;

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

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

        TreasuryAddress = address(0x54cB6b47cB1504AF4EB1f79C89eFdFE3E88abAbc);
        RewardsAddress = address(0x54cB6b47cB1504AF4EB1f79C89eFdFE3E88abAbc);

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

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

    receive() external payable {}

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

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


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

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

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

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


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

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

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

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

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


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

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


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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

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

        uint256 fees = 0;
        uint256 penaltyAmount = 0;

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

            amount -= fees + penaltyAmount;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

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

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

    function setRewardsAddress(address _RewardsAddress) external onlyOwner {
        require(_RewardsAddress != address(0), "_RewardsAddress address cannot be 0");
        RewardsAddress = payable(_RewardsAddress);
        emit UpdatedRewardsAddress(_RewardsAddress);
    }
   
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForTreasury + tokensForRewards;

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

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

        bool success;

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

        swapTokensForEth(contractBalance - liquidityTokens);

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

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

        ethForLiquidity -= ethForTreasury + ethForRewards;

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

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

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

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


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

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


}

Contract Security Audit

Contract ABI

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

60c06040526000600d556001600e556001600f60006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff0219169083151502179055506000600f60026101000a81548160ff0219169083151502179055503480156200006c57600080fd5b506040518060400160405280600681526020017f4c616e69667900000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4c414e00000000000000000000000000000000000000000000000000000000008152508160039081620000ea919062000e9e565b508060049081620000fc919062000e9e565b5050506000620001116200066260201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001e18160016200066a60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000261573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000287919062000fef565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000315919062000fef565b6040518363ffffffff1660e01b81526004016200033492919062001032565b6020604051808303816000875af115801562000354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037a919062000fef565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003c260a05160016200070060201b60201c565b60006a52b7d2dcc80cd2e400000090506103e8600282620003e491906200108e565b620003f0919062001108565b6006819055506103e86002826200040891906200108e565b62000414919062001108565b6007819055506103e86006826200042c91906200108e565b62000438919062001108565b600881905550620186a06032826200045191906200108e565b6200045d919062001108565b600a8190555060196011819055506000601281905550600060138190555060135460125460115462000490919062001140565b6200049c919062001140565b601081905550601460158190555060006016819055506000601781905550601754601654601554620004cf919062001140565b620004db919062001140565b601481905550620004f48360016200066a60201b60201c565b620005073060016200066a60201b60201c565b6200051c61dead60016200066a60201b60201c565b7354cb6b47cb1504af4eb1f79c89efdfe3e88ababc600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507354cb6b47cb1504af4eb1f79c89efdfe3e88ababc600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005d9836001620007b360201b60201c565b620005ec306001620007b360201b60201c565b6200060161dead6001620007b360201b60201c565b62000636600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620007b360201b60201c565b6200064883826200090060201b60201c565b620006598362000a5060201b60201c565b5050506200139d565b600033905090565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620006f492919062001198565b60405180910390a15050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200076982826200066a60201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620007c36200066260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000855576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200084c9062001226565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008f4919062001248565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000972576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200096990620012b5565b60405180910390fd5b806002600082825462000986919062001140565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009dd919062001140565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a449190620012e8565b60405180910390a35050565b62000a606200066260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000af2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ae99062001226565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b5b906200137b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ca657607f821691505b60208210810362000cbc5762000cbb62000c5e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ce7565b62000d32868362000ce7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d7f62000d7962000d738462000d4a565b62000d54565b62000d4a565b9050919050565b6000819050919050565b62000d9b8362000d5e565b62000db362000daa8262000d86565b84845462000cf4565b825550505050565b600090565b62000dca62000dbb565b62000dd781848462000d90565b505050565b5b8181101562000dff5762000df360008262000dc0565b60018101905062000ddd565b5050565b601f82111562000e4e5762000e188162000cc2565b62000e238462000cd7565b8101602085101562000e33578190505b62000e4b62000e428562000cd7565b83018262000ddc565b50505b505050565b600082821c905092915050565b600062000e736000198460080262000e53565b1980831691505092915050565b600062000e8e838362000e60565b9150826002028217905092915050565b62000ea98262000c24565b67ffffffffffffffff81111562000ec55762000ec462000c2f565b5b62000ed1825462000c8d565b62000ede82828562000e03565b600060209050601f83116001811462000f16576000841562000f01578287015190505b62000f0d858262000e80565b86555062000f7d565b601f19841662000f268662000cc2565b60005b8281101562000f505784890151825560018201915060208501945060208101905062000f29565b8683101562000f70578489015162000f6c601f89168262000e60565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000fb78262000f8a565b9050919050565b62000fc98162000faa565b811462000fd557600080fd5b50565b60008151905062000fe98162000fbe565b92915050565b60006020828403121562001008576200100762000f85565b5b6000620010188482850162000fd8565b91505092915050565b6200102c8162000faa565b82525050565b600060408201905062001049600083018562001021565b62001058602083018462001021565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200109b8262000d4a565b9150620010a88362000d4a565b9250828202620010b88162000d4a565b91508282048414831517620010d257620010d16200105f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011158262000d4a565b9150620011228362000d4a565b925082620011355762001134620010d9565b5b828204905092915050565b60006200114d8262000d4a565b91506200115a8362000d4a565b92508282019050808211156200117557620011746200105f565b5b92915050565b60008115159050919050565b62001192816200117b565b82525050565b6000604082019050620011af600083018562001021565b620011be602083018462001187565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200120e602083620011c5565b91506200121b82620011d6565b602082019050919050565b600060208201905081810360008301526200124181620011ff565b9050919050565b60006020820190506200125f600083018462001187565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200129d601f83620011c5565b9150620012aa8262001265565b602082019050919050565b60006020820190508181036000830152620012d0816200128e565b9050919050565b620012e28162000d4a565b82525050565b6000602082019050620012ff6000830184620012d7565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600062001363602683620011c5565b9150620013708262001305565b604082019050919050565b60006020820190508181036000830152620013968162001354565b9050919050565b60805160a05161594b620013f460003960008181611111015281816117dc0152611f0a015260008181610dcd01528181613ebb01528181613f9c01528181613fc30152818161405f0152614086015261594b6000f3fe6080604052600436106103545760003560e01c806388e765ff116101c6578063c18bc195116100f7578063ee40166e11610095578063f54afa781161006f578063f54afa7814610c63578063f5648a4f14610c8e578063f637434214610ca5578063fabb0b4f14610cd05761035b565b8063ee40166e14610be4578063f11a24d314610c0f578063f2fde38b14610c3a5761035b565b8063d85ba063116100d1578063d85ba06314610b28578063dc3f0d0f14610b53578063dd62ed3e14610b7c578063e2f4560514610bb95761035b565b8063c18bc19514610aab578063cc274b2914610ad4578063cc2ffe7c14610afd5761035b565b8063aa4bde2811610164578063bbc0c7421161013e578063bbc0c74214610a03578063c024666814610a2e578063c054f2f414610a57578063c17b5b8c14610a825761035b565b8063aa4bde2814610970578063b62496f51461099b578063bb8d5131146109d85761035b565b806395d89b41116101a057806395d89b41146108a25780639a7a23d6146108cd578063a457c2d7146108f6578063a9059cbb146109335761035b565b806388e765ff146108235780638906758d1461084e5780638da5cb5b146108775761035b565b80635c068a8c116102a057806370a082311161023e5780637571336a116102185780637571336a1461076957806377a3b609146107925780638095d564146107bd5780638366e79a146107e65761035b565b806370a08231146106fe578063715018a61461073b578063751039fc146107525761035b565b806366d602ae1161027a57806366d602ae146106525780636a486a8e1461067d5780636b2fb124146106a85780636ddd1713146106d35761035b565b80635c068a8c146105d55780635e83ae76146106005780636605bfda146106295761035b565b806323b872dd1161030d57806339509351116102e7578063395093511461051757806349bd5a5e146105545780634a62bb651461057f5780635b5c251f146105aa5761035b565b806323b872dd146104865780632be32b61146104c3578063313ce567146104ec5761035b565b806306fdde0314610360578063095ea7b31461038b57806310d5de53146103c85780631694505e1461040557806318160ddd146104305780631a8145bb1461045b5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610cfb565b60405161038291906141ca565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190614285565b610d8d565b6040516103bf91906142e0565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea91906142fb565b610dab565b6040516103fc91906142e0565b60405180910390f35b34801561041157600080fd5b5061041a610dcb565b6040516104279190614387565b60405180910390f35b34801561043c57600080fd5b50610445610def565b60405161045291906143b1565b60405180910390f35b34801561046757600080fd5b50610470610df9565b60405161047d91906143b1565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a891906143cc565b610dff565b6040516104ba91906142e0565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e5919061441f565b610ef7565b005b3480156104f857600080fd5b5061050161105a565b60405161050e9190614468565b60405180910390f35b34801561052357600080fd5b5061053e60048036038101906105399190614285565b611063565b60405161054b91906142e0565b60405180910390f35b34801561056057600080fd5b5061056961110f565b6040516105769190614492565b60405180910390f35b34801561058b57600080fd5b50610594611133565b6040516105a191906142e0565b60405180910390f35b3480156105b657600080fd5b506105bf611146565b6040516105cc9190614492565b60405180910390f35b3480156105e157600080fd5b506105ea61116c565b6040516105f791906143b1565b60405180910390f35b34801561060c57600080fd5b50610627600480360381019061062291906144d9565b611172565b005b34801561063557600080fd5b50610650600480360381019061064b91906142fb565b61130c565b005b34801561065e57600080fd5b50610667611499565b60405161067491906143b1565b60405180910390f35b34801561068957600080fd5b5061069261149f565b60405161069f91906143b1565b60405180910390f35b3480156106b457600080fd5b506106bd6114a5565b6040516106ca91906143b1565b60405180910390f35b3480156106df57600080fd5b506106e86114ab565b6040516106f591906142e0565b60405180910390f35b34801561070a57600080fd5b50610725600480360381019061072091906142fb565b6114be565b60405161073291906143b1565b60405180910390f35b34801561074757600080fd5b50610750611506565b005b34801561075e57600080fd5b5061076761165e565b005b34801561077557600080fd5b50610790600480360381019061078b9190614519565b61173e565b005b34801561079e57600080fd5b506107a76118c4565b6040516107b491906143b1565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df9190614559565b6118ca565b005b3480156107f257600080fd5b5061080d600480360381019061080891906145ac565b6119e4565b60405161081a91906142e0565b60405180910390f35b34801561082f57600080fd5b50610838611c22565b60405161084591906143b1565b60405180910390f35b34801561085a57600080fd5b50610875600480360381019061087091906142fb565b611c28565b005b34801561088357600080fd5b5061088c611db5565b6040516108999190614492565b60405180910390f35b3480156108ae57600080fd5b506108b7611ddf565b6040516108c491906141ca565b60405180910390f35b3480156108d957600080fd5b506108f460048036038101906108ef9190614519565b611e71565b005b34801561090257600080fd5b5061091d60048036038101906109189190614285565b611fa4565b60405161092a91906142e0565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190614285565b61208f565b60405161096791906142e0565b60405180910390f35b34801561097c57600080fd5b506109856120ad565b60405161099291906143b1565b60405180910390f35b3480156109a757600080fd5b506109c260048036038101906109bd91906142fb565b6120b3565b6040516109cf91906142e0565b60405180910390f35b3480156109e457600080fd5b506109ed6120d3565b6040516109fa91906143b1565b60405180910390f35b348015610a0f57600080fd5b50610a186120d9565b604051610a2591906142e0565b60405180910390f35b348015610a3a57600080fd5b50610a556004803603810190610a509190614519565b6120ec565b005b348015610a6357600080fd5b50610a6c61222c565b604051610a799190614492565b60405180910390f35b348015610a8e57600080fd5b50610aa96004803603810190610aa49190614559565b612252565b005b348015610ab757600080fd5b50610ad26004803603810190610acd919061441f565b61236c565b005b348015610ae057600080fd5b50610afb6004803603810190610af6919061441f565b6124cf565b005b348015610b0957600080fd5b50610b1261257c565b604051610b1f91906143b1565b60405180910390f35b348015610b3457600080fd5b50610b3d612582565b604051610b4a91906143b1565b60405180910390f35b348015610b5f57600080fd5b50610b7a6004803603810190610b75919061441f565b612588565b005b348015610b8857600080fd5b50610ba36004803603810190610b9e91906145ac565b6126eb565b604051610bb091906143b1565b60405180910390f35b348015610bc557600080fd5b50610bce612772565b604051610bdb91906143b1565b60405180910390f35b348015610bf057600080fd5b50610bf9612778565b604051610c0691906143b1565b60405180910390f35b348015610c1b57600080fd5b50610c2461277e565b604051610c3191906143b1565b60405180910390f35b348015610c4657600080fd5b50610c616004803603810190610c5c91906142fb565b612784565b005b348015610c6f57600080fd5b50610c7861294a565b604051610c8591906143b1565b60405180910390f35b348015610c9a57600080fd5b50610ca3612950565b005b348015610cb157600080fd5b50610cba612a51565b604051610cc791906143b1565b60405180910390f35b348015610cdc57600080fd5b50610ce5612a57565b604051610cf291906143b1565b60405180910390f35b606060038054610d0a9061461b565b80601f0160208091040260200160405190810160405280929190818152602001828054610d369061461b565b8015610d835780601f10610d5857610100808354040283529160200191610d83565b820191906000526020600020905b815481529060010190602001808311610d6657829003601f168201915b5050505050905090565b6000610da1610d9a612a5d565b8484612a65565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60195481565b6000610e0c848484612c2e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e57612a5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ece906146be565b60405180910390fd5b610eeb85610ee3612a5d565b858403612a65565b60019150509392505050565b610eff612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f859061472a565b60405180910390fd5b670de0b6b3a76400006103e86001610fa4610def565b610fae9190614779565b610fb891906147ea565b610fc291906147ea565b811015611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb9061488d565b60405180910390fd5b670de0b6b3a7640000816110189190614779565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100960065460405161104f91906143b1565b60405180910390a150565b60006012905090565b6000611105611070612a5d565b84846001600061107e612a5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461110091906148ad565b612a65565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600f60009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b61117a612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112009061472a565b60405180910390fd5b600f60019054906101000a900460ff1615611259576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112509061492d565b60405180910390fd5b81600f60016101000a81548160ff0219169083151502179055506001600f60026101000a81548160ff0219169083151502179055507fe185248899f361d51a48833938ab33493ebd7272d195abf7f51a833ea8138812600f60019054906101000a900460ff16826040516112ce92919061494d565b60405180910390a1600f60019054906101000a900460ff1680156112f457506000600d54145b156113085743600d8190555080600e819055505b5050565b611314612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a9061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611412576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611409906149e8565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60075481565b60145481565b60155481565b600f60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61150e612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115949061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611666612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec9061472a565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611746612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cc9061472a565b60405180910390fd5b80611869577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90614a7a565b60405180910390fd5b5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b6118d2612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611961576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119589061472a565b60405180910390fd5b82601181905550816012819055508060138190555060135460125460115461198991906148ad565b61199391906148ad565b601081905550601e60105411156119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d690614ae6565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4b90614b52565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb90614be4565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b1f9190614492565b602060405180830381865afa158015611b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b609190614c19565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611b9d929190614c46565b6020604051808303816000875af1158015611bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be09190614c84565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611c13929190614c46565b60405180910390a15092915050565b60065481565b611c30612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb69061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590614d23565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f647cd1cbe5341aa880069f5c966ac6cf0ed473b7c0bf494fb7fc7ca46dc4cc7860405160405180910390a250565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611dee9061461b565b80601f0160208091040260200160405190810160405280929190818152602001828054611e1a9061461b565b8015611e675780601f10611e3c57610100808354040283529160200191611e67565b820191906000526020600020905b815481529060010190602001808311611e4a57829003601f168201915b5050505050905090565b611e79612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eff9061472a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8d90614db5565b60405180910390fd5b611fa082826137d7565b5050565b60008060016000611fb3612a5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206790614e47565b60405180910390fd5b61208461207b612a5d565b85858403612a65565b600191505092915050565b60006120a361209c612a5d565b8484612c2e565b6001905092915050565b60085481565b601d6020528060005260406000206000915054906101000a900460ff1681565b60175481565b600f60019054906101000a900460ff1681565b6120f4612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217a9061472a565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161222091906142e0565b60405180910390a25050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61225a612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e09061472a565b60405180910390fd5b82601581905550816016819055508060178190555060175460165460155461231191906148ad565b61231b91906148ad565b601481905550601e6014541115612367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235e90614ae6565b60405180910390fd5b505050565b612374612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fa9061472a565b60405180910390fd5b670de0b6b3a76400006103e86003612419610def565b6124239190614779565b61242d91906147ea565b61243791906147ea565b811015612479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247090614ed9565b60405180910390fd5b670de0b6b3a76400008161248d9190614779565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516124c491906143b1565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461255f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255690614be4565b60405180910390fd5b670de0b6b3a7640000816125739190614779565b600a8190555050565b60185481565b60105481565b612590612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461261f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126169061472a565b60405180910390fd5b670de0b6b3a76400006103e86001612635610def565b61263f9190614779565b61264991906147ea565b61265391906147ea565b811015612695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268c90614f6b565b60405180910390fd5b670de0b6b3a7640000816126a99190614779565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516126e091906143b1565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b60125481565b61278c612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461281b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128129061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361288a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288190614ffd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146129e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d990614be4565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1647604051612a069061504e565b60006040518083038185875af1925050503d8060008114612a43576040519150601f19603f3d011682016040523d82523d6000602084013e612a48565b606091505b50508091505050565b60165481565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acb906150d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3a90615167565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c2191906143b1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c94906151f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d039061528b565b60405180910390fd5b60008111612d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d46906152f7565b60405180910390fd5b600f60009054906101000a900460ff16156132fe57612d6c611db5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612dda5750612daa611db5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e135750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e4d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156132fd57600f60019054906101000a900460ff16612fbc57601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f075750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3d90615363565b60405180910390fd5b612f4e611db5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb2906153cf565b60405180910390fd5b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561305f5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613106576006548111156130a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a090615461565b60405180910390fd5b6008546130b5836114be565b826130c091906148ad565b1115613101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f8906154cd565b60405180910390fd5b6132fc565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131a95750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131f8576007548111156131f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ea9061555f565b60405180910390fd5b6132fb565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561329c5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132fa576008546132ad836114be565b826132b891906148ad565b11156132f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f0906154cd565b60405180910390fd5b5b5b5b5b5b6000613309306114be565b90506000600a54821015905080801561332e5750600f60029054906101000a900460ff165b80156133475750600960009054906101000a900460ff16155b801561339d5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133f35750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134495750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561348d576001600960006101000a81548160ff021916908315150217905550613471613882565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135345750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561353e57600090505b60008082801561355057506000600d54115b801561355d5750600d5443115b156137c257601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135bd57506000601454115b1561367c576064601454876135d29190614779565b6135dc91906147ea565b9150601454601654836135ef9190614779565b6135f991906147ea565b6019600082825461360a91906148ad565b92505081905550601454601554836136229190614779565b61362c91906147ea565b6018600082825461363d91906148ad565b92505081905550601454601754836136559190614779565b61365f91906147ea565b601a600082825461367091906148ad565b92505081905550613793565b601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136d757506000601054115b15613792576064601054876136ec9190614779565b6136f691906147ea565b9150601054601254836137099190614779565b61371391906147ea565b6019600082825461372491906148ad565b925050819055506010546011548361373c9190614779565b61374691906147ea565b6018600082825461375791906148ad565b925050819055506010546013548361376f9190614779565b61377991906147ea565b601a600082825461378a91906148ad565b925050819055505b5b60008211156137a8576137a7883084613b1f565b5b80826137b491906148ad565b866137bf919061557f565b95505b6137cd888888613b1f565b5050505050505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506138388282613d88565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061388d306114be565b90506000601a546018546019546138a491906148ad565b6138ae91906148ad565b905060008214806138bf5750600081145b156138cb575050613b1d565b6005600a546138da9190614779565b8211156138f3576005600a546138f09190614779565b91505b600080600283601954866139079190614779565b61391191906147ea565b61391b91906147ea565b9050613931818561392c919061557f565b613e1c565b600047905060008190506000600260195461394c91906147ea565b86613957919061557f565b601854846139659190614779565b61396f91906147ea565b90506000600260195461398291906147ea565b8761398d919061557f565b601a548561399b9190614779565b6139a591906147ea565b905080826139b391906148ad565b836139be919061557f565b9250600060198190555060006018819055506000601a819055506000851180156139e85750600083115b156139f8576139f78584614059565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a3e9061504e565b60006040518083038185875af1925050503d8060008114613a7b576040519150601f19603f3d011682016040523d82523d6000602084013e613a80565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613acc9061504e565b60006040518083038185875af1925050503d8060008114613b09576040519150601f19603f3d011682016040523d82523d6000602084013e613b0e565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b85906151f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bf49061528b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c7a90615625565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d1691906148ad565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d7a91906143b1565b60405180910390a350505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613e10929190615645565b60405180910390a15050565b6000600267ffffffffffffffff811115613e3957613e3861566e565b5b604051908082528060200260200182016040528015613e675781602001602082028036833780820191505090505b5090503081600081518110613e7f57613e7e61569d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4891906156e1565b81600181518110613f5c57613f5b61569d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613fc1307f000000000000000000000000000000000000000000000000000000000000000084612a65565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614023959493929190615807565b600060405180830381600087803b15801561403d57600080fd5b505af1158015614051573d6000803e3d6000fd5b505050505050565b614084307f000000000000000000000000000000000000000000000000000000000000000084612a65565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806140ce611db5565b426040518863ffffffff1660e01b81526004016140f096959493929190615861565b60606040518083038185885af115801561410e573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061413391906158c2565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614174578082015181840152602081019050614159565b60008484015250505050565b6000601f19601f8301169050919050565b600061419c8261413a565b6141a68185614145565b93506141b6818560208601614156565b6141bf81614180565b840191505092915050565b600060208201905081810360008301526141e48184614191565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061421c826141f1565b9050919050565b61422c81614211565b811461423757600080fd5b50565b60008135905061424981614223565b92915050565b6000819050919050565b6142628161424f565b811461426d57600080fd5b50565b60008135905061427f81614259565b92915050565b6000806040838503121561429c5761429b6141ec565b5b60006142aa8582860161423a565b92505060206142bb85828601614270565b9150509250929050565b60008115159050919050565b6142da816142c5565b82525050565b60006020820190506142f560008301846142d1565b92915050565b600060208284031215614311576143106141ec565b5b600061431f8482850161423a565b91505092915050565b6000819050919050565b600061434d614348614343846141f1565b614328565b6141f1565b9050919050565b600061435f82614332565b9050919050565b600061437182614354565b9050919050565b61438181614366565b82525050565b600060208201905061439c6000830184614378565b92915050565b6143ab8161424f565b82525050565b60006020820190506143c660008301846143a2565b92915050565b6000806000606084860312156143e5576143e46141ec565b5b60006143f38682870161423a565b93505060206144048682870161423a565b925050604061441586828701614270565b9150509250925092565b600060208284031215614435576144346141ec565b5b600061444384828501614270565b91505092915050565b600060ff82169050919050565b6144628161444c565b82525050565b600060208201905061447d6000830184614459565b92915050565b61448c81614211565b82525050565b60006020820190506144a76000830184614483565b92915050565b6144b6816142c5565b81146144c157600080fd5b50565b6000813590506144d3816144ad565b92915050565b600080604083850312156144f0576144ef6141ec565b5b60006144fe858286016144c4565b925050602061450f85828601614270565b9150509250929050565b600080604083850312156145305761452f6141ec565b5b600061453e8582860161423a565b925050602061454f858286016144c4565b9150509250929050565b600080600060608486031215614572576145716141ec565b5b600061458086828701614270565b935050602061459186828701614270565b92505060406145a286828701614270565b9150509250925092565b600080604083850312156145c3576145c26141ec565b5b60006145d18582860161423a565b92505060206145e28582860161423a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061463357607f821691505b602082108103614646576146456145ec565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006146a8602883614145565b91506146b38261464c565b604082019050919050565b600060208201905081810360008301526146d78161469b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614714602083614145565b915061471f826146de565b602082019050919050565b6000602082019050818103600083015261474381614707565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147848261424f565b915061478f8361424f565b925082820261479d8161424f565b915082820484148315176147b4576147b361474a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147f58261424f565b91506148008361424f565b9250826148105761480f6147bb565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614877602983614145565b91506148828261481b565b604082019050919050565b600060208201905081810360008301526148a68161486a565b9050919050565b60006148b88261424f565b91506148c38361424f565b92508282019050808211156148db576148da61474a565b5b92915050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614917601883614145565b9150614922826148e1565b602082019050919050565b600060208201905081810360008301526149468161490a565b9050919050565b600060408201905061496260008301856142d1565b61496f60208301846143a2565b9392505050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b60006149d2602483614145565b91506149dd82614976565b604082019050919050565b60006020820190508181036000830152614a01816149c5565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614a64602783614145565b9150614a6f82614a08565b604082019050919050565b60006020820190508181036000830152614a9381614a57565b9050919050565b7f46656573206d7573742062652033302520206f72206c65737300000000000000600082015250565b6000614ad0601983614145565b9150614adb82614a9a565b602082019050919050565b60006020820190508181036000830152614aff81614ac3565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614b3c601a83614145565b9150614b4782614b06565b602082019050919050565b60006020820190508181036000830152614b6b81614b2f565b9050919050565b7f6f6e6c79205472656173757279416464726573732063616e207769746864726160008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bce602183614145565b9150614bd982614b72565b604082019050919050565b60006020820190508181036000830152614bfd81614bc1565b9050919050565b600081519050614c1381614259565b92915050565b600060208284031215614c2f57614c2e6141ec565b5b6000614c3d84828501614c04565b91505092915050565b6000604082019050614c5b6000830185614483565b614c6860208301846143a2565b9392505050565b600081519050614c7e816144ad565b92915050565b600060208284031215614c9a57614c996141ec565b5b6000614ca884828501614c6f565b91505092915050565b7f5f526577617264734164647265737320616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b6000614d0d602383614145565b9150614d1882614cb1565b604082019050919050565b60006020820190508181036000830152614d3c81614d00565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614d9f603983614145565b9150614daa82614d43565b604082019050919050565b60006020820190508181036000830152614dce81614d92565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614e31602583614145565b9150614e3c82614dd5565b604082019050919050565b60006020820190508181036000830152614e6081614e24565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614ec3602c83614145565b9150614ece82614e67565b604082019050919050565b60006020820190508181036000830152614ef281614eb6565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614f55602a83614145565b9150614f6082614ef9565b604082019050919050565b60006020820190508181036000830152614f8481614f48565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614fe7602683614145565b9150614ff282614f8b565b604082019050919050565b6000602082019050818103600083015261501681614fda565b9050919050565b600081905092915050565b50565b600061503860008361501d565b915061504382615028565b600082019050919050565b60006150598261502b565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006150bf602483614145565b91506150ca82615063565b604082019050919050565b600060208201905081810360008301526150ee816150b2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615151602283614145565b915061515c826150f5565b604082019050919050565b6000602082019050818103600083015261518081615144565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151e3602583614145565b91506151ee82615187565b604082019050919050565b60006020820190508181036000830152615212816151d6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615275602383614145565b915061528082615219565b604082019050919050565b600060208201905081810360008301526152a481615268565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006152e1601d83614145565b91506152ec826152ab565b602082019050919050565b60006020820190508181036000830152615310816152d4565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061534d601683614145565b915061535882615317565b602082019050919050565b6000602082019050818103600083015261537c81615340565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b60006153b9601683614145565b91506153c482615383565b602082019050919050565b600060208201905081810360008301526153e8816153ac565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b600061544b602883614145565b9150615456826153ef565b604082019050919050565b6000602082019050818103600083015261547a8161543e565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b60006154b7601883614145565b91506154c282615481565b602082019050919050565b600060208201905081810360008301526154e6816154aa565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615549602a83614145565b9150615554826154ed565b604082019050919050565b600060208201905081810360008301526155788161553c565b9050919050565b600061558a8261424f565b91506155958361424f565b92508282039050818111156155ad576155ac61474a565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061560f602683614145565b915061561a826155b3565b604082019050919050565b6000602082019050818103600083015261563e81615602565b9050919050565b600060408201905061565a6000830185614483565b61566760208301846142d1565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506156db81614223565b92915050565b6000602082840312156156f7576156f66141ec565b5b6000615705848285016156cc565b91505092915050565b6000819050919050565b600061573361572e6157298461570e565b614328565b61424f565b9050919050565b61574381615718565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61577e81614211565b82525050565b60006157908383615775565b60208301905092915050565b6000602082019050919050565b60006157b482615749565b6157be8185615754565b93506157c983615765565b8060005b838110156157fa5781516157e18882615784565b97506157ec8361579c565b9250506001810190506157cd565b5085935050505092915050565b600060a08201905061581c60008301886143a2565b615829602083018761573a565b818103604083015261583b81866157a9565b905061584a6060830185614483565b61585760808301846143a2565b9695505050505050565b600060c0820190506158766000830189614483565b61588360208301886143a2565b615890604083018761573a565b61589d606083018661573a565b6158aa6080830185614483565b6158b760a08301846143a2565b979650505050505050565b6000806000606084860312156158db576158da6141ec565b5b60006158e986828701614c04565b93505060206158fa86828701614c04565b925050604061590b86828701614c04565b915050925092509256fea26469706673582212202ddab6047712677413da55581371edab6a72b7e9a729be1f10c5312288dc77ac64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103545760003560e01c806388e765ff116101c6578063c18bc195116100f7578063ee40166e11610095578063f54afa781161006f578063f54afa7814610c63578063f5648a4f14610c8e578063f637434214610ca5578063fabb0b4f14610cd05761035b565b8063ee40166e14610be4578063f11a24d314610c0f578063f2fde38b14610c3a5761035b565b8063d85ba063116100d1578063d85ba06314610b28578063dc3f0d0f14610b53578063dd62ed3e14610b7c578063e2f4560514610bb95761035b565b8063c18bc19514610aab578063cc274b2914610ad4578063cc2ffe7c14610afd5761035b565b8063aa4bde2811610164578063bbc0c7421161013e578063bbc0c74214610a03578063c024666814610a2e578063c054f2f414610a57578063c17b5b8c14610a825761035b565b8063aa4bde2814610970578063b62496f51461099b578063bb8d5131146109d85761035b565b806395d89b41116101a057806395d89b41146108a25780639a7a23d6146108cd578063a457c2d7146108f6578063a9059cbb146109335761035b565b806388e765ff146108235780638906758d1461084e5780638da5cb5b146108775761035b565b80635c068a8c116102a057806370a082311161023e5780637571336a116102185780637571336a1461076957806377a3b609146107925780638095d564146107bd5780638366e79a146107e65761035b565b806370a08231146106fe578063715018a61461073b578063751039fc146107525761035b565b806366d602ae1161027a57806366d602ae146106525780636a486a8e1461067d5780636b2fb124146106a85780636ddd1713146106d35761035b565b80635c068a8c146105d55780635e83ae76146106005780636605bfda146106295761035b565b806323b872dd1161030d57806339509351116102e7578063395093511461051757806349bd5a5e146105545780634a62bb651461057f5780635b5c251f146105aa5761035b565b806323b872dd146104865780632be32b61146104c3578063313ce567146104ec5761035b565b806306fdde0314610360578063095ea7b31461038b57806310d5de53146103c85780631694505e1461040557806318160ddd146104305780631a8145bb1461045b5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610cfb565b60405161038291906141ca565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190614285565b610d8d565b6040516103bf91906142e0565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea91906142fb565b610dab565b6040516103fc91906142e0565b60405180910390f35b34801561041157600080fd5b5061041a610dcb565b6040516104279190614387565b60405180910390f35b34801561043c57600080fd5b50610445610def565b60405161045291906143b1565b60405180910390f35b34801561046757600080fd5b50610470610df9565b60405161047d91906143b1565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a891906143cc565b610dff565b6040516104ba91906142e0565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e5919061441f565b610ef7565b005b3480156104f857600080fd5b5061050161105a565b60405161050e9190614468565b60405180910390f35b34801561052357600080fd5b5061053e60048036038101906105399190614285565b611063565b60405161054b91906142e0565b60405180910390f35b34801561056057600080fd5b5061056961110f565b6040516105769190614492565b60405180910390f35b34801561058b57600080fd5b50610594611133565b6040516105a191906142e0565b60405180910390f35b3480156105b657600080fd5b506105bf611146565b6040516105cc9190614492565b60405180910390f35b3480156105e157600080fd5b506105ea61116c565b6040516105f791906143b1565b60405180910390f35b34801561060c57600080fd5b50610627600480360381019061062291906144d9565b611172565b005b34801561063557600080fd5b50610650600480360381019061064b91906142fb565b61130c565b005b34801561065e57600080fd5b50610667611499565b60405161067491906143b1565b60405180910390f35b34801561068957600080fd5b5061069261149f565b60405161069f91906143b1565b60405180910390f35b3480156106b457600080fd5b506106bd6114a5565b6040516106ca91906143b1565b60405180910390f35b3480156106df57600080fd5b506106e86114ab565b6040516106f591906142e0565b60405180910390f35b34801561070a57600080fd5b50610725600480360381019061072091906142fb565b6114be565b60405161073291906143b1565b60405180910390f35b34801561074757600080fd5b50610750611506565b005b34801561075e57600080fd5b5061076761165e565b005b34801561077557600080fd5b50610790600480360381019061078b9190614519565b61173e565b005b34801561079e57600080fd5b506107a76118c4565b6040516107b491906143b1565b60405180910390f35b3480156107c957600080fd5b506107e460048036038101906107df9190614559565b6118ca565b005b3480156107f257600080fd5b5061080d600480360381019061080891906145ac565b6119e4565b60405161081a91906142e0565b60405180910390f35b34801561082f57600080fd5b50610838611c22565b60405161084591906143b1565b60405180910390f35b34801561085a57600080fd5b50610875600480360381019061087091906142fb565b611c28565b005b34801561088357600080fd5b5061088c611db5565b6040516108999190614492565b60405180910390f35b3480156108ae57600080fd5b506108b7611ddf565b6040516108c491906141ca565b60405180910390f35b3480156108d957600080fd5b506108f460048036038101906108ef9190614519565b611e71565b005b34801561090257600080fd5b5061091d60048036038101906109189190614285565b611fa4565b60405161092a91906142e0565b60405180910390f35b34801561093f57600080fd5b5061095a60048036038101906109559190614285565b61208f565b60405161096791906142e0565b60405180910390f35b34801561097c57600080fd5b506109856120ad565b60405161099291906143b1565b60405180910390f35b3480156109a757600080fd5b506109c260048036038101906109bd91906142fb565b6120b3565b6040516109cf91906142e0565b60405180910390f35b3480156109e457600080fd5b506109ed6120d3565b6040516109fa91906143b1565b60405180910390f35b348015610a0f57600080fd5b50610a186120d9565b604051610a2591906142e0565b60405180910390f35b348015610a3a57600080fd5b50610a556004803603810190610a509190614519565b6120ec565b005b348015610a6357600080fd5b50610a6c61222c565b604051610a799190614492565b60405180910390f35b348015610a8e57600080fd5b50610aa96004803603810190610aa49190614559565b612252565b005b348015610ab757600080fd5b50610ad26004803603810190610acd919061441f565b61236c565b005b348015610ae057600080fd5b50610afb6004803603810190610af6919061441f565b6124cf565b005b348015610b0957600080fd5b50610b1261257c565b604051610b1f91906143b1565b60405180910390f35b348015610b3457600080fd5b50610b3d612582565b604051610b4a91906143b1565b60405180910390f35b348015610b5f57600080fd5b50610b7a6004803603810190610b75919061441f565b612588565b005b348015610b8857600080fd5b50610ba36004803603810190610b9e91906145ac565b6126eb565b604051610bb091906143b1565b60405180910390f35b348015610bc557600080fd5b50610bce612772565b604051610bdb91906143b1565b60405180910390f35b348015610bf057600080fd5b50610bf9612778565b604051610c0691906143b1565b60405180910390f35b348015610c1b57600080fd5b50610c2461277e565b604051610c3191906143b1565b60405180910390f35b348015610c4657600080fd5b50610c616004803603810190610c5c91906142fb565b612784565b005b348015610c6f57600080fd5b50610c7861294a565b604051610c8591906143b1565b60405180910390f35b348015610c9a57600080fd5b50610ca3612950565b005b348015610cb157600080fd5b50610cba612a51565b604051610cc791906143b1565b60405180910390f35b348015610cdc57600080fd5b50610ce5612a57565b604051610cf291906143b1565b60405180910390f35b606060038054610d0a9061461b565b80601f0160208091040260200160405190810160405280929190818152602001828054610d369061461b565b8015610d835780601f10610d5857610100808354040283529160200191610d83565b820191906000526020600020905b815481529060010190602001808311610d6657829003601f168201915b5050505050905090565b6000610da1610d9a612a5d565b8484612a65565b6001905092915050565b601c6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60195481565b6000610e0c848484612c2e565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e57612a5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ece906146be565b60405180910390fd5b610eeb85610ee3612a5d565b858403612a65565b60019150509392505050565b610eff612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f859061472a565b60405180910390fd5b670de0b6b3a76400006103e86001610fa4610def565b610fae9190614779565b610fb891906147ea565b610fc291906147ea565b811015611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb9061488d565b60405180910390fd5b670de0b6b3a7640000816110189190614779565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100960065460405161104f91906143b1565b60405180910390a150565b60006012905090565b6000611105611070612a5d565b84846001600061107e612a5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461110091906148ad565b612a65565b6001905092915050565b7f0000000000000000000000005458786a39fa6082439b2757568b59ec1e51656981565b600f60009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b61117a612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112009061472a565b60405180910390fd5b600f60019054906101000a900460ff1615611259576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112509061492d565b60405180910390fd5b81600f60016101000a81548160ff0219169083151502179055506001600f60026101000a81548160ff0219169083151502179055507fe185248899f361d51a48833938ab33493ebd7272d195abf7f51a833ea8138812600f60019054906101000a900460ff16826040516112ce92919061494d565b60405180910390a1600f60019054906101000a900460ff1680156112f457506000600d54145b156113085743600d8190555080600e819055505b5050565b611314612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a9061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611412576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611409906149e8565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60075481565b60145481565b60155481565b600f60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61150e612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461159d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115949061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611666612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ec9061472a565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611746612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cc9061472a565b60405180910390fd5b80611869577f0000000000000000000000005458786a39fa6082439b2757568b59ec1e51656973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90614a7a565b60405180910390fd5b5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b6118d2612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611961576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119589061472a565b60405180910390fd5b82601181905550816012819055508060138190555060135460125460115461198991906148ad565b61199391906148ad565b601081905550601e60105411156119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d690614ae6565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4b90614b52565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb90614be4565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b1f9190614492565b602060405180830381865afa158015611b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b609190614c19565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611b9d929190614c46565b6020604051808303816000875af1158015611bbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be09190614c84565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611c13929190614c46565b60405180910390a15092915050565b60065481565b611c30612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb69061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2590614d23565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f647cd1cbe5341aa880069f5c966ac6cf0ed473b7c0bf494fb7fc7ca46dc4cc7860405160405180910390a250565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611dee9061461b565b80601f0160208091040260200160405190810160405280929190818152602001828054611e1a9061461b565b8015611e675780601f10611e3c57610100808354040283529160200191611e67565b820191906000526020600020905b815481529060010190602001808311611e4a57829003601f168201915b5050505050905090565b611e79612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eff9061472a565b60405180910390fd5b7f0000000000000000000000005458786a39fa6082439b2757568b59ec1e51656973ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8d90614db5565b60405180910390fd5b611fa082826137d7565b5050565b60008060016000611fb3612a5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206790614e47565b60405180910390fd5b61208461207b612a5d565b85858403612a65565b600191505092915050565b60006120a361209c612a5d565b8484612c2e565b6001905092915050565b60085481565b601d6020528060005260406000206000915054906101000a900460ff1681565b60175481565b600f60019054906101000a900460ff1681565b6120f4612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217a9061472a565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161222091906142e0565b60405180910390a25050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61225a612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e09061472a565b60405180910390fd5b82601581905550816016819055508060178190555060175460165460155461231191906148ad565b61231b91906148ad565b601481905550601e6014541115612367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235e90614ae6565b60405180910390fd5b505050565b612374612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fa9061472a565b60405180910390fd5b670de0b6b3a76400006103e86003612419610def565b6124239190614779565b61242d91906147ea565b61243791906147ea565b811015612479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247090614ed9565b60405180910390fd5b670de0b6b3a76400008161248d9190614779565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516124c491906143b1565b60405180910390a150565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461255f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255690614be4565b60405180910390fd5b670de0b6b3a7640000816125739190614779565b600a8190555050565b60185481565b60105481565b612590612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461261f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126169061472a565b60405180910390fd5b670de0b6b3a76400006103e86001612635610def565b61263f9190614779565b61264991906147ea565b61265391906147ea565b811015612695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268c90614f6b565b60405180910390fd5b670de0b6b3a7640000816126a99190614779565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516126e091906143b1565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b600d5481565b60125481565b61278c612a5d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461281b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128129061472a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361288a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288190614ffd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146129e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d990614be4565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1647604051612a069061504e565b60006040518083038185875af1925050503d8060008114612a43576040519150601f19603f3d011682016040523d82523d6000602084013e612a48565b606091505b50508091505050565b60165481565b600e5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ad4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612acb906150d5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3a90615167565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612c2191906143b1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c94906151f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d039061528b565b60405180910390fd5b60008111612d4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d46906152f7565b60405180910390fd5b600f60009054906101000a900460ff16156132fe57612d6c611db5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612dda5750612daa611db5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e135750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e4d575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156132fd57600f60019054906101000a900460ff16612fbc57601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f075750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3d90615363565b60405180910390fd5b612f4e611db5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb2906153cf565b60405180910390fd5b5b601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561305f5750601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613106576006548111156130a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130a090615461565b60405180910390fd5b6008546130b5836114be565b826130c091906148ad565b1115613101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f8906154cd565b60405180910390fd5b6132fc565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131a95750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131f8576007548111156131f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ea9061555f565b60405180910390fd5b6132fb565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561329c5750601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132fa576008546132ad836114be565b826132b891906148ad565b11156132f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f0906154cd565b60405180910390fd5b5b5b5b5b5b6000613309306114be565b90506000600a54821015905080801561332e5750600f60029054906101000a900460ff165b80156133475750600960009054906101000a900460ff16155b801561339d5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133f35750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134495750601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561348d576001600960006101000a81548160ff021916908315150217905550613471613882565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135345750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561353e57600090505b60008082801561355057506000600d54115b801561355d5750600d5443115b156137c257601d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135bd57506000601454115b1561367c576064601454876135d29190614779565b6135dc91906147ea565b9150601454601654836135ef9190614779565b6135f991906147ea565b6019600082825461360a91906148ad565b92505081905550601454601554836136229190614779565b61362c91906147ea565b6018600082825461363d91906148ad565b92505081905550601454601754836136559190614779565b61365f91906147ea565b601a600082825461367091906148ad565b92505081905550613793565b601d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136d757506000601054115b15613792576064601054876136ec9190614779565b6136f691906147ea565b9150601054601254836137099190614779565b61371391906147ea565b6019600082825461372491906148ad565b925050819055506010546011548361373c9190614779565b61374691906147ea565b6018600082825461375791906148ad565b925050819055506010546013548361376f9190614779565b61377991906147ea565b601a600082825461378a91906148ad565b925050819055505b5b60008211156137a8576137a7883084613b1f565b5b80826137b491906148ad565b866137bf919061557f565b95505b6137cd888888613b1f565b5050505050505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506138388282613d88565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061388d306114be565b90506000601a546018546019546138a491906148ad565b6138ae91906148ad565b905060008214806138bf5750600081145b156138cb575050613b1d565b6005600a546138da9190614779565b8211156138f3576005600a546138f09190614779565b91505b600080600283601954866139079190614779565b61391191906147ea565b61391b91906147ea565b9050613931818561392c919061557f565b613e1c565b600047905060008190506000600260195461394c91906147ea565b86613957919061557f565b601854846139659190614779565b61396f91906147ea565b90506000600260195461398291906147ea565b8761398d919061557f565b601a548561399b9190614779565b6139a591906147ea565b905080826139b391906148ad565b836139be919061557f565b9250600060198190555060006018819055506000601a819055506000851180156139e85750600083115b156139f8576139f78584614059565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613a3e9061504e565b60006040518083038185875af1925050503d8060008114613a7b576040519150601f19603f3d011682016040523d82523d6000602084013e613a80565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613acc9061504e565b60006040518083038185875af1925050503d8060008114613b09576040519150601f19603f3d011682016040523d82523d6000602084013e613b0e565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b85906151f9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bf49061528b565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c7a90615625565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d1691906148ad565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d7a91906143b1565b60405180910390a350505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613e10929190615645565b60405180910390a15050565b6000600267ffffffffffffffff811115613e3957613e3861566e565b5b604051908082528060200260200182016040528015613e675781602001602082028036833780820191505090505b5090503081600081518110613e7f57613e7e61569d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f4891906156e1565b81600181518110613f5c57613f5b61569d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613fc1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612a65565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614023959493929190615807565b600060405180830381600087803b15801561403d57600080fd5b505af1158015614051573d6000803e3d6000fd5b505050505050565b614084307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612a65565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806140ce611db5565b426040518863ffffffff1660e01b81526004016140f096959493929190615861565b60606040518083038185885af115801561410e573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061413391906158c2565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614174578082015181840152602081019050614159565b60008484015250505050565b6000601f19601f8301169050919050565b600061419c8261413a565b6141a68185614145565b93506141b6818560208601614156565b6141bf81614180565b840191505092915050565b600060208201905081810360008301526141e48184614191565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061421c826141f1565b9050919050565b61422c81614211565b811461423757600080fd5b50565b60008135905061424981614223565b92915050565b6000819050919050565b6142628161424f565b811461426d57600080fd5b50565b60008135905061427f81614259565b92915050565b6000806040838503121561429c5761429b6141ec565b5b60006142aa8582860161423a565b92505060206142bb85828601614270565b9150509250929050565b60008115159050919050565b6142da816142c5565b82525050565b60006020820190506142f560008301846142d1565b92915050565b600060208284031215614311576143106141ec565b5b600061431f8482850161423a565b91505092915050565b6000819050919050565b600061434d614348614343846141f1565b614328565b6141f1565b9050919050565b600061435f82614332565b9050919050565b600061437182614354565b9050919050565b61438181614366565b82525050565b600060208201905061439c6000830184614378565b92915050565b6143ab8161424f565b82525050565b60006020820190506143c660008301846143a2565b92915050565b6000806000606084860312156143e5576143e46141ec565b5b60006143f38682870161423a565b93505060206144048682870161423a565b925050604061441586828701614270565b9150509250925092565b600060208284031215614435576144346141ec565b5b600061444384828501614270565b91505092915050565b600060ff82169050919050565b6144628161444c565b82525050565b600060208201905061447d6000830184614459565b92915050565b61448c81614211565b82525050565b60006020820190506144a76000830184614483565b92915050565b6144b6816142c5565b81146144c157600080fd5b50565b6000813590506144d3816144ad565b92915050565b600080604083850312156144f0576144ef6141ec565b5b60006144fe858286016144c4565b925050602061450f85828601614270565b9150509250929050565b600080604083850312156145305761452f6141ec565b5b600061453e8582860161423a565b925050602061454f858286016144c4565b9150509250929050565b600080600060608486031215614572576145716141ec565b5b600061458086828701614270565b935050602061459186828701614270565b92505060406145a286828701614270565b9150509250925092565b600080604083850312156145c3576145c26141ec565b5b60006145d18582860161423a565b92505060206145e28582860161423a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061463357607f821691505b602082108103614646576146456145ec565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006146a8602883614145565b91506146b38261464c565b604082019050919050565b600060208201905081810360008301526146d78161469b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614714602083614145565b915061471f826146de565b602082019050919050565b6000602082019050818103600083015261474381614707565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006147848261424f565b915061478f8361424f565b925082820261479d8161424f565b915082820484148315176147b4576147b361474a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147f58261424f565b91506148008361424f565b9250826148105761480f6147bb565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614877602983614145565b91506148828261481b565b604082019050919050565b600060208201905081810360008301526148a68161486a565b9050919050565b60006148b88261424f565b91506148c38361424f565b92508282019050808211156148db576148da61474a565b5b92915050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614917601883614145565b9150614922826148e1565b602082019050919050565b600060208201905081810360008301526149468161490a565b9050919050565b600060408201905061496260008301856142d1565b61496f60208301846143a2565b9392505050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b60006149d2602483614145565b91506149dd82614976565b604082019050919050565b60006020820190508181036000830152614a01816149c5565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614a64602783614145565b9150614a6f82614a08565b604082019050919050565b60006020820190508181036000830152614a9381614a57565b9050919050565b7f46656573206d7573742062652033302520206f72206c65737300000000000000600082015250565b6000614ad0601983614145565b9150614adb82614a9a565b602082019050919050565b60006020820190508181036000830152614aff81614ac3565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614b3c601a83614145565b9150614b4782614b06565b602082019050919050565b60006020820190508181036000830152614b6b81614b2f565b9050919050565b7f6f6e6c79205472656173757279416464726573732063616e207769746864726160008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bce602183614145565b9150614bd982614b72565b604082019050919050565b60006020820190508181036000830152614bfd81614bc1565b9050919050565b600081519050614c1381614259565b92915050565b600060208284031215614c2f57614c2e6141ec565b5b6000614c3d84828501614c04565b91505092915050565b6000604082019050614c5b6000830185614483565b614c6860208301846143a2565b9392505050565b600081519050614c7e816144ad565b92915050565b600060208284031215614c9a57614c996141ec565b5b6000614ca884828501614c6f565b91505092915050565b7f5f526577617264734164647265737320616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b6000614d0d602383614145565b9150614d1882614cb1565b604082019050919050565b60006020820190508181036000830152614d3c81614d00565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614d9f603983614145565b9150614daa82614d43565b604082019050919050565b60006020820190508181036000830152614dce81614d92565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614e31602583614145565b9150614e3c82614dd5565b604082019050919050565b60006020820190508181036000830152614e6081614e24565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614ec3602c83614145565b9150614ece82614e67565b604082019050919050565b60006020820190508181036000830152614ef281614eb6565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000614f55602a83614145565b9150614f6082614ef9565b604082019050919050565b60006020820190508181036000830152614f8481614f48565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614fe7602683614145565b9150614ff282614f8b565b604082019050919050565b6000602082019050818103600083015261501681614fda565b9050919050565b600081905092915050565b50565b600061503860008361501d565b915061504382615028565b600082019050919050565b60006150598261502b565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006150bf602483614145565b91506150ca82615063565b604082019050919050565b600060208201905081810360008301526150ee816150b2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000615151602283614145565b915061515c826150f5565b604082019050919050565b6000602082019050818103600083015261518081615144565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006151e3602583614145565b91506151ee82615187565b604082019050919050565b60006020820190508181036000830152615212816151d6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000615275602383614145565b915061528082615219565b604082019050919050565b600060208201905081810360008301526152a481615268565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006152e1601d83614145565b91506152ec826152ab565b602082019050919050565b60006020820190508181036000830152615310816152d4565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061534d601683614145565b915061535882615317565b602082019050919050565b6000602082019050818103600083015261537c81615340565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b60006153b9601683614145565b91506153c482615383565b602082019050919050565b600060208201905081810360008301526153e8816153ac565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b600061544b602883614145565b9150615456826153ef565b604082019050919050565b6000602082019050818103600083015261547a8161543e565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b60006154b7601883614145565b91506154c282615481565b602082019050919050565b600060208201905081810360008301526154e6816154aa565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615549602a83614145565b9150615554826154ed565b604082019050919050565b600060208201905081810360008301526155788161553c565b9050919050565b600061558a8261424f565b91506155958361424f565b92508282039050818111156155ad576155ac61474a565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061560f602683614145565b915061561a826155b3565b604082019050919050565b6000602082019050818103600083015261563e81615602565b9050919050565b600060408201905061565a6000830185614483565b61566760208301846142d1565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506156db81614223565b92915050565b6000602082840312156156f7576156f66141ec565b5b6000615705848285016156cc565b91505092915050565b6000819050919050565b600061573361572e6157298461570e565b614328565b61424f565b9050919050565b61574381615718565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61577e81614211565b82525050565b60006157908383615775565b60208301905092915050565b6000602082019050919050565b60006157b482615749565b6157be8185615754565b93506157c983615765565b8060005b838110156157fa5781516157e18882615784565b97506157ec8361579c565b9250506001810190506157cd565b5085935050505092915050565b600060a08201905061581c60008301886143a2565b615829602083018761573a565b818103604083015261583b81866157a9565b905061584a6060830185614483565b61585760808301846143a2565b9695505050505050565b600060c0820190506158766000830189614483565b61588360208301886143a2565b615890604083018761573a565b61589d606083018661573a565b6158aa6080830185614483565b6158b760a08301846143a2565b979650505050505050565b6000806000606084860312156158db576158da6141ec565b5b60006158e986828701614c04565b93505060206158fa86828701614c04565b925050604061590b86828701614c04565b915050925092509256fea26469706673582212202ddab6047712677413da55581371edab6a72b7e9a729be1f10c5312288dc77ac64736f6c63430008130033

Deployed Bytecode Sourcemap

6939:14997:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1657:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2571:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8093:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7090:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1978:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7898:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2748:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10979:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1877:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3236:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7140:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7447:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7257:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7601:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21504:425;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19462:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7016:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7711;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7746:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7527:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2094:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5698:150;;;;;;;;;;;;;:::i;:::-;;11586:115;;;;;;;;;;;;;:::i;:::-;;11926:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7674:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13462:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12701:452;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6982:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19751:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5484:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1765:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18430:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3459:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2229:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7051:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8315:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7821:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7487:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14241:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7294:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13847:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12201:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12493:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7859:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7567:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11256:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2412:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7215:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7332:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7637:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5856:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7938:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13223:231;;;;;;;;;;;;;:::i;:::-;;7783:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7409:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1657:100;1711:13;1744:5;1737:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1657:100;:::o;2571:169::-;2654:4;2671:39;2680:12;:10;:12::i;:::-;2694:7;2703:6;2671:8;:39::i;:::-;2728:4;2721:11;;2571:169;;;;:::o;8093:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;7090:43::-;;;:::o;1978:108::-;2039:7;2066:12;;2059:19;;1978:108;:::o;7898:33::-;;;;:::o;2748:480::-;2888:4;2905:36;2915:6;2923:9;2934:6;2905:9;:36::i;:::-;2954:24;2981:11;:19;2993:6;2981:19;;;;;;;;;;;;;;;:33;3001:12;:10;:12::i;:::-;2981:33;;;;;;;;;;;;;;;;2954:60;;3053:6;3033:16;:26;;3025:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3132:57;3141:6;3149:12;:10;:12::i;:::-;3182:6;3163:16;:25;3132:8;:57::i;:::-;3216:4;3209:11;;;2748:480;;;;;:::o;10979:269::-;5621:12;:10;:12::i;:::-;5611:22;;:6;;;;;;;;;;;:22;;;5603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11098:4:::1;11092;11088:1;11072:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11071:31;;;;:::i;:::-;11061:6;:41;;11053:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;11184:6;11174;:17;;;;:::i;:::-;11159:12;:32;;;;11207:33;11227:12;;11207:33;;;;;;:::i;:::-;;;;;;;;10979:269:::0;:::o;1877:93::-;1935:5;1960:2;1953:9;;1877:93;:::o;3236:215::-;3324:4;3341:80;3350:12;:10;:12::i;:::-;3364:7;3410:10;3373:11;:25;3385:12;:10;:12::i;:::-;3373:25;;;;;;;;;;;;;;;:34;3399:7;3373:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3341:8;:80::i;:::-;3439:4;3432:11;;3236:215;;;;:::o;7140:38::-;;;:::o;7447:33::-;;;;;;;;;;;;;:::o;7257:30::-;;;;;;;;;;;;;:::o;7601:29::-;;;;:::o;21504:425::-;5621:12;:10;:12::i;:::-;5611:22;;:6;;;;;;;;;;;:22;;;5603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21601:13:::1;;;;;;;;;;;21600:14;21592:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;21670:7;21654:13;;:23;;;;;;;;;;;;;;;;;;21702:4;21688:11;;:18;;;;;;;;;;;;;;;;;;21722:42;21737:13;;;;;;;;;;;21752:11;21722:42;;;;;;;:::i;:::-;;;;;;;;21781:13;;;;;;;;;;;:40;;;;;21820:1;21798:18;;:23;21781:40;21777:145;;;21859:12;21838:18;:33;;;;21899:11;21886:10;:24;;;;21777:145;21504:425:::0;;:::o;19462:281::-;5621:12;:10;:12::i;:::-;5611:22;;:6;;;;;;;;;;;:22;;;5603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19582:1:::1;19554:30;;:16;:30;;::::0;19546:79:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19662:16;19636:15;;:43;;;;;;;;;;;;;;;;;;19718:16;19695:40;;;;;;;;;;;;19462:281:::0;:::o;7016:28::-;;;;:::o;7711:::-;;;;:::o;7746:30::-;;;;:::o;7527:31::-;;;;;;;;;;;;;:::o;2094:127::-;2168:7;2195:9;:18;2205:7;2195:18;;;;;;;;;;;;;;;;2188:25;;2094:127;;;:::o;5698:150::-;5621:12;:10;:12::i;:::-;5611:22;;:6;;;;;;;;;;;:22;;;5603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5807:1:::1;5770:40;;5791:6;;;;;;;;;;;5770:40;;;;;;;;;;;;5838:1;5821:6;;:19;;;;;;;;;;;;;;;;;;5698:150::o:0;11586:115::-;5621:12;:10;:12::i;:::-;5611:22;;:6;;;;;;;;;;;:22;;;5603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11657:5:::1;11640:14;;:22;;;;;;;;;;;;;;;;;;11678:15;;;;;;;;;;11586:115::o:0;11926:267::-;5621:12;:10;:12::i;:::-;5611:22;;:6;;;;;;;;;;;:22;;;5603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12022:4:::1;12018:111;;12060:13;12050:23;;:6;:23;;::::0;12042:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12018:111;12181:4;12139:31;:39;12171:6;12139:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;11926:267:::0;;:::o;7674:28::-;;;;:::o;13462:377::-;5621:12;:10;:12::i;:::-;5611:22;;:6;;;;;;;;;;;:22;;;5603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13598:12:::1;13581:14;:29;;;;13639:13;13621:15;:31;;;;13679:11;13663:13;:27;;;;13751:13;;13733:15;;13716:14;;:32;;;;:::i;:::-;:48;;;;:::i;:::-;13701:12;:63;;;;13799:2;13783:12;;:18;;13775:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13462:377:::0;;;:::o;12701:452::-;12776:10;12825:1;12807:20;;:6;:20;;;12799:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;12889:15;;;;;;;;;;;12877:27;;:10;:27;;;12869:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12952:24;12986:6;12979:24;;;13012:4;12979:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12952:66;;13044:6;13037:23;;;13061:3;13066:16;13037:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13029:54;;13099:46;13120:6;13128:16;13099:46;;;;;;;:::i;:::-;;;;;;;;12788:365;12701:452;;;;:::o;6982:27::-;;;;:::o;19751:273::-;5621:12;:10;:12::i;:::-;5611:22;;:6;;;;;;;;;;;:22;;;5603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19868:1:::1;19841:29;;:15;:29;;::::0;19833:77:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19946:15;19921:14;;:41;;;;;;;;;;;;;;;;;;20000:15;19978:38;;;;;;;;;;;;19751:273:::0;:::o;5484:79::-;5522:7;5549:6;;;;;;;;;;;5542:13;;5484:79;:::o;1765:104::-;1821:13;1854:7;1847:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1765:104;:::o;18430:246::-;5621:12;:10;:12::i;:::-;5611:22;;:6;;;;;;;;;;;:22;;;5603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18539:13:::1;18531:21;;:4;:21;;::::0;18523:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18627:41;18656:4;18662:5;18627:28;:41::i;:::-;18430:246:::0;;:::o;3459:401::-;3552:4;3569:24;3596:11;:25;3608:12;:10;:12::i;:::-;3596:25;;;;;;;;;;;;;;;:34;3622:7;3596:34;;;;;;;;;;;;;;;;3569:61;;3669:15;3649:16;:35;;3641:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3754:67;3763:12;:10;:12::i;:::-;3777:7;3805:15;3786:16;:34;3754:8;:67::i;:::-;3848:4;3841:11;;;3459:401;;;;:::o;2229:175::-;2315:4;2332:42;2342:12;:10;:12::i;:::-;2356:9;2367:6;2332:9;:42::i;:::-;2392:4;2385:11;;2229:175;;;;:::o;7051:30::-;;;;:::o;8315:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;7821:29::-;;;;:::o;7487:33::-;;;;;;;;;;;;;:::o;14241:182::-;5621:12;:10;:12::i;:::-;5611:22;;:6;;;;;;;;;;;:22;;;5603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14357:8:::1;14326:19;:28;14346:7;14326:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14397:7;14381:34;;;14406:8;14381:34;;;;;;:::i;:::-;;;;;;;;14241:182:::0;;:::o;7294:29::-;;;;;;;;;;;;;:::o;13847:386::-;5621:12;:10;:12::i;:::-;5611:22;;:6;;;;;;;;;;;:22;;;5603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13985:12:::1;13967:15;:30;;;;14027:13;14008:16;:32;;;;14068:11;14051:14;:28;;;;14143:14;;14124:16;;14106:15;;:34;;;;:::i;:::-;:51;;;;:::i;:::-;14090:13;:67;;;;14193:2;14176:13;;:19;;14168:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13847:386:::0;;;:::o;12201:284::-;5621:12;:10;:12::i;:::-;5611:22;;:6;;;;;;;;;;;:22;;;5603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12323:4:::1;12317;12313:1;12297:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12296:31;;;;:::i;:::-;12286:6;:41;;12278:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;12415:6;12405;:17;;;;:::i;:::-;12387:15;:35;;;;12438:39;12461:15;;12438:39;;;;;;:::i;:::-;;;;;;;;12201:284:::0;:::o;12493:198::-;12580:15;;;;;;;;;;;12568:27;;:10;:27;;;12560:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12676:6;12664:9;:19;;;;:::i;:::-;12643:18;:40;;;;12493:198;:::o;7859:32::-;;;;:::o;7567:27::-;;;;:::o;11256:274::-;5621:12;:10;:12::i;:::-;5611:22;;:6;;;;;;;;;;;:22;;;5603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11376:4:::1;11370;11366:1;11350:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11349:31;;;;:::i;:::-;11339:6;:41;;11331:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;11464:6;11454;:17;;;;:::i;:::-;11438:13;:33;;;;11487:35;11508:13;;11487:35;;;;;;:::i;:::-;;;;;;;;11256:274:::0;:::o;2412:151::-;2501:7;2528:11;:18;2540:5;2528:18;;;;;;;;;;;;;;;:27;2547:7;2528:27;;;;;;;;;;;;;;;;2521:34;;2412:151;;;;:::o;7215:33::-;;;;:::o;7332:37::-;;;;:::o;7637:30::-;;;;:::o;5856:244::-;5621:12;:10;:12::i;:::-;5611:22;;:6;;;;;;;;;;;:22;;;5603:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5965:1:::1;5945:22;;:8;:22;;::::0;5937:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6055:8;6026:38;;6047:6;;;;;;;;;;;6026:38;;;;;;;;;;;;6084:8;6075:6;;:17;;;;;;;;;;;;;;;;;;5856:244:::0;:::o;7938:31::-;;;;:::o;13223:231::-;13269:12;13312:15;;;;;;;;;;;13300:27;;:10;:27;;;13292:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13396:10;13388:24;;13420:21;13388:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13375:71;;;;;13258:196;13223:231::o;7783:31::-;;;;:::o;7409:29::-;;;;:::o;96:98::-;149:7;176:10;169:17;;96:98;:::o;4777:380::-;4930:1;4913:19;;:5;:19;;;4905:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5011:1;4992:21;;:7;:21;;;4984:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5095:6;5065:11;:18;5077:5;5065:18;;;;;;;;;;;;;;;:27;5084:7;5065:27;;;;;;;;;;;;;;;:36;;;;5133:7;5117:32;;5126:5;5117:32;;;5142:6;5117:32;;;;;;:::i;:::-;;;;;;;;4777:380;;;:::o;14433:3390::-;14549:1;14533:18;;:4;:18;;;14525:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14626:1;14612:16;;:2;:16;;;14604:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14696:1;14687:6;:10;14679:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;14749:14;;;;;;;;;;;14746:1224;;;14791:7;:5;:7::i;:::-;14783:15;;:4;:15;;;;:32;;;;;14808:7;:5;:7::i;:::-;14802:13;;:2;:13;;;;14783:32;:52;;;;;14833:1;14819:16;;:2;:16;;;;14783:52;:77;;;;;14853:6;14839:21;;:2;:21;;;;14783:77;14779:1180;;;14884:13;;;;;;;;;;;14880:245;;14929:31;:37;14961:4;14929:37;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;14970:31;:35;15002:2;14970:35;;;;;;;;;;;;;;;;;;;;;;;;;14929:76;14921:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;15071:7;:5;:7::i;:::-;15063:15;;:4;:15;;;15055:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;14880:245;15175:25;:31;15201:4;15175:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15211:31;:35;15243:2;15211:35;;;;;;;;;;;;;;;;;;;;;;;;;15210:36;15175:71;15171:773;;;15289:12;;15279:6;:22;;15271:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15403:15;;15386:13;15396:2;15386:9;:13::i;:::-;15377:6;:22;;;;:::i;:::-;:41;;15369:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15171:773;;;15523:25;:29;15549:2;15523:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;15557:31;:37;15589:4;15557:37;;;;;;;;;;;;;;;;;;;;;;;;;15556:38;15523:71;15519:425;;;15637:13;;15627:6;:23;;15619:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15519:425;;;15745:31;:35;15777:2;15745:35;;;;;;;;;;;;;;;;;;;;;;;;;15744:36;:78;;;;;15785:31;:37;15817:4;15785:37;;;;;;;;;;;;;;;;;;;;;;;;;15784:38;15744:78;15740:204;;;15880:15;;15863:13;15873:2;15863:9;:13::i;:::-;15854:6;:22;;;;:::i;:::-;:41;;15846:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15740:204;15519:425;15171:773;14779:1180;14746:1224;15982:28;16013:24;16031:4;16013:9;:24::i;:::-;15982:55;;16050:12;16089:18;;16065:20;:42;;16050:57;;16123:7;:22;;;;;16134:11;;;;;;;;;;;16123:22;:35;;;;;16150:8;;;;;;;;;;;16149:9;16123:35;:71;;;;;16163:25;:31;16189:4;16163:31;;;;;;;;;;;;;;;;;;;;;;;;;16162:32;16123:71;:101;;;;;16199:19;:25;16219:4;16199:25;;;;;;;;;;;;;;;;;;;;;;;;;16198:26;16123:101;:129;;;;;16229:19;:23;16249:2;16229:23;;;;;;;;;;;;;;;;;;;;;;;;;16228:24;16123:129;16120:236;;;16280:4;16269:8;;:15;;;;;;;;;;;;;;;;;;16301:10;:8;:10::i;:::-;16339:5;16328:8;;:16;;;;;;;;;;;;;;;;;;16120:236;16368:12;16383:4;16368:19;;16486;:25;16506:4;16486:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16515:19;:23;16535:2;16515:23;;;;;;;;;;;;;;;;;;;;;;;;;16486:52;16483:99;;;16565:5;16555:15;;16483:99;16594:12;16621:21;16724:7;:31;;;;;16754:1;16735:18;;:20;16724:31;:68;;;;;16773:18;;16760:12;:31;16724:68;16721:1049;;;16846:25;:29;16872:2;16846:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;16895:1;16879:13;;:17;16846:50;16842:753;;;16947:3;16932:13;;16923:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;16916:34;;17017:13;;16998:16;;16991:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;16969:18;;:61;;;;;;;:::i;:::-;;;;;;;;17095:13;;17077:15;;17070:4;:22;;;;:::i;:::-;:38;;;;:::i;:::-;17049:17;;:59;;;;;;;:::i;:::-;;;;;;;;17171:13;;17154:14;;17147:4;:21;;;;:::i;:::-;:37;;;;:::i;:::-;17127:16;;:57;;;;;;;:::i;:::-;;;;;;;;16842:753;;;17245:25;:31;17271:4;17245:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;17295:1;17280:12;;:16;17245:51;17242:353;;;17348:3;17333:12;;17324:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;17317:34;;17417:12;;17399:15;;17392:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;17370:18;;:59;;;;;;;:::i;:::-;;;;;;;;17493:12;;17476:14;;17469:4;:21;;;;:::i;:::-;:36;;;;:::i;:::-;17448:17;;:57;;;;;;;:::i;:::-;;;;;;;;17567:12;;17551:13;;17544:4;:20;;;;:::i;:::-;:35;;;;:::i;:::-;17524:16;;:55;;;;;;;:::i;:::-;;;;;;;;17242:353;16842:753;17633:1;17626:4;:8;17623:89;;;17654:42;17670:4;17684;17691;17654:15;:42::i;:::-;17623:89;17745:13;17738:4;:20;;;;:::i;:::-;17728:30;;;;;:::i;:::-;;;16721:1049;17782:33;17798:4;17804:2;17808:6;17782:15;:33::i;:::-;14512:3311;;;;;14433:3390;;;:::o;18684:240::-;18801:5;18767:25;:31;18793:4;18767:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18819;18846:4;18852:5;18819:26;:39::i;:::-;18910:5;18876:40;;18904:4;18876:40;;;;;;;;;;;;18684:240;;:::o;20035:1413::-;20074:23;20100:24;20118:4;20100:9;:24::i;:::-;20074:50;;20135:25;20204:16;;20184:17;;20163:18;;:38;;;;:::i;:::-;:57;;;;:::i;:::-;20135:85;;20255:1;20236:15;:20;:46;;;;20281:1;20260:17;:22;20236:46;20233:60;;;20285:7;;;;20233:60;20347:1;20326:18;;:22;;;;:::i;:::-;20308:15;:40;20305:111;;;20403:1;20382:18;;:22;;;;:::i;:::-;20364:40;;20305:111;20428:12;20502:23;20587:1;20567:17;20546:18;;20528:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;20502:86;;20601:51;20636:15;20618;:33;;;;:::i;:::-;20601:16;:51::i;:::-;20665:18;20686:21;20665:42;;20718:23;20744:10;20718:36;;20767:22;20866:1;20847:18;;:20;;;;:::i;:::-;20826:17;:42;;;;:::i;:::-;20805:17;;20792:10;:30;;;;:::i;:::-;:77;;;;:::i;:::-;20767:102;;20880:21;20977:1;20958:18;;:20;;;;:::i;:::-;20937:17;:42;;;;:::i;:::-;20917:16;;20904:10;:29;;;;:::i;:::-;:76;;;;:::i;:::-;20880:100;;21029:13;21012:14;:30;;;;:::i;:::-;20993:49;;;;;:::i;:::-;;;21076:1;21055:18;:22;;;;21108:1;21088:17;:21;;;;21139:1;21120:16;:20;;;;21174:1;21156:15;:19;:42;;;;;21197:1;21179:15;:19;21156:42;21153:119;;;21214:46;21227:15;21244;21214:12;:46::i;:::-;21153:119;21305:14;;;;;;;;;;;21297:28;;21333:13;21297:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21284:67;;;;;21385:15;;;;;;;;;;;21377:29;;21414:21;21377:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21364:76;;;;;20063:1385;;;;;;;;20035:1413;:::o;3868:602::-;4026:1;4008:20;;:6;:20;;;4000:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4110:1;4089:23;;:9;:23;;;4081:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4165:21;4189:9;:17;4199:6;4189:17;;;;;;;;;;;;;;;;4165:41;;4242:6;4225:13;:23;;4217:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4355:6;4339:13;:22;4319:9;:17;4329:6;4319:17;;;;;;;;;;;;;;;:42;;;;4403:6;4379:9;:20;4389:9;4379:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4444:9;4427:35;;4436:6;4427:35;;;4455:6;4427:35;;;;;;:::i;:::-;;;;;;;;3989:481;3868:602;;;:::o;11711:207::-;11841:10;11799:31;:39;11831:6;11799:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;11867:43;11891:6;11899:10;11867:43;;;;;;;:::i;:::-;;;;;;;;11711:207;;:::o;17831:591::-;17959:21;17997:1;17983:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17959:40;;18028:4;18010;18015:1;18010:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18054:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18044:4;18049:1;18044:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18089:62;18106:4;18121:15;18139:11;18089:8;:62::i;:::-;18190:15;:66;;;18271:11;18297:1;18341:4;18368;18388:15;18190:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17886:536;17831:591;:::o;18932:522::-;19080:62;19097:4;19112:15;19130:11;19080:8;:62::i;:::-;19185:15;:31;;;19224:9;19257:4;19277:11;19303:1;19346;19397:7;:5;:7::i;:::-;19420:15;19185:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18932:522;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:144::-;4195:9;4228:37;4259:5;4228:37;:::i;:::-;4215:50;;4127:144;;;:::o;4277:167::-;4382:55;4431:5;4382:55;:::i;:::-;4377:3;4370:68;4277:167;;:::o;4450:258::-;4561:4;4599:2;4588:9;4584:18;4576:26;;4612:89;4698:1;4687:9;4683:17;4674:6;4612:89;:::i;:::-;4450:258;;;;:::o;4714:118::-;4801:24;4819:5;4801:24;:::i;:::-;4796:3;4789:37;4714:118;;:::o;4838:222::-;4931:4;4969:2;4958:9;4954:18;4946:26;;4982:71;5050:1;5039:9;5035:17;5026:6;4982:71;:::i;:::-;4838:222;;;;:::o;5066:619::-;5143:6;5151;5159;5208:2;5196:9;5187:7;5183:23;5179:32;5176:119;;;5214:79;;:::i;:::-;5176:119;5334:1;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5305:117;5461:2;5487:53;5532:7;5523:6;5512:9;5508:22;5487:53;:::i;:::-;5477:63;;5432:118;5589:2;5615:53;5660:7;5651:6;5640:9;5636:22;5615:53;:::i;:::-;5605:63;;5560:118;5066:619;;;;;:::o;5691:329::-;5750:6;5799:2;5787:9;5778:7;5774:23;5770:32;5767:119;;;5805:79;;:::i;:::-;5767:119;5925:1;5950:53;5995:7;5986:6;5975:9;5971:22;5950:53;:::i;:::-;5940:63;;5896:117;5691:329;;;;:::o;6026:86::-;6061:7;6101:4;6094:5;6090:16;6079:27;;6026:86;;;:::o;6118:112::-;6201:22;6217:5;6201:22;:::i;:::-;6196:3;6189:35;6118:112;;:::o;6236:214::-;6325:4;6363:2;6352:9;6348:18;6340:26;;6376:67;6440:1;6429:9;6425:17;6416:6;6376:67;:::i;:::-;6236:214;;;;:::o;6456:118::-;6543:24;6561:5;6543:24;:::i;:::-;6538:3;6531:37;6456:118;;:::o;6580:222::-;6673:4;6711:2;6700:9;6696:18;6688:26;;6724:71;6792:1;6781:9;6777:17;6768:6;6724:71;:::i;:::-;6580:222;;;;:::o;6808:116::-;6878:21;6893:5;6878:21;:::i;:::-;6871:5;6868:32;6858:60;;6914:1;6911;6904:12;6858:60;6808:116;:::o;6930:133::-;6973:5;7011:6;6998:20;6989:29;;7027:30;7051:5;7027:30;:::i;:::-;6930:133;;;;:::o;7069:468::-;7134:6;7142;7191:2;7179:9;7170:7;7166:23;7162:32;7159:119;;;7197:79;;:::i;:::-;7159:119;7317:1;7342:50;7384:7;7375:6;7364:9;7360:22;7342:50;:::i;:::-;7332:60;;7288:114;7441:2;7467:53;7512:7;7503:6;7492:9;7488:22;7467:53;:::i;:::-;7457:63;;7412:118;7069:468;;;;;:::o;7543:::-;7608:6;7616;7665:2;7653:9;7644:7;7640:23;7636:32;7633:119;;;7671:79;;:::i;:::-;7633:119;7791:1;7816:53;7861:7;7852:6;7841:9;7837:22;7816:53;:::i;:::-;7806:63;;7762:117;7918:2;7944:50;7986:7;7977:6;7966:9;7962:22;7944:50;:::i;:::-;7934:60;;7889:115;7543:468;;;;;:::o;8017:619::-;8094:6;8102;8110;8159:2;8147:9;8138:7;8134:23;8130:32;8127:119;;;8165:79;;:::i;:::-;8127:119;8285:1;8310:53;8355:7;8346:6;8335:9;8331:22;8310:53;:::i;:::-;8300:63;;8256:117;8412:2;8438:53;8483:7;8474:6;8463:9;8459:22;8438:53;:::i;:::-;8428:63;;8383:118;8540:2;8566:53;8611:7;8602:6;8591:9;8587:22;8566:53;:::i;:::-;8556:63;;8511:118;8017:619;;;;;:::o;8642:474::-;8710:6;8718;8767:2;8755:9;8746:7;8742:23;8738:32;8735:119;;;8773:79;;:::i;:::-;8735:119;8893:1;8918:53;8963:7;8954:6;8943:9;8939:22;8918:53;:::i;:::-;8908:63;;8864:117;9020:2;9046:53;9091:7;9082:6;9071:9;9067:22;9046:53;:::i;:::-;9036:63;;8991:118;8642:474;;;;;:::o;9122:180::-;9170:77;9167:1;9160:88;9267:4;9264:1;9257:15;9291:4;9288:1;9281:15;9308:320;9352:6;9389:1;9383:4;9379:12;9369:22;;9436:1;9430:4;9426:12;9457:18;9447:81;;9513:4;9505:6;9501:17;9491:27;;9447:81;9575:2;9567:6;9564:14;9544:18;9541:38;9538:84;;9594:18;;:::i;:::-;9538:84;9359:269;9308:320;;;:::o;9634:227::-;9774:34;9770:1;9762:6;9758:14;9751:58;9843:10;9838:2;9830:6;9826:15;9819:35;9634:227;:::o;9867:366::-;10009:3;10030:67;10094:2;10089:3;10030:67;:::i;:::-;10023:74;;10106:93;10195:3;10106:93;:::i;:::-;10224:2;10219:3;10215:12;10208:19;;9867:366;;;:::o;10239:419::-;10405:4;10443:2;10432:9;10428:18;10420:26;;10492:9;10486:4;10482:20;10478:1;10467:9;10463:17;10456:47;10520:131;10646:4;10520:131;:::i;:::-;10512:139;;10239:419;;;:::o;10664:182::-;10804:34;10800:1;10792:6;10788:14;10781:58;10664:182;:::o;10852:366::-;10994:3;11015:67;11079:2;11074:3;11015:67;:::i;:::-;11008:74;;11091:93;11180:3;11091:93;:::i;:::-;11209:2;11204:3;11200:12;11193:19;;10852:366;;;:::o;11224:419::-;11390:4;11428:2;11417:9;11413:18;11405:26;;11477:9;11471:4;11467:20;11463:1;11452:9;11448:17;11441:47;11505:131;11631:4;11505:131;:::i;:::-;11497:139;;11224:419;;;:::o;11649:180::-;11697:77;11694:1;11687:88;11794:4;11791:1;11784:15;11818:4;11815:1;11808:15;11835:410;11875:7;11898:20;11916:1;11898:20;:::i;:::-;11893:25;;11932:20;11950:1;11932:20;:::i;:::-;11927:25;;11987:1;11984;11980:9;12009:30;12027:11;12009:30;:::i;:::-;11998:41;;12188:1;12179:7;12175:15;12172:1;12169:22;12149:1;12142:9;12122:83;12099:139;;12218:18;;:::i;:::-;12099:139;11883:362;11835:410;;;;:::o;12251:180::-;12299:77;12296:1;12289:88;12396:4;12393:1;12386:15;12420:4;12417:1;12410:15;12437:185;12477:1;12494:20;12512:1;12494:20;:::i;:::-;12489:25;;12528:20;12546:1;12528:20;:::i;:::-;12523:25;;12567:1;12557:35;;12572:18;;:::i;:::-;12557:35;12614:1;12611;12607:9;12602:14;;12437:185;;;;:::o;12628:228::-;12768:34;12764:1;12756:6;12752:14;12745:58;12837:11;12832:2;12824:6;12820:15;12813:36;12628:228;:::o;12862:366::-;13004:3;13025:67;13089:2;13084:3;13025:67;:::i;:::-;13018:74;;13101:93;13190:3;13101:93;:::i;:::-;13219:2;13214:3;13210:12;13203:19;;12862:366;;;:::o;13234:419::-;13400:4;13438:2;13427:9;13423:18;13415:26;;13487:9;13481:4;13477:20;13473:1;13462:9;13458:17;13451:47;13515:131;13641:4;13515:131;:::i;:::-;13507:139;;13234:419;;;:::o;13659:191::-;13699:3;13718:20;13736:1;13718:20;:::i;:::-;13713:25;;13752:20;13770:1;13752:20;:::i;:::-;13747:25;;13795:1;13792;13788:9;13781:16;;13816:3;13813:1;13810:10;13807:36;;;13823:18;;:::i;:::-;13807:36;13659:191;;;;:::o;13856:174::-;13996:26;13992:1;13984:6;13980:14;13973:50;13856:174;:::o;14036:366::-;14178:3;14199:67;14263:2;14258:3;14199:67;:::i;:::-;14192:74;;14275:93;14364:3;14275:93;:::i;:::-;14393:2;14388:3;14384:12;14377:19;;14036:366;;;:::o;14408:419::-;14574:4;14612:2;14601:9;14597:18;14589:26;;14661:9;14655:4;14651:20;14647:1;14636:9;14632:17;14625:47;14689:131;14815:4;14689:131;:::i;:::-;14681:139;;14408:419;;;:::o;14833:320::-;14948:4;14986:2;14975:9;14971:18;14963:26;;14999:65;15061:1;15050:9;15046:17;15037:6;14999:65;:::i;:::-;15074:72;15142:2;15131:9;15127:18;15118:6;15074:72;:::i;:::-;14833:320;;;;;:::o;15159:223::-;15299:34;15295:1;15287:6;15283:14;15276:58;15368:6;15363:2;15355:6;15351:15;15344:31;15159:223;:::o;15388:366::-;15530:3;15551:67;15615:2;15610:3;15551:67;:::i;:::-;15544:74;;15627:93;15716:3;15627:93;:::i;:::-;15745:2;15740:3;15736:12;15729:19;;15388:366;;;:::o;15760:419::-;15926:4;15964:2;15953:9;15949:18;15941:26;;16013:9;16007:4;16003:20;15999:1;15988:9;15984:17;15977:47;16041:131;16167:4;16041:131;:::i;:::-;16033:139;;15760:419;;;:::o;16185:226::-;16325:34;16321:1;16313:6;16309:14;16302:58;16394:9;16389:2;16381:6;16377:15;16370:34;16185:226;:::o;16417:366::-;16559:3;16580:67;16644:2;16639:3;16580:67;:::i;:::-;16573:74;;16656:93;16745:3;16656:93;:::i;:::-;16774:2;16769:3;16765:12;16758:19;;16417:366;;;:::o;16789:419::-;16955:4;16993:2;16982:9;16978:18;16970:26;;17042:9;17036:4;17032:20;17028:1;17017:9;17013:17;17006:47;17070:131;17196:4;17070:131;:::i;:::-;17062:139;;16789:419;;;:::o;17214:175::-;17354:27;17350:1;17342:6;17338:14;17331:51;17214:175;:::o;17395:366::-;17537:3;17558:67;17622:2;17617:3;17558:67;:::i;:::-;17551:74;;17634:93;17723:3;17634:93;:::i;:::-;17752:2;17747:3;17743:12;17736:19;;17395:366;;;:::o;17767:419::-;17933:4;17971:2;17960:9;17956:18;17948:26;;18020:9;18014:4;18010:20;18006:1;17995:9;17991:17;17984:47;18048:131;18174:4;18048:131;:::i;:::-;18040:139;;17767:419;;;:::o;18192:176::-;18332:28;18328:1;18320:6;18316:14;18309:52;18192:176;:::o;18374:366::-;18516:3;18537:67;18601:2;18596:3;18537:67;:::i;:::-;18530:74;;18613:93;18702:3;18613:93;:::i;:::-;18731:2;18726:3;18722:12;18715:19;;18374:366;;;:::o;18746:419::-;18912:4;18950:2;18939:9;18935:18;18927:26;;18999:9;18993:4;18989:20;18985:1;18974:9;18970:17;18963:47;19027:131;19153:4;19027:131;:::i;:::-;19019:139;;18746:419;;;:::o;19171:220::-;19311:34;19307:1;19299:6;19295:14;19288:58;19380:3;19375:2;19367:6;19363:15;19356:28;19171:220;:::o;19397:366::-;19539:3;19560:67;19624:2;19619:3;19560:67;:::i;:::-;19553:74;;19636:93;19725:3;19636:93;:::i;:::-;19754:2;19749:3;19745:12;19738:19;;19397:366;;;:::o;19769:419::-;19935:4;19973:2;19962:9;19958:18;19950:26;;20022:9;20016:4;20012:20;20008:1;19997:9;19993:17;19986:47;20050:131;20176:4;20050:131;:::i;:::-;20042:139;;19769:419;;;:::o;20194:143::-;20251:5;20282:6;20276:13;20267:22;;20298:33;20325:5;20298:33;:::i;:::-;20194:143;;;;:::o;20343:351::-;20413:6;20462:2;20450:9;20441:7;20437:23;20433:32;20430:119;;;20468:79;;:::i;:::-;20430:119;20588:1;20613:64;20669:7;20660:6;20649:9;20645:22;20613:64;:::i;:::-;20603:74;;20559:128;20343:351;;;;:::o;20700:332::-;20821:4;20859:2;20848:9;20844:18;20836:26;;20872:71;20940:1;20929:9;20925:17;20916:6;20872:71;:::i;:::-;20953:72;21021:2;21010:9;21006:18;20997:6;20953:72;:::i;:::-;20700:332;;;;;:::o;21038:137::-;21092:5;21123:6;21117:13;21108:22;;21139:30;21163:5;21139:30;:::i;:::-;21038:137;;;;:::o;21181:345::-;21248:6;21297:2;21285:9;21276:7;21272:23;21268:32;21265:119;;;21303:79;;:::i;:::-;21265:119;21423:1;21448:61;21501:7;21492:6;21481:9;21477:22;21448:61;:::i;:::-;21438:71;;21394:125;21181:345;;;;:::o;21532:222::-;21672:34;21668:1;21660:6;21656:14;21649:58;21741:5;21736:2;21728:6;21724:15;21717:30;21532:222;:::o;21760:366::-;21902:3;21923:67;21987:2;21982:3;21923:67;:::i;:::-;21916:74;;21999:93;22088:3;21999:93;:::i;:::-;22117:2;22112:3;22108:12;22101:19;;21760:366;;;:::o;22132:419::-;22298:4;22336:2;22325:9;22321:18;22313:26;;22385:9;22379:4;22375:20;22371:1;22360:9;22356:17;22349:47;22413:131;22539:4;22413:131;:::i;:::-;22405:139;;22132:419;;;:::o;22557:244::-;22697:34;22693:1;22685:6;22681:14;22674:58;22766:27;22761:2;22753:6;22749:15;22742:52;22557:244;:::o;22807:366::-;22949:3;22970:67;23034:2;23029:3;22970:67;:::i;:::-;22963:74;;23046:93;23135:3;23046:93;:::i;:::-;23164:2;23159:3;23155:12;23148:19;;22807:366;;;:::o;23179:419::-;23345:4;23383:2;23372:9;23368:18;23360:26;;23432:9;23426:4;23422:20;23418:1;23407:9;23403:17;23396:47;23460:131;23586:4;23460:131;:::i;:::-;23452:139;;23179:419;;;:::o;23604:224::-;23744:34;23740:1;23732:6;23728:14;23721:58;23813:7;23808:2;23800:6;23796:15;23789:32;23604:224;:::o;23834:366::-;23976:3;23997:67;24061:2;24056:3;23997:67;:::i;:::-;23990:74;;24073:93;24162:3;24073:93;:::i;:::-;24191:2;24186:3;24182:12;24175:19;;23834:366;;;:::o;24206:419::-;24372:4;24410:2;24399:9;24395:18;24387:26;;24459:9;24453:4;24449:20;24445:1;24434:9;24430:17;24423:47;24487:131;24613:4;24487:131;:::i;:::-;24479:139;;24206:419;;;:::o;24631:231::-;24771:34;24767:1;24759:6;24755:14;24748:58;24840:14;24835:2;24827:6;24823:15;24816:39;24631:231;:::o;24868:366::-;25010:3;25031:67;25095:2;25090:3;25031:67;:::i;:::-;25024:74;;25107:93;25196:3;25107:93;:::i;:::-;25225:2;25220:3;25216:12;25209:19;;24868:366;;;:::o;25240:419::-;25406:4;25444:2;25433:9;25429:18;25421:26;;25493:9;25487:4;25483:20;25479:1;25468:9;25464:17;25457:47;25521:131;25647:4;25521:131;:::i;:::-;25513:139;;25240:419;;;:::o;25665:229::-;25805:34;25801:1;25793:6;25789:14;25782:58;25874:12;25869:2;25861:6;25857:15;25850:37;25665:229;:::o;25900:366::-;26042:3;26063:67;26127:2;26122:3;26063:67;:::i;:::-;26056:74;;26139:93;26228:3;26139:93;:::i;:::-;26257:2;26252:3;26248:12;26241:19;;25900:366;;;:::o;26272:419::-;26438:4;26476:2;26465:9;26461:18;26453:26;;26525:9;26519:4;26515:20;26511:1;26500:9;26496:17;26489:47;26553:131;26679:4;26553:131;:::i;:::-;26545:139;;26272:419;;;:::o;26697:225::-;26837:34;26833:1;26825:6;26821:14;26814:58;26906:8;26901:2;26893:6;26889:15;26882:33;26697:225;:::o;26928:366::-;27070:3;27091:67;27155:2;27150:3;27091:67;:::i;:::-;27084:74;;27167:93;27256:3;27167:93;:::i;:::-;27285:2;27280:3;27276:12;27269:19;;26928:366;;;:::o;27300:419::-;27466:4;27504:2;27493:9;27489:18;27481:26;;27553:9;27547:4;27543:20;27539:1;27528:9;27524:17;27517:47;27581:131;27707:4;27581:131;:::i;:::-;27573:139;;27300:419;;;:::o;27725:147::-;27826:11;27863:3;27848:18;;27725:147;;;;:::o;27878:114::-;;:::o;27998:398::-;28157:3;28178:83;28259:1;28254:3;28178:83;:::i;:::-;28171:90;;28270:93;28359:3;28270:93;:::i;:::-;28388:1;28383:3;28379:11;28372:18;;27998:398;;;:::o;28402:379::-;28586:3;28608:147;28751:3;28608:147;:::i;:::-;28601:154;;28772:3;28765:10;;28402:379;;;:::o;28787:223::-;28927:34;28923:1;28915:6;28911:14;28904:58;28996:6;28991:2;28983:6;28979:15;28972:31;28787:223;:::o;29016:366::-;29158:3;29179:67;29243:2;29238:3;29179:67;:::i;:::-;29172:74;;29255:93;29344:3;29255:93;:::i;:::-;29373:2;29368:3;29364:12;29357:19;;29016:366;;;:::o;29388:419::-;29554:4;29592:2;29581:9;29577:18;29569:26;;29641:9;29635:4;29631:20;29627:1;29616:9;29612:17;29605:47;29669:131;29795:4;29669:131;:::i;:::-;29661:139;;29388:419;;;:::o;29813:221::-;29953:34;29949:1;29941:6;29937:14;29930:58;30022:4;30017:2;30009:6;30005:15;29998:29;29813:221;:::o;30040:366::-;30182:3;30203:67;30267:2;30262:3;30203:67;:::i;:::-;30196:74;;30279:93;30368:3;30279:93;:::i;:::-;30397:2;30392:3;30388:12;30381:19;;30040:366;;;:::o;30412:419::-;30578:4;30616:2;30605:9;30601:18;30593:26;;30665:9;30659:4;30655:20;30651:1;30640:9;30636:17;30629:47;30693:131;30819:4;30693:131;:::i;:::-;30685:139;;30412:419;;;:::o;30837:224::-;30977:34;30973:1;30965:6;30961:14;30954:58;31046:7;31041:2;31033:6;31029:15;31022:32;30837:224;:::o;31067:366::-;31209:3;31230:67;31294:2;31289:3;31230:67;:::i;:::-;31223:74;;31306:93;31395:3;31306:93;:::i;:::-;31424:2;31419:3;31415:12;31408:19;;31067:366;;;:::o;31439:419::-;31605:4;31643:2;31632:9;31628:18;31620:26;;31692:9;31686:4;31682:20;31678:1;31667:9;31663:17;31656:47;31720:131;31846:4;31720:131;:::i;:::-;31712:139;;31439:419;;;:::o;31864:222::-;32004:34;32000:1;31992:6;31988:14;31981:58;32073:5;32068:2;32060:6;32056:15;32049:30;31864:222;:::o;32092:366::-;32234:3;32255:67;32319:2;32314:3;32255:67;:::i;:::-;32248:74;;32331:93;32420:3;32331:93;:::i;:::-;32449:2;32444:3;32440:12;32433:19;;32092:366;;;:::o;32464:419::-;32630:4;32668:2;32657:9;32653:18;32645:26;;32717:9;32711:4;32707:20;32703:1;32692:9;32688:17;32681:47;32745:131;32871:4;32745:131;:::i;:::-;32737:139;;32464:419;;;:::o;32889:179::-;33029:31;33025:1;33017:6;33013:14;33006:55;32889:179;:::o;33074:366::-;33216:3;33237:67;33301:2;33296:3;33237:67;:::i;:::-;33230:74;;33313:93;33402:3;33313:93;:::i;:::-;33431:2;33426:3;33422:12;33415:19;;33074:366;;;:::o;33446:419::-;33612:4;33650:2;33639:9;33635:18;33627:26;;33699:9;33693:4;33689:20;33685:1;33674:9;33670:17;33663:47;33727:131;33853:4;33727:131;:::i;:::-;33719:139;;33446:419;;;:::o;33871:172::-;34011:24;34007:1;33999:6;33995:14;33988:48;33871:172;:::o;34049:366::-;34191:3;34212:67;34276:2;34271:3;34212:67;:::i;:::-;34205:74;;34288:93;34377:3;34288:93;:::i;:::-;34406:2;34401:3;34397:12;34390:19;;34049:366;;;:::o;34421:419::-;34587:4;34625:2;34614:9;34610:18;34602:26;;34674:9;34668:4;34664:20;34660:1;34649:9;34645:17;34638:47;34702:131;34828:4;34702:131;:::i;:::-;34694:139;;34421:419;;;:::o;34846:172::-;34986:24;34982:1;34974:6;34970:14;34963:48;34846:172;:::o;35024:366::-;35166:3;35187:67;35251:2;35246:3;35187:67;:::i;:::-;35180:74;;35263:93;35352:3;35263:93;:::i;:::-;35381:2;35376:3;35372:12;35365:19;;35024:366;;;:::o;35396:419::-;35562:4;35600:2;35589:9;35585:18;35577:26;;35649:9;35643:4;35639:20;35635:1;35624:9;35620:17;35613:47;35677:131;35803:4;35677:131;:::i;:::-;35669:139;;35396:419;;;:::o;35821:227::-;35961:34;35957:1;35949:6;35945:14;35938:58;36030:10;36025:2;36017:6;36013:15;36006:35;35821:227;:::o;36054:366::-;36196:3;36217:67;36281:2;36276:3;36217:67;:::i;:::-;36210:74;;36293:93;36382:3;36293:93;:::i;:::-;36411:2;36406:3;36402:12;36395:19;;36054:366;;;:::o;36426:419::-;36592:4;36630:2;36619:9;36615:18;36607:26;;36679:9;36673:4;36669:20;36665:1;36654:9;36650:17;36643:47;36707:131;36833:4;36707:131;:::i;:::-;36699:139;;36426:419;;;:::o;36851:174::-;36991:26;36987:1;36979:6;36975:14;36968:50;36851:174;:::o;37031:366::-;37173:3;37194:67;37258:2;37253:3;37194:67;:::i;:::-;37187:74;;37270:93;37359:3;37270:93;:::i;:::-;37388:2;37383:3;37379:12;37372:19;;37031:366;;;:::o;37403:419::-;37569:4;37607:2;37596:9;37592:18;37584:26;;37656:9;37650:4;37646:20;37642:1;37631:9;37627:17;37620:47;37684:131;37810:4;37684:131;:::i;:::-;37676:139;;37403:419;;;:::o;37828:229::-;37968:34;37964:1;37956:6;37952:14;37945:58;38037:12;38032:2;38024:6;38020:15;38013:37;37828:229;:::o;38063:366::-;38205:3;38226:67;38290:2;38285:3;38226:67;:::i;:::-;38219:74;;38302:93;38391:3;38302:93;:::i;:::-;38420:2;38415:3;38411:12;38404:19;;38063:366;;;:::o;38435:419::-;38601:4;38639:2;38628:9;38624:18;38616:26;;38688:9;38682:4;38678:20;38674:1;38663:9;38659:17;38652:47;38716:131;38842:4;38716:131;:::i;:::-;38708:139;;38435:419;;;:::o;38860:194::-;38900:4;38920:20;38938:1;38920:20;:::i;:::-;38915:25;;38954:20;38972:1;38954:20;:::i;:::-;38949:25;;38998:1;38995;38991:9;38983:17;;39022:1;39016:4;39013:11;39010:37;;;39027:18;;:::i;:::-;39010:37;38860:194;;;;:::o;39060:225::-;39200:34;39196:1;39188:6;39184:14;39177:58;39269:8;39264:2;39256:6;39252:15;39245:33;39060:225;:::o;39291:366::-;39433:3;39454:67;39518:2;39513:3;39454:67;:::i;:::-;39447:74;;39530:93;39619:3;39530:93;:::i;:::-;39648:2;39643:3;39639:12;39632:19;;39291:366;;;:::o;39663:419::-;39829:4;39867:2;39856:9;39852:18;39844:26;;39916:9;39910:4;39906:20;39902:1;39891:9;39887:17;39880:47;39944:131;40070:4;39944:131;:::i;:::-;39936:139;;39663:419;;;:::o;40088:320::-;40203:4;40241:2;40230:9;40226:18;40218:26;;40254:71;40322:1;40311:9;40307:17;40298:6;40254:71;:::i;:::-;40335:66;40397:2;40386:9;40382:18;40373:6;40335:66;:::i;:::-;40088:320;;;;;:::o;40414:180::-;40462:77;40459:1;40452:88;40559:4;40556:1;40549:15;40583:4;40580:1;40573:15;40600:180;40648:77;40645:1;40638:88;40745:4;40742:1;40735:15;40769:4;40766:1;40759:15;40786:143;40843:5;40874:6;40868:13;40859:22;;40890:33;40917:5;40890:33;:::i;:::-;40786:143;;;;:::o;40935:351::-;41005:6;41054:2;41042:9;41033:7;41029:23;41025:32;41022:119;;;41060:79;;:::i;:::-;41022:119;41180:1;41205:64;41261:7;41252:6;41241:9;41237:22;41205:64;:::i;:::-;41195:74;;41151:128;40935:351;;;;:::o;41292:85::-;41337:7;41366:5;41355:16;;41292:85;;;:::o;41383:158::-;41441:9;41474:61;41492:42;41501:32;41527:5;41501:32;:::i;:::-;41492:42;:::i;:::-;41474:61;:::i;:::-;41461:74;;41383:158;;;:::o;41547:147::-;41642:45;41681:5;41642:45;:::i;:::-;41637:3;41630:58;41547:147;;:::o;41700:114::-;41767:6;41801:5;41795:12;41785:22;;41700:114;;;:::o;41820:184::-;41919:11;41953:6;41948:3;41941:19;41993:4;41988:3;41984:14;41969:29;;41820:184;;;;:::o;42010:132::-;42077:4;42100:3;42092:11;;42130:4;42125:3;42121:14;42113:22;;42010:132;;;:::o;42148:108::-;42225:24;42243:5;42225:24;:::i;:::-;42220:3;42213:37;42148:108;;:::o;42262:179::-;42331:10;42352:46;42394:3;42386:6;42352:46;:::i;:::-;42430:4;42425:3;42421:14;42407:28;;42262:179;;;;:::o;42447:113::-;42517:4;42549;42544:3;42540:14;42532:22;;42447:113;;;:::o;42596:732::-;42715:3;42744:54;42792:5;42744:54;:::i;:::-;42814:86;42893:6;42888:3;42814:86;:::i;:::-;42807:93;;42924:56;42974:5;42924:56;:::i;:::-;43003:7;43034:1;43019:284;43044:6;43041:1;43038:13;43019:284;;;43120:6;43114:13;43147:63;43206:3;43191:13;43147:63;:::i;:::-;43140:70;;43233:60;43286:6;43233:60;:::i;:::-;43223:70;;43079:224;43066:1;43063;43059:9;43054:14;;43019:284;;;43023:14;43319:3;43312:10;;42720:608;;;42596:732;;;;:::o;43334:831::-;43597:4;43635:3;43624:9;43620:19;43612:27;;43649:71;43717:1;43706:9;43702:17;43693:6;43649:71;:::i;:::-;43730:80;43806:2;43795:9;43791:18;43782:6;43730:80;:::i;:::-;43857:9;43851:4;43847:20;43842:2;43831:9;43827:18;43820:48;43885:108;43988:4;43979:6;43885:108;:::i;:::-;43877:116;;44003:72;44071:2;44060:9;44056:18;44047:6;44003:72;:::i;:::-;44085:73;44153:3;44142:9;44138:19;44129:6;44085:73;:::i;:::-;43334:831;;;;;;;;:::o;44171:807::-;44420:4;44458:3;44447:9;44443:19;44435:27;;44472:71;44540:1;44529:9;44525:17;44516:6;44472:71;:::i;:::-;44553:72;44621:2;44610:9;44606:18;44597:6;44553:72;:::i;:::-;44635:80;44711:2;44700:9;44696:18;44687:6;44635:80;:::i;:::-;44725;44801:2;44790:9;44786:18;44777:6;44725:80;:::i;:::-;44815:73;44883:3;44872:9;44868:19;44859:6;44815:73;:::i;:::-;44898;44966:3;44955:9;44951:19;44942:6;44898:73;:::i;:::-;44171:807;;;;;;;;;:::o;44984:663::-;45072:6;45080;45088;45137:2;45125:9;45116:7;45112:23;45108:32;45105:119;;;45143:79;;:::i;:::-;45105:119;45263:1;45288:64;45344:7;45335:6;45324:9;45320:22;45288:64;:::i;:::-;45278:74;;45234:128;45401:2;45427:64;45483:7;45474:6;45463:9;45459:22;45427:64;:::i;:::-;45417:74;;45372:129;45540:2;45566:64;45622:7;45613:6;45602:9;45598:22;45566:64;:::i;:::-;45556:74;;45511:129;44984:663;;;;;:::o

Swarm Source

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