ETH Price: $2,633.69 (+1.66%)

Token

Thorn (THORN)
 

Overview

Max Total Supply

10,000,000 THORN

Holders

222

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
199,994.449569458444549772 THORN

Value
$0.00
0xe69dd72cccb99d088202e4f835f59ff73fbc4978
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:
thorn

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-07
*/

// SPDX-License-Identifier: MIT

/*

https://t.me/officialthorneth


*/

pragma solidity 0.8.11;

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

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

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function factory() external view returns (address);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
}

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

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

        _transfer(sender, recipient, amount);

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    mapping (address => bool) public isBot;
    bool private _swapping;
    uint256 private _launchTime;

    address private devWallet;
    
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
        
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    
    uint256 public buyTotalFees;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
 
    uint256 public sellTotalFees;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
 
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    
    /******************/

    // 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 SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);
    
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);

    constructor() ERC20("Thorn", "THORN") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);


        uint256 _buyLiquidityFee = 3;
        uint256 _buyDevFee = 12;
 
        uint256 _sellLiquidityFee = 10;
        uint256 _sellDevFee = 25;
        
        uint256 totalSupply = 1 * 1e7 * 1e18;
        
        maxTransactionAmount = totalSupply * 1 / 100; // 1% maxTransactionAmountTxn
        maxWallet = totalSupply * 2 / 100; // 1% maxWallet
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet

        // Set Fees
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyLiquidityFee + buyDevFee;
 
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellLiquidityFee + sellDevFee;

        // Set Fee Wallet
        devWallet = address(owner()); // set as dev wallet


        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

        receive() external payable {
 
    }
 

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        _launchTime = block.timestamp.add(2);
    }
   
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }
    
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }
    
     // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
  	    swapTokensAtAmount = newAmount;
  	    return true;
  	}
    
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * 1e18;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * 1e18;
    }
    
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }
    
    function updateBuyFees(uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 15, "Must keep fees at 15% or less");
    }
 
    function updateSellFees(uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 15, "Must keep fees at 15% or less");
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

    // Variable Block - once enabled, can never be turned off 
    function enableTrading(uint256 Bblock) external onlyOwner {
        tradingActive = true;
        _launchTime = block.timestamp.add(Bblock);
    }

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

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }
 

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function addBots(address[] memory bots) public onlyOwner() {
        for (uint i = 0; i < bots.length; i++) {
            if (bots[i] != uniswapV2Pair && bots[i] != address(uniswapV2Router)) {
                isBot[bots[i]] = true;
            }
        }
    }
    
    function removeBots(address[] memory bots) public onlyOwner() {
        for (uint i = 0; i < bots.length; i++) {
            isBot[bots[i]] = false;
        }
    }

    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(!isBot[from], "Your address has been marked as a bot/sniper, you are unable to transfer or swap.");
        
         if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if (block.timestamp < _launchTime) isBot[to] = true;
        
        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !_swapping
            ) {
                if (!tradingActive) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                 
                // On buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                
                // On sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
        
		uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            !_swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            _swapping = true;
            swapBack();
            _swapping = false;
        }

        bool takeFee = !_swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) takeFee = false;
        
        
        uint256 fees = 0;
        // Only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // On sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
            }

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

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

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

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function _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
            owner(),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForDev;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
 
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;
 
        _swapTokensForEth(amountToSwapForETH); 
 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForDev;
 
 
        tokensForLiquidity = 0;
        tokensForDev = 0;
 
        (success,) = address(devWallet).call{value: ethForDev}("");
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            _addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","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":"buyDevFee","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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Bblock","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","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":[],"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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506001600f60006101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280600581526020017f54686f726e0000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f54484f524e0000000000000000000000000000000000000000000000000000008152508160039080519060200190620000e7929190620009cf565b50806004908051906020019062000100929190620009cf565b50505062000123620001176200052560201b60201c565b6200052d60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200014f816001620005f360201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f5919062000ae9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000283919062000ae9565b6040518363ffffffff1660e01b8152600401620002a292919062000b2c565b6020604051808303816000875af1158015620002c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e8919062000ae9565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033060a0516001620005f360201b60201c565b6200034560a0516001620006dd60201b60201c565b6000600390506000600c90506000600a905060006019905060006a084595161401484a000000905060646001826200037e919062000b92565b6200038a919062000c22565b600a819055506064600282620003a1919062000b92565b620003ad919062000c22565b600c81905550612710600582620003c5919062000b92565b620003d1919062000c22565b600b819055508460118190555083601281905550601254601154620003f7919062000c5a565b60108190555082601481905550816015819055506015546014546200041d919062000c5a565b601381905550620004336200073860201b60201c565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000495620004876200073860201b60201c565b60016200076260201b60201c565b620004a83060016200076260201b60201c565b620004bd61dead60016200076260201b60201c565b620004df620004d16200073860201b60201c565b6001620005f360201b60201c565b620004f2306001620005f360201b60201c565b6200050761dead6001620005f360201b60201c565b6200051933826200084c60201b60201c565b50505050505062000e3f565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006036200052560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006296200073860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000682576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006799062000d18565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620007726200052560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007986200073860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e89062000d18565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620008bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b69062000d8a565b60405180910390fd5b620008d360008383620009c560201b60201c565b8060026000828254620008e7919062000c5a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200093e919062000c5a565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009a5919062000dbd565b60405180910390a3620009c160008383620009ca60201b60201c565b5050565b505050565b505050565b828054620009dd9062000e09565b90600052602060002090601f01602090048101928262000a01576000855562000a4d565b82601f1062000a1c57805160ff191683800117855562000a4d565b8280016001018555821562000a4d579182015b8281111562000a4c57825182559160200191906001019062000a2f565b5b50905062000a5c919062000a60565b5090565b5b8082111562000a7b57600081600090555060010162000a61565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ab18262000a84565b9050919050565b62000ac38162000aa4565b811462000acf57600080fd5b50565b60008151905062000ae38162000ab8565b92915050565b60006020828403121562000b025762000b0162000a7f565b5b600062000b128482850162000ad2565b91505092915050565b62000b268162000aa4565b82525050565b600060408201905062000b43600083018562000b1b565b62000b52602083018462000b1b565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b9f8262000b59565b915062000bac8362000b59565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000be85762000be762000b63565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000c2f8262000b59565b915062000c3c8362000b59565b92508262000c4f5762000c4e62000bf3565b5b828204905092915050565b600062000c678262000b59565b915062000c748362000b59565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000cac5762000cab62000b63565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d0060208362000cb7565b915062000d0d8262000cc8565b602082019050919050565b6000602082019050818103600083015262000d338162000cf1565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d72601f8362000cb7565b915062000d7f8262000d3a565b602082019050919050565b6000602082019050818103600083015262000da58162000d63565b9050919050565b62000db78162000b59565b82525050565b600060208201905062000dd4600083018462000dac565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e2257607f821691505b6020821081141562000e395762000e3862000dda565b5b50919050565b60805160a0516151c162000eab600039600081816111c00152818161193301528181611efa015261291b015260008181610d4d01528181611f6b015281816128c30152818161382f0152818161391001528181613937015281816139d301526139fa01526151c16000f3fe6080604052600436106102b25760003560e01c80638a8c523c11610175578063c18bc195116100dc578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610ae7578063f2fde38b14610b12578063f637434214610b3b578063f8b45b0514610b66576102b9565b8063dd62ed3e14610a54578063e2f4560514610a91578063e884f26014610abc576102b9565b8063c18bc19514610944578063c876d0b91461096d578063c8c8ebe414610998578063d257b34f146109c3578063d34628cc14610a00578063d85ba06314610a29576102b9565b8063a0d82dc51161012e578063a0d82dc51461080e578063a457c2d714610839578063a9059cbb14610876578063b62496f5146108b3578063bbc0c742146108f0578063c02466681461091b576102b9565b80638a8c523c146107225780638da5cb5b1461073957806395d89b41146107645780639a7a23d61461078f5780639c3b4fdc146107b85780639fccce32146107e3576102b9565b80633bbac579116102195780636c3bbfd7116101d25780636c3bbfd71461062857806370a0823114610651578063715018a61461068e578063751039fc146106a55780637571336a146106d057806382aa7c68146106f9576102b9565b80633bbac5791461050457806349bd5a5e146105415780634a62bb651461056c5780634fbee1931461059757806366ca9b83146105d45780636a486a8e146105fd576102b9565b80631816467f1161026b5780631816467f146103e25780631a8145bb1461040b578063203e727e1461043657806323b872dd1461045f578063313ce5671461049c57806339509351146104c7576102b9565b806302dbd8f8146102be57806306fdde03146102e7578063095ea7b31461031257806310d5de531461034f5780631694505e1461038c57806318160ddd146103b7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e560048036038101906102e09190613af8565b610b91565b005b3480156102f357600080fd5b506102fc610c7b565b6040516103099190613bd1565b60405180910390f35b34801561031e57600080fd5b5061033960048036038101906103349190613c51565b610d0d565b6040516103469190613cac565b60405180910390f35b34801561035b57600080fd5b5061037660048036038101906103719190613cc7565b610d2b565b6040516103839190613cac565b60405180910390f35b34801561039857600080fd5b506103a1610d4b565b6040516103ae9190613d53565b60405180910390f35b3480156103c357600080fd5b506103cc610d6f565b6040516103d99190613d7d565b60405180910390f35b3480156103ee57600080fd5b5061040960048036038101906104049190613cc7565b610d79565b005b34801561041757600080fd5b50610420610eb5565b60405161042d9190613d7d565b60405180910390f35b34801561044257600080fd5b5061045d60048036038101906104589190613d98565b610ebb565b005b34801561046b57600080fd5b5061048660048036038101906104819190613dc5565b610fca565b6040516104939190613cac565b60405180910390f35b3480156104a857600080fd5b506104b16110e9565b6040516104be9190613e34565b60405180910390f35b3480156104d357600080fd5b506104ee60048036038101906104e99190613c51565b6110f2565b6040516104fb9190613cac565b60405180910390f35b34801561051057600080fd5b5061052b60048036038101906105269190613cc7565b61119e565b6040516105389190613cac565b60405180910390f35b34801561054d57600080fd5b506105566111be565b6040516105639190613e5e565b60405180910390f35b34801561057857600080fd5b506105816111e2565b60405161058e9190613cac565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b99190613cc7565b6111f5565b6040516105cb9190613cac565b60405180910390f35b3480156105e057600080fd5b506105fb60048036038101906105f69190613af8565b61124b565b005b34801561060957600080fd5b50610612611335565b60405161061f9190613d7d565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a9190613fc1565b61133b565b005b34801561065d57600080fd5b5061067860048036038101906106739190613cc7565b61144c565b6040516106859190613d7d565b60405180910390f35b34801561069a57600080fd5b506106a3611494565b005b3480156106b157600080fd5b506106ba61151c565b6040516106c79190613cac565b60405180910390f35b3480156106dc57600080fd5b506106f760048036038101906106f29190614036565b6115bc565b005b34801561070557600080fd5b50610720600480360381019061071b9190613d98565b611693565b005b34801561072e57600080fd5b50610737611746565b005b34801561074557600080fd5b5061074e6117f9565b60405161075b9190613e5e565b60405180910390f35b34801561077057600080fd5b50610779611823565b6040516107869190613bd1565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b19190614036565b6118b5565b005b3480156107c457600080fd5b506107cd6119ce565b6040516107da9190613d7d565b60405180910390f35b3480156107ef57600080fd5b506107f86119d4565b6040516108059190613d7d565b60405180910390f35b34801561081a57600080fd5b506108236119da565b6040516108309190613d7d565b60405180910390f35b34801561084557600080fd5b50610860600480360381019061085b9190613c51565b6119e0565b60405161086d9190613cac565b60405180910390f35b34801561088257600080fd5b5061089d60048036038101906108989190613c51565b611acb565b6040516108aa9190613cac565b60405180910390f35b3480156108bf57600080fd5b506108da60048036038101906108d59190613cc7565b611ae9565b6040516108e79190613cac565b60405180910390f35b3480156108fc57600080fd5b50610905611b09565b6040516109129190613cac565b60405180910390f35b34801561092757600080fd5b50610942600480360381019061093d9190614036565b611b1c565b005b34801561095057600080fd5b5061096b60048036038101906109669190613d98565b611bf3565b005b34801561097957600080fd5b50610982611d02565b60405161098f9190613cac565b60405180910390f35b3480156109a457600080fd5b506109ad611d15565b6040516109ba9190613d7d565b60405180910390f35b3480156109cf57600080fd5b506109ea60048036038101906109e59190613d98565b611d1b565b6040516109f79190613cac565b60405180910390f35b348015610a0c57600080fd5b50610a276004803603810190610a229190613fc1565b611e70565b005b348015610a3557600080fd5b50610a3e612063565b604051610a4b9190613d7d565b60405180910390f35b348015610a6057600080fd5b50610a7b6004803603810190610a769190614076565b612069565b604051610a889190613d7d565b60405180910390f35b348015610a9d57600080fd5b50610aa66120f0565b604051610ab39190613d7d565b60405180910390f35b348015610ac857600080fd5b50610ad16120f6565b604051610ade9190613cac565b60405180910390f35b348015610af357600080fd5b50610afc612196565b604051610b099190613d7d565b60405180910390f35b348015610b1e57600080fd5b50610b396004803603810190610b349190613cc7565b61219c565b005b348015610b4757600080fd5b50610b50612294565b604051610b5d9190613d7d565b60405180910390f35b348015610b7257600080fd5b50610b7b61229a565b604051610b889190613d7d565b60405180910390f35b610b996122a0565b73ffffffffffffffffffffffffffffffffffffffff16610bb76117f9565b73ffffffffffffffffffffffffffffffffffffffff1614610c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0490614102565b60405180910390fd5b8160148190555080601581905550601554601454610c2b9190614151565b601381905550600f6013541115610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e906141f3565b60405180910390fd5b5050565b606060038054610c8a90614242565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb690614242565b8015610d035780601f10610cd857610100808354040283529160200191610d03565b820191906000526020600020905b815481529060010190602001808311610ce657829003601f168201915b5050505050905090565b6000610d21610d1a6122a0565b84846122a8565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610d816122a0565b73ffffffffffffffffffffffffffffffffffffffff16610d9f6117f9565b73ffffffffffffffffffffffffffffffffffffffff1614610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec90614102565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b610ec36122a0565b73ffffffffffffffffffffffffffffffffffffffff16610ee16117f9565b73ffffffffffffffffffffffffffffffffffffffff1614610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e90614102565b60405180910390fd5b670de0b6b3a76400006103e86001610f4d610d6f565b610f579190614274565b610f6191906142fd565b610f6b91906142fd565b811015610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa4906143a0565b60405180910390fd5b670de0b6b3a764000081610fc19190614274565b600a8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110166122a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110d257828110156110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490614432565b60405180910390fd5b6110d1856110c96122a0565b8584036122a8565b5b6110dd858585612473565b60019150509392505050565b60006012905090565b60006111946110ff6122a0565b84846001600061110d6122a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461118f9190614151565b6122a8565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60009054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6112536122a0565b73ffffffffffffffffffffffffffffffffffffffff166112716117f9565b73ffffffffffffffffffffffffffffffffffffffff16146112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be90614102565b60405180910390fd5b81601181905550806012819055506012546011546112e59190614151565b601081905550600f6010541115611331576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611328906141f3565b60405180910390fd5b5050565b60135481565b6113436122a0565b73ffffffffffffffffffffffffffffffffffffffff166113616117f9565b73ffffffffffffffffffffffffffffffffffffffff16146113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ae90614102565b60405180910390fd5b60005b8151811015611448576000600660008484815181106113dc576113db614452565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061144090614481565b9150506113ba565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61149c6122a0565b73ffffffffffffffffffffffffffffffffffffffff166114ba6117f9565b73ffffffffffffffffffffffffffffffffffffffff1614611510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150790614102565b60405180910390fd5b61151a600061317f565b565b60006115266122a0565b73ffffffffffffffffffffffffffffffffffffffff166115446117f9565b73ffffffffffffffffffffffffffffffffffffffff161461159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159190614102565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b6115c46122a0565b73ffffffffffffffffffffffffffffffffffffffff166115e26117f9565b73ffffffffffffffffffffffffffffffffffffffff1614611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90614102565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61169b6122a0565b73ffffffffffffffffffffffffffffffffffffffff166116b96117f9565b73ffffffffffffffffffffffffffffffffffffffff161461170f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170690614102565b60405180910390fd5b6001600d60016101000a81548160ff02191690831515021790555061173d814261324590919063ffffffff16565b60088190555050565b61174e6122a0565b73ffffffffffffffffffffffffffffffffffffffff1661176c6117f9565b73ffffffffffffffffffffffffffffffffffffffff16146117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b990614102565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506117f160024261324590919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461183290614242565b80601f016020809104026020016040519081016040528092919081815260200182805461185e90614242565b80156118ab5780601f10611880576101008083540402835291602001916118ab565b820191906000526020600020905b81548152906001019060200180831161188e57829003601f168201915b5050505050905090565b6118bd6122a0565b73ffffffffffffffffffffffffffffffffffffffff166118db6117f9565b73ffffffffffffffffffffffffffffffffffffffff1614611931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192890614102565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b79061453c565b60405180910390fd5b6119ca828261325b565b5050565b60125481565b60175481565b60155481565b600080600160006119ef6122a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa3906145ce565b60405180910390fd5b611ac0611ab76122a0565b858584036122a8565b600191505092915050565b6000611adf611ad86122a0565b8484612473565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b611b246122a0565b73ffffffffffffffffffffffffffffffffffffffff16611b426117f9565b73ffffffffffffffffffffffffffffffffffffffff1614611b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8f90614102565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611bfb6122a0565b73ffffffffffffffffffffffffffffffffffffffff16611c196117f9565b73ffffffffffffffffffffffffffffffffffffffff1614611c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6690614102565b60405180910390fd5b670de0b6b3a76400006103e86005611c85610d6f565b611c8f9190614274565b611c9991906142fd565b611ca391906142fd565b811015611ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdc90614660565b60405180910390fd5b670de0b6b3a764000081611cf99190614274565b600c8190555050565b600f60009054906101000a900460ff1681565b600a5481565b6000611d256122a0565b73ffffffffffffffffffffffffffffffffffffffff16611d436117f9565b73ffffffffffffffffffffffffffffffffffffffff1614611d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9090614102565b60405180910390fd5b620186a06001611da7610d6f565b611db19190614274565b611dbb91906142fd565b821015611dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df4906146f2565b60405180910390fd5b6103e86005611e0a610d6f565b611e149190614274565b611e1e91906142fd565b821115611e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5790614784565b60405180910390fd5b81600b8190555060019050919050565b611e786122a0565b73ffffffffffffffffffffffffffffffffffffffff16611e966117f9565b73ffffffffffffffffffffffffffffffffffffffff1614611eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee390614102565b60405180910390fd5b60005b815181101561205f577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16828281518110611f4257611f41614452565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015611fd457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16828281518110611fb357611fb2614452565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b1561204c57600160066000848481518110611ff257611ff1614452565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061205790614481565b915050611eef565b5050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b60006121006122a0565b73ffffffffffffffffffffffffffffffffffffffff1661211e6117f9565b73ffffffffffffffffffffffffffffffffffffffff1614612174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216b90614102565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b60115481565b6121a46122a0565b73ffffffffffffffffffffffffffffffffffffffff166121c26117f9565b73ffffffffffffffffffffffffffffffffffffffff1614612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220f90614102565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227f90614816565b60405180910390fd5b6122918161317f565b50565b60145481565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230f906148a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237f9061493a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124669190613d7d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124da906149cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254a90614a5e565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156125e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d790614b16565b60405180910390fd5b60008114156125fa576125f5838360006132b6565b61317a565b60085442101561265d576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600d60009054906101000a900460ff1615612d205761267a6117f9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126e857506126b86117f9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127215750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561275b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127745750600760009054906101000a900460ff16155b15612d1f57600d60019054906101000a900460ff1661286e57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061282e5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61286d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286490614b82565b60405180910390fd5b5b600f60009054906101000a900460ff1615612a365761288b6117f9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561291257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561296a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a355743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106129f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e790614c3a565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ad95750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b8057600a54811115612b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1a90614ccc565b60405180910390fd5b600c54612b2f8361144c565b82612b3a9190614151565b1115612b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7290614d38565b60405180910390fd5b612d1e565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c235750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c7257600a54811115612c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6490614dca565b60405180910390fd5b612d1d565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d1c57600c54612ccf8361144c565b82612cda9190614151565b1115612d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1290614d38565b60405180910390fd5b5b5b5b5b5b6000612d2b3061144c565b90506000600b548210159050808015612d515750600760009054906101000a900460ff16155b8015612da75750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dfd5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e535750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e97576001600760006101000a81548160ff021916908315150217905550612e7b613537565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f4d5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f5757600090505b6000811561316a57601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fba57506000601354115b1561305457612fe76064612fd96013548861374490919063ffffffff16565b61375a90919063ffffffff16565b905060135460145482612ffa9190614274565b61300491906142fd565b601660008282546130159190614151565b925050819055506013546015548261302d9190614274565b61303791906142fd565b601760008282546130489190614151565b92505081905550613146565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130af57506000601054115b15613145576130dc60646130ce6010548861374490919063ffffffff16565b61375a90919063ffffffff16565b9050601054601154826130ef9190614274565b6130f991906142fd565b6016600082825461310a9190614151565b92505081905550601054601254826131229190614274565b61312c91906142fd565b6017600082825461313d9190614151565b925050819055505b5b600081111561315b5761315a8730836132b6565b5b80856131679190614dea565b94505b6131758787876132b6565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836132539190614151565b905092915050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331d906149cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338d90614a5e565b60405180910390fd5b6133a1838383613770565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341e90614e90565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134ba9190614151565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161351e9190613d7d565b60405180910390a3613531848484613775565b50505050565b60006135423061144c565b905060006017546016546135569190614151565b90506000808314806135685750600082145b1561357557505050613742565b6014600b546135849190614274565b83111561359d576014600b5461359a9190614274565b92505b6000600283601654866135b09190614274565b6135ba91906142fd565b6135c491906142fd565b905060006135db828661377a90919063ffffffff16565b905060004790506135eb82613790565b6000613600824761377a90919063ffffffff16565b9050600061362b8761361d6017548561374490919063ffffffff16565b61375a90919063ffffffff16565b90506000818361363b9190614dea565b905060006016819055506000601781905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161369390614ee1565b60006040518083038185875af1925050503d80600081146136d0576040519150601f19603f3d011682016040523d82523d6000602084013e6136d5565b606091505b5050809750506000861180156136eb5750600081115b15613738576136fa86826139cd565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260165460405161372f93929190614ef6565b60405180910390a15b5050505050505050505b565b600081836137529190614274565b905092915050565b6000818361376891906142fd565b905092915050565b505050565b505050565b600081836137889190614dea565b905092915050565b6000600267ffffffffffffffff8111156137ad576137ac613e7e565b5b6040519080825280602002602001820160405280156137db5781602001602082028036833780820191505090505b50905030816000815181106137f3576137f2614452565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138bc9190614f42565b816001815181106138d0576138cf614452565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613935307f0000000000000000000000000000000000000000000000000000000000000000846122a8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613997959493929190615068565b600060405180830381600087803b1580156139b157600080fd5b505af11580156139c5573d6000803e3d6000fd5b505050505050565b6139f8307f0000000000000000000000000000000000000000000000000000000000000000846122a8565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613a426117f9565b426040518863ffffffff1660e01b8152600401613a64969594939291906150c2565b60606040518083038185885af1158015613a82573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613aa79190615138565b5050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613ad581613ac2565b8114613ae057600080fd5b50565b600081359050613af281613acc565b92915050565b60008060408385031215613b0f57613b0e613ab8565b5b6000613b1d85828601613ae3565b9250506020613b2e85828601613ae3565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b72578082015181840152602081019050613b57565b83811115613b81576000848401525b50505050565b6000601f19601f8301169050919050565b6000613ba382613b38565b613bad8185613b43565b9350613bbd818560208601613b54565b613bc681613b87565b840191505092915050565b60006020820190508181036000830152613beb8184613b98565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c1e82613bf3565b9050919050565b613c2e81613c13565b8114613c3957600080fd5b50565b600081359050613c4b81613c25565b92915050565b60008060408385031215613c6857613c67613ab8565b5b6000613c7685828601613c3c565b9250506020613c8785828601613ae3565b9150509250929050565b60008115159050919050565b613ca681613c91565b82525050565b6000602082019050613cc16000830184613c9d565b92915050565b600060208284031215613cdd57613cdc613ab8565b5b6000613ceb84828501613c3c565b91505092915050565b6000819050919050565b6000613d19613d14613d0f84613bf3565b613cf4565b613bf3565b9050919050565b6000613d2b82613cfe565b9050919050565b6000613d3d82613d20565b9050919050565b613d4d81613d32565b82525050565b6000602082019050613d686000830184613d44565b92915050565b613d7781613ac2565b82525050565b6000602082019050613d926000830184613d6e565b92915050565b600060208284031215613dae57613dad613ab8565b5b6000613dbc84828501613ae3565b91505092915050565b600080600060608486031215613dde57613ddd613ab8565b5b6000613dec86828701613c3c565b9350506020613dfd86828701613c3c565b9250506040613e0e86828701613ae3565b9150509250925092565b600060ff82169050919050565b613e2e81613e18565b82525050565b6000602082019050613e496000830184613e25565b92915050565b613e5881613c13565b82525050565b6000602082019050613e736000830184613e4f565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613eb682613b87565b810181811067ffffffffffffffff82111715613ed557613ed4613e7e565b5b80604052505050565b6000613ee8613aae565b9050613ef48282613ead565b919050565b600067ffffffffffffffff821115613f1457613f13613e7e565b5b602082029050602081019050919050565b600080fd5b6000613f3d613f3884613ef9565b613ede565b90508083825260208201905060208402830185811115613f6057613f5f613f25565b5b835b81811015613f895780613f758882613c3c565b845260208401935050602081019050613f62565b5050509392505050565b600082601f830112613fa857613fa7613e79565b5b8135613fb8848260208601613f2a565b91505092915050565b600060208284031215613fd757613fd6613ab8565b5b600082013567ffffffffffffffff811115613ff557613ff4613abd565b5b61400184828501613f93565b91505092915050565b61401381613c91565b811461401e57600080fd5b50565b6000813590506140308161400a565b92915050565b6000806040838503121561404d5761404c613ab8565b5b600061405b85828601613c3c565b925050602061406c85828601614021565b9150509250929050565b6000806040838503121561408d5761408c613ab8565b5b600061409b85828601613c3c565b92505060206140ac85828601613c3c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140ec602083613b43565b91506140f7826140b6565b602082019050919050565b6000602082019050818103600083015261411b816140df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061415c82613ac2565b915061416783613ac2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561419c5761419b614122565b5b828201905092915050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b60006141dd601d83613b43565b91506141e8826141a7565b602082019050919050565b6000602082019050818103600083015261420c816141d0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061425a57607f821691505b6020821081141561426e5761426d614213565b5b50919050565b600061427f82613ac2565b915061428a83613ac2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142c3576142c2614122565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061430882613ac2565b915061431383613ac2565b925082614323576143226142ce565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061438a602f83613b43565b91506143958261432e565b604082019050919050565b600060208201905081810360008301526143b98161437d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061441c602883613b43565b9150614427826143c0565b604082019050919050565b6000602082019050818103600083015261444b8161440f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061448c82613ac2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156144bf576144be614122565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614526603983613b43565b9150614531826144ca565b604082019050919050565b6000602082019050818103600083015261455581614519565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006145b8602583613b43565b91506145c38261455c565b604082019050919050565b600060208201905081810360008301526145e7816145ab565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061464a602483613b43565b9150614655826145ee565b604082019050919050565b600060208201905081810360008301526146798161463d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006146dc603583613b43565b91506146e782614680565b604082019050919050565b6000602082019050818103600083015261470b816146cf565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061476e603483613b43565b915061477982614712565b604082019050919050565b6000602082019050818103600083015261479d81614761565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614800602683613b43565b915061480b826147a4565b604082019050919050565b6000602082019050818103600083015261482f816147f3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614892602483613b43565b915061489d82614836565b604082019050919050565b600060208201905081810360008301526148c181614885565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614924602283613b43565b915061492f826148c8565b604082019050919050565b6000602082019050818103600083015261495381614917565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006149b6602583613b43565b91506149c18261495a565b604082019050919050565b600060208201905081810360008301526149e5816149a9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614a48602383613b43565b9150614a53826149ec565b604082019050919050565b60006020820190508181036000830152614a7781614a3b565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b6000614b00605183613b43565b9150614b0b82614a7e565b606082019050919050565b60006020820190508181036000830152614b2f81614af3565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614b6c601683613b43565b9150614b7782614b36565b602082019050919050565b60006020820190508181036000830152614b9b81614b5f565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614c24604983613b43565b9150614c2f82614ba2565b606082019050919050565b60006020820190508181036000830152614c5381614c17565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614cb6603583613b43565b9150614cc182614c5a565b604082019050919050565b60006020820190508181036000830152614ce581614ca9565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614d22601383613b43565b9150614d2d82614cec565b602082019050919050565b60006020820190508181036000830152614d5181614d15565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614db4603683613b43565b9150614dbf82614d58565b604082019050919050565b60006020820190508181036000830152614de381614da7565b9050919050565b6000614df582613ac2565b9150614e0083613ac2565b925082821015614e1357614e12614122565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614e7a602683613b43565b9150614e8582614e1e565b604082019050919050565b60006020820190508181036000830152614ea981614e6d565b9050919050565b600081905092915050565b50565b6000614ecb600083614eb0565b9150614ed682614ebb565b600082019050919050565b6000614eec82614ebe565b9150819050919050565b6000606082019050614f0b6000830186613d6e565b614f186020830185613d6e565b614f256040830184613d6e565b949350505050565b600081519050614f3c81613c25565b92915050565b600060208284031215614f5857614f57613ab8565b5b6000614f6684828501614f2d565b91505092915050565b6000819050919050565b6000614f94614f8f614f8a84614f6f565b613cf4565b613ac2565b9050919050565b614fa481614f79565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614fdf81613c13565b82525050565b6000614ff18383614fd6565b60208301905092915050565b6000602082019050919050565b600061501582614faa565b61501f8185614fb5565b935061502a83614fc6565b8060005b8381101561505b5781516150428882614fe5565b975061504d83614ffd565b92505060018101905061502e565b5085935050505092915050565b600060a08201905061507d6000830188613d6e565b61508a6020830187614f9b565b818103604083015261509c818661500a565b90506150ab6060830185613e4f565b6150b86080830184613d6e565b9695505050505050565b600060c0820190506150d76000830189613e4f565b6150e46020830188613d6e565b6150f16040830187614f9b565b6150fe6060830186614f9b565b61510b6080830185613e4f565b61511860a0830184613d6e565b979650505050505050565b60008151905061513281613acc565b92915050565b60008060006060848603121561515157615150613ab8565b5b600061515f86828701615123565b935050602061517086828701615123565b925050604061518186828701615123565b915050925092509256fea2646970667358221220772c7218d5e07b86148e04ea47191c5f9c9571566c6391d38183748f066a540364736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c80638a8c523c11610175578063c18bc195116100dc578063dd62ed3e11610095578063f11a24d31161006f578063f11a24d314610ae7578063f2fde38b14610b12578063f637434214610b3b578063f8b45b0514610b66576102b9565b8063dd62ed3e14610a54578063e2f4560514610a91578063e884f26014610abc576102b9565b8063c18bc19514610944578063c876d0b91461096d578063c8c8ebe414610998578063d257b34f146109c3578063d34628cc14610a00578063d85ba06314610a29576102b9565b8063a0d82dc51161012e578063a0d82dc51461080e578063a457c2d714610839578063a9059cbb14610876578063b62496f5146108b3578063bbc0c742146108f0578063c02466681461091b576102b9565b80638a8c523c146107225780638da5cb5b1461073957806395d89b41146107645780639a7a23d61461078f5780639c3b4fdc146107b85780639fccce32146107e3576102b9565b80633bbac579116102195780636c3bbfd7116101d25780636c3bbfd71461062857806370a0823114610651578063715018a61461068e578063751039fc146106a55780637571336a146106d057806382aa7c68146106f9576102b9565b80633bbac5791461050457806349bd5a5e146105415780634a62bb651461056c5780634fbee1931461059757806366ca9b83146105d45780636a486a8e146105fd576102b9565b80631816467f1161026b5780631816467f146103e25780631a8145bb1461040b578063203e727e1461043657806323b872dd1461045f578063313ce5671461049c57806339509351146104c7576102b9565b806302dbd8f8146102be57806306fdde03146102e7578063095ea7b31461031257806310d5de531461034f5780631694505e1461038c57806318160ddd146103b7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e560048036038101906102e09190613af8565b610b91565b005b3480156102f357600080fd5b506102fc610c7b565b6040516103099190613bd1565b60405180910390f35b34801561031e57600080fd5b5061033960048036038101906103349190613c51565b610d0d565b6040516103469190613cac565b60405180910390f35b34801561035b57600080fd5b5061037660048036038101906103719190613cc7565b610d2b565b6040516103839190613cac565b60405180910390f35b34801561039857600080fd5b506103a1610d4b565b6040516103ae9190613d53565b60405180910390f35b3480156103c357600080fd5b506103cc610d6f565b6040516103d99190613d7d565b60405180910390f35b3480156103ee57600080fd5b5061040960048036038101906104049190613cc7565b610d79565b005b34801561041757600080fd5b50610420610eb5565b60405161042d9190613d7d565b60405180910390f35b34801561044257600080fd5b5061045d60048036038101906104589190613d98565b610ebb565b005b34801561046b57600080fd5b5061048660048036038101906104819190613dc5565b610fca565b6040516104939190613cac565b60405180910390f35b3480156104a857600080fd5b506104b16110e9565b6040516104be9190613e34565b60405180910390f35b3480156104d357600080fd5b506104ee60048036038101906104e99190613c51565b6110f2565b6040516104fb9190613cac565b60405180910390f35b34801561051057600080fd5b5061052b60048036038101906105269190613cc7565b61119e565b6040516105389190613cac565b60405180910390f35b34801561054d57600080fd5b506105566111be565b6040516105639190613e5e565b60405180910390f35b34801561057857600080fd5b506105816111e2565b60405161058e9190613cac565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b99190613cc7565b6111f5565b6040516105cb9190613cac565b60405180910390f35b3480156105e057600080fd5b506105fb60048036038101906105f69190613af8565b61124b565b005b34801561060957600080fd5b50610612611335565b60405161061f9190613d7d565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a9190613fc1565b61133b565b005b34801561065d57600080fd5b5061067860048036038101906106739190613cc7565b61144c565b6040516106859190613d7d565b60405180910390f35b34801561069a57600080fd5b506106a3611494565b005b3480156106b157600080fd5b506106ba61151c565b6040516106c79190613cac565b60405180910390f35b3480156106dc57600080fd5b506106f760048036038101906106f29190614036565b6115bc565b005b34801561070557600080fd5b50610720600480360381019061071b9190613d98565b611693565b005b34801561072e57600080fd5b50610737611746565b005b34801561074557600080fd5b5061074e6117f9565b60405161075b9190613e5e565b60405180910390f35b34801561077057600080fd5b50610779611823565b6040516107869190613bd1565b60405180910390f35b34801561079b57600080fd5b506107b660048036038101906107b19190614036565b6118b5565b005b3480156107c457600080fd5b506107cd6119ce565b6040516107da9190613d7d565b60405180910390f35b3480156107ef57600080fd5b506107f86119d4565b6040516108059190613d7d565b60405180910390f35b34801561081a57600080fd5b506108236119da565b6040516108309190613d7d565b60405180910390f35b34801561084557600080fd5b50610860600480360381019061085b9190613c51565b6119e0565b60405161086d9190613cac565b60405180910390f35b34801561088257600080fd5b5061089d60048036038101906108989190613c51565b611acb565b6040516108aa9190613cac565b60405180910390f35b3480156108bf57600080fd5b506108da60048036038101906108d59190613cc7565b611ae9565b6040516108e79190613cac565b60405180910390f35b3480156108fc57600080fd5b50610905611b09565b6040516109129190613cac565b60405180910390f35b34801561092757600080fd5b50610942600480360381019061093d9190614036565b611b1c565b005b34801561095057600080fd5b5061096b60048036038101906109669190613d98565b611bf3565b005b34801561097957600080fd5b50610982611d02565b60405161098f9190613cac565b60405180910390f35b3480156109a457600080fd5b506109ad611d15565b6040516109ba9190613d7d565b60405180910390f35b3480156109cf57600080fd5b506109ea60048036038101906109e59190613d98565b611d1b565b6040516109f79190613cac565b60405180910390f35b348015610a0c57600080fd5b50610a276004803603810190610a229190613fc1565b611e70565b005b348015610a3557600080fd5b50610a3e612063565b604051610a4b9190613d7d565b60405180910390f35b348015610a6057600080fd5b50610a7b6004803603810190610a769190614076565b612069565b604051610a889190613d7d565b60405180910390f35b348015610a9d57600080fd5b50610aa66120f0565b604051610ab39190613d7d565b60405180910390f35b348015610ac857600080fd5b50610ad16120f6565b604051610ade9190613cac565b60405180910390f35b348015610af357600080fd5b50610afc612196565b604051610b099190613d7d565b60405180910390f35b348015610b1e57600080fd5b50610b396004803603810190610b349190613cc7565b61219c565b005b348015610b4757600080fd5b50610b50612294565b604051610b5d9190613d7d565b60405180910390f35b348015610b7257600080fd5b50610b7b61229a565b604051610b889190613d7d565b60405180910390f35b610b996122a0565b73ffffffffffffffffffffffffffffffffffffffff16610bb76117f9565b73ffffffffffffffffffffffffffffffffffffffff1614610c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0490614102565b60405180910390fd5b8160148190555080601581905550601554601454610c2b9190614151565b601381905550600f6013541115610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e906141f3565b60405180910390fd5b5050565b606060038054610c8a90614242565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb690614242565b8015610d035780601f10610cd857610100808354040283529160200191610d03565b820191906000526020600020905b815481529060010190602001808311610ce657829003601f168201915b5050505050905090565b6000610d21610d1a6122a0565b84846122a8565b6001905092915050565b60196020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610d816122a0565b73ffffffffffffffffffffffffffffffffffffffff16610d9f6117f9565b73ffffffffffffffffffffffffffffffffffffffff1614610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dec90614102565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b610ec36122a0565b73ffffffffffffffffffffffffffffffffffffffff16610ee16117f9565b73ffffffffffffffffffffffffffffffffffffffff1614610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e90614102565b60405180910390fd5b670de0b6b3a76400006103e86001610f4d610d6f565b610f579190614274565b610f6191906142fd565b610f6b91906142fd565b811015610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa4906143a0565b60405180910390fd5b670de0b6b3a764000081610fc19190614274565b600a8190555050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110166122a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110d257828110156110bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b490614432565b60405180910390fd5b6110d1856110c96122a0565b8584036122a8565b5b6110dd858585612473565b60019150509392505050565b60006012905090565b60006111946110ff6122a0565b84846001600061110d6122a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461118f9190614151565b6122a8565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000397a8dbab2a157e89172a00d2c8ee0edf0b30c1b81565b600d60009054906101000a900460ff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6112536122a0565b73ffffffffffffffffffffffffffffffffffffffff166112716117f9565b73ffffffffffffffffffffffffffffffffffffffff16146112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be90614102565b60405180910390fd5b81601181905550806012819055506012546011546112e59190614151565b601081905550600f6010541115611331576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611328906141f3565b60405180910390fd5b5050565b60135481565b6113436122a0565b73ffffffffffffffffffffffffffffffffffffffff166113616117f9565b73ffffffffffffffffffffffffffffffffffffffff16146113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ae90614102565b60405180910390fd5b60005b8151811015611448576000600660008484815181106113dc576113db614452565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061144090614481565b9150506113ba565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61149c6122a0565b73ffffffffffffffffffffffffffffffffffffffff166114ba6117f9565b73ffffffffffffffffffffffffffffffffffffffff1614611510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150790614102565b60405180910390fd5b61151a600061317f565b565b60006115266122a0565b73ffffffffffffffffffffffffffffffffffffffff166115446117f9565b73ffffffffffffffffffffffffffffffffffffffff161461159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159190614102565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055506001905090565b6115c46122a0565b73ffffffffffffffffffffffffffffffffffffffff166115e26117f9565b73ffffffffffffffffffffffffffffffffffffffff1614611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162f90614102565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61169b6122a0565b73ffffffffffffffffffffffffffffffffffffffff166116b96117f9565b73ffffffffffffffffffffffffffffffffffffffff161461170f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170690614102565b60405180910390fd5b6001600d60016101000a81548160ff02191690831515021790555061173d814261324590919063ffffffff16565b60088190555050565b61174e6122a0565b73ffffffffffffffffffffffffffffffffffffffff1661176c6117f9565b73ffffffffffffffffffffffffffffffffffffffff16146117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b990614102565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506117f160024261324590919063ffffffff16565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461183290614242565b80601f016020809104026020016040519081016040528092919081815260200182805461185e90614242565b80156118ab5780601f10611880576101008083540402835291602001916118ab565b820191906000526020600020905b81548152906001019060200180831161188e57829003601f168201915b5050505050905090565b6118bd6122a0565b73ffffffffffffffffffffffffffffffffffffffff166118db6117f9565b73ffffffffffffffffffffffffffffffffffffffff1614611931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192890614102565b60405180910390fd5b7f000000000000000000000000397a8dbab2a157e89172a00d2c8ee0edf0b30c1b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b79061453c565b60405180910390fd5b6119ca828261325b565b5050565b60125481565b60175481565b60155481565b600080600160006119ef6122a0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa3906145ce565b60405180910390fd5b611ac0611ab76122a0565b858584036122a8565b600191505092915050565b6000611adf611ad86122a0565b8484612473565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b600d60019054906101000a900460ff1681565b611b246122a0565b73ffffffffffffffffffffffffffffffffffffffff16611b426117f9565b73ffffffffffffffffffffffffffffffffffffffff1614611b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8f90614102565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611bfb6122a0565b73ffffffffffffffffffffffffffffffffffffffff16611c196117f9565b73ffffffffffffffffffffffffffffffffffffffff1614611c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6690614102565b60405180910390fd5b670de0b6b3a76400006103e86005611c85610d6f565b611c8f9190614274565b611c9991906142fd565b611ca391906142fd565b811015611ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdc90614660565b60405180910390fd5b670de0b6b3a764000081611cf99190614274565b600c8190555050565b600f60009054906101000a900460ff1681565b600a5481565b6000611d256122a0565b73ffffffffffffffffffffffffffffffffffffffff16611d436117f9565b73ffffffffffffffffffffffffffffffffffffffff1614611d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9090614102565b60405180910390fd5b620186a06001611da7610d6f565b611db19190614274565b611dbb91906142fd565b821015611dfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df4906146f2565b60405180910390fd5b6103e86005611e0a610d6f565b611e149190614274565b611e1e91906142fd565b821115611e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5790614784565b60405180910390fd5b81600b8190555060019050919050565b611e786122a0565b73ffffffffffffffffffffffffffffffffffffffff16611e966117f9565b73ffffffffffffffffffffffffffffffffffffffff1614611eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee390614102565b60405180910390fd5b60005b815181101561205f577f000000000000000000000000397a8dbab2a157e89172a00d2c8ee0edf0b30c1b73ffffffffffffffffffffffffffffffffffffffff16828281518110611f4257611f41614452565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015611fd457507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16828281518110611fb357611fb2614452565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b1561204c57600160066000848481518110611ff257611ff1614452565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b808061205790614481565b915050611eef565b5050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b60006121006122a0565b73ffffffffffffffffffffffffffffffffffffffff1661211e6117f9565b73ffffffffffffffffffffffffffffffffffffffff1614612174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216b90614102565b60405180910390fd5b6000600f60006101000a81548160ff0219169083151502179055506001905090565b60115481565b6121a46122a0565b73ffffffffffffffffffffffffffffffffffffffff166121c26117f9565b73ffffffffffffffffffffffffffffffffffffffff1614612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220f90614102565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227f90614816565b60405180910390fd5b6122918161317f565b50565b60145481565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612318576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230f906148a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237f9061493a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124669190613d7d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124da906149cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254a90614a5e565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156125e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d790614b16565b60405180910390fd5b60008114156125fa576125f5838360006132b6565b61317a565b60085442101561265d576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600d60009054906101000a900460ff1615612d205761267a6117f9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126e857506126b86117f9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127215750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561275b575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127745750600760009054906101000a900460ff16155b15612d1f57600d60019054906101000a900460ff1661286e57601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061282e5750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61286d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286490614b82565b60405180910390fd5b5b600f60009054906101000a900460ff1615612a365761288b6117f9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561291257507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561296a57507f000000000000000000000000397a8dbab2a157e89172a00d2c8ee0edf0b30c1b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a355743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106129f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e790614c3a565b60405180910390fd5b43600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ad95750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b8057600a54811115612b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1a90614ccc565b60405180910390fd5b600c54612b2f8361144c565b82612b3a9190614151565b1115612b7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7290614d38565b60405180910390fd5b612d1e565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c235750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c7257600a54811115612c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6490614dca565b60405180910390fd5b612d1d565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d1c57600c54612ccf8361144c565b82612cda9190614151565b1115612d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1290614d38565b60405180910390fd5b5b5b5b5b5b6000612d2b3061144c565b90506000600b548210159050808015612d515750600760009054906101000a900460ff16155b8015612da75750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dfd5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e535750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e97576001600760006101000a81548160ff021916908315150217905550612e7b613537565b6000600760006101000a81548160ff0219169083151502179055505b6000600760009054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f4d5750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f5757600090505b6000811561316a57601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fba57506000601354115b1561305457612fe76064612fd96013548861374490919063ffffffff16565b61375a90919063ffffffff16565b905060135460145482612ffa9190614274565b61300491906142fd565b601660008282546130159190614151565b925050819055506013546015548261302d9190614274565b61303791906142fd565b601760008282546130489190614151565b92505081905550613146565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130af57506000601054115b15613145576130dc60646130ce6010548861374490919063ffffffff16565b61375a90919063ffffffff16565b9050601054601154826130ef9190614274565b6130f991906142fd565b6016600082825461310a9190614151565b92505081905550601054601254826131229190614274565b61312c91906142fd565b6017600082825461313d9190614151565b925050819055505b5b600081111561315b5761315a8730836132b6565b5b80856131679190614dea565b94505b6131758787876132b6565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836132539190614151565b905092915050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161331d906149cc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338d90614a5e565b60405180910390fd5b6133a1838383613770565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341e90614e90565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134ba9190614151565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161351e9190613d7d565b60405180910390a3613531848484613775565b50505050565b60006135423061144c565b905060006017546016546135569190614151565b90506000808314806135685750600082145b1561357557505050613742565b6014600b546135849190614274565b83111561359d576014600b5461359a9190614274565b92505b6000600283601654866135b09190614274565b6135ba91906142fd565b6135c491906142fd565b905060006135db828661377a90919063ffffffff16565b905060004790506135eb82613790565b6000613600824761377a90919063ffffffff16565b9050600061362b8761361d6017548561374490919063ffffffff16565b61375a90919063ffffffff16565b90506000818361363b9190614dea565b905060006016819055506000601781905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161369390614ee1565b60006040518083038185875af1925050503d80600081146136d0576040519150601f19603f3d011682016040523d82523d6000602084013e6136d5565b606091505b5050809750506000861180156136eb5750600081115b15613738576136fa86826139cd565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260165460405161372f93929190614ef6565b60405180910390a15b5050505050505050505b565b600081836137529190614274565b905092915050565b6000818361376891906142fd565b905092915050565b505050565b505050565b600081836137889190614dea565b905092915050565b6000600267ffffffffffffffff8111156137ad576137ac613e7e565b5b6040519080825280602002602001820160405280156137db5781602001602082028036833780820191505090505b50905030816000815181106137f3576137f2614452565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613898573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138bc9190614f42565b816001815181106138d0576138cf614452565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613935307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846122a8565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613997959493929190615068565b600060405180830381600087803b1580156139b157600080fd5b505af11580156139c5573d6000803e3d6000fd5b505050505050565b6139f8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846122a8565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613a426117f9565b426040518863ffffffff1660e01b8152600401613a64969594939291906150c2565b60606040518083038185885af1158015613a82573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613aa79190615138565b5050505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613ad581613ac2565b8114613ae057600080fd5b50565b600081359050613af281613acc565b92915050565b60008060408385031215613b0f57613b0e613ab8565b5b6000613b1d85828601613ae3565b9250506020613b2e85828601613ae3565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b72578082015181840152602081019050613b57565b83811115613b81576000848401525b50505050565b6000601f19601f8301169050919050565b6000613ba382613b38565b613bad8185613b43565b9350613bbd818560208601613b54565b613bc681613b87565b840191505092915050565b60006020820190508181036000830152613beb8184613b98565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c1e82613bf3565b9050919050565b613c2e81613c13565b8114613c3957600080fd5b50565b600081359050613c4b81613c25565b92915050565b60008060408385031215613c6857613c67613ab8565b5b6000613c7685828601613c3c565b9250506020613c8785828601613ae3565b9150509250929050565b60008115159050919050565b613ca681613c91565b82525050565b6000602082019050613cc16000830184613c9d565b92915050565b600060208284031215613cdd57613cdc613ab8565b5b6000613ceb84828501613c3c565b91505092915050565b6000819050919050565b6000613d19613d14613d0f84613bf3565b613cf4565b613bf3565b9050919050565b6000613d2b82613cfe565b9050919050565b6000613d3d82613d20565b9050919050565b613d4d81613d32565b82525050565b6000602082019050613d686000830184613d44565b92915050565b613d7781613ac2565b82525050565b6000602082019050613d926000830184613d6e565b92915050565b600060208284031215613dae57613dad613ab8565b5b6000613dbc84828501613ae3565b91505092915050565b600080600060608486031215613dde57613ddd613ab8565b5b6000613dec86828701613c3c565b9350506020613dfd86828701613c3c565b9250506040613e0e86828701613ae3565b9150509250925092565b600060ff82169050919050565b613e2e81613e18565b82525050565b6000602082019050613e496000830184613e25565b92915050565b613e5881613c13565b82525050565b6000602082019050613e736000830184613e4f565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613eb682613b87565b810181811067ffffffffffffffff82111715613ed557613ed4613e7e565b5b80604052505050565b6000613ee8613aae565b9050613ef48282613ead565b919050565b600067ffffffffffffffff821115613f1457613f13613e7e565b5b602082029050602081019050919050565b600080fd5b6000613f3d613f3884613ef9565b613ede565b90508083825260208201905060208402830185811115613f6057613f5f613f25565b5b835b81811015613f895780613f758882613c3c565b845260208401935050602081019050613f62565b5050509392505050565b600082601f830112613fa857613fa7613e79565b5b8135613fb8848260208601613f2a565b91505092915050565b600060208284031215613fd757613fd6613ab8565b5b600082013567ffffffffffffffff811115613ff557613ff4613abd565b5b61400184828501613f93565b91505092915050565b61401381613c91565b811461401e57600080fd5b50565b6000813590506140308161400a565b92915050565b6000806040838503121561404d5761404c613ab8565b5b600061405b85828601613c3c565b925050602061406c85828601614021565b9150509250929050565b6000806040838503121561408d5761408c613ab8565b5b600061409b85828601613c3c565b92505060206140ac85828601613c3c565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140ec602083613b43565b91506140f7826140b6565b602082019050919050565b6000602082019050818103600083015261411b816140df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061415c82613ac2565b915061416783613ac2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561419c5761419b614122565b5b828201905092915050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b60006141dd601d83613b43565b91506141e8826141a7565b602082019050919050565b6000602082019050818103600083015261420c816141d0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061425a57607f821691505b6020821081141561426e5761426d614213565b5b50919050565b600061427f82613ac2565b915061428a83613ac2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142c3576142c2614122565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061430882613ac2565b915061431383613ac2565b925082614323576143226142ce565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b600061438a602f83613b43565b91506143958261432e565b604082019050919050565b600060208201905081810360008301526143b98161437d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061441c602883613b43565b9150614427826143c0565b604082019050919050565b6000602082019050818103600083015261444b8161440f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061448c82613ac2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156144bf576144be614122565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614526603983613b43565b9150614531826144ca565b604082019050919050565b6000602082019050818103600083015261455581614519565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006145b8602583613b43565b91506145c38261455c565b604082019050919050565b600060208201905081810360008301526145e7816145ab565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b600061464a602483613b43565b9150614655826145ee565b604082019050919050565b600060208201905081810360008301526146798161463d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006146dc603583613b43565b91506146e782614680565b604082019050919050565b6000602082019050818103600083015261470b816146cf565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061476e603483613b43565b915061477982614712565b604082019050919050565b6000602082019050818103600083015261479d81614761565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614800602683613b43565b915061480b826147a4565b604082019050919050565b6000602082019050818103600083015261482f816147f3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614892602483613b43565b915061489d82614836565b604082019050919050565b600060208201905081810360008301526148c181614885565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614924602283613b43565b915061492f826148c8565b604082019050919050565b6000602082019050818103600083015261495381614917565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006149b6602583613b43565b91506149c18261495a565b604082019050919050565b600060208201905081810360008301526149e5816149a9565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614a48602383613b43565b9150614a53826149ec565b604082019050919050565b60006020820190508181036000830152614a7781614a3b565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120626f742f736e697065722c20796f752061726520756e61626c6520746f2060208201527f7472616e73666572206f7220737761702e000000000000000000000000000000604082015250565b6000614b00605183613b43565b9150614b0b82614a7e565b606082019050919050565b60006020820190508181036000830152614b2f81614af3565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614b6c601683613b43565b9150614b7782614b36565b602082019050919050565b60006020820190508181036000830152614b9b81614b5f565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614c24604983613b43565b9150614c2f82614ba2565b606082019050919050565b60006020820190508181036000830152614c5381614c17565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614cb6603583613b43565b9150614cc182614c5a565b604082019050919050565b60006020820190508181036000830152614ce581614ca9565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614d22601383613b43565b9150614d2d82614cec565b602082019050919050565b60006020820190508181036000830152614d5181614d15565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614db4603683613b43565b9150614dbf82614d58565b604082019050919050565b60006020820190508181036000830152614de381614da7565b9050919050565b6000614df582613ac2565b9150614e0083613ac2565b925082821015614e1357614e12614122565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614e7a602683613b43565b9150614e8582614e1e565b604082019050919050565b60006020820190508181036000830152614ea981614e6d565b9050919050565b600081905092915050565b50565b6000614ecb600083614eb0565b9150614ed682614ebb565b600082019050919050565b6000614eec82614ebe565b9150819050919050565b6000606082019050614f0b6000830186613d6e565b614f186020830185613d6e565b614f256040830184613d6e565b949350505050565b600081519050614f3c81613c25565b92915050565b600060208284031215614f5857614f57613ab8565b5b6000614f6684828501614f2d565b91505092915050565b6000819050919050565b6000614f94614f8f614f8a84614f6f565b613cf4565b613ac2565b9050919050565b614fa481614f79565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614fdf81613c13565b82525050565b6000614ff18383614fd6565b60208301905092915050565b6000602082019050919050565b600061501582614faa565b61501f8185614fb5565b935061502a83614fc6565b8060005b8381101561505b5781516150428882614fe5565b975061504d83614ffd565b92505060018101905061502e565b5085935050505092915050565b600060a08201905061507d6000830188613d6e565b61508a6020830187614f9b565b818103604083015261509c818661500a565b90506150ab6060830185613e4f565b6150b86080830184613d6e565b9695505050505050565b600060c0820190506150d76000830189613e4f565b6150e46020830188613d6e565b6150f16040830187614f9b565b6150fe6060830186614f9b565b61510b6080830185613e4f565b61511860a0830184613d6e565b979650505050505050565b60008151905061513281613acc565b92915050565b60008060006060848603121561515157615150613ab8565b5b600061515f86828701615123565b935050602061517086828701615123565b925050604061518186828701615123565b915050925092509256fea2646970667358221220772c7218d5e07b86148e04ea47191c5f9c9571566c6391d38183748f066a540364736f6c634300080b0033

Deployed Bytecode Sourcemap

11744:14071:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17480:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3048:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3962:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12945:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11819:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3369:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18538:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12724:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16566:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4139:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3268:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4720:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11924:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11877;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12195:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18706:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17185:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12616:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19122:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3485:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10527:103;;;;;;;;;;;;;:::i;:::-;;15776:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17029:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18237:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15591:130;;;;;;;;;;;;;:::i;:::-;;10304:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3156:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17921:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12582:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12764:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12689:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4943:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3620:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13167:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12235:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17781:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16806:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12459:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12072:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16172:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18843:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12511:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3803:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12114:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15962:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12545:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10638:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12651:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12154:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17480:293;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17593:13:::1;17574:16;:32;;;;17630:7;17617:10;:20;;;;17683:10;;17664:16;;:29;;;;:::i;:::-;17648:13;:45;;;;17729:2;17712:13;;:19;;17704:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17480:293:::0;;:::o;3048:100::-;3102:13;3135:5;3128:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3048:100;:::o;3962:169::-;4045:4;4062:39;4071:12;:10;:12::i;:::-;4085:7;4094:6;4062:8;:39::i;:::-;4119:4;4112:11;;3962:169;;;;:::o;12945:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;11819:51::-;;;:::o;3369:108::-;3430:7;3457:12;;3450:19;;3369:108;:::o;18538:157::-;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18645:9:::1;;;;;;;;;;;18617:38;;18634:9;18617:38;;;;;;;;;;;;18678:9;18666;;:21;;;;;;;;;;;;;;;;;;18538:157:::0;:::o;12724:33::-;;;;:::o;16566:232::-;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16687:4:::1;16679;16675:1;16659:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16658:33;;;;:::i;:::-;16648:6;:43;;16640:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;16786:4;16777:6;:13;;;;:::i;:::-;16754:20;:36;;;;16566:232:::0;:::o;4139:573::-;4279:4;4296:24;4323:11;:19;4335:6;4323:19;;;;;;;;;;;;;;;:33;4343:12;:10;:12::i;:::-;4323:33;;;;;;;;;;;;;;;;4296:60;;4391:17;4371:16;:37;4367:265;;4453:6;4433:16;:26;;4425:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4548:57;4557:6;4565:12;:10;:12::i;:::-;4598:6;4579:16;:25;4548:8;:57::i;:::-;4367:265;4644:36;4654:6;4662:9;4673:6;4644:9;:36::i;:::-;4700:4;4693:11;;;4139:573;;;;;:::o;3268:93::-;3326:5;3351:2;3344:9;;3268:93;:::o;4720:215::-;4808:4;4825:80;4834:12;:10;:12::i;:::-;4848:7;4894:10;4857:11;:25;4869:12;:10;:12::i;:::-;4857:25;;;;;;;;;;;;;;;:34;4883:7;4857:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4825:8;:80::i;:::-;4923:4;4916:11;;4720:215;;;;:::o;11924:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;11877:::-;;;:::o;12195:33::-;;;;;;;;;;;;;:::o;18706:125::-;18771:4;18795:19;:28;18815:7;18795:28;;;;;;;;;;;;;;;;;;;;;;;;;18788:35;;18706:125;;;:::o;17185:286::-;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17296:13:::1;17278:15;:31;;;;17332:7;17320:9;:19;;;;17383:9;;17365:15;;:27;;;;:::i;:::-;17350:12;:42;;;;17427:2;17411:12;;:18;;17403:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;17185:286:::0;;:::o;12616:28::-;;;;:::o;19122:168::-;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19200:6:::1;19195:88;19216:4;:11;19212:1;:15;19195:88;;;19266:5;19249;:14;19255:4;19260:1;19255:7;;;;;;;;:::i;:::-;;;;;;;;19249:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;19229:3;;;;;:::i;:::-;;;;19195:88;;;;19122:168:::0;:::o;3485:127::-;3559:7;3586:9;:18;3596:7;3586:18;;;;;;;;;;;;;;;;3579:25;;3485:127;;;:::o;10527:103::-;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10592:30:::1;10619:1;10592:18;:30::i;:::-;10527:103::o:0;15776:121::-;15828:4;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15862:5:::1;15845:14;;:22;;;;;;;;;;;;;;;;;;15885:4;15878:11;;15776:121:::0;:::o;17029:144::-;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17161:4:::1;17119:31;:39;17151:6;17119:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17029:144:::0;;:::o;18237:149::-;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18322:4:::1;18306:13;;:20;;;;;;;;;;;;;;;;;;18351:27;18371:6;18351:15;:19;;:27;;;;:::i;:::-;18337:11;:41;;;;18237:149:::0;:::o;15591:130::-;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15662:4:::1;15646:13;;:20;;;;;;;;;;;;;;;;;;15691:22;15711:1;15691:15;:19;;:22;;;;:::i;:::-;15677:11;:36;;;;15591:130::o:0;10304:87::-;10350:7;10377:6;;;;;;;;;;;10370:13;;10304:87;:::o;3156:104::-;3212:13;3245:7;3238:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3156:104;:::o;17921:244::-;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18028:13:::1;18020:21;;:4;:21;;;;18012:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;18116:41;18145:4;18151:5;18116:28;:41::i;:::-;17921:244:::0;;:::o;12582:24::-;;;;:::o;12764:27::-;;;;:::o;12689:25::-;;;;:::o;4943:413::-;5036:4;5053:24;5080:11;:25;5092:12;:10;:12::i;:::-;5080:25;;;;;;;;;;;;;;;:34;5106:7;5080:34;;;;;;;;;;;;;;;;5053:61;;5153:15;5133:16;:35;;5125:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5246:67;5255:12;:10;:12::i;:::-;5269:7;5297:15;5278:16;:34;5246:8;:67::i;:::-;5344:4;5337:11;;;4943:413;;;;:::o;3620:175::-;3706:4;3723:42;3733:12;:10;:12::i;:::-;3747:9;3758:6;3723:9;:42::i;:::-;3783:4;3776:11;;3620:175;;;;:::o;13167:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;12235:33::-;;;;;;;;;;;;;:::o;17781:132::-;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17897:8:::1;17866:19;:28;17886:7;17866:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17781:132:::0;;:::o;16806:211::-;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16928:4:::1;16922;16918:1;16902:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16901:31;;;;:::i;:::-;16891:6;:41;;16883:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;17005:4;16996:6;:13;;;;:::i;:::-;16984:9;:25;;;;16806:211:::0;:::o;12459:39::-;;;;;;;;;;;;;:::o;12072:35::-;;;;:::o;16172:382::-;16253:4;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16310:6:::1;16306:1;16290:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;16277:9;:39;;16269:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;16425:4;16421:1;16405:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;16392:9;:37;;16384:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;16517:9;16496:18;:30;;;;16543:4;16536:11;;16172:382:::0;;;:::o;18843:267::-;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18918:6:::1;18913:190;18934:4;:11;18930:1;:15;18913:190;;;18982:13;18971:24;;:4;18976:1;18971:7;;;;;;;;:::i;:::-;;;;;;;;:24;;;;:63;;;;;19018:15;18999:35;;:4;19004:1;18999:7;;;;;;;;:::i;:::-;;;;;;;;:35;;;;18971:63;18967:125;;;19072:4;19055:5;:14;19061:4;19066:1;19061:7;;;;;;;;:::i;:::-;;;;;;;;19055:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;18967:125;18947:3;;;;;:::i;:::-;;;;18913:190;;;;18843:267:::0;:::o;12511:27::-;;;;:::o;3803:151::-;3892:7;3919:11;:18;3931:5;3919:18;;;;;;;;;;;;;;;:27;3938:7;3919:27;;;;;;;;;;;;;;;;3912:34;;3803:151;;;;:::o;12114:33::-;;;;:::o;15962:135::-;16022:4;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16062:5:::1;16039:20;;:28;;;;;;;;;;;;;;;;;;16085:4;16078:11;;15962:135:::0;:::o;12545:30::-;;;;:::o;10638:201::-;10450:12;:10;:12::i;:::-;10439:23;;:7;:5;:7::i;:::-;:23;;;10431:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10747:1:::1;10727:22;;:8;:22;;;;10719:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10803:28;10822:8;10803:18;:28::i;:::-;10638:201:::0;:::o;12651:31::-;;;;:::o;12154:24::-;;;;:::o;142:98::-;195:7;222:10;215:17;;142:98;:::o;7111:380::-;7264:1;7247:19;;:5;:19;;;;7239:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7345:1;7326:21;;:7;:21;;;;7318:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7429:6;7399:11;:18;7411:5;7399:18;;;;;;;;;;;;;;;:27;7418:7;7399:27;;;;;;;;;;;;;;;:36;;;;7467:7;7451:32;;7460:5;7451:32;;;7476:6;7451:32;;;;;;:::i;:::-;;;;;;;;7111:380;;;:::o;19298:4068::-;19446:1;19430:18;;:4;:18;;;;19422:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19523:1;19509:16;;:2;:16;;;;19501:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19585:5;:11;19591:4;19585:11;;;;;;;;;;;;;;;;;;;;;;;;;19584:12;19576:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;19718:1;19708:6;:11;19704:93;;;19736:28;19752:4;19758:2;19762:1;19736:15;:28::i;:::-;19779:7;;19704:93;19839:11;;19821:15;:29;19817:51;;;19864:4;19852:5;:9;19858:2;19852:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;19817:51;19893:14;;;;;;;;;;;19889:1834;;;19954:7;:5;:7::i;:::-;19946:15;;:4;:15;;;;:49;;;;;19988:7;:5;:7::i;:::-;19982:13;;:2;:13;;;;19946:49;:86;;;;;20030:1;20016:16;;:2;:16;;;;19946:86;:128;;;;;20067:6;20053:21;;:2;:21;;;;19946:128;:159;;;;;20096:9;;;;;;;;;;;20095:10;19946:159;19924:1788;;;20145:13;;;;;;;;;;;20140:150;;20191:19;:25;20211:4;20191:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20220:19;:23;20240:2;20220:23;;;;;;;;;;;;;;;;;;;;;;;;;20191:52;20183:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;20140:150;20448:20;;;;;;;;;;;20444:423;;;20502:7;:5;:7::i;:::-;20496:13;;:2;:13;;;;:47;;;;;20527:15;20513:30;;:2;:30;;;;20496:47;:79;;;;;20561:13;20547:28;;:2;:28;;;;20496:79;20492:356;;;20653:12;20611:28;:39;20640:9;20611:39;;;;;;;;;;;;;;;;:54;20603:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;20812:12;20770:28;:39;20799:9;20770:39;;;;;;;;;;;;;;;:54;;;;20492:356;20444:423;20935:25;:31;20961:4;20935:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20971:31;:35;21003:2;20971:35;;;;;;;;;;;;;;;;;;;;;;;;;20970:36;20935:71;20931:766;;;21049:20;;21039:6;:30;;21031:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;21184:9;;21167:13;21177:2;21167:9;:13::i;:::-;21158:6;:22;;;;:::i;:::-;:35;;21150:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20931:766;;;21310:25;:29;21336:2;21310:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;21344:31;:37;21376:4;21344:37;;;;;;;;;;;;;;;;;;;;;;;;;21343:38;21310:71;21306:391;;;21424:20;;21414:6;:30;;21406:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;21306:391;;;21551:31;:35;21583:2;21551:35;;;;;;;;;;;;;;;;;;;;;;;;;21546:151;;21644:9;;21627:13;21637:2;21627:9;:13::i;:::-;21618:6;:22;;;;:::i;:::-;:35;;21610:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21546:151;21306:391;20931:766;19924:1788;19889:1834;21737:28;21768:24;21786:4;21768:9;:24::i;:::-;21737:55;;21803:12;21842:18;;21818:20;:42;;21803:57;;21891:7;:34;;;;;21916:9;;;;;;;;;;;21915:10;21891:34;:83;;;;;21943:25;:31;21969:4;21943:31;;;;;;;;;;;;;;;;;;;;;;;;;21942:32;21891:83;:126;;;;;21992:19;:25;22012:4;21992:25;;;;;;;;;;;;;;;;;;;;;;;;;21991:26;21891:126;:167;;;;;22035:19;:23;22055:2;22035:23;;;;;;;;;;;;;;;;;;;;;;;;;22034:24;21891:167;21873:297;;;22097:4;22085:9;;:16;;;;;;;;;;;;;;;;;;22116:10;:8;:10::i;:::-;22153:5;22141:9;;:17;;;;;;;;;;;;;;;;;;21873:297;22182:12;22198:9;;;;;;;;;;;22197:10;22182:25;;22309:19;:25;22329:4;22309:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22338:19;:23;22358:2;22338:23;;;;;;;;;;;;;;;;;;;;;;;;;22309:52;22305:73;;;22373:5;22363:15;;22305:73;22409:12;22514:7;22510:803;;;22566:25;:29;22592:2;22566:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;22615:1;22599:13;;:17;22566:50;22562:596;;;22643:34;22673:3;22643:25;22654:13;;22643:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;22636:41;;22744:13;;22725:16;;22718:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;22696:18;;:61;;;;;;;:::i;:::-;;;;;;;;22812:13;;22799:10;;22792:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;22776:12;;:49;;;;;;;:::i;:::-;;;;;;;;22562:596;;;22886:25;:31;22912:4;22886:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;22936:1;22921:12;;:16;22886:51;22883:275;;;22965:33;22994:3;22965:24;22976:12;;22965:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;22958:40;;23064:12;;23046:15;;23039:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;23017:18;;:59;;;;;;;:::i;:::-;;;;;;;;23130:12;;23118:9;;23111:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;23095:12;;:47;;;;;;;:::i;:::-;;;;;;;;22883:275;22562:596;23185:1;23178:4;:8;23174:91;;;23207:42;23223:4;23237;23244;23207:15;:42::i;:::-;23174:91;23297:4;23287:14;;;;;:::i;:::-;;;22510:803;23325:33;23341:4;23347:2;23351:6;23325:15;:33::i;:::-;19411:3955;;;;19298:4068;;;;:::o;10847:191::-;10921:16;10940:6;;;;;;;;;;;10921:25;;10966:8;10957:6;;:17;;;;;;;;;;;;;;;;;;11021:8;10990:40;;11011:8;10990:40;;;;;;;;;;;;10910:128;10847:191;:::o;8901:98::-;8959:7;8990:1;8986;:5;;;;:::i;:::-;8979:12;;8901:98;;;;:::o;18394:130::-;18511:5;18477:25;:31;18503:4;18477:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18394:130;;:::o;5364:733::-;5522:1;5504:20;;:6;:20;;;;5496:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5606:1;5585:23;;:9;:23;;;;5577:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5661:47;5682:6;5690:9;5701:6;5661:20;:47::i;:::-;5721:21;5745:9;:17;5755:6;5745:17;;;;;;;;;;;;;;;;5721:41;;5798:6;5781:13;:23;;5773:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5919:6;5903:13;:22;5883:9;:17;5893:6;5883:17;;;;;;;;;;;;;;;:42;;;;5971:6;5947:9;:20;5957:9;5947:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6012:9;5995:35;;6004:6;5995:35;;;6023:6;5995:35;;;;;;:::i;:::-;;;;;;;;6043:46;6063:6;6071:9;6082:6;6043:19;:46::i;:::-;5485:612;5364:733;;;:::o;24498:1314::-;24537:23;24563:24;24581:4;24563:9;:24::i;:::-;24537:50;;24598:25;24647:12;;24626:18;;:33;;;;:::i;:::-;24598:61;;24670:12;24718:1;24699:15;:20;:46;;;;24744:1;24723:17;:22;24699:46;24696:60;;;24748:7;;;;;24696:60;24811:2;24790:18;;:23;;;;:::i;:::-;24772:15;:41;24769:111;;;24866:2;24845:18;;:23;;;;:::i;:::-;24827:41;;24769:111;24942:23;25027:1;25007:17;24986:18;;24968:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;24942:86;;25039:26;25068:36;25088:15;25068;:19;;:36;;;;:::i;:::-;25039:65;;25118:25;25146:21;25118:49;;25181:37;25199:18;25181:17;:37::i;:::-;25233:18;25254:44;25280:17;25254:21;:25;;:44;;;;:::i;:::-;25233:65;;25312:17;25332:51;25365:17;25332:28;25347:12;;25332:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;25312:71;;25394:23;25433:9;25420:10;:22;;;;:::i;:::-;25394:48;;25480:1;25459:18;:22;;;;25507:1;25492:12;:16;;;;25543:9;;;;;;;;;;;25535:23;;25566:9;25535:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25522:58;;;;;25615:1;25597:15;:19;:42;;;;;25638:1;25620:15;:19;25597:42;25594:211;;;25655:47;25669:15;25686;25655:13;:47::i;:::-;25722:71;25737:18;25757:15;25774:18;;25722:71;;;;;;;;:::i;:::-;;;;;;;;25594:211;24526:1286;;;;;;;;;24498:1314;:::o;9113:98::-;9171:7;9202:1;9198;:5;;;;:::i;:::-;9191:12;;9113:98;;;;:::o;9219:::-;9277:7;9308:1;9304;:5;;;;:::i;:::-;9297:12;;9219:98;;;;:::o;7499:125::-;;;;:::o;7632:124::-;;;;:::o;9007:98::-;9065:7;9096:1;9092;:5;;;;:::i;:::-;9085:12;;9007:98;;;;:::o;23374:590::-;23501:21;23539:1;23525:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23501:40;;23570:4;23552;23557:1;23552:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23596:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23586:4;23591:1;23586:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23631:62;23648:4;23663:15;23681:11;23631:8;:62::i;:::-;23732:15;:66;;;23813:11;23839:1;23883:4;23910;23930:15;23732:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23430:534;23374:590;:::o;23976:514::-;24125:62;24142:4;24157:15;24175:11;24125:8;:62::i;:::-;24230:15;:31;;;24269:9;24302:4;24322:11;24348:1;24391;24434:7;:5;:7::i;:::-;24456:15;24230:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23976:514;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:307::-;1518:1;1528:113;1542:6;1539:1;1536:13;1528:113;;;1627:1;1622:3;1618:11;1612:18;1608:1;1603:3;1599:11;1592:39;1564:2;1561:1;1557:10;1552:15;;1528:113;;;1659:6;1656:1;1653:13;1650:101;;;1739:1;1730:6;1725:3;1721:16;1714:27;1650:101;1499:258;1450:307;;;:::o;1763:102::-;1804:6;1855:2;1851:7;1846:2;1839:5;1835:14;1831:28;1821:38;;1763:102;;;:::o;1871:364::-;1959:3;1987:39;2020:5;1987:39;:::i;:::-;2042:71;2106:6;2101:3;2042:71;:::i;:::-;2035:78;;2122:52;2167:6;2162:3;2155:4;2148:5;2144:16;2122:52;:::i;:::-;2199:29;2221:6;2199:29;:::i;:::-;2194:3;2190:39;2183:46;;1963:272;1871:364;;;;:::o;2241:313::-;2354:4;2392:2;2381:9;2377:18;2369:26;;2441:9;2435:4;2431:20;2427:1;2416:9;2412:17;2405:47;2469:78;2542:4;2533:6;2469:78;:::i;:::-;2461:86;;2241:313;;;;:::o;2560:126::-;2597:7;2637:42;2630:5;2626:54;2615:65;;2560:126;;;:::o;2692:96::-;2729:7;2758:24;2776:5;2758:24;:::i;:::-;2747:35;;2692:96;;;:::o;2794:122::-;2867:24;2885:5;2867:24;:::i;:::-;2860:5;2857:35;2847:63;;2906:1;2903;2896:12;2847:63;2794:122;:::o;2922:139::-;2968:5;3006:6;2993:20;2984:29;;3022:33;3049:5;3022:33;:::i;:::-;2922:139;;;;:::o;3067:474::-;3135:6;3143;3192:2;3180:9;3171:7;3167:23;3163:32;3160:119;;;3198:79;;:::i;:::-;3160:119;3318:1;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3289:117;3445:2;3471:53;3516:7;3507:6;3496:9;3492:22;3471:53;:::i;:::-;3461:63;;3416:118;3067:474;;;;;:::o;3547:90::-;3581:7;3624:5;3617:13;3610:21;3599:32;;3547:90;;;:::o;3643:109::-;3724:21;3739:5;3724:21;:::i;:::-;3719:3;3712:34;3643:109;;:::o;3758:210::-;3845:4;3883:2;3872:9;3868:18;3860:26;;3896:65;3958:1;3947:9;3943:17;3934:6;3896:65;:::i;:::-;3758:210;;;;:::o;3974:329::-;4033:6;4082:2;4070:9;4061:7;4057:23;4053:32;4050:119;;;4088:79;;:::i;:::-;4050:119;4208:1;4233:53;4278:7;4269:6;4258:9;4254:22;4233:53;:::i;:::-;4223:63;;4179:117;3974:329;;;;:::o;4309:60::-;4337:3;4358:5;4351:12;;4309:60;;;:::o;4375:142::-;4425:9;4458:53;4476:34;4485:24;4503:5;4485:24;:::i;:::-;4476:34;:::i;:::-;4458:53;:::i;:::-;4445:66;;4375:142;;;:::o;4523:126::-;4573:9;4606:37;4637:5;4606:37;:::i;:::-;4593:50;;4523:126;;;:::o;4655:153::-;4732:9;4765:37;4796:5;4765:37;:::i;:::-;4752:50;;4655:153;;;:::o;4814:185::-;4928:64;4986:5;4928:64;:::i;:::-;4923:3;4916:77;4814:185;;:::o;5005:276::-;5125:4;5163:2;5152:9;5148:18;5140:26;;5176:98;5271:1;5260:9;5256:17;5247:6;5176:98;:::i;:::-;5005:276;;;;:::o;5287:118::-;5374:24;5392:5;5374:24;:::i;:::-;5369:3;5362:37;5287:118;;:::o;5411:222::-;5504:4;5542:2;5531:9;5527:18;5519:26;;5555:71;5623:1;5612:9;5608:17;5599:6;5555:71;:::i;:::-;5411:222;;;;:::o;5639:329::-;5698:6;5747:2;5735:9;5726:7;5722:23;5718:32;5715:119;;;5753:79;;:::i;:::-;5715:119;5873:1;5898:53;5943:7;5934:6;5923:9;5919:22;5898:53;:::i;:::-;5888:63;;5844:117;5639:329;;;;:::o;5974:619::-;6051:6;6059;6067;6116:2;6104:9;6095:7;6091:23;6087:32;6084:119;;;6122:79;;:::i;:::-;6084:119;6242:1;6267:53;6312:7;6303:6;6292:9;6288:22;6267:53;:::i;:::-;6257:63;;6213:117;6369:2;6395:53;6440:7;6431:6;6420:9;6416:22;6395:53;:::i;:::-;6385:63;;6340:118;6497:2;6523:53;6568:7;6559:6;6548:9;6544:22;6523:53;:::i;:::-;6513:63;;6468:118;5974:619;;;;;:::o;6599:86::-;6634:7;6674:4;6667:5;6663:16;6652:27;;6599:86;;;:::o;6691:112::-;6774:22;6790:5;6774:22;:::i;:::-;6769:3;6762:35;6691:112;;:::o;6809:214::-;6898:4;6936:2;6925:9;6921:18;6913:26;;6949:67;7013:1;7002:9;6998:17;6989:6;6949:67;:::i;:::-;6809:214;;;;:::o;7029:118::-;7116:24;7134:5;7116:24;:::i;:::-;7111:3;7104:37;7029:118;;:::o;7153:222::-;7246:4;7284:2;7273:9;7269:18;7261:26;;7297:71;7365:1;7354:9;7350:17;7341:6;7297:71;:::i;:::-;7153:222;;;;:::o;7381:117::-;7490:1;7487;7480:12;7504:180;7552:77;7549:1;7542:88;7649:4;7646:1;7639:15;7673:4;7670:1;7663:15;7690:281;7773:27;7795:4;7773:27;:::i;:::-;7765:6;7761:40;7903:6;7891:10;7888:22;7867:18;7855:10;7852:34;7849:62;7846:88;;;7914:18;;:::i;:::-;7846:88;7954:10;7950:2;7943:22;7733:238;7690:281;;:::o;7977:129::-;8011:6;8038:20;;:::i;:::-;8028:30;;8067:33;8095:4;8087:6;8067:33;:::i;:::-;7977:129;;;:::o;8112:311::-;8189:4;8279:18;8271:6;8268:30;8265:56;;;8301:18;;:::i;:::-;8265:56;8351:4;8343:6;8339:17;8331:25;;8411:4;8405;8401:15;8393:23;;8112:311;;;:::o;8429:117::-;8538:1;8535;8528:12;8569:710;8665:5;8690:81;8706:64;8763:6;8706:64;:::i;:::-;8690:81;:::i;:::-;8681:90;;8791:5;8820:6;8813:5;8806:21;8854:4;8847:5;8843:16;8836:23;;8907:4;8899:6;8895:17;8887:6;8883:30;8936:3;8928:6;8925:15;8922:122;;;8955:79;;:::i;:::-;8922:122;9070:6;9053:220;9087:6;9082:3;9079:15;9053:220;;;9162:3;9191:37;9224:3;9212:10;9191:37;:::i;:::-;9186:3;9179:50;9258:4;9253:3;9249:14;9242:21;;9129:144;9113:4;9108:3;9104:14;9097:21;;9053:220;;;9057:21;8671:608;;8569:710;;;;;:::o;9302:370::-;9373:5;9422:3;9415:4;9407:6;9403:17;9399:27;9389:122;;9430:79;;:::i;:::-;9389:122;9547:6;9534:20;9572:94;9662:3;9654:6;9647:4;9639:6;9635:17;9572:94;:::i;:::-;9563:103;;9379:293;9302:370;;;;:::o;9678:539::-;9762:6;9811:2;9799:9;9790:7;9786:23;9782:32;9779:119;;;9817:79;;:::i;:::-;9779:119;9965:1;9954:9;9950:17;9937:31;9995:18;9987:6;9984:30;9981:117;;;10017:79;;:::i;:::-;9981:117;10122:78;10192:7;10183:6;10172:9;10168:22;10122:78;:::i;:::-;10112:88;;9908:302;9678:539;;;;:::o;10223:116::-;10293:21;10308:5;10293:21;:::i;:::-;10286:5;10283:32;10273:60;;10329:1;10326;10319:12;10273:60;10223:116;:::o;10345:133::-;10388:5;10426:6;10413:20;10404:29;;10442:30;10466:5;10442:30;:::i;:::-;10345:133;;;;:::o;10484:468::-;10549:6;10557;10606:2;10594:9;10585:7;10581:23;10577:32;10574:119;;;10612:79;;:::i;:::-;10574:119;10732:1;10757:53;10802:7;10793:6;10782:9;10778:22;10757:53;:::i;:::-;10747:63;;10703:117;10859:2;10885:50;10927:7;10918:6;10907:9;10903:22;10885:50;:::i;:::-;10875:60;;10830:115;10484:468;;;;;:::o;10958:474::-;11026:6;11034;11083:2;11071:9;11062:7;11058:23;11054:32;11051:119;;;11089:79;;:::i;:::-;11051:119;11209:1;11234:53;11279:7;11270:6;11259:9;11255:22;11234:53;:::i;:::-;11224:63;;11180:117;11336:2;11362:53;11407:7;11398:6;11387:9;11383:22;11362:53;:::i;:::-;11352:63;;11307:118;10958:474;;;;;:::o;11438:182::-;11578:34;11574:1;11566:6;11562:14;11555:58;11438:182;:::o;11626:366::-;11768:3;11789:67;11853:2;11848:3;11789:67;:::i;:::-;11782:74;;11865:93;11954:3;11865:93;:::i;:::-;11983:2;11978:3;11974:12;11967:19;;11626:366;;;:::o;11998:419::-;12164:4;12202:2;12191:9;12187:18;12179:26;;12251:9;12245:4;12241:20;12237:1;12226:9;12222:17;12215:47;12279:131;12405:4;12279:131;:::i;:::-;12271:139;;11998:419;;;:::o;12423:180::-;12471:77;12468:1;12461:88;12568:4;12565:1;12558:15;12592:4;12589:1;12582:15;12609:305;12649:3;12668:20;12686:1;12668:20;:::i;:::-;12663:25;;12702:20;12720:1;12702:20;:::i;:::-;12697:25;;12856:1;12788:66;12784:74;12781:1;12778:81;12775:107;;;12862:18;;:::i;:::-;12775:107;12906:1;12903;12899:9;12892:16;;12609:305;;;;:::o;12920:179::-;13060:31;13056:1;13048:6;13044:14;13037:55;12920:179;:::o;13105:366::-;13247:3;13268:67;13332:2;13327:3;13268:67;:::i;:::-;13261:74;;13344:93;13433:3;13344:93;:::i;:::-;13462:2;13457:3;13453:12;13446:19;;13105:366;;;:::o;13477:419::-;13643:4;13681:2;13670:9;13666:18;13658:26;;13730:9;13724:4;13720:20;13716:1;13705:9;13701:17;13694:47;13758:131;13884:4;13758:131;:::i;:::-;13750:139;;13477:419;;;:::o;13902:180::-;13950:77;13947:1;13940:88;14047:4;14044:1;14037:15;14071:4;14068:1;14061:15;14088:320;14132:6;14169:1;14163:4;14159:12;14149:22;;14216:1;14210:4;14206:12;14237:18;14227:81;;14293:4;14285:6;14281:17;14271:27;;14227:81;14355:2;14347:6;14344:14;14324:18;14321:38;14318:84;;;14374:18;;:::i;:::-;14318:84;14139:269;14088:320;;;:::o;14414:348::-;14454:7;14477:20;14495:1;14477:20;:::i;:::-;14472:25;;14511:20;14529:1;14511:20;:::i;:::-;14506:25;;14699:1;14631:66;14627:74;14624:1;14621:81;14616:1;14609:9;14602:17;14598:105;14595:131;;;14706:18;;:::i;:::-;14595:131;14754:1;14751;14747:9;14736:20;;14414:348;;;;:::o;14768:180::-;14816:77;14813:1;14806:88;14913:4;14910:1;14903:15;14937:4;14934:1;14927:15;14954:185;14994:1;15011:20;15029:1;15011:20;:::i;:::-;15006:25;;15045:20;15063:1;15045:20;:::i;:::-;15040:25;;15084:1;15074:35;;15089:18;;:::i;:::-;15074:35;15131:1;15128;15124:9;15119:14;;14954:185;;;;:::o;15145:234::-;15285:34;15281:1;15273:6;15269:14;15262:58;15354:17;15349:2;15341:6;15337:15;15330:42;15145:234;:::o;15385:366::-;15527:3;15548:67;15612:2;15607:3;15548:67;:::i;:::-;15541:74;;15624:93;15713:3;15624:93;:::i;:::-;15742:2;15737:3;15733:12;15726:19;;15385:366;;;:::o;15757:419::-;15923:4;15961:2;15950:9;15946:18;15938:26;;16010:9;16004:4;16000:20;15996:1;15985:9;15981:17;15974:47;16038:131;16164:4;16038:131;:::i;:::-;16030:139;;15757:419;;;:::o;16182:227::-;16322:34;16318:1;16310:6;16306:14;16299:58;16391:10;16386:2;16378:6;16374:15;16367:35;16182:227;:::o;16415:366::-;16557:3;16578:67;16642:2;16637:3;16578:67;:::i;:::-;16571:74;;16654:93;16743:3;16654:93;:::i;:::-;16772:2;16767:3;16763:12;16756:19;;16415:366;;;:::o;16787:419::-;16953:4;16991:2;16980:9;16976:18;16968:26;;17040:9;17034:4;17030:20;17026:1;17015:9;17011:17;17004:47;17068:131;17194:4;17068:131;:::i;:::-;17060:139;;16787:419;;;:::o;17212:180::-;17260:77;17257:1;17250:88;17357:4;17354:1;17347:15;17381:4;17378:1;17371:15;17398:233;17437:3;17460:24;17478:5;17460:24;:::i;:::-;17451:33;;17506:66;17499:5;17496:77;17493:103;;;17576:18;;:::i;:::-;17493:103;17623:1;17616:5;17612:13;17605:20;;17398:233;;;:::o;17637:244::-;17777:34;17773:1;17765:6;17761:14;17754:58;17846:27;17841:2;17833:6;17829:15;17822:52;17637:244;:::o;17887:366::-;18029:3;18050:67;18114:2;18109:3;18050:67;:::i;:::-;18043:74;;18126:93;18215:3;18126:93;:::i;:::-;18244:2;18239:3;18235:12;18228:19;;17887:366;;;:::o;18259:419::-;18425:4;18463:2;18452:9;18448:18;18440:26;;18512:9;18506:4;18502:20;18498:1;18487:9;18483:17;18476:47;18540:131;18666:4;18540:131;:::i;:::-;18532:139;;18259:419;;;:::o;18684:224::-;18824:34;18820:1;18812:6;18808:14;18801:58;18893:7;18888:2;18880:6;18876:15;18869:32;18684:224;:::o;18914:366::-;19056:3;19077:67;19141:2;19136:3;19077:67;:::i;:::-;19070:74;;19153:93;19242:3;19153:93;:::i;:::-;19271:2;19266:3;19262:12;19255:19;;18914:366;;;:::o;19286:419::-;19452:4;19490:2;19479:9;19475:18;19467:26;;19539:9;19533:4;19529:20;19525:1;19514:9;19510:17;19503:47;19567:131;19693:4;19567:131;:::i;:::-;19559:139;;19286:419;;;:::o;19711:223::-;19851:34;19847:1;19839:6;19835:14;19828:58;19920:6;19915:2;19907:6;19903:15;19896:31;19711:223;:::o;19940:366::-;20082:3;20103:67;20167:2;20162:3;20103:67;:::i;:::-;20096:74;;20179:93;20268:3;20179:93;:::i;:::-;20297:2;20292:3;20288:12;20281:19;;19940:366;;;:::o;20312:419::-;20478:4;20516:2;20505:9;20501:18;20493:26;;20565:9;20559:4;20555:20;20551:1;20540:9;20536:17;20529:47;20593:131;20719:4;20593:131;:::i;:::-;20585:139;;20312:419;;;:::o;20737:240::-;20877:34;20873:1;20865:6;20861:14;20854:58;20946:23;20941:2;20933:6;20929:15;20922:48;20737:240;:::o;20983:366::-;21125:3;21146:67;21210:2;21205:3;21146:67;:::i;:::-;21139:74;;21222:93;21311:3;21222:93;:::i;:::-;21340:2;21335:3;21331:12;21324:19;;20983:366;;;:::o;21355:419::-;21521:4;21559:2;21548:9;21544:18;21536:26;;21608:9;21602:4;21598:20;21594:1;21583:9;21579:17;21572:47;21636:131;21762:4;21636:131;:::i;:::-;21628:139;;21355:419;;;:::o;21780:239::-;21920:34;21916:1;21908:6;21904:14;21897:58;21989:22;21984:2;21976:6;21972:15;21965:47;21780:239;:::o;22025:366::-;22167:3;22188:67;22252:2;22247:3;22188:67;:::i;:::-;22181:74;;22264:93;22353:3;22264:93;:::i;:::-;22382:2;22377:3;22373:12;22366:19;;22025:366;;;:::o;22397:419::-;22563:4;22601:2;22590:9;22586:18;22578:26;;22650:9;22644:4;22640:20;22636:1;22625:9;22621:17;22614:47;22678:131;22804:4;22678:131;:::i;:::-;22670:139;;22397:419;;;:::o;22822:225::-;22962:34;22958:1;22950:6;22946:14;22939:58;23031:8;23026:2;23018:6;23014:15;23007:33;22822:225;:::o;23053:366::-;23195:3;23216:67;23280:2;23275:3;23216:67;:::i;:::-;23209:74;;23292:93;23381:3;23292:93;:::i;:::-;23410:2;23405:3;23401:12;23394:19;;23053:366;;;:::o;23425:419::-;23591:4;23629:2;23618:9;23614:18;23606:26;;23678:9;23672:4;23668:20;23664:1;23653:9;23649:17;23642:47;23706:131;23832:4;23706:131;:::i;:::-;23698:139;;23425:419;;;:::o;23850:223::-;23990:34;23986:1;23978:6;23974:14;23967:58;24059:6;24054:2;24046:6;24042:15;24035:31;23850:223;:::o;24079:366::-;24221:3;24242:67;24306:2;24301:3;24242:67;:::i;:::-;24235:74;;24318:93;24407:3;24318:93;:::i;:::-;24436:2;24431:3;24427:12;24420:19;;24079:366;;;:::o;24451:419::-;24617:4;24655:2;24644:9;24640:18;24632:26;;24704:9;24698:4;24694:20;24690:1;24679:9;24675:17;24668:47;24732:131;24858:4;24732:131;:::i;:::-;24724:139;;24451:419;;;:::o;24876:221::-;25016:34;25012:1;25004:6;25000:14;24993:58;25085:4;25080:2;25072:6;25068:15;25061:29;24876:221;:::o;25103:366::-;25245:3;25266:67;25330:2;25325:3;25266:67;:::i;:::-;25259:74;;25342:93;25431:3;25342:93;:::i;:::-;25460:2;25455:3;25451:12;25444:19;;25103:366;;;:::o;25475:419::-;25641:4;25679:2;25668:9;25664:18;25656:26;;25728:9;25722:4;25718:20;25714:1;25703:9;25699:17;25692:47;25756:131;25882:4;25756:131;:::i;:::-;25748:139;;25475:419;;;:::o;25900:224::-;26040:34;26036:1;26028:6;26024:14;26017:58;26109:7;26104:2;26096:6;26092:15;26085:32;25900:224;:::o;26130:366::-;26272:3;26293:67;26357:2;26352:3;26293:67;:::i;:::-;26286:74;;26369:93;26458:3;26369:93;:::i;:::-;26487:2;26482:3;26478:12;26471:19;;26130:366;;;:::o;26502:419::-;26668:4;26706:2;26695:9;26691:18;26683:26;;26755:9;26749:4;26745:20;26741:1;26730:9;26726:17;26719:47;26783:131;26909:4;26783:131;:::i;:::-;26775:139;;26502:419;;;:::o;26927:222::-;27067:34;27063:1;27055:6;27051:14;27044:58;27136:5;27131:2;27123:6;27119:15;27112:30;26927:222;:::o;27155:366::-;27297:3;27318:67;27382:2;27377:3;27318:67;:::i;:::-;27311:74;;27394:93;27483:3;27394:93;:::i;:::-;27512:2;27507:3;27503:12;27496:19;;27155:366;;;:::o;27527:419::-;27693:4;27731:2;27720:9;27716:18;27708:26;;27780:9;27774:4;27770:20;27766:1;27755:9;27751:17;27744:47;27808:131;27934:4;27808:131;:::i;:::-;27800:139;;27527:419;;;:::o;27952:305::-;28092:34;28088:1;28080:6;28076:14;28069:58;28161:34;28156:2;28148:6;28144:15;28137:59;28230:19;28225:2;28217:6;28213:15;28206:44;27952:305;:::o;28263:366::-;28405:3;28426:67;28490:2;28485:3;28426:67;:::i;:::-;28419:74;;28502:93;28591:3;28502:93;:::i;:::-;28620:2;28615:3;28611:12;28604:19;;28263:366;;;:::o;28635:419::-;28801:4;28839:2;28828:9;28824:18;28816:26;;28888:9;28882:4;28878:20;28874:1;28863:9;28859:17;28852:47;28916:131;29042:4;28916:131;:::i;:::-;28908:139;;28635:419;;;:::o;29060:172::-;29200:24;29196:1;29188:6;29184:14;29177:48;29060:172;:::o;29238:366::-;29380:3;29401:67;29465:2;29460:3;29401:67;:::i;:::-;29394:74;;29477:93;29566:3;29477:93;:::i;:::-;29595:2;29590:3;29586:12;29579:19;;29238:366;;;:::o;29610:419::-;29776:4;29814:2;29803:9;29799:18;29791:26;;29863:9;29857:4;29853:20;29849:1;29838:9;29834:17;29827:47;29891:131;30017:4;29891:131;:::i;:::-;29883:139;;29610:419;;;:::o;30035:297::-;30175:34;30171:1;30163:6;30159:14;30152:58;30244:34;30239:2;30231:6;30227:15;30220:59;30313:11;30308:2;30300:6;30296:15;30289:36;30035:297;:::o;30338:366::-;30480:3;30501:67;30565:2;30560:3;30501:67;:::i;:::-;30494:74;;30577:93;30666:3;30577:93;:::i;:::-;30695:2;30690:3;30686:12;30679:19;;30338:366;;;:::o;30710:419::-;30876:4;30914:2;30903:9;30899:18;30891:26;;30963:9;30957:4;30953:20;30949:1;30938:9;30934:17;30927:47;30991:131;31117:4;30991:131;:::i;:::-;30983:139;;30710:419;;;:::o;31135:240::-;31275:34;31271:1;31263:6;31259:14;31252:58;31344:23;31339:2;31331:6;31327:15;31320:48;31135:240;:::o;31381:366::-;31523:3;31544:67;31608:2;31603:3;31544:67;:::i;:::-;31537:74;;31620:93;31709:3;31620:93;:::i;:::-;31738:2;31733:3;31729:12;31722:19;;31381:366;;;:::o;31753:419::-;31919:4;31957:2;31946:9;31942:18;31934:26;;32006:9;32000:4;31996:20;31992:1;31981:9;31977:17;31970:47;32034:131;32160:4;32034:131;:::i;:::-;32026:139;;31753:419;;;:::o;32178:169::-;32318:21;32314:1;32306:6;32302:14;32295:45;32178:169;:::o;32353:366::-;32495:3;32516:67;32580:2;32575:3;32516:67;:::i;:::-;32509:74;;32592:93;32681:3;32592:93;:::i;:::-;32710:2;32705:3;32701:12;32694:19;;32353:366;;;:::o;32725:419::-;32891:4;32929:2;32918:9;32914:18;32906:26;;32978:9;32972:4;32968:20;32964:1;32953:9;32949:17;32942:47;33006:131;33132:4;33006:131;:::i;:::-;32998:139;;32725:419;;;:::o;33150:241::-;33290:34;33286:1;33278:6;33274:14;33267:58;33359:24;33354:2;33346:6;33342:15;33335:49;33150:241;:::o;33397:366::-;33539:3;33560:67;33624:2;33619:3;33560:67;:::i;:::-;33553:74;;33636:93;33725:3;33636:93;:::i;:::-;33754:2;33749:3;33745:12;33738:19;;33397:366;;;:::o;33769:419::-;33935:4;33973:2;33962:9;33958:18;33950:26;;34022:9;34016:4;34012:20;34008:1;33997:9;33993:17;33986:47;34050:131;34176:4;34050:131;:::i;:::-;34042:139;;33769:419;;;:::o;34194:191::-;34234:4;34254:20;34272:1;34254:20;:::i;:::-;34249:25;;34288:20;34306:1;34288:20;:::i;:::-;34283:25;;34327:1;34324;34321:8;34318:34;;;34332:18;;:::i;:::-;34318:34;34377:1;34374;34370:9;34362:17;;34194:191;;;;:::o;34391:225::-;34531:34;34527:1;34519:6;34515:14;34508:58;34600:8;34595:2;34587:6;34583:15;34576:33;34391:225;:::o;34622:366::-;34764:3;34785:67;34849:2;34844:3;34785:67;:::i;:::-;34778:74;;34861:93;34950:3;34861:93;:::i;:::-;34979:2;34974:3;34970:12;34963:19;;34622:366;;;:::o;34994:419::-;35160:4;35198:2;35187:9;35183:18;35175:26;;35247:9;35241:4;35237:20;35233:1;35222:9;35218:17;35211:47;35275:131;35401:4;35275:131;:::i;:::-;35267:139;;34994:419;;;:::o;35419:147::-;35520:11;35557:3;35542:18;;35419:147;;;;:::o;35572:114::-;;:::o;35692:398::-;35851:3;35872:83;35953:1;35948:3;35872:83;:::i;:::-;35865:90;;35964:93;36053:3;35964:93;:::i;:::-;36082:1;36077:3;36073:11;36066:18;;35692:398;;;:::o;36096:379::-;36280:3;36302:147;36445:3;36302:147;:::i;:::-;36295:154;;36466:3;36459:10;;36096:379;;;:::o;36481:442::-;36630:4;36668:2;36657:9;36653:18;36645:26;;36681:71;36749:1;36738:9;36734:17;36725:6;36681:71;:::i;:::-;36762:72;36830:2;36819:9;36815:18;36806:6;36762:72;:::i;:::-;36844;36912:2;36901:9;36897:18;36888:6;36844:72;:::i;:::-;36481:442;;;;;;:::o;36929:143::-;36986:5;37017:6;37011:13;37002:22;;37033:33;37060:5;37033:33;:::i;:::-;36929:143;;;;:::o;37078:351::-;37148:6;37197:2;37185:9;37176:7;37172:23;37168:32;37165:119;;;37203:79;;:::i;:::-;37165:119;37323:1;37348:64;37404:7;37395:6;37384:9;37380:22;37348:64;:::i;:::-;37338:74;;37294:128;37078:351;;;;:::o;37435:85::-;37480:7;37509:5;37498:16;;37435:85;;;:::o;37526:158::-;37584:9;37617:61;37635:42;37644:32;37670:5;37644:32;:::i;:::-;37635:42;:::i;:::-;37617:61;:::i;:::-;37604:74;;37526:158;;;:::o;37690:147::-;37785:45;37824:5;37785:45;:::i;:::-;37780:3;37773:58;37690:147;;:::o;37843:114::-;37910:6;37944:5;37938:12;37928:22;;37843:114;;;:::o;37963:184::-;38062:11;38096:6;38091:3;38084:19;38136:4;38131:3;38127:14;38112:29;;37963:184;;;;:::o;38153:132::-;38220:4;38243:3;38235:11;;38273:4;38268:3;38264:14;38256:22;;38153:132;;;:::o;38291:108::-;38368:24;38386:5;38368:24;:::i;:::-;38363:3;38356:37;38291:108;;:::o;38405:179::-;38474:10;38495:46;38537:3;38529:6;38495:46;:::i;:::-;38573:4;38568:3;38564:14;38550:28;;38405:179;;;;:::o;38590:113::-;38660:4;38692;38687:3;38683:14;38675:22;;38590:113;;;:::o;38739:732::-;38858:3;38887:54;38935:5;38887:54;:::i;:::-;38957:86;39036:6;39031:3;38957:86;:::i;:::-;38950:93;;39067:56;39117:5;39067:56;:::i;:::-;39146:7;39177:1;39162:284;39187:6;39184:1;39181:13;39162:284;;;39263:6;39257:13;39290:63;39349:3;39334:13;39290:63;:::i;:::-;39283:70;;39376:60;39429:6;39376:60;:::i;:::-;39366:70;;39222:224;39209:1;39206;39202:9;39197:14;;39162:284;;;39166:14;39462:3;39455:10;;38863:608;;;38739:732;;;;:::o;39477:831::-;39740:4;39778:3;39767:9;39763:19;39755:27;;39792:71;39860:1;39849:9;39845:17;39836:6;39792:71;:::i;:::-;39873:80;39949:2;39938:9;39934:18;39925:6;39873:80;:::i;:::-;40000:9;39994:4;39990:20;39985:2;39974:9;39970:18;39963:48;40028:108;40131:4;40122:6;40028:108;:::i;:::-;40020:116;;40146:72;40214:2;40203:9;40199:18;40190:6;40146:72;:::i;:::-;40228:73;40296:3;40285:9;40281:19;40272:6;40228:73;:::i;:::-;39477:831;;;;;;;;:::o;40314:807::-;40563:4;40601:3;40590:9;40586:19;40578:27;;40615:71;40683:1;40672:9;40668:17;40659:6;40615:71;:::i;:::-;40696:72;40764:2;40753:9;40749:18;40740:6;40696:72;:::i;:::-;40778:80;40854:2;40843:9;40839:18;40830:6;40778:80;:::i;:::-;40868;40944:2;40933:9;40929:18;40920:6;40868:80;:::i;:::-;40958:73;41026:3;41015:9;41011:19;41002:6;40958:73;:::i;:::-;41041;41109:3;41098:9;41094:19;41085:6;41041:73;:::i;:::-;40314:807;;;;;;;;;:::o;41127:143::-;41184:5;41215:6;41209:13;41200:22;;41231:33;41258:5;41231:33;:::i;:::-;41127:143;;;;:::o;41276:663::-;41364:6;41372;41380;41429:2;41417:9;41408:7;41404:23;41400:32;41397:119;;;41435:79;;:::i;:::-;41397:119;41555:1;41580:64;41636:7;41627:6;41616:9;41612:22;41580:64;:::i;:::-;41570:74;;41526:128;41693:2;41719:64;41775:7;41766:6;41755:9;41751:22;41719:64;:::i;:::-;41709:74;;41664:129;41832:2;41858:64;41914:7;41905:6;41894:9;41890:22;41858:64;:::i;:::-;41848:74;;41803:129;41276:663;;;;;:::o

Swarm Source

ipfs://772c7218d5e07b86148e04ea47191c5f9c9571566c6391d38183748f066a5403
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.