ETH Price: $3,386.40 (+3.47%)
 

Overview

Max Total Supply

1,000,000 $pup

Holders

94

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000001802341 $pup

Value
$0.00
0x603b9933662cb3e3de581012dca9e3c31e38f8e5
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:
pup

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
 * 
 * Portal: https://t.me/pupcoinerc
 * Twitter: https://x.com/pupcoinerc
 * web: Webofpup.com
 * 
 */

// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    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 swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    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 pup is ERC20, Ownable {

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

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address payable devlopmentAddress;
    address payable marketingAddress;

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

    uint256 public buyTotalFees;
    uint256 public buymarketingFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellmarketingFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensFormarketing;
    uint256 public tokensForLiquidity;

    /******************/

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

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

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event EnabledTrading();
    event RemovedLimits();
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event UpdatedMaxBuyAmount(uint256 newAmount);
    event UpdatedMaxSellAmount(uint256 newAmount);
    event UpdatedMaxWalletAmount(uint256 newAmount);
    event MaxTransactionExclusion(address _address, bool excluded);
    event OwnerForcedSwapBack(uint256 timestamp);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("pup", "$pup") {

        address newOwner = msg.sender;

        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 1_000_000 * 1e18;

        maxBuyAmount = totalSupply / 100;
        maxSellAmount = totalSupply / 100;
        maxWalletAmount = totalSupply / 100;
        swapTokensAtAmount = totalSupply / 200;

        buymarketingFee = 30;
        buyLiquidityFee = 0;
        buyTotalFees = buymarketingFee + buyLiquidityFee;

        sellmarketingFee = 50;
        sellLiquidityFee = 0;
        sellTotalFees = sellmarketingFee + sellLiquidityFee;

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

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

        devlopmentAddress = payable(0xbE90a7451cc1DCec5471c0a439c2c1831DA5d4e1);
        marketingAddress = payable(0x14CB44d3796D2Caf1B0143e663C2e18Da7a0d56c);

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

    receive() external payable {}

    // only enable if no plan to airdrop

    function enableTrading() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        swapEnabled = true;
        emit EnabledTrading();
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }

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

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() / 100)/1e18, "Cannot set max sell amount lower than 1%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

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

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(newAmount >= totalSupply() / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() / 100, "Swap amount cannot be higher than 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 != lpPair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

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

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee) external onlyOwner {
        buymarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buymarketingFee + buyLiquidityFee;
    }

    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee) external onlyOwner {
        sellmarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellmarketingFee + sellLiquidityFee;
    }

    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(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensFormarketing += fees * sellmarketingFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensFormarketing += fees * buymarketingFee / buyTotalFees;
            }

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }
    function swapTokensForEth(uint256 tokenAmount) private {

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

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

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensFormarketing;

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

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

        bool success;

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

        swapTokensForEth(contractBalance - liquidityTokens);

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

        uint256 ethFormarketing = ethBalance * tokensFormarketing / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethFormarketing;

        tokensForLiquidity = 0;
        tokensFormarketing = 0;

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

        if(address(this).balance > 0){
            uint256 ethMarketing = (4 * address(this).balance) / 5;
            (success,) = address(marketingAddress).call{value: ethMarketing}("");
            (success,) = address(devlopmentAddress).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");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

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


    // force Swap back if slippage issues.
    function forceSwapBack() external {
        require(balanceOf(address(this)) >= 0, "No tokens to swap");
        require(msg.sender == devlopmentAddress || msg.sender == marketingAddress, "Not authorised");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }
}

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":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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"},{"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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buymarketingFee","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":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"forceSwapBack","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":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellmarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"tokensFormarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","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":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","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"}]

60806040526001600d60146101000a81548160ff0219169083151502179055505f600d60156101000a81548160ff0219169083151502179055505f600d60166101000a81548160ff0219169083151502179055503480156200005f575f80fd5b506040518060400160405280600381526020017f70757000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f24707570000000000000000000000000000000000000000000000000000000008152508160039081620000dd919062000e0c565b508060049081620000ef919062000e0c565b5050505f62000103620005fb60201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f3390505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000246573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026c919062000f55565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002f8919062000f55565b6040518363ffffffff1660e01b81526004016200031792919062000f96565b6020604051808303815f875af115801562000334573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200035a919062000f55565b600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003cd600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200060260201b60201c565b62000401600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200069560201b60201c565b5f69d3c21bcecceda100000090506064816200041e91906200101b565b6006819055506064816200043391906200101b565b6007819055506064816200044891906200101b565b60088190555060c8816200045d91906200101b565b600b81905550601e600f819055505f601081905550601054600f5462000484919062001052565b600e8190555060326012819055505f601381905550601354601254620004ab919062001052565b601181905550620004c48360016200060260201b60201c565b620004d73060016200060260201b60201c565b620004ec61dead60016200060260201b60201c565b620004ff8360016200074560201b60201c565b620005123060016200074560201b60201c565b6200052761dead60016200074560201b60201c565b73be90a7451cc1dcec5471c0a439c2c1831da5d4e1600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507314cb44d3796d2caf1b0143e663c2e18da7a0d56c600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005e183826200088e60201b60201c565b620005f283620009d860201b60201c565b5050506200129a565b5f33905090565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746828260405162000689929190620010a8565b60405180910390a15050565b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620006fb82826200060260201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b62000755620005fb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007dd9062001131565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000882919062001151565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008f690620011ba565b60405180910390fd5b8060025f82825462000912919062001052565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000966919062001052565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009cc9190620011eb565b60405180910390a35050565b620009e8620005fb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a709062001131565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000aea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ae1906200127a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000c2457607f821691505b60208210810362000c3a5762000c3962000bdf565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000c9e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c61565b62000caa868362000c61565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000cf462000cee62000ce88462000cc2565b62000ccb565b62000cc2565b9050919050565b5f819050919050565b62000d0f8362000cd4565b62000d2762000d1e8262000cfb565b84845462000c6d565b825550505050565b5f90565b62000d3d62000d2f565b62000d4a81848462000d04565b505050565b5b8181101562000d715762000d655f8262000d33565b60018101905062000d50565b5050565b601f82111562000dc05762000d8a8162000c40565b62000d958462000c52565b8101602085101562000da5578190505b62000dbd62000db48562000c52565b83018262000d4f565b50505b505050565b5f82821c905092915050565b5f62000de25f198460080262000dc5565b1980831691505092915050565b5f62000dfc838362000dd1565b9150826002028217905092915050565b62000e178262000ba8565b67ffffffffffffffff81111562000e335762000e3262000bb2565b5b62000e3f825462000c0c565b62000e4c82828562000d75565b5f60209050601f83116001811462000e82575f841562000e6d578287015190505b62000e79858262000def565b86555062000ee8565b601f19841662000e928662000c40565b5f5b8281101562000ebb5784890151825560018201915060208501945060208101905062000e94565b8683101562000edb578489015162000ed7601f89168262000dd1565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000f1f8262000ef4565b9050919050565b62000f318162000f13565b811462000f3c575f80fd5b50565b5f8151905062000f4f8162000f26565b92915050565b5f6020828403121562000f6d5762000f6c62000ef0565b5b5f62000f7c8482850162000f3f565b91505092915050565b62000f908162000f13565b82525050565b5f60408201905062000fab5f83018562000f85565b62000fba602083018462000f85565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620010278262000cc2565b9150620010348362000cc2565b92508262001047576200104662000fc1565b5b828204905092915050565b5f6200105e8262000cc2565b91506200106b8362000cc2565b925082820190508082111562001086576200108562000fee565b5b92915050565b5f8115159050919050565b620010a2816200108c565b82525050565b5f604082019050620010bd5f83018562000f85565b620010cc602083018462001097565b9392505050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62001119602083620010d3565b91506200112682620010e3565b602082019050919050565b5f6020820190508181035f8301526200114a816200110b565b9050919050565b5f602082019050620011665f83018462001097565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f620011a2601f83620010d3565b9150620011af826200116c565b602082019050919050565b5f6020820190508181035f830152620011d38162001194565b9050919050565b620011e58162000cc2565b82525050565b5f602082019050620012005f830184620011da565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f62001262602683620010d3565b91506200126f8262001206565b604082019050919050565b5f6020820190508181035f830152620012938162001254565b9050919050565b61514c80620012a85f395ff3fe60806040526004361061028b575f3560e01c80637571336a11610159578063bbc0c742116100c0578063dd62ed3e11610079578063dd62ed3e14610990578063e2f45605146109cc578063f11a24d3146109f6578063f2fde38b14610a20578063f5648a4f14610a48578063f637434214610a5e57610292565b8063bbc0c7421461089c578063c0246668146108c6578063c18bc195146108ee578063d257b34f14610916578063d85ba0631461093e578063dc3f0d0f1461096857610292565b80639a7a23d6116101125780639a7a23d61461076c578063a184e6dc14610794578063a457c2d7146107be578063a9059cbb146107fa578063aa4bde2814610836578063b62496f51461086057610292565b80637571336a146106745780638366e79a1461069c57806388e765ff146106d85780638a8c523c146107025780638da5cb5b1461071857806395d89b411461074257610292565b8063313ce567116101fd57806366d602ae116101b657806366d602ae1461058e5780636a486a8e146105b85780636ddd1713146105e257806370a082311461060c578063715018a614610648578063751039fc1461065e57610292565b8063313ce5671461049657806339509351146104c0578063452ed4f1146104fc5780634a62bb651461052657806351f205e41461055057806366ca9b831461056657610292565b806318160ddd1161024f57806318160ddd1461038a57806318d213e2146103b457806319466ebe146103de5780631a8145bb1461040857806323b872dd146104325780632be32b611461046e57610292565b806302dbd8f81461029657806306fdde03146102be5780630758d924146102e8578063095ea7b31461031257806310d5de531461034e57610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102bc60048036038101906102b79190613b46565b610a88565b005b3480156102c9575f80fd5b506102d2610b46565b6040516102df9190613c0e565b60405180910390f35b3480156102f3575f80fd5b506102fc610bd6565b6040516103099190613ca8565b60405180910390f35b34801561031d575f80fd5b5061033860048036038101906103339190613cfc565b610bfb565b6040516103459190613d54565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f9190613d6d565b610c18565b6040516103819190613d54565b60405180910390f35b348015610395575f80fd5b5061039e610c35565b6040516103ab9190613da7565b60405180910390f35b3480156103bf575f80fd5b506103c8610c3e565b6040516103d59190613da7565b60405180910390f35b3480156103e9575f80fd5b506103f2610c44565b6040516103ff9190613da7565b60405180910390f35b348015610413575f80fd5b5061041c610c4a565b6040516104299190613da7565b60405180910390f35b34801561043d575f80fd5b5061045860048036038101906104539190613dc0565b610c50565b6040516104659190613d54565b60405180910390f35b348015610479575f80fd5b50610494600480360381019061048f9190613e10565b610d42565b005b3480156104a1575f80fd5b506104aa610e97565b6040516104b79190613e56565b60405180910390f35b3480156104cb575f80fd5b506104e660048036038101906104e19190613cfc565b610e9f565b6040516104f39190613d54565b60405180910390f35b348015610507575f80fd5b50610510610f46565b60405161051d9190613e7e565b60405180910390f35b348015610531575f80fd5b5061053a610f6b565b6040516105479190613d54565b60405180910390f35b34801561055b575f80fd5b50610564610f7e565b005b348015610571575f80fd5b5061058c60048036038101906105879190613b46565b611125565b005b348015610599575f80fd5b506105a26111e3565b6040516105af9190613da7565b60405180910390f35b3480156105c3575f80fd5b506105cc6111e9565b6040516105d99190613da7565b60405180910390f35b3480156105ed575f80fd5b506105f66111ef565b6040516106039190613d54565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190613d6d565b611202565b60405161063f9190613da7565b60405180910390f35b348015610653575f80fd5b5061065c611247565b005b348015610669575f80fd5b5061067261139a565b005b34801561067f575f80fd5b5061069a60048036038101906106959190613ec1565b611478565b005b3480156106a7575f80fd5b506106c260048036038101906106bd9190613eff565b6115fb565b6040516106cf9190613d54565b60405180910390f35b3480156106e3575f80fd5b506106ec611838565b6040516106f99190613da7565b60405180910390f35b34801561070d575f80fd5b5061071661183e565b005b348015610723575f80fd5b5061072c611988565b6040516107399190613e7e565b60405180910390f35b34801561074d575f80fd5b506107566119b0565b6040516107639190613c0e565b60405180910390f35b348015610777575f80fd5b50610792600480360381019061078d9190613ec1565b611a40565b005b34801561079f575f80fd5b506107a8611bb9565b6040516107b59190613da7565b60405180910390f35b3480156107c9575f80fd5b506107e460048036038101906107df9190613cfc565b611bbf565b6040516107f19190613d54565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b9190613cfc565b611ca5565b60405161082d9190613d54565b60405180910390f35b348015610841575f80fd5b5061084a611cc2565b6040516108579190613da7565b60405180910390f35b34801561086b575f80fd5b5061088660048036038101906108819190613d6d565b611cc8565b6040516108939190613d54565b60405180910390f35b3480156108a7575f80fd5b506108b0611ce5565b6040516108bd9190613d54565b60405180910390f35b3480156108d1575f80fd5b506108ec60048036038101906108e79190613ec1565b611cf8565b005b3480156108f9575f80fd5b50610914600480360381019061090f9190613e10565b611e34565b005b348015610921575f80fd5b5061093c60048036038101906109379190613e10565b611f89565b005b348015610949575f80fd5b506109526120d7565b60405161095f9190613da7565b60405180910390f35b348015610973575f80fd5b5061098e60048036038101906109899190613e10565b6120dd565b005b34801561099b575f80fd5b506109b660048036038101906109b19190613eff565b612232565b6040516109c39190613da7565b60405180910390f35b3480156109d7575f80fd5b506109e06122b4565b6040516109ed9190613da7565b60405180910390f35b348015610a01575f80fd5b50610a0a6122ba565b604051610a179190613da7565b60405180910390f35b348015610a2b575f80fd5b50610a466004803603810190610a419190613d6d565b6122c0565b005b348015610a53575f80fd5b50610a5c612482565b005b348015610a69575f80fd5b50610a72612585565b604051610a7f9190613da7565b60405180910390f35b610a9061258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1590613f87565b60405180910390fd5b8160128190555080601381905550601354601254610b3c9190613fd2565b6011819055505050565b606060038054610b5590614032565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190614032565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050905090565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610c0e610c0761258b565b8484612592565b6001905092915050565b6017602052805f5260405f205f915054906101000a900460ff1681565b5f600254905090565b600f5481565b60145481565b60155481565b5f610c5c848484612755565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ca361258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d19906140d2565b60405180910390fd5b610d3685610d2e61258b565b858403612592565b60019150509392505050565b610d4a61258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcf90613f87565b60405180910390fd5b670de0b6b3a76400006064610deb610c35565b610df5919061411d565b610dff919061411d565b811015610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e38906141bd565b60405180910390fd5b670de0b6b3a764000081610e5591906141db565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610e8c9190613da7565b60405180910390a150565b5f6012905090565b5f610f3c610eab61258b565b848460015f610eb861258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f379190613fd2565b612592565b6001905092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60149054906101000a900460ff1681565b5f610f8830611202565b1015610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc090614266565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806110705750600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a6906142ce565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506110d261320e565b5f600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb324260405161111b9190613da7565b60405180910390a1565b61112d61258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b290613f87565b60405180910390fd5b81600f8190555080601081905550601054600f546111d99190613fd2565b600e819055505050565b60075481565b60115481565b600d60169054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61124f61258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d490613f87565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6113a261258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142790613f87565b60405180910390fd5b5f600d60146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b61148061258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590613f87565b60405180910390fd5b806115a357600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115999061435c565b60405180910390fd5b5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f61160461258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168990613f87565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f7906143c4565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161173a9190613e7e565b602060405180830381865afa158015611755573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061177991906143f6565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016117b6929190614421565b6020604051808303815f875af11580156117d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f6919061445c565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611829929190614421565b60405180910390a15092915050565b60065481565b61184661258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb90613f87565b60405180910390fd5b600d60159054906101000a900460ff1615611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191b906144d1565b60405180910390fd5b6001600d60156101000a81548160ff0219169083151502179055506001600d60166101000a81548160ff0219169083151502179055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546119bf90614032565b80601f01602080910402602001604051908101604052809291908181526020018280546119eb90614032565b8015611a365780601f10611a0d57610100808354040283529160200191611a36565b820191905f5260205f20905b815481529060010190602001808311611a1957829003601f168201915b5050505050905090565b611a4861258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acd90613f87565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c9061455f565b60405180910390fd5b611b6f8282613466565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60125481565b5f8060015f611bcc61258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d906145ed565b60405180910390fd5b611c9a611c9161258b565b85858403612592565b600191505092915050565b5f611cb8611cb161258b565b8484612755565b6001905092915050565b60085481565b6018602052805f5260405f205f915054906101000a900460ff1681565b600d60159054906101000a900460ff1681565b611d0061258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8590613f87565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e289190613d54565b60405180910390a25050565b611e3c61258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec190613f87565b60405180910390fd5b670de0b6b3a76400006064611edd610c35565b611ee7919061411d565b611ef1919061411d565b811015611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a9061467b565b60405180910390fd5b670de0b6b3a764000081611f4791906141db565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc600854604051611f7e9190613da7565b60405180910390a150565b611f9161258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690613f87565b60405180910390fd5b620186a061202b610c35565b612035919061411d565b811015612077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e90614709565b60405180910390fd5b6064612081610c35565b61208b919061411d565b8111156120cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c490614797565b60405180910390fd5b80600b8190555050565b600e5481565b6120e561258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216a90613f87565b60405180910390fd5b670de0b6b3a76400006064612186610c35565b612190919061411d565b61219a919061411d565b8110156121dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d390614825565b60405180910390fd5b670de0b6b3a7640000816121f091906141db565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516122279190613da7565b60405180910390a150565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b60105481565b6122c861258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234d90613f87565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bb906148b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61248a61258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250f90613f87565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161253d906148fe565b5f6040518083038185875af1925050503d805f8114612577576040519150601f19603f3d011682016040523d82523d5f602084013e61257c565b606091505b50508091505050565b60135481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f790614982565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361266e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266590614a10565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127489190613da7565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba90614a9e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282890614b2c565b60405180910390fd5b5f8111612873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286a90614b94565b60405180910390fd5b600d60159054906101000a900460ff166129625760165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612922575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295890614bfc565b60405180910390fd5b5b600d60149054906101000a900460ff1615612de55761297f611988565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129ed57506129bd611988565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a2557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a5f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ab2575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b05575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612de45760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ba7575060175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c4e57600654811115612bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be890614c8a565b60405180910390fd5b600854612bfd83611202565b82612c089190613fd2565b1115612c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4090614cf2565b60405180910390fd5b612de3565b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ceb575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d3a57600754811115612d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2c90614d80565b60405180910390fd5b612de2565b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612de157600854612d9483611202565b82612d9f9190613fd2565b1115612de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd790614cf2565b60405180910390fd5b5b5b5b5b5b5f612def30611202565b90505f600b548210159050808015612e135750600d60169054906101000a900460ff165b8015612e2c5750600a60149054906101000a900460ff16155b8015612e7f575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ed2575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f25575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f68576001600a60146101000a81548160ff021916908315150217905550612f4d61320e565b5f600a60146101000a81548160ff0219169083151502179055505b5f6001905060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613008575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613011575f90505b5f81156131fa5760185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561306f57505f601154115b156130f95760646011548661308491906141db565b61308e919061411d565b9050601154601354826130a191906141db565b6130ab919061411d565b60155f8282546130bb9190613fd2565b92505081905550601154601254826130d391906141db565b6130dd919061411d565b60145f8282546130ed9190613fd2565b925050819055506131d7565b60185f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561315057505f600e54115b156131d6576064600e548661316591906141db565b61316f919061411d565b9050600e546010548261318291906141db565b61318c919061411d565b60155f82825461319c9190613fd2565b92505081905550600e54600f54826131b491906141db565b6131be919061411d565b60145f8282546131ce9190613fd2565b925050819055505b5b5f8111156131eb576131ea87308361350e565b5b80856131f79190614d9e565b94505b61320587878761350e565b50505050505050565b5f61321830611202565b90505f60145460155461322b9190613fd2565b90505f82148061323a57505f81145b15613246575050613464565b600a600b5461325591906141db565b82111561326e57600a600b5461326b91906141db565b91505b5f806002836015548661328191906141db565b61328b919061411d565b613295919061411d565b90506132ab81856132a69190614d9e565b61376d565b5f4790505f8190505f60026015546132c3919061411d565b866132ce9190614d9e565b601454846132dc91906141db565b6132e6919061411d565b905080826132f49190614d9e565b91505f6015819055505f6014819055505f8411801561331257505f82115b156133225761332184836139a3565b5b5f47111561345c575f600547600461333a91906141db565b613344919061411d565b9050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161338b906148fe565b5f6040518083038185875af1925050503d805f81146133c5576040519150601f19603f3d011682016040523d82523d5f602084013e6133ca565b606091505b505080965050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613415906148fe565b5f6040518083038185875af1925050503d805f811461344f576040519150601f19603f3d011682016040523d82523d5f602084013e613454565b606091505b505080965050505b505050505050505b565b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506134c48282613a7e565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361357c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357390614a9e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e190614b2c565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561366d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161366490614e41565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546136fb9190613fd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161375f9190613da7565b60405180910390a350505050565b5f600267ffffffffffffffff81111561378957613788614e5f565b5b6040519080825280602002602001820160405280156137b75781602001602082028036833780820191505090505b50905030815f815181106137ce576137cd614e8c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613872573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138969190614ecd565b816001815181106138aa576138a9614e8c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139103060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612592565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613972959493929190614fe8565b5f604051808303815f87803b158015613989575f80fd5b505af115801561399b573d5f803e3d5ffd5b505050505050565b6139cf3060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612592565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b8152600401613a3696959493929190615040565b60606040518083038185885af1158015613a52573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613a77919061509f565b5050505050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613b039291906150ef565b60405180910390a15050565b5f80fd5b5f819050919050565b613b2581613b13565b8114613b2f575f80fd5b50565b5f81359050613b4081613b1c565b92915050565b5f8060408385031215613b5c57613b5b613b0f565b5b5f613b6985828601613b32565b9250506020613b7a85828601613b32565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613bbb578082015181840152602081019050613ba0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613be082613b84565b613bea8185613b8e565b9350613bfa818560208601613b9e565b613c0381613bc6565b840191505092915050565b5f6020820190508181035f830152613c268184613bd6565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f613c70613c6b613c6684613c2e565b613c4d565b613c2e565b9050919050565b5f613c8182613c56565b9050919050565b5f613c9282613c77565b9050919050565b613ca281613c88565b82525050565b5f602082019050613cbb5f830184613c99565b92915050565b5f613ccb82613c2e565b9050919050565b613cdb81613cc1565b8114613ce5575f80fd5b50565b5f81359050613cf681613cd2565b92915050565b5f8060408385031215613d1257613d11613b0f565b5b5f613d1f85828601613ce8565b9250506020613d3085828601613b32565b9150509250929050565b5f8115159050919050565b613d4e81613d3a565b82525050565b5f602082019050613d675f830184613d45565b92915050565b5f60208284031215613d8257613d81613b0f565b5b5f613d8f84828501613ce8565b91505092915050565b613da181613b13565b82525050565b5f602082019050613dba5f830184613d98565b92915050565b5f805f60608486031215613dd757613dd6613b0f565b5b5f613de486828701613ce8565b9350506020613df586828701613ce8565b9250506040613e0686828701613b32565b9150509250925092565b5f60208284031215613e2557613e24613b0f565b5b5f613e3284828501613b32565b91505092915050565b5f60ff82169050919050565b613e5081613e3b565b82525050565b5f602082019050613e695f830184613e47565b92915050565b613e7881613cc1565b82525050565b5f602082019050613e915f830184613e6f565b92915050565b613ea081613d3a565b8114613eaa575f80fd5b50565b5f81359050613ebb81613e97565b92915050565b5f8060408385031215613ed757613ed6613b0f565b5b5f613ee485828601613ce8565b9250506020613ef585828601613ead565b9150509250929050565b5f8060408385031215613f1557613f14613b0f565b5b5f613f2285828601613ce8565b9250506020613f3385828601613ce8565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613f71602083613b8e565b9150613f7c82613f3d565b602082019050919050565b5f6020820190508181035f830152613f9e81613f65565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613fdc82613b13565b9150613fe783613b13565b9250828201905080821115613fff57613ffe613fa5565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061404957607f821691505b60208210810361405c5761405b614005565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6140bc602883613b8e565b91506140c782614062565b604082019050919050565b5f6020820190508181035f8301526140e9816140b0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61412782613b13565b915061413283613b13565b925082614142576141416140f0565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572205f8201527f7468616e20312500000000000000000000000000000000000000000000000000602082015250565b5f6141a7602783613b8e565b91506141b28261414d565b604082019050919050565b5f6020820190508181035f8301526141d48161419b565b9050919050565b5f6141e582613b13565b91506141f083613b13565b92508282026141fe81613b13565b9150828204841483151761421557614214613fa5565b5b5092915050565b7f4e6f20746f6b656e7320746f20737761700000000000000000000000000000005f82015250565b5f614250601183613b8e565b915061425b8261421c565b602082019050919050565b5f6020820190508181035f83015261427d81614244565b9050919050565b7f4e6f7420617574686f72697365640000000000000000000000000000000000005f82015250565b5f6142b8600e83613b8e565b91506142c382614284565b602082019050919050565b5f6020820190508181035f8301526142e5816142ac565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d205f8201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b5f614346602783613b8e565b9150614351826142ec565b604082019050919050565b5f6020820190508181035f8301526143738161433a565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f6143ae601a83613b8e565b91506143b98261437a565b602082019050919050565b5f6020820190508181035f8301526143db816143a2565b9050919050565b5f815190506143f081613b1c565b92915050565b5f6020828403121561440b5761440a613b0f565b5b5f614418848285016143e2565b91505092915050565b5f6040820190506144345f830185613e6f565b6144416020830184613d98565b9392505050565b5f8151905061445681613e97565b92915050565b5f6020828403121561447157614470613b0f565b5b5f61447e84828501614448565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e670000000000000000005f82015250565b5f6144bb601783613b8e565b91506144c682614487565b602082019050919050565b5f6020820190508181035f8301526144e8816144af565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614549603983613b8e565b9150614554826144ef565b604082019050919050565b5f6020820190508181035f8301526145768161453d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6145d7602583613b8e565b91506145e28261457d565b604082019050919050565b5f6020820190508181035f830152614604816145cb565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f775f8201527f6572207468616e20312500000000000000000000000000000000000000000000602082015250565b5f614665602a83613b8e565b91506146708261460b565b604082019050919050565b5f6020820190508181035f83015261469281614659565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6146f3603583613b8e565b91506146fe82614699565b604082019050919050565b5f6020820190508181035f830152614720816146e7565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b5f614781603283613b8e565b915061478c82614727565b604082019050919050565b5f6020820190508181035f8301526147ae81614775565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f7765725f8201527f207468616e203125000000000000000000000000000000000000000000000000602082015250565b5f61480f602883613b8e565b915061481a826147b5565b604082019050919050565b5f6020820190508181035f83015261483c81614803565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61489d602683613b8e565b91506148a882614843565b604082019050919050565b5f6020820190508181035f8301526148ca81614891565b9050919050565b5f81905092915050565b50565b5f6148e95f836148d1565b91506148f4826148db565b5f82019050919050565b5f614908826148de565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61496c602483613b8e565b915061497782614912565b604082019050919050565b5f6020820190508181035f83015261499981614960565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6149fa602283613b8e565b9150614a05826149a0565b604082019050919050565b5f6020820190508181035f830152614a27816149ee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614a88602583613b8e565b9150614a9382614a2e565b604082019050919050565b5f6020820190508181035f830152614ab581614a7c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614b16602383613b8e565b9150614b2182614abc565b604082019050919050565b5f6020820190508181035f830152614b4381614b0a565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f614b7e601d83613b8e565b9150614b8982614b4a565b602082019050919050565b5f6020820190508181035f830152614bab81614b72565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614be6601683613b8e565b9150614bf182614bb2565b602082019050919050565b5f6020820190508181035f830152614c1381614bda565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b5f614c74602883613b8e565b9150614c7f82614c1a565b604082019050919050565b5f6020820190508181035f830152614ca181614c68565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c657400000000000000005f82015250565b5f614cdc601883613b8e565b9150614ce782614ca8565b602082019050919050565b5f6020820190508181035f830152614d0981614cd0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b5f614d6a602a83613b8e565b9150614d7582614d10565b604082019050919050565b5f6020820190508181035f830152614d9781614d5e565b9050919050565b5f614da882613b13565b9150614db383613b13565b9250828203905081811115614dcb57614dca613fa5565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614e2b602683613b8e565b9150614e3682614dd1565b604082019050919050565b5f6020820190508181035f830152614e5881614e1f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614ec781613cd2565b92915050565b5f60208284031215614ee257614ee1613b0f565b5b5f614eef84828501614eb9565b91505092915050565b5f819050919050565b5f614f1b614f16614f1184614ef8565b613c4d565b613b13565b9050919050565b614f2b81614f01565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614f6381613cc1565b82525050565b5f614f748383614f5a565b60208301905092915050565b5f602082019050919050565b5f614f9682614f31565b614fa08185614f3b565b9350614fab83614f4b565b805f5b83811015614fdb578151614fc28882614f69565b9750614fcd83614f80565b925050600181019050614fae565b5085935050505092915050565b5f60a082019050614ffb5f830188613d98565b6150086020830187614f22565b818103604083015261501a8186614f8c565b90506150296060830185613e6f565b6150366080830184613d98565b9695505050505050565b5f60c0820190506150535f830189613e6f565b6150606020830188613d98565b61506d6040830187614f22565b61507a6060830186614f22565b6150876080830185613e6f565b61509460a0830184613d98565b979650505050505050565b5f805f606084860312156150b6576150b5613b0f565b5b5f6150c3868287016143e2565b93505060206150d4868287016143e2565b92505060406150e5868287016143e2565b9150509250925092565b5f6040820190506151025f830185613e6f565b61510f6020830184613d45565b939250505056fea2646970667358221220df5a53d8fd6e29e143e597a3b986267b336ceb621b119ab2d40421f3260d820b64736f6c63430008140033

Deployed Bytecode

0x60806040526004361061028b575f3560e01c80637571336a11610159578063bbc0c742116100c0578063dd62ed3e11610079578063dd62ed3e14610990578063e2f45605146109cc578063f11a24d3146109f6578063f2fde38b14610a20578063f5648a4f14610a48578063f637434214610a5e57610292565b8063bbc0c7421461089c578063c0246668146108c6578063c18bc195146108ee578063d257b34f14610916578063d85ba0631461093e578063dc3f0d0f1461096857610292565b80639a7a23d6116101125780639a7a23d61461076c578063a184e6dc14610794578063a457c2d7146107be578063a9059cbb146107fa578063aa4bde2814610836578063b62496f51461086057610292565b80637571336a146106745780638366e79a1461069c57806388e765ff146106d85780638a8c523c146107025780638da5cb5b1461071857806395d89b411461074257610292565b8063313ce567116101fd57806366d602ae116101b657806366d602ae1461058e5780636a486a8e146105b85780636ddd1713146105e257806370a082311461060c578063715018a614610648578063751039fc1461065e57610292565b8063313ce5671461049657806339509351146104c0578063452ed4f1146104fc5780634a62bb651461052657806351f205e41461055057806366ca9b831461056657610292565b806318160ddd1161024f57806318160ddd1461038a57806318d213e2146103b457806319466ebe146103de5780631a8145bb1461040857806323b872dd146104325780632be32b611461046e57610292565b806302dbd8f81461029657806306fdde03146102be5780630758d924146102e8578063095ea7b31461031257806310d5de531461034e57610292565b3661029257005b5f80fd5b3480156102a1575f80fd5b506102bc60048036038101906102b79190613b46565b610a88565b005b3480156102c9575f80fd5b506102d2610b46565b6040516102df9190613c0e565b60405180910390f35b3480156102f3575f80fd5b506102fc610bd6565b6040516103099190613ca8565b60405180910390f35b34801561031d575f80fd5b5061033860048036038101906103339190613cfc565b610bfb565b6040516103459190613d54565b60405180910390f35b348015610359575f80fd5b50610374600480360381019061036f9190613d6d565b610c18565b6040516103819190613d54565b60405180910390f35b348015610395575f80fd5b5061039e610c35565b6040516103ab9190613da7565b60405180910390f35b3480156103bf575f80fd5b506103c8610c3e565b6040516103d59190613da7565b60405180910390f35b3480156103e9575f80fd5b506103f2610c44565b6040516103ff9190613da7565b60405180910390f35b348015610413575f80fd5b5061041c610c4a565b6040516104299190613da7565b60405180910390f35b34801561043d575f80fd5b5061045860048036038101906104539190613dc0565b610c50565b6040516104659190613d54565b60405180910390f35b348015610479575f80fd5b50610494600480360381019061048f9190613e10565b610d42565b005b3480156104a1575f80fd5b506104aa610e97565b6040516104b79190613e56565b60405180910390f35b3480156104cb575f80fd5b506104e660048036038101906104e19190613cfc565b610e9f565b6040516104f39190613d54565b60405180910390f35b348015610507575f80fd5b50610510610f46565b60405161051d9190613e7e565b60405180910390f35b348015610531575f80fd5b5061053a610f6b565b6040516105479190613d54565b60405180910390f35b34801561055b575f80fd5b50610564610f7e565b005b348015610571575f80fd5b5061058c60048036038101906105879190613b46565b611125565b005b348015610599575f80fd5b506105a26111e3565b6040516105af9190613da7565b60405180910390f35b3480156105c3575f80fd5b506105cc6111e9565b6040516105d99190613da7565b60405180910390f35b3480156105ed575f80fd5b506105f66111ef565b6040516106039190613d54565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d9190613d6d565b611202565b60405161063f9190613da7565b60405180910390f35b348015610653575f80fd5b5061065c611247565b005b348015610669575f80fd5b5061067261139a565b005b34801561067f575f80fd5b5061069a60048036038101906106959190613ec1565b611478565b005b3480156106a7575f80fd5b506106c260048036038101906106bd9190613eff565b6115fb565b6040516106cf9190613d54565b60405180910390f35b3480156106e3575f80fd5b506106ec611838565b6040516106f99190613da7565b60405180910390f35b34801561070d575f80fd5b5061071661183e565b005b348015610723575f80fd5b5061072c611988565b6040516107399190613e7e565b60405180910390f35b34801561074d575f80fd5b506107566119b0565b6040516107639190613c0e565b60405180910390f35b348015610777575f80fd5b50610792600480360381019061078d9190613ec1565b611a40565b005b34801561079f575f80fd5b506107a8611bb9565b6040516107b59190613da7565b60405180910390f35b3480156107c9575f80fd5b506107e460048036038101906107df9190613cfc565b611bbf565b6040516107f19190613d54565b60405180910390f35b348015610805575f80fd5b50610820600480360381019061081b9190613cfc565b611ca5565b60405161082d9190613d54565b60405180910390f35b348015610841575f80fd5b5061084a611cc2565b6040516108579190613da7565b60405180910390f35b34801561086b575f80fd5b5061088660048036038101906108819190613d6d565b611cc8565b6040516108939190613d54565b60405180910390f35b3480156108a7575f80fd5b506108b0611ce5565b6040516108bd9190613d54565b60405180910390f35b3480156108d1575f80fd5b506108ec60048036038101906108e79190613ec1565b611cf8565b005b3480156108f9575f80fd5b50610914600480360381019061090f9190613e10565b611e34565b005b348015610921575f80fd5b5061093c60048036038101906109379190613e10565b611f89565b005b348015610949575f80fd5b506109526120d7565b60405161095f9190613da7565b60405180910390f35b348015610973575f80fd5b5061098e60048036038101906109899190613e10565b6120dd565b005b34801561099b575f80fd5b506109b660048036038101906109b19190613eff565b612232565b6040516109c39190613da7565b60405180910390f35b3480156109d7575f80fd5b506109e06122b4565b6040516109ed9190613da7565b60405180910390f35b348015610a01575f80fd5b50610a0a6122ba565b604051610a179190613da7565b60405180910390f35b348015610a2b575f80fd5b50610a466004803603810190610a419190613d6d565b6122c0565b005b348015610a53575f80fd5b50610a5c612482565b005b348015610a69575f80fd5b50610a72612585565b604051610a7f9190613da7565b60405180910390f35b610a9061258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1590613f87565b60405180910390fd5b8160128190555080601381905550601354601254610b3c9190613fd2565b6011819055505050565b606060038054610b5590614032565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190614032565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050905090565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610c0e610c0761258b565b8484612592565b6001905092915050565b6017602052805f5260405f205f915054906101000a900460ff1681565b5f600254905090565b600f5481565b60145481565b60155481565b5f610c5c848484612755565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ca361258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d19906140d2565b60405180910390fd5b610d3685610d2e61258b565b858403612592565b60019150509392505050565b610d4a61258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcf90613f87565b60405180910390fd5b670de0b6b3a76400006064610deb610c35565b610df5919061411d565b610dff919061411d565b811015610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e38906141bd565b60405180910390fd5b670de0b6b3a764000081610e5591906141db565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009600654604051610e8c9190613da7565b60405180910390a150565b5f6012905090565b5f610f3c610eab61258b565b848460015f610eb861258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f379190613fd2565b612592565b6001905092915050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60149054906101000a900460ff1681565b5f610f8830611202565b1015610fc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc090614266565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806110705750600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a6906142ce565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506110d261320e565b5f600a60146101000a81548160ff0219169083151502179055507f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb324260405161111b9190613da7565b60405180910390a1565b61112d61258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b290613f87565b60405180910390fd5b81600f8190555080601081905550601054600f546111d99190613fd2565b600e819055505050565b60075481565b60115481565b600d60169054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61124f61258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d490613f87565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6113a261258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142790613f87565b60405180910390fd5b5f600d60146101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b61148061258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590613f87565b60405180910390fd5b806115a357600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115999061435c565b60405180910390fd5b5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f61160461258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168990613f87565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f7906143c4565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161173a9190613e7e565b602060405180830381865afa158015611755573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061177991906143f6565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016117b6929190614421565b6020604051808303815f875af11580156117d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f6919061445c565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611829929190614421565b60405180910390a15092915050565b60065481565b61184661258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb90613f87565b60405180910390fd5b600d60159054906101000a900460ff1615611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191b906144d1565b60405180910390fd5b6001600d60156101000a81548160ff0219169083151502179055506001600d60166101000a81548160ff0219169083151502179055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546119bf90614032565b80601f01602080910402602001604051908101604052809291908181526020018280546119eb90614032565b8015611a365780601f10611a0d57610100808354040283529160200191611a36565b820191905f5260205f20905b815481529060010190602001808311611a1957829003601f168201915b5050505050905090565b611a4861258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acd90613f87565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5c9061455f565b60405180910390fd5b611b6f8282613466565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b60125481565b5f8060015f611bcc61258b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7d906145ed565b60405180910390fd5b611c9a611c9161258b565b85858403612592565b600191505092915050565b5f611cb8611cb161258b565b8484612755565b6001905092915050565b60085481565b6018602052805f5260405f205f915054906101000a900460ff1681565b600d60159054906101000a900460ff1681565b611d0061258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8590613f87565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e289190613d54565b60405180910390a25050565b611e3c61258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec190613f87565b60405180910390fd5b670de0b6b3a76400006064611edd610c35565b611ee7919061411d565b611ef1919061411d565b811015611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a9061467b565b60405180910390fd5b670de0b6b3a764000081611f4791906141db565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc600854604051611f7e9190613da7565b60405180910390a150565b611f9161258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690613f87565b60405180910390fd5b620186a061202b610c35565b612035919061411d565b811015612077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e90614709565b60405180910390fd5b6064612081610c35565b61208b919061411d565b8111156120cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c490614797565b60405180910390fd5b80600b8190555050565b600e5481565b6120e561258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216a90613f87565b60405180910390fd5b670de0b6b3a76400006064612186610c35565b612190919061411d565b61219a919061411d565b8110156121dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d390614825565b60405180910390fd5b670de0b6b3a7640000816121f091906141db565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516122279190613da7565b60405180910390a150565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600b5481565b60105481565b6122c861258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234d90613f87565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bb906148b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61248a61258b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612518576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250f90613f87565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161253d906148fe565b5f6040518083038185875af1925050503d805f8114612577576040519150601f19603f3d011682016040523d82523d5f602084013e61257c565b606091505b50508091505050565b60135481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f790614982565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361266e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266590614a10565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127489190613da7565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba90614a9e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282890614b2c565b60405180910390fd5b5f8111612873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286a90614b94565b60405180910390fd5b600d60159054906101000a900460ff166129625760165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612922575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295890614bfc565b60405180910390fd5b5b600d60149054906101000a900460ff1615612de55761297f611988565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129ed57506129bd611988565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a2557505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a5f575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ab2575060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612b05575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612de45760185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ba7575060175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c4e57600654811115612bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be890614c8a565b60405180910390fd5b600854612bfd83611202565b82612c089190613fd2565b1115612c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4090614cf2565b60405180910390fd5b612de3565b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ceb575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d3a57600754811115612d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2c90614d80565b60405180910390fd5b612de2565b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612de157600854612d9483611202565b82612d9f9190613fd2565b1115612de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd790614cf2565b60405180910390fd5b5b5b5b5b5b5f612def30611202565b90505f600b548210159050808015612e135750600d60169054906101000a900460ff165b8015612e2c5750600a60149054906101000a900460ff16155b8015612e7f575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612ed2575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612f25575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f68576001600a60146101000a81548160ff021916908315150217905550612f4d61320e565b5f600a60146101000a81548160ff0219169083151502179055505b5f6001905060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613008575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613011575f90505b5f81156131fa5760185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561306f57505f601154115b156130f95760646011548661308491906141db565b61308e919061411d565b9050601154601354826130a191906141db565b6130ab919061411d565b60155f8282546130bb9190613fd2565b92505081905550601154601254826130d391906141db565b6130dd919061411d565b60145f8282546130ed9190613fd2565b925050819055506131d7565b60185f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561315057505f600e54115b156131d6576064600e548661316591906141db565b61316f919061411d565b9050600e546010548261318291906141db565b61318c919061411d565b60155f82825461319c9190613fd2565b92505081905550600e54600f54826131b491906141db565b6131be919061411d565b60145f8282546131ce9190613fd2565b925050819055505b5b5f8111156131eb576131ea87308361350e565b5b80856131f79190614d9e565b94505b61320587878761350e565b50505050505050565b5f61321830611202565b90505f60145460155461322b9190613fd2565b90505f82148061323a57505f81145b15613246575050613464565b600a600b5461325591906141db565b82111561326e57600a600b5461326b91906141db565b91505b5f806002836015548661328191906141db565b61328b919061411d565b613295919061411d565b90506132ab81856132a69190614d9e565b61376d565b5f4790505f8190505f60026015546132c3919061411d565b866132ce9190614d9e565b601454846132dc91906141db565b6132e6919061411d565b905080826132f49190614d9e565b91505f6015819055505f6014819055505f8411801561331257505f82115b156133225761332184836139a3565b5b5f47111561345c575f600547600461333a91906141db565b613344919061411d565b9050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161338b906148fe565b5f6040518083038185875af1925050503d805f81146133c5576040519150601f19603f3d011682016040523d82523d5f602084013e6133ca565b606091505b505080965050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613415906148fe565b5f6040518083038185875af1925050503d805f811461344f576040519150601f19603f3d011682016040523d82523d5f602084013e613454565b606091505b505080965050505b505050505050505b565b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506134c48282613a7e565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361357c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161357390614a9e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e190614b2c565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561366d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161366490614e41565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546136fb9190613fd2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161375f9190613da7565b60405180910390a350505050565b5f600267ffffffffffffffff81111561378957613788614e5f565b5b6040519080825280602002602001820160405280156137b75781602001602082028036833780820191505090505b50905030815f815181106137ce576137cd614e8c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613872573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138969190614ecd565b816001815181106138aa576138a9614e8c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139103060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612592565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613972959493929190614fe8565b5f604051808303815f87803b158015613989575f80fd5b505af115801561399b573d5f803e3d5ffd5b505050505050565b6139cf3060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612592565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b8152600401613a3696959493929190615040565b60606040518083038185885af1158015613a52573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613a77919061509f565b5050505050565b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613b039291906150ef565b60405180910390a15050565b5f80fd5b5f819050919050565b613b2581613b13565b8114613b2f575f80fd5b50565b5f81359050613b4081613b1c565b92915050565b5f8060408385031215613b5c57613b5b613b0f565b5b5f613b6985828601613b32565b9250506020613b7a85828601613b32565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613bbb578082015181840152602081019050613ba0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613be082613b84565b613bea8185613b8e565b9350613bfa818560208601613b9e565b613c0381613bc6565b840191505092915050565b5f6020820190508181035f830152613c268184613bd6565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f613c70613c6b613c6684613c2e565b613c4d565b613c2e565b9050919050565b5f613c8182613c56565b9050919050565b5f613c9282613c77565b9050919050565b613ca281613c88565b82525050565b5f602082019050613cbb5f830184613c99565b92915050565b5f613ccb82613c2e565b9050919050565b613cdb81613cc1565b8114613ce5575f80fd5b50565b5f81359050613cf681613cd2565b92915050565b5f8060408385031215613d1257613d11613b0f565b5b5f613d1f85828601613ce8565b9250506020613d3085828601613b32565b9150509250929050565b5f8115159050919050565b613d4e81613d3a565b82525050565b5f602082019050613d675f830184613d45565b92915050565b5f60208284031215613d8257613d81613b0f565b5b5f613d8f84828501613ce8565b91505092915050565b613da181613b13565b82525050565b5f602082019050613dba5f830184613d98565b92915050565b5f805f60608486031215613dd757613dd6613b0f565b5b5f613de486828701613ce8565b9350506020613df586828701613ce8565b9250506040613e0686828701613b32565b9150509250925092565b5f60208284031215613e2557613e24613b0f565b5b5f613e3284828501613b32565b91505092915050565b5f60ff82169050919050565b613e5081613e3b565b82525050565b5f602082019050613e695f830184613e47565b92915050565b613e7881613cc1565b82525050565b5f602082019050613e915f830184613e6f565b92915050565b613ea081613d3a565b8114613eaa575f80fd5b50565b5f81359050613ebb81613e97565b92915050565b5f8060408385031215613ed757613ed6613b0f565b5b5f613ee485828601613ce8565b9250506020613ef585828601613ead565b9150509250929050565b5f8060408385031215613f1557613f14613b0f565b5b5f613f2285828601613ce8565b9250506020613f3385828601613ce8565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613f71602083613b8e565b9150613f7c82613f3d565b602082019050919050565b5f6020820190508181035f830152613f9e81613f65565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613fdc82613b13565b9150613fe783613b13565b9250828201905080821115613fff57613ffe613fa5565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061404957607f821691505b60208210810361405c5761405b614005565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6140bc602883613b8e565b91506140c782614062565b604082019050919050565b5f6020820190508181035f8301526140e9816140b0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61412782613b13565b915061413283613b13565b925082614142576141416140f0565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572205f8201527f7468616e20312500000000000000000000000000000000000000000000000000602082015250565b5f6141a7602783613b8e565b91506141b28261414d565b604082019050919050565b5f6020820190508181035f8301526141d48161419b565b9050919050565b5f6141e582613b13565b91506141f083613b13565b92508282026141fe81613b13565b9150828204841483151761421557614214613fa5565b5b5092915050565b7f4e6f20746f6b656e7320746f20737761700000000000000000000000000000005f82015250565b5f614250601183613b8e565b915061425b8261421c565b602082019050919050565b5f6020820190508181035f83015261427d81614244565b9050919050565b7f4e6f7420617574686f72697365640000000000000000000000000000000000005f82015250565b5f6142b8600e83613b8e565b91506142c382614284565b602082019050919050565b5f6020820190508181035f8301526142e5816142ac565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d205f8201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b5f614346602783613b8e565b9150614351826142ec565b604082019050919050565b5f6020820190508181035f8301526143738161433a565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000005f82015250565b5f6143ae601a83613b8e565b91506143b98261437a565b602082019050919050565b5f6020820190508181035f8301526143db816143a2565b9050919050565b5f815190506143f081613b1c565b92915050565b5f6020828403121561440b5761440a613b0f565b5b5f614418848285016143e2565b91505092915050565b5f6040820190506144345f830185613e6f565b6144416020830184613d98565b9392505050565b5f8151905061445681613e97565b92915050565b5f6020828403121561447157614470613b0f565b5b5f61447e84828501614448565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e670000000000000000005f82015250565b5f6144bb601783613b8e565b91506144c682614487565b602082019050919050565b5f6020820190508181035f8301526144e8816144af565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614549603983613b8e565b9150614554826144ef565b604082019050919050565b5f6020820190508181035f8301526145768161453d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6145d7602583613b8e565b91506145e28261457d565b604082019050919050565b5f6020820190508181035f830152614604816145cb565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f775f8201527f6572207468616e20312500000000000000000000000000000000000000000000602082015250565b5f614665602a83613b8e565b91506146708261460b565b604082019050919050565b5f6020820190508181035f83015261469281614659565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6146f3603583613b8e565b91506146fe82614699565b604082019050919050565b5f6020820190508181035f830152614720816146e7565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b5f614781603283613b8e565b915061478c82614727565b604082019050919050565b5f6020820190508181035f8301526147ae81614775565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f7765725f8201527f207468616e203125000000000000000000000000000000000000000000000000602082015250565b5f61480f602883613b8e565b915061481a826147b5565b604082019050919050565b5f6020820190508181035f83015261483c81614803565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61489d602683613b8e565b91506148a882614843565b604082019050919050565b5f6020820190508181035f8301526148ca81614891565b9050919050565b5f81905092915050565b50565b5f6148e95f836148d1565b91506148f4826148db565b5f82019050919050565b5f614908826148de565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61496c602483613b8e565b915061497782614912565b604082019050919050565b5f6020820190508181035f83015261499981614960565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6149fa602283613b8e565b9150614a05826149a0565b604082019050919050565b5f6020820190508181035f830152614a27816149ee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614a88602583613b8e565b9150614a9382614a2e565b604082019050919050565b5f6020820190508181035f830152614ab581614a7c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614b16602383613b8e565b9150614b2182614abc565b604082019050919050565b5f6020820190508181035f830152614b4381614b0a565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f614b7e601d83613b8e565b9150614b8982614b4a565b602082019050919050565b5f6020820190508181035f830152614bab81614b72565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614be6601683613b8e565b9150614bf182614bb2565b602082019050919050565b5f6020820190508181035f830152614c1381614bda565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b5f614c74602883613b8e565b9150614c7f82614c1a565b604082019050919050565b5f6020820190508181035f830152614ca181614c68565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c657400000000000000005f82015250565b5f614cdc601883613b8e565b9150614ce782614ca8565b602082019050919050565b5f6020820190508181035f830152614d0981614cd0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b5f614d6a602a83613b8e565b9150614d7582614d10565b604082019050919050565b5f6020820190508181035f830152614d9781614d5e565b9050919050565b5f614da882613b13565b9150614db383613b13565b9250828203905081811115614dcb57614dca613fa5565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614e2b602683613b8e565b9150614e3682614dd1565b604082019050919050565b5f6020820190508181035f830152614e5881614e1f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614ec781613cd2565b92915050565b5f60208284031215614ee257614ee1613b0f565b5b5f614eef84828501614eb9565b91505092915050565b5f819050919050565b5f614f1b614f16614f1184614ef8565b613c4d565b613b13565b9050919050565b614f2b81614f01565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614f6381613cc1565b82525050565b5f614f748383614f5a565b60208301905092915050565b5f602082019050919050565b5f614f9682614f31565b614fa08185614f3b565b9350614fab83614f4b565b805f5b83811015614fdb578151614fc28882614f69565b9750614fcd83614f80565b925050600181019050614fae565b5085935050505092915050565b5f60a082019050614ffb5f830188613d98565b6150086020830187614f22565b818103604083015261501a8186614f8c565b90506150296060830185613e6f565b6150366080830184613d98565b9695505050505050565b5f60c0820190506150535f830189613e6f565b6150606020830188613d98565b61506d6040830187614f22565b61507a6060830186614f22565b6150876080830185613e6f565b61509460a0830184613d98565b979650505050505050565b5f805f606084860312156150b6576150b5613b0f565b5b5f6150c3868287016143e2565b93505060206150d4868287016143e2565b92505060406150e5868287016143e2565b9150509250925092565b5f6040820190506151025f830185613e6f565b61510f6020830184613d45565b939250505056fea2646970667358221220df5a53d8fd6e29e143e597a3b986267b336ceb621b119ab2d40421f3260d820b64736f6c63430008140033

Deployed Bytecode Sourcemap

9617:13377:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16023:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4064:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9765:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4978:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10546:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4385:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10134:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10323:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10363;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5155:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13503:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4284:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5655:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9799:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9980:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22650:341;;;;;;;;;;;;;:::i;:::-;;15776:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9691:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10210;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10060:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4501:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8141:150;;;;;;;;;;;;;:::i;:::-;;13380:115;;;;;;;;;;;;;:::i;:::-;;14957:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21985:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9657:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13123:205;;;;;;;;;;;;;:::i;:::-;;7927:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4172:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15225:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10245:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5878:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4636:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9726:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10768:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10020:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16276:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14048:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14395:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10100:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13773:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4819:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9857:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10171:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8299:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22436:160;;;;;;;;;;;;;:::i;:::-;;10283:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16023:245;8064:12;:10;:12::i;:::-;8054:22;;:6;;;;;;;;;;;:22;;;8046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16142:13:::1;16123:16;:32;;;;16185:13;16166:16;:32;;;;16244:16;;16225;;:35;;;;:::i;:::-;16209:13;:51;;;;16023:245:::0;;:::o;4064:100::-;4118:13;4151:5;4144:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4064:100;:::o;9765:27::-;;;;;;;;;;;;;:::o;4978:169::-;5061:4;5078:39;5087:12;:10;:12::i;:::-;5101:7;5110:6;5078:8;:39::i;:::-;5135:4;5128:11;;4978:169;;;;:::o;10546:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;4385:108::-;4446:7;4473:12;;4466:19;;4385:108;:::o;10134:30::-;;;;:::o;10323:33::-;;;;:::o;10363:::-;;;;:::o;5155:492::-;5295:4;5312:36;5322:6;5330:9;5341:6;5312:9;:36::i;:::-;5361:24;5388:11;:19;5400:6;5388:19;;;;;;;;;;;;;;;:33;5408:12;:10;:12::i;:::-;5388:33;;;;;;;;;;;;;;;;5361:60;;5460:6;5440:16;:26;;5432:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5547:57;5556:6;5564:12;:10;:12::i;:::-;5597:6;5578:16;:25;5547:8;:57::i;:::-;5635:4;5628:11;;;5155:492;;;;;:::o;13503:262::-;8064:12;:10;:12::i;:::-;8054:22;;:6;;;;;;;;;;;:22;;;8046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13617:4:::1;13612:3;13596:13;:11;:13::i;:::-;:19;;;;:::i;:::-;13595:26;;;;:::i;:::-;13585:6;:36;;13577:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;13701:6;13691;:17;;;;:::i;:::-;13676:12;:32;;;;13724:33;13744:12;;13724:33;;;;;;:::i;:::-;;;;;;;;13503:262:::0;:::o;4284:93::-;4342:5;4367:2;4360:9;;4284:93;:::o;5655:215::-;5743:4;5760:80;5769:12;:10;:12::i;:::-;5783:7;5829:10;5792:11;:25;5804:12;:10;:12::i;:::-;5792:25;;;;;;;;;;;;;;;:34;5818:7;5792:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5760:8;:80::i;:::-;5858:4;5851:11;;5655:215;;;;:::o;9799:21::-;;;;;;;;;;;;;:::o;9980:33::-;;;;;;;;;;;;;:::o;22650:341::-;22731:1;22703:24;22721:4;22703:9;:24::i;:::-;:29;;22695:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;22787:17;;;;;;;;;;;22773:31;;:10;:31;;;:65;;;;22822:16;;;;;;;;;;;22808:30;;:10;:30;;;22773:65;22765:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;22879:4;22868:8;;:15;;;;;;;;;;;;;;;;;;22894:10;:8;:10::i;:::-;22926:5;22915:8;;:16;;;;;;;;;;;;;;;;;;22947:36;22967:15;22947:36;;;;;;:::i;:::-;;;;;;;;22650:341::o;15776:239::-;8064:12;:10;:12::i;:::-;8054:22;;:6;;;;;;;;;;;:22;;;8046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15893:13:::1;15875:15;:31;;;;15935:13;15917:15;:31;;;;15992:15;;15974;;:33;;;;:::i;:::-;15959:12;:48;;;;15776:239:::0;;:::o;9691:28::-;;;;:::o;10210:::-;;;;:::o;10060:31::-;;;;;;;;;;;;;:::o;4501:127::-;4575:7;4602:9;:18;4612:7;4602:18;;;;;;;;;;;;;;;;4595:25;;4501:127;;;:::o;8141:150::-;8064:12;:10;:12::i;:::-;8054:22;;:6;;;;;;;;;;;:22;;;8046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8250:1:::1;8213:40;;8234:6;;;;;;;;;;;8213:40;;;;;;;;;;;;8281:1;8264:6;;:19;;;;;;;;;;;;;;;;;;8141:150::o:0;13380:115::-;8064:12;:10;:12::i;:::-;8054:22;;:6;;;;;;;;;;;:22;;;8046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13451:5:::1;13434:14;;:22;;;;;;;;;;;;;;;;;;13472:15;;;;;;;;;;13380:115::o:0;14957:260::-;8064:12;:10;:12::i;:::-;8054:22;;:6;;;;;;;;;;;:22;;;8046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15053:4:::1;15049:104;;15091:6;;;;;;;;;;;15081:16;;:6;:16;;::::0;15073:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15049:104;15205:4;15163:31;:39;15195:6;15163:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;14957:260:::0;;:::o;21985:381::-;22072:10;8064:12;:10;:12::i;:::-;8054:22;;:6;;;;;;;;;;;:22;;;8046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22121:1:::1;22103:20;;:6;:20;;::::0;22095:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22165:24;22199:6;22192:24;;;22225:4;22192:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22165:66;;22257:6;22250:23;;;22274:3;22279:16;22250:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22242:54;;22312:46;22333:6;22341:16;22312:46;;;;;;;:::i;:::-;;;;;;;;22084:282;21985:381:::0;;;;:::o;9657:27::-;;;;:::o;13123:205::-;8064:12;:10;:12::i;:::-;8054:22;;:6;;;;;;;;;;;:22;;;8046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13187:13:::1;;;;;;;;;;;13186:14;13178:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13255:4;13239:13;;:20;;;;;;;;;;;;;;;;;;13284:4;13270:11;;:18;;;;;;;;;;;;;;;;;;13304:16;;;;;;;;;;13123:205::o:0;7927:79::-;7965:7;7992:6;;;;;;;;;;;7985:13;;7927:79;:::o;4172:104::-;4228:13;4261:7;4254:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4172:104;:::o;15225:295::-;8064:12;:10;:12::i;:::-;8054:22;;:6;;;;;;;;;;;:22;;;8046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15334:6:::1;;;;;;;;;;;15326:14;;:4;:14;;::::0;15318:84:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15415:41;15444:4;15450:5;15415:28;:41::i;:::-;15506:5;15472:40;;15500:4;15472:40;;;;;;;;;;;;15225:295:::0;;:::o;10245:31::-;;;;:::o;5878:413::-;5971:4;5988:24;6015:11;:25;6027:12;:10;:12::i;:::-;6015:25;;;;;;;;;;;;;;;:34;6041:7;6015:34;;;;;;;;;;;;;;;;5988:61;;6088:15;6068:16;:35;;6060:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6181:67;6190:12;:10;:12::i;:::-;6204:7;6232:15;6213:16;:34;6181:8;:67::i;:::-;6279:4;6272:11;;;5878:413;;;;:::o;4636:175::-;4722:4;4739:42;4749:12;:10;:12::i;:::-;4763:9;4774:6;4739:9;:42::i;:::-;4799:4;4792:11;;4636:175;;;;:::o;9726:30::-;;;;:::o;10768:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;10020:33::-;;;;;;;;;;;;;:::o;16276:182::-;8064:12;:10;:12::i;:::-;8054:22;;:6;;;;;;;;;;;:22;;;8046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16392:8:::1;16361:19;:28;16381:7;16361:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16432:7;16416:34;;;16441:8;16416:34;;;;;;:::i;:::-;;;;;;;;16276:182:::0;;:::o;14048:277::-;8064:12;:10;:12::i;:::-;8054:22;;:6;;;;;;;;;;;:22;;;8046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14165:4:::1;14160:3;14144:13;:11;:13::i;:::-;:19;;;;:::i;:::-;14143:26;;;;:::i;:::-;14133:6;:36;;14125:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;14255:6;14245;:17;;;;:::i;:::-;14227:15;:35;;;;14278:39;14301:15;;14278:39;;;;;;:::i;:::-;;;;;;;;14048:277:::0;:::o;14395:339::-;8064:12;:10;:12::i;:::-;8054:22;;:6;;;;;;;;;;;:22;;;8046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14515:6:::1;14499:13;:11;:13::i;:::-;:22;;;;:::i;:::-;14486:9;:35;;14478:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;14627:3;14611:13;:11;:13::i;:::-;:19;;;;:::i;:::-;14598:9;:32;;14590:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;14717:9;14696:18;:30;;;;14395:339:::0;:::o;10100:27::-;;;;:::o;13773:267::-;8064:12;:10;:12::i;:::-;8054:22;;:6;;;;;;;;;;;:22;;;8046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13888:4:::1;13883:3;13867:13;:11;:13::i;:::-;:19;;;;:::i;:::-;13866:26;;;;:::i;:::-;13856:6;:36;;13848:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;13974:6;13964;:17;;;;:::i;:::-;13948:13;:33;;;;13997:35;14018:13;;13997:35;;;;;;:::i;:::-;;;;;;;;13773:267:::0;:::o;4819:151::-;4908:7;4935:11;:18;4947:5;4935:18;;;;;;;;;;;;;;;:27;4954:7;4935:27;;;;;;;;;;;;;;;;4928:34;;4819:151;;;;:::o;9857:33::-;;;;:::o;10171:30::-;;;;:::o;8299:244::-;8064:12;:10;:12::i;:::-;8054:22;;:6;;;;;;;;;;;:22;;;8046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8408:1:::1;8388:22;;:8;:22;;::::0;8380:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8498:8;8469:38;;8490:6;;;;;;;;;;;8469:38;;;;;;;;;;;;8527:8;8518:6;;:17;;;;;;;;;;;;;;;;;;8299:244:::0;:::o;22436:160::-;8064:12;:10;:12::i;:::-;8054:22;;:6;;;;;;;;;;;:22;;;8046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22494:12:::1;22538:10;22530:24;;22562:21;22530:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22517:71;;;;;22483:113;22436:160::o:0;10283:31::-;;;;:::o;213:98::-;266:7;293:10;286:17;;213:98;:::o;7220:380::-;7373:1;7356:19;;:5;:19;;;7348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7454:1;7435:21;;:7;:21;;;7427:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7538:6;7508:11;:18;7520:5;7508:18;;;;;;;;;;;;;;;:27;7527:7;7508:27;;;;;;;;;;;;;;;:36;;;;7576:7;7560:32;;7569:5;7560:32;;;7585:6;7560:32;;;;;;:::i;:::-;;;;;;;;7220:380;;;:::o;16466:3035::-;16582:1;16566:18;;:4;:18;;;16558:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16659:1;16645:16;;:2;:16;;;16637:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16729:1;16720:6;:10;16712:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;16781:13;;;;;;;;;;;16777:132;;16818:19;:25;16838:4;16818:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;16847:19;:23;16867:2;16847:23;;;;;;;;;;;;;;;;;;;;;;;;;16818:52;16810:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;16777:132;16924:14;;;;;;;;;;;16921:995;;;16966:7;:5;:7::i;:::-;16958:15;;:4;:15;;;;:32;;;;;16983:7;:5;:7::i;:::-;16977:13;;:2;:13;;;;16958:32;:52;;;;;17008:1;16994:16;;:2;:16;;;;16958:52;:77;;;;;17028:6;17014:21;;:2;:21;;;;16958:77;:107;;;;;17040:19;:25;17060:4;17040:25;;;;;;;;;;;;;;;;;;;;;;;;;17039:26;16958:107;:135;;;;;17070:19;:23;17090:2;17070:23;;;;;;;;;;;;;;;;;;;;;;;;;17069:24;16958:135;16954:951;;;17151:25;:31;17177:4;17151:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;17187:31;:35;17219:2;17187:35;;;;;;;;;;;;;;;;;;;;;;;;;17186:36;17151:71;17147:743;;;17269:12;;17259:6;:22;;17251:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17387:15;;17370:13;17380:2;17370:9;:13::i;:::-;17361:6;:22;;;;:::i;:::-;:41;;17353:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17147:743;;;17507:25;:29;17533:2;17507:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;17541:31;:37;17573:4;17541:37;;;;;;;;;;;;;;;;;;;;;;;;;17540:38;17507:71;17503:387;;;17625:13;;17615:6;:23;;17607:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17503:387;;;17733:31;:35;17765:2;17733:35;;;;;;;;;;;;;;;;;;;;;;;;;17728:162;;17826:15;;17809:13;17819:2;17809:9;:13::i;:::-;17800:6;:22;;;;:::i;:::-;:41;;17792:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17728:162;17503:387;17147:743;16954:951;16921:995;17928:28;17959:24;17977:4;17959:9;:24::i;:::-;17928:55;;17996:12;18035:18;;18011:20;:42;;17996:57;;18069:7;:22;;;;;18080:11;;;;;;;;;;;18069:22;:35;;;;;18096:8;;;;;;;;;;;18095:9;18069:35;:71;;;;;18109:25;:31;18135:4;18109:31;;;;;;;;;;;;;;;;;;;;;;;;;18108:32;18069:71;:101;;;;;18145:19;:25;18165:4;18145:25;;;;;;;;;;;;;;;;;;;;;;;;;18144:26;18069:101;:129;;;;;18175:19;:23;18195:2;18175:23;;;;;;;;;;;;;;;;;;;;;;;;;18174:24;18069:129;18066:236;;;18226:4;18215:8;;:15;;;;;;;;;;;;;;;;;;18247:10;:8;:10::i;:::-;18285:5;18274:8;;:16;;;;;;;;;;;;;;;;;;18066:236;18314:12;18329:4;18314:19;;18432;:25;18452:4;18432:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;18461:19;:23;18481:2;18461:23;;;;;;;;;;;;;;;;;;;;;;;;;18432:52;18429:99;;;18511:5;18501:15;;18429:99;18540:12;18644:7;18641:807;;;18695:25;:29;18721:2;18695:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;18744:1;18728:13;;:17;18695:50;18691:610;;;18797:3;18781:13;;18772:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;18765:35;;18867:13;;18848:16;;18841:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;18819:18;;:61;;;;;;;:::i;:::-;;;;;;;;18947:13;;18928:16;;18921:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;18899:18;;:61;;;;;;;:::i;:::-;;;;;;;;18691:610;;;19023:25;:31;19049:4;19023:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;19073:1;19058:12;;:16;19023:51;19020:281;;;19126:3;19111:12;;19102:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;19095:34;;19195:12;;19177:15;;19170:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;19148:18;;:59;;;;;;;:::i;:::-;;;;;;;;19273:12;;19255:15;;19248:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;19226:18;;:59;;;;;;;:::i;:::-;;;;;;;;19020:281;18691:610;19327:1;19320:4;:8;19317:89;;;19348:42;19364:4;19378;19385;19348:15;:42::i;:::-;19317:89;19432:4;19422:14;;;;;:::i;:::-;;;18641:807;19460:33;19476:4;19482:2;19486:6;19460:15;:33::i;:::-;16545:2956;;;;16466:3035;;;:::o;20605:1372::-;20644:23;20670:24;20688:4;20670:9;:24::i;:::-;20644:50;;20705:25;20754:18;;20733;;:39;;;;:::i;:::-;20705:67;;20807:1;20788:15;:20;:46;;;;20833:1;20812:17;:22;20788:46;20785:60;;;20837:7;;;;20785:60;20899:2;20878:18;;:23;;;;:::i;:::-;20860:15;:41;20857:113;;;20956:2;20935:18;;:23;;;;:::i;:::-;20917:41;;20857:113;20982:12;21056:23;21141:1;21121:17;21100:18;;21082:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;21056:86;;21155:51;21190:15;21172;:33;;;;:::i;:::-;21155:16;:51::i;:::-;21219:18;21240:21;21219:42;;21272:23;21298:10;21272:36;;21321:23;21422:1;21403:18;;:20;;;;:::i;:::-;21382:17;:42;;;;:::i;:::-;21360:18;;21347:10;:31;;;;:::i;:::-;:78;;;;:::i;:::-;21321:104;;21457:15;21438:34;;;;;:::i;:::-;;;21506:1;21485:18;:22;;;;21539:1;21518:18;:22;;;;21574:1;21556:15;:19;:42;;;;;21597:1;21579:15;:19;21556:42;21553:119;;;21614:46;21627:15;21644;21614:12;:46::i;:::-;21553:119;21711:1;21687:21;:25;21684:286;;;21728:20;21781:1;21756:21;21752:1;:25;;;;:::i;:::-;21751:31;;;;:::i;:::-;21728:54;;21818:16;;;;;;;;;;;21810:30;;21848:12;21810:55;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21797:68;;;;;21901:17;;;;;;;;;;;21893:31;;21932:21;21893:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21880:78;;;;;21713:257;21684:286;20633:1344;;;;;;;20605:1372;:::o;15528:240::-;15645:5;15611:25;:31;15637:4;15611:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15663;15690:4;15696:5;15663:26;:39::i;:::-;15754:5;15720:40;;15748:4;15720:40;;;;;;;;;;;;15528:240;;:::o;6299:614::-;6457:1;6439:20;;:6;:20;;;6431:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6541:1;6520:23;;:9;:23;;;6512:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6596:21;6620:9;:17;6630:6;6620:17;;;;;;;;;;;;;;;;6596:41;;6673:6;6656:13;:23;;6648:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6794:6;6778:13;:22;6758:9;:17;6768:6;6758:17;;;;;;;;;;;;;;;:42;;;;6846:6;6822:9;:20;6832:9;6822:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6887:9;6870:35;;6879:6;6870:35;;;6898:6;6870:35;;;;;;:::i;:::-;;;;;;;;6420:493;6299:614;;;:::o;19507:573::-;19635:21;19673:1;19659:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19635:40;;19704:4;19686;19691:1;19686:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19730:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19720:4;19725:1;19720:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;19759:56;19776:4;19791:9;;;;;;;;;;;19803:11;19759:8;:56::i;:::-;19854:9;;;;;;;;;;;:60;;;19929:11;19955:1;19999:4;20026;20046:15;19854:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19562:518;19507:573;:::o;20088:509::-;20236:56;20253:4;20268:9;;;;;;;;;;;20280:11;20236:8;:56::i;:::-;20335:9;;;;;;;;;;;:25;;;20368:9;20401:4;20421:11;20447:1;20490;20541:6;20563:15;20335:254;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20088:509;;:::o;14742:207::-;14872:10;14830:31;:39;14862:6;14830:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;14898:43;14922:6;14930:10;14898:43;;;;;;;:::i;:::-;;;;;;;;14742:207;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:60::-;2672:3;2693:5;2686:12;;2644:60;;;:::o;2710:142::-;2760:9;2793:53;2811:34;2820:24;2838:5;2820:24;:::i;:::-;2811:34;:::i;:::-;2793:53;:::i;:::-;2780:66;;2710:142;;;:::o;2858:126::-;2908:9;2941:37;2972:5;2941:37;:::i;:::-;2928:50;;2858:126;;;:::o;2990:144::-;3058:9;3091:37;3122:5;3091:37;:::i;:::-;3078:50;;2990:144;;;:::o;3140:167::-;3245:55;3294:5;3245:55;:::i;:::-;3240:3;3233:68;3140:167;;:::o;3313:258::-;3424:4;3462:2;3451:9;3447:18;3439:26;;3475:89;3561:1;3550:9;3546:17;3537:6;3475:89;:::i;:::-;3313:258;;;;:::o;3577:96::-;3614:7;3643:24;3661:5;3643:24;:::i;:::-;3632:35;;3577:96;;;:::o;3679:122::-;3752:24;3770:5;3752:24;:::i;:::-;3745:5;3742:35;3732:63;;3791:1;3788;3781:12;3732:63;3679:122;:::o;3807:139::-;3853:5;3891:6;3878:20;3869:29;;3907:33;3934:5;3907:33;:::i;:::-;3807:139;;;;:::o;3952:474::-;4020:6;4028;4077:2;4065:9;4056:7;4052:23;4048:32;4045:119;;;4083:79;;:::i;:::-;4045:119;4203:1;4228:53;4273:7;4264:6;4253:9;4249:22;4228:53;:::i;:::-;4218:63;;4174:117;4330:2;4356:53;4401:7;4392:6;4381:9;4377:22;4356:53;:::i;:::-;4346:63;;4301:118;3952:474;;;;;:::o;4432:90::-;4466:7;4509:5;4502:13;4495:21;4484:32;;4432:90;;;:::o;4528:109::-;4609:21;4624:5;4609:21;:::i;:::-;4604:3;4597:34;4528:109;;:::o;4643:210::-;4730:4;4768:2;4757:9;4753:18;4745:26;;4781:65;4843:1;4832:9;4828:17;4819:6;4781:65;:::i;:::-;4643:210;;;;:::o;4859:329::-;4918:6;4967:2;4955:9;4946:7;4942:23;4938:32;4935:119;;;4973:79;;:::i;:::-;4935:119;5093:1;5118:53;5163:7;5154:6;5143:9;5139:22;5118:53;:::i;:::-;5108:63;;5064:117;4859:329;;;;:::o;5194:118::-;5281:24;5299:5;5281:24;:::i;:::-;5276:3;5269:37;5194:118;;:::o;5318:222::-;5411:4;5449:2;5438:9;5434:18;5426:26;;5462:71;5530:1;5519:9;5515:17;5506:6;5462:71;:::i;:::-;5318:222;;;;:::o;5546:619::-;5623:6;5631;5639;5688:2;5676:9;5667:7;5663:23;5659:32;5656:119;;;5694:79;;:::i;:::-;5656:119;5814:1;5839:53;5884:7;5875:6;5864:9;5860:22;5839:53;:::i;:::-;5829:63;;5785:117;5941:2;5967:53;6012:7;6003:6;5992:9;5988:22;5967:53;:::i;:::-;5957:63;;5912:118;6069:2;6095:53;6140:7;6131:6;6120:9;6116:22;6095:53;:::i;:::-;6085:63;;6040:118;5546:619;;;;;:::o;6171:329::-;6230:6;6279:2;6267:9;6258:7;6254:23;6250:32;6247:119;;;6285:79;;:::i;:::-;6247:119;6405:1;6430:53;6475:7;6466:6;6455:9;6451:22;6430:53;:::i;:::-;6420:63;;6376:117;6171:329;;;;:::o;6506:86::-;6541:7;6581:4;6574:5;6570:16;6559:27;;6506:86;;;:::o;6598:112::-;6681:22;6697:5;6681:22;:::i;:::-;6676:3;6669:35;6598:112;;:::o;6716:214::-;6805:4;6843:2;6832:9;6828:18;6820:26;;6856:67;6920:1;6909:9;6905:17;6896:6;6856:67;:::i;:::-;6716:214;;;;:::o;6936:118::-;7023:24;7041:5;7023:24;:::i;:::-;7018:3;7011:37;6936:118;;:::o;7060:222::-;7153:4;7191:2;7180:9;7176:18;7168:26;;7204:71;7272:1;7261:9;7257:17;7248:6;7204:71;:::i;:::-;7060:222;;;;:::o;7288:116::-;7358:21;7373:5;7358:21;:::i;:::-;7351:5;7348:32;7338:60;;7394:1;7391;7384:12;7338:60;7288:116;:::o;7410:133::-;7453:5;7491:6;7478:20;7469:29;;7507:30;7531:5;7507:30;:::i;:::-;7410:133;;;;:::o;7549:468::-;7614:6;7622;7671:2;7659:9;7650:7;7646:23;7642:32;7639:119;;;7677:79;;:::i;:::-;7639:119;7797:1;7822:53;7867:7;7858:6;7847:9;7843:22;7822:53;:::i;:::-;7812:63;;7768:117;7924:2;7950:50;7992:7;7983:6;7972:9;7968:22;7950:50;:::i;:::-;7940:60;;7895:115;7549:468;;;;;:::o;8023:474::-;8091:6;8099;8148:2;8136:9;8127:7;8123:23;8119:32;8116:119;;;8154:79;;:::i;:::-;8116:119;8274:1;8299:53;8344:7;8335:6;8324:9;8320:22;8299:53;:::i;:::-;8289:63;;8245:117;8401:2;8427:53;8472:7;8463:6;8452:9;8448:22;8427:53;:::i;:::-;8417:63;;8372:118;8023:474;;;;;:::o;8503:182::-;8643:34;8639:1;8631:6;8627:14;8620:58;8503:182;:::o;8691:366::-;8833:3;8854:67;8918:2;8913:3;8854:67;:::i;:::-;8847:74;;8930:93;9019:3;8930:93;:::i;:::-;9048:2;9043:3;9039:12;9032:19;;8691:366;;;:::o;9063:419::-;9229:4;9267:2;9256:9;9252:18;9244:26;;9316:9;9310:4;9306:20;9302:1;9291:9;9287:17;9280:47;9344:131;9470:4;9344:131;:::i;:::-;9336:139;;9063:419;;;:::o;9488:180::-;9536:77;9533:1;9526:88;9633:4;9630:1;9623:15;9657:4;9654:1;9647:15;9674:191;9714:3;9733:20;9751:1;9733:20;:::i;:::-;9728:25;;9767:20;9785:1;9767:20;:::i;:::-;9762:25;;9810:1;9807;9803:9;9796:16;;9831:3;9828:1;9825:10;9822:36;;;9838:18;;:::i;:::-;9822:36;9674:191;;;;:::o;9871:180::-;9919:77;9916:1;9909:88;10016:4;10013:1;10006:15;10040:4;10037:1;10030:15;10057:320;10101:6;10138:1;10132:4;10128:12;10118:22;;10185:1;10179:4;10175:12;10206:18;10196:81;;10262:4;10254:6;10250:17;10240:27;;10196:81;10324:2;10316:6;10313:14;10293:18;10290:38;10287:84;;10343:18;;:::i;:::-;10287:84;10108:269;10057:320;;;:::o;10383:227::-;10523:34;10519:1;10511:6;10507:14;10500:58;10592:10;10587:2;10579:6;10575:15;10568:35;10383:227;:::o;10616:366::-;10758:3;10779:67;10843:2;10838:3;10779:67;:::i;:::-;10772:74;;10855:93;10944:3;10855:93;:::i;:::-;10973:2;10968:3;10964:12;10957:19;;10616:366;;;:::o;10988:419::-;11154:4;11192:2;11181:9;11177:18;11169:26;;11241:9;11235:4;11231:20;11227:1;11216:9;11212:17;11205:47;11269:131;11395:4;11269:131;:::i;:::-;11261:139;;10988:419;;;:::o;11413:180::-;11461:77;11458:1;11451:88;11558:4;11555:1;11548:15;11582:4;11579:1;11572:15;11599:185;11639:1;11656:20;11674:1;11656:20;:::i;:::-;11651:25;;11690:20;11708:1;11690:20;:::i;:::-;11685:25;;11729:1;11719:35;;11734:18;;:::i;:::-;11719:35;11776:1;11773;11769:9;11764:14;;11599:185;;;;:::o;11790:226::-;11930:34;11926:1;11918:6;11914:14;11907:58;11999:9;11994:2;11986:6;11982:15;11975:34;11790:226;:::o;12022:366::-;12164:3;12185:67;12249:2;12244:3;12185:67;:::i;:::-;12178:74;;12261:93;12350:3;12261:93;:::i;:::-;12379:2;12374:3;12370:12;12363:19;;12022:366;;;:::o;12394:419::-;12560:4;12598:2;12587:9;12583:18;12575:26;;12647:9;12641:4;12637:20;12633:1;12622:9;12618:17;12611:47;12675:131;12801:4;12675:131;:::i;:::-;12667:139;;12394:419;;;:::o;12819:410::-;12859:7;12882:20;12900:1;12882:20;:::i;:::-;12877:25;;12916:20;12934:1;12916:20;:::i;:::-;12911:25;;12971:1;12968;12964:9;12993:30;13011:11;12993:30;:::i;:::-;12982:41;;13172:1;13163:7;13159:15;13156:1;13153:22;13133:1;13126:9;13106:83;13083:139;;13202:18;;:::i;:::-;13083:139;12867:362;12819:410;;;;:::o;13235:167::-;13375:19;13371:1;13363:6;13359:14;13352:43;13235:167;:::o;13408:366::-;13550:3;13571:67;13635:2;13630:3;13571:67;:::i;:::-;13564:74;;13647:93;13736:3;13647:93;:::i;:::-;13765:2;13760:3;13756:12;13749:19;;13408:366;;;:::o;13780:419::-;13946:4;13984:2;13973:9;13969:18;13961:26;;14033:9;14027:4;14023:20;14019:1;14008:9;14004:17;13997:47;14061:131;14187:4;14061:131;:::i;:::-;14053:139;;13780:419;;;:::o;14205:164::-;14345:16;14341:1;14333:6;14329:14;14322:40;14205:164;:::o;14375:366::-;14517:3;14538:67;14602:2;14597:3;14538:67;:::i;:::-;14531:74;;14614:93;14703:3;14614:93;:::i;:::-;14732:2;14727:3;14723:12;14716:19;;14375:366;;;:::o;14747:419::-;14913:4;14951:2;14940:9;14936:18;14928:26;;15000:9;14994:4;14990:20;14986:1;14975:9;14971:17;14964:47;15028:131;15154:4;15028:131;:::i;:::-;15020:139;;14747:419;;;:::o;15172:226::-;15312:34;15308:1;15300:6;15296:14;15289:58;15381:9;15376:2;15368:6;15364:15;15357:34;15172:226;:::o;15404:366::-;15546:3;15567:67;15631:2;15626:3;15567:67;:::i;:::-;15560:74;;15643:93;15732:3;15643:93;:::i;:::-;15761:2;15756:3;15752:12;15745:19;;15404:366;;;:::o;15776:419::-;15942:4;15980:2;15969:9;15965:18;15957:26;;16029:9;16023:4;16019:20;16015:1;16004:9;16000:17;15993:47;16057:131;16183:4;16057:131;:::i;:::-;16049:139;;15776:419;;;:::o;16201:176::-;16341:28;16337:1;16329:6;16325:14;16318:52;16201:176;:::o;16383:366::-;16525:3;16546:67;16610:2;16605:3;16546:67;:::i;:::-;16539:74;;16622:93;16711:3;16622:93;:::i;:::-;16740:2;16735:3;16731:12;16724:19;;16383:366;;;:::o;16755:419::-;16921:4;16959:2;16948:9;16944:18;16936:26;;17008:9;17002:4;16998:20;16994:1;16983:9;16979:17;16972:47;17036:131;17162:4;17036:131;:::i;:::-;17028:139;;16755:419;;;:::o;17180:143::-;17237:5;17268:6;17262:13;17253:22;;17284:33;17311:5;17284:33;:::i;:::-;17180:143;;;;:::o;17329:351::-;17399:6;17448:2;17436:9;17427:7;17423:23;17419:32;17416:119;;;17454:79;;:::i;:::-;17416:119;17574:1;17599:64;17655:7;17646:6;17635:9;17631:22;17599:64;:::i;:::-;17589:74;;17545:128;17329:351;;;;:::o;17686:332::-;17807:4;17845:2;17834:9;17830:18;17822:26;;17858:71;17926:1;17915:9;17911:17;17902:6;17858:71;:::i;:::-;17939:72;18007:2;17996:9;17992:18;17983:6;17939:72;:::i;:::-;17686:332;;;;;:::o;18024:137::-;18078:5;18109:6;18103:13;18094:22;;18125:30;18149:5;18125:30;:::i;:::-;18024:137;;;;:::o;18167:345::-;18234:6;18283:2;18271:9;18262:7;18258:23;18254:32;18251:119;;;18289:79;;:::i;:::-;18251:119;18409:1;18434:61;18487:7;18478:6;18467:9;18463:22;18434:61;:::i;:::-;18424:71;;18380:125;18167:345;;;;:::o;18518:173::-;18658:25;18654:1;18646:6;18642:14;18635:49;18518:173;:::o;18697:366::-;18839:3;18860:67;18924:2;18919:3;18860:67;:::i;:::-;18853:74;;18936:93;19025:3;18936:93;:::i;:::-;19054:2;19049:3;19045:12;19038:19;;18697:366;;;:::o;19069:419::-;19235:4;19273:2;19262:9;19258:18;19250:26;;19322:9;19316:4;19312:20;19308:1;19297:9;19293:17;19286:47;19350:131;19476:4;19350:131;:::i;:::-;19342:139;;19069:419;;;:::o;19494:244::-;19634:34;19630:1;19622:6;19618:14;19611:58;19703:27;19698:2;19690:6;19686:15;19679:52;19494:244;:::o;19744:366::-;19886:3;19907:67;19971:2;19966:3;19907:67;:::i;:::-;19900:74;;19983:93;20072:3;19983:93;:::i;:::-;20101:2;20096:3;20092:12;20085:19;;19744:366;;;:::o;20116:419::-;20282:4;20320:2;20309:9;20305:18;20297:26;;20369:9;20363:4;20359:20;20355:1;20344:9;20340:17;20333:47;20397:131;20523:4;20397:131;:::i;:::-;20389:139;;20116:419;;;:::o;20541:224::-;20681:34;20677:1;20669:6;20665:14;20658:58;20750:7;20745:2;20737:6;20733:15;20726:32;20541:224;:::o;20771:366::-;20913:3;20934:67;20998:2;20993:3;20934:67;:::i;:::-;20927:74;;21010:93;21099:3;21010:93;:::i;:::-;21128:2;21123:3;21119:12;21112:19;;20771:366;;;:::o;21143:419::-;21309:4;21347:2;21336:9;21332:18;21324:26;;21396:9;21390:4;21386:20;21382:1;21371:9;21367:17;21360:47;21424:131;21550:4;21424:131;:::i;:::-;21416:139;;21143:419;;;:::o;21568:229::-;21708:34;21704:1;21696:6;21692:14;21685:58;21777:12;21772:2;21764:6;21760:15;21753:37;21568:229;:::o;21803:366::-;21945:3;21966:67;22030:2;22025:3;21966:67;:::i;:::-;21959:74;;22042:93;22131:3;22042:93;:::i;:::-;22160:2;22155:3;22151:12;22144:19;;21803:366;;;:::o;22175:419::-;22341:4;22379:2;22368:9;22364:18;22356:26;;22428:9;22422:4;22418:20;22414:1;22403:9;22399:17;22392:47;22456:131;22582:4;22456:131;:::i;:::-;22448:139;;22175:419;;;:::o;22600:240::-;22740:34;22736:1;22728:6;22724:14;22717:58;22809:23;22804:2;22796:6;22792:15;22785:48;22600:240;:::o;22846:366::-;22988:3;23009:67;23073:2;23068:3;23009:67;:::i;:::-;23002:74;;23085:93;23174:3;23085:93;:::i;:::-;23203:2;23198:3;23194:12;23187:19;;22846:366;;;:::o;23218:419::-;23384:4;23422:2;23411:9;23407:18;23399:26;;23471:9;23465:4;23461:20;23457:1;23446:9;23442:17;23435:47;23499:131;23625:4;23499:131;:::i;:::-;23491:139;;23218:419;;;:::o;23643:237::-;23783:34;23779:1;23771:6;23767:14;23760:58;23852:20;23847:2;23839:6;23835:15;23828:45;23643:237;:::o;23886:366::-;24028:3;24049:67;24113:2;24108:3;24049:67;:::i;:::-;24042:74;;24125:93;24214:3;24125:93;:::i;:::-;24243:2;24238:3;24234:12;24227:19;;23886:366;;;:::o;24258:419::-;24424:4;24462:2;24451:9;24447:18;24439:26;;24511:9;24505:4;24501:20;24497:1;24486:9;24482:17;24475:47;24539:131;24665:4;24539:131;:::i;:::-;24531:139;;24258:419;;;:::o;24683:227::-;24823:34;24819:1;24811:6;24807:14;24800:58;24892:10;24887:2;24879:6;24875:15;24868:35;24683:227;:::o;24916:366::-;25058:3;25079:67;25143:2;25138:3;25079:67;:::i;:::-;25072:74;;25155:93;25244:3;25155:93;:::i;:::-;25273:2;25268:3;25264:12;25257:19;;24916:366;;;:::o;25288:419::-;25454:4;25492:2;25481:9;25477:18;25469:26;;25541:9;25535:4;25531:20;25527:1;25516:9;25512:17;25505:47;25569:131;25695:4;25569:131;:::i;:::-;25561:139;;25288:419;;;:::o;25713:225::-;25853:34;25849:1;25841:6;25837:14;25830:58;25922:8;25917:2;25909:6;25905:15;25898:33;25713:225;:::o;25944:366::-;26086:3;26107:67;26171:2;26166:3;26107:67;:::i;:::-;26100:74;;26183:93;26272:3;26183:93;:::i;:::-;26301:2;26296:3;26292:12;26285:19;;25944:366;;;:::o;26316:419::-;26482:4;26520:2;26509:9;26505:18;26497:26;;26569:9;26563:4;26559:20;26555:1;26544:9;26540:17;26533:47;26597:131;26723:4;26597:131;:::i;:::-;26589:139;;26316:419;;;:::o;26741:147::-;26842:11;26879:3;26864:18;;26741:147;;;;:::o;26894:114::-;;:::o;27014:398::-;27173:3;27194:83;27275:1;27270:3;27194:83;:::i;:::-;27187:90;;27286:93;27375:3;27286:93;:::i;:::-;27404:1;27399:3;27395:11;27388:18;;27014:398;;;:::o;27418:379::-;27602:3;27624:147;27767:3;27624:147;:::i;:::-;27617:154;;27788:3;27781:10;;27418:379;;;:::o;27803:223::-;27943:34;27939:1;27931:6;27927:14;27920:58;28012:6;28007:2;27999:6;27995:15;27988:31;27803:223;:::o;28032:366::-;28174:3;28195:67;28259:2;28254:3;28195:67;:::i;:::-;28188:74;;28271:93;28360:3;28271:93;:::i;:::-;28389:2;28384:3;28380:12;28373:19;;28032:366;;;:::o;28404:419::-;28570:4;28608:2;28597:9;28593:18;28585:26;;28657:9;28651:4;28647:20;28643:1;28632:9;28628:17;28621:47;28685:131;28811:4;28685:131;:::i;:::-;28677:139;;28404:419;;;:::o;28829:221::-;28969:34;28965:1;28957:6;28953:14;28946:58;29038:4;29033:2;29025:6;29021:15;29014:29;28829:221;:::o;29056:366::-;29198:3;29219:67;29283:2;29278:3;29219:67;:::i;:::-;29212:74;;29295:93;29384:3;29295:93;:::i;:::-;29413:2;29408:3;29404:12;29397:19;;29056:366;;;:::o;29428:419::-;29594:4;29632:2;29621:9;29617:18;29609:26;;29681:9;29675:4;29671:20;29667:1;29656:9;29652:17;29645:47;29709:131;29835:4;29709:131;:::i;:::-;29701:139;;29428:419;;;:::o;29853:224::-;29993:34;29989:1;29981:6;29977:14;29970:58;30062:7;30057:2;30049:6;30045:15;30038:32;29853:224;:::o;30083:366::-;30225:3;30246:67;30310:2;30305:3;30246:67;:::i;:::-;30239:74;;30322:93;30411:3;30322:93;:::i;:::-;30440:2;30435:3;30431:12;30424:19;;30083:366;;;:::o;30455:419::-;30621:4;30659:2;30648:9;30644:18;30636:26;;30708:9;30702:4;30698:20;30694:1;30683:9;30679:17;30672:47;30736:131;30862:4;30736:131;:::i;:::-;30728:139;;30455:419;;;:::o;30880:222::-;31020:34;31016:1;31008:6;31004:14;30997:58;31089:5;31084:2;31076:6;31072:15;31065:30;30880:222;:::o;31108:366::-;31250:3;31271:67;31335:2;31330:3;31271:67;:::i;:::-;31264:74;;31347:93;31436:3;31347:93;:::i;:::-;31465:2;31460:3;31456:12;31449:19;;31108:366;;;:::o;31480:419::-;31646:4;31684:2;31673:9;31669:18;31661:26;;31733:9;31727:4;31723:20;31719:1;31708:9;31704:17;31697:47;31761:131;31887:4;31761:131;:::i;:::-;31753:139;;31480:419;;;:::o;31905:179::-;32045:31;32041:1;32033:6;32029:14;32022:55;31905:179;:::o;32090:366::-;32232:3;32253:67;32317:2;32312:3;32253:67;:::i;:::-;32246:74;;32329:93;32418:3;32329:93;:::i;:::-;32447:2;32442:3;32438:12;32431:19;;32090:366;;;:::o;32462:419::-;32628:4;32666:2;32655:9;32651:18;32643:26;;32715:9;32709:4;32705:20;32701:1;32690:9;32686:17;32679:47;32743:131;32869:4;32743:131;:::i;:::-;32735:139;;32462:419;;;:::o;32887:172::-;33027:24;33023:1;33015:6;33011:14;33004:48;32887:172;:::o;33065:366::-;33207:3;33228:67;33292:2;33287:3;33228:67;:::i;:::-;33221:74;;33304:93;33393:3;33304:93;:::i;:::-;33422:2;33417:3;33413:12;33406:19;;33065:366;;;:::o;33437:419::-;33603:4;33641:2;33630:9;33626:18;33618:26;;33690:9;33684:4;33680:20;33676:1;33665:9;33661:17;33654:47;33718:131;33844:4;33718:131;:::i;:::-;33710:139;;33437:419;;;:::o;33862:227::-;34002:34;33998:1;33990:6;33986:14;33979:58;34071:10;34066:2;34058:6;34054:15;34047:35;33862:227;:::o;34095:366::-;34237:3;34258:67;34322:2;34317:3;34258:67;:::i;:::-;34251:74;;34334:93;34423:3;34334:93;:::i;:::-;34452:2;34447:3;34443:12;34436:19;;34095:366;;;:::o;34467:419::-;34633:4;34671:2;34660:9;34656:18;34648:26;;34720:9;34714:4;34710:20;34706:1;34695:9;34691:17;34684:47;34748:131;34874:4;34748:131;:::i;:::-;34740:139;;34467:419;;;:::o;34892:174::-;35032:26;35028:1;35020:6;35016:14;35009:50;34892:174;:::o;35072:366::-;35214:3;35235:67;35299:2;35294:3;35235:67;:::i;:::-;35228:74;;35311:93;35400:3;35311:93;:::i;:::-;35429:2;35424:3;35420:12;35413:19;;35072:366;;;:::o;35444:419::-;35610:4;35648:2;35637:9;35633:18;35625:26;;35697:9;35691:4;35687:20;35683:1;35672:9;35668:17;35661:47;35725:131;35851:4;35725:131;:::i;:::-;35717:139;;35444:419;;;:::o;35869:229::-;36009:34;36005:1;35997:6;35993:14;35986:58;36078:12;36073:2;36065:6;36061:15;36054:37;35869:229;:::o;36104:366::-;36246:3;36267:67;36331:2;36326:3;36267:67;:::i;:::-;36260:74;;36343:93;36432:3;36343:93;:::i;:::-;36461:2;36456:3;36452:12;36445:19;;36104:366;;;:::o;36476:419::-;36642:4;36680:2;36669:9;36665:18;36657:26;;36729:9;36723:4;36719:20;36715:1;36704:9;36700:17;36693:47;36757:131;36883:4;36757:131;:::i;:::-;36749:139;;36476:419;;;:::o;36901:194::-;36941:4;36961:20;36979:1;36961:20;:::i;:::-;36956:25;;36995:20;37013:1;36995:20;:::i;:::-;36990:25;;37039:1;37036;37032:9;37024:17;;37063:1;37057:4;37054:11;37051:37;;;37068:18;;:::i;:::-;37051:37;36901:194;;;;:::o;37101:225::-;37241:34;37237:1;37229:6;37225:14;37218:58;37310:8;37305:2;37297:6;37293:15;37286:33;37101:225;:::o;37332:366::-;37474:3;37495:67;37559:2;37554:3;37495:67;:::i;:::-;37488:74;;37571:93;37660:3;37571:93;:::i;:::-;37689:2;37684:3;37680:12;37673:19;;37332:366;;;:::o;37704:419::-;37870:4;37908:2;37897:9;37893:18;37885:26;;37957:9;37951:4;37947:20;37943:1;37932:9;37928:17;37921:47;37985:131;38111:4;37985:131;:::i;:::-;37977:139;;37704:419;;;:::o;38129:180::-;38177:77;38174:1;38167:88;38274:4;38271:1;38264:15;38298:4;38295:1;38288:15;38315:180;38363:77;38360:1;38353:88;38460:4;38457:1;38450:15;38484:4;38481:1;38474:15;38501:143;38558:5;38589:6;38583:13;38574:22;;38605:33;38632:5;38605:33;:::i;:::-;38501:143;;;;:::o;38650:351::-;38720:6;38769:2;38757:9;38748:7;38744:23;38740:32;38737:119;;;38775:79;;:::i;:::-;38737:119;38895:1;38920:64;38976:7;38967:6;38956:9;38952:22;38920:64;:::i;:::-;38910:74;;38866:128;38650:351;;;;:::o;39007:85::-;39052:7;39081:5;39070:16;;39007:85;;;:::o;39098:158::-;39156:9;39189:61;39207:42;39216:32;39242:5;39216:32;:::i;:::-;39207:42;:::i;:::-;39189:61;:::i;:::-;39176:74;;39098:158;;;:::o;39262:147::-;39357:45;39396:5;39357:45;:::i;:::-;39352:3;39345:58;39262:147;;:::o;39415:114::-;39482:6;39516:5;39510:12;39500:22;;39415:114;;;:::o;39535:184::-;39634:11;39668:6;39663:3;39656:19;39708:4;39703:3;39699:14;39684:29;;39535:184;;;;:::o;39725:132::-;39792:4;39815:3;39807:11;;39845:4;39840:3;39836:14;39828:22;;39725:132;;;:::o;39863:108::-;39940:24;39958:5;39940:24;:::i;:::-;39935:3;39928:37;39863:108;;:::o;39977:179::-;40046:10;40067:46;40109:3;40101:6;40067:46;:::i;:::-;40145:4;40140:3;40136:14;40122:28;;39977:179;;;;:::o;40162:113::-;40232:4;40264;40259:3;40255:14;40247:22;;40162:113;;;:::o;40311:732::-;40430:3;40459:54;40507:5;40459:54;:::i;:::-;40529:86;40608:6;40603:3;40529:86;:::i;:::-;40522:93;;40639:56;40689:5;40639:56;:::i;:::-;40718:7;40749:1;40734:284;40759:6;40756:1;40753:13;40734:284;;;40835:6;40829:13;40862:63;40921:3;40906:13;40862:63;:::i;:::-;40855:70;;40948:60;41001:6;40948:60;:::i;:::-;40938:70;;40794:224;40781:1;40778;40774:9;40769:14;;40734:284;;;40738:14;41034:3;41027:10;;40435:608;;;40311:732;;;;:::o;41049:831::-;41312:4;41350:3;41339:9;41335:19;41327:27;;41364:71;41432:1;41421:9;41417:17;41408:6;41364:71;:::i;:::-;41445:80;41521:2;41510:9;41506:18;41497:6;41445:80;:::i;:::-;41572:9;41566:4;41562:20;41557:2;41546:9;41542:18;41535:48;41600:108;41703:4;41694:6;41600:108;:::i;:::-;41592:116;;41718:72;41786:2;41775:9;41771:18;41762:6;41718:72;:::i;:::-;41800:73;41868:3;41857:9;41853:19;41844:6;41800:73;:::i;:::-;41049:831;;;;;;;;:::o;41886:807::-;42135:4;42173:3;42162:9;42158:19;42150:27;;42187:71;42255:1;42244:9;42240:17;42231:6;42187:71;:::i;:::-;42268:72;42336:2;42325:9;42321:18;42312:6;42268:72;:::i;:::-;42350:80;42426:2;42415:9;42411:18;42402:6;42350:80;:::i;:::-;42440;42516:2;42505:9;42501:18;42492:6;42440:80;:::i;:::-;42530:73;42598:3;42587:9;42583:19;42574:6;42530:73;:::i;:::-;42613;42681:3;42670:9;42666:19;42657:6;42613:73;:::i;:::-;41886:807;;;;;;;;;:::o;42699:663::-;42787:6;42795;42803;42852:2;42840:9;42831:7;42827:23;42823:32;42820:119;;;42858:79;;:::i;:::-;42820:119;42978:1;43003:64;43059:7;43050:6;43039:9;43035:22;43003:64;:::i;:::-;42993:74;;42949:128;43116:2;43142:64;43198:7;43189:6;43178:9;43174:22;43142:64;:::i;:::-;43132:74;;43087:129;43255:2;43281:64;43337:7;43328:6;43317:9;43313:22;43281:64;:::i;:::-;43271:74;;43226:129;42699:663;;;;;:::o;43368:320::-;43483:4;43521:2;43510:9;43506:18;43498:26;;43534:71;43602:1;43591:9;43587:17;43578:6;43534:71;:::i;:::-;43615:66;43677:2;43666:9;43662:18;43653:6;43615:66;:::i;:::-;43368:320;;;;;:::o

Swarm Source

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