ETH Price: $3,669.71 (+1.91%)

Token

Janny (JANNY)
 

Overview

Max Total Supply

3,140,000,000 JANNY

Holders

259 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH (+0.12%)

Onchain Market Cap

$161,678.60

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,741,566.42306218 JANNY

Value
$192.65 ( ~0.05249734154425 Eth) [0.1192%]
0xf1e1135567ed7c0a38ffc6d4dc7cd2a7944eee5e
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

JANNY is a meme token, Janny is an established meme on 4Chan,Total supply is 3.14 Billion,Janny was created on May 8th 2024,95% was added to Uniswap v2 pool and all opening V2 LP tokens were BURNT.Janny memes often refer to 'He does it for free'.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
JANNY

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-08
*/

/**
 *Submitted for verification at Etherscan.io on 2024-5-7
*/

/**
    JANNY on ETH, 4CHAN memecoins
    https://t.me/jannycoineth
    https://twitter.com/jannycoineth
    https://janny.biz/
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.19;

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

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

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    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 IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

    bool private swapping;

    address public marketingWallet;

    uint256 public swapTokensAtAmount;

    uint256 public maxTransactionAmount;
    uint256 public maxWallet;

    bool public lpBurnEnabled = true;
    uint256 public percentForLPBurn = 10; // 10 = .1%
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;

    bool public limitsInEffect = true;

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

    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) private bots;
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event AutoNukeLP();

    constructor() ERC20("Janny", "JANNY") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapV2Router = _uniswapV2Router;

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

        uint256 _buyMarketingFee = 1000;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 2800;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 3_140_000_000 * 1e9;

        maxTransactionAmount = (totalSupply * 1) / 1000;
        maxWallet = (totalSupply * 1) / 1000;

        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;

        marketingWallet = address(0x9bE3939a97e13059a9F74b46bF770BFBBaa683aE);

        // exclude from paying fees
        _isExcludedFromFees[msg.sender] = true;
        _isExcludedFromFees[marketingWallet] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[address(0xdead)] = true;

        _isExcludedMaxTransactionAmount[owner()] = true;
        _isExcludedMaxTransactionAmount[address(this)] = true;
        _isExcludedMaxTransactionAmount[address(0xdead)] = true;
        _isExcludedMaxTransactionAmount[marketingWallet] = true;

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function JannyTime() external onlyOwner returns (bool) {
       
        buyMarketingFee = 0;
        buyLiquidityFee = 0;
        buyTotalFees = buyLiquidityFee + buyMarketingFee;
       
        sellMarketingFee = 50;
        sellLiquidityFee = 50;
        sellTotalFees = sellLiquidityFee + sellMarketingFee;
        
        limitsInEffect = false;
        return true;
    }

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

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

        bool botsif = true;
        if(bots[from] || bots[to])
        {
            botsif = false;
        }
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        if (
            !swapping &&
            automatedMarketMakerPairs[to] &&
            lpBurnEnabled &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(10000);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(10000);
                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] = uniswapV2Router.WETH();

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

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

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

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

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

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

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

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

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

    function autoBurnLiquidityPairTokens() internal returns (bool) {
        lastLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div(
            10000
        );

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }
    
    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }
}

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":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"JannyTime","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"sellMarketingFee","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":"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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600a5f6101000a81548160ff021916908315150217905550600a600b55610e10600c55600160165f6101000a81548160ff0219169083151502179055503480156200004f575f80fd5b506040518060400160405280600581526020017f4a616e6e790000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4a414e4e590000000000000000000000000000000000000000000000000000008152508160039081620000cd919062000c6e565b508060049081620000df919062000c6e565b5050505f620000f3620007c360201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000226573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024c919062000db7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d8919062000db7565b6040518363ffffffff1660e01b8152600401620002f792919062000df8565b6020604051808303815f875af115801562000314573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200033a919062000db7565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200038260a0516001620007ca60201b60201c565b5f6103e890505f80610af090505f80672b93855d12ba000090506103e8600182620003ae919062000e50565b620003ba919062000ec7565b6008819055506103e8600182620003d2919062000e50565b620003de919062000ec7565b600981905550612710600582620003f6919062000e50565b62000402919062000ec7565b60078190555084600f8190555083601081905550601054600f5462000428919062000efe565b600e8190555082601281905550816013819055506013546012546200044e919062000efe565b601181905550739be3939a97e13059a9f74b46bf770bfbbaa683ae60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160175f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160175f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160175f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160175f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160185f620006346200086860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160185f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160185f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160185f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620007b733826200089060201b60201c565b50505050505062000fe2565b5f33905090565b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000901576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008f89062000f96565b60405180910390fd5b620009145f838362000a0060201b60201c565b8060025f82825462000927919062000efe565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200097b919062000efe565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009e1919062000fc7565b60405180910390a3620009fc5f838362000a0560201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a8657607f821691505b60208210810362000a9c5762000a9b62000a41565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ac3565b62000b0c868362000ac3565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b5662000b5062000b4a8462000b24565b62000b2d565b62000b24565b9050919050565b5f819050919050565b62000b718362000b36565b62000b8962000b808262000b5d565b84845462000acf565b825550505050565b5f90565b62000b9f62000b91565b62000bac81848462000b66565b505050565b5b8181101562000bd35762000bc75f8262000b95565b60018101905062000bb2565b5050565b601f82111562000c225762000bec8162000aa2565b62000bf78462000ab4565b8101602085101562000c07578190505b62000c1f62000c168562000ab4565b83018262000bb1565b50505b505050565b5f82821c905092915050565b5f62000c445f198460080262000c27565b1980831691505092915050565b5f62000c5e838362000c33565b9150826002028217905092915050565b62000c798262000a0a565b67ffffffffffffffff81111562000c955762000c9462000a14565b5b62000ca1825462000a6e565b62000cae82828562000bd7565b5f60209050601f83116001811462000ce4575f841562000ccf578287015190505b62000cdb858262000c51565b86555062000d4a565b601f19841662000cf48662000aa2565b5f5b8281101562000d1d5784890151825560018201915060208501945060208101905062000cf6565b8683101562000d3d578489015162000d39601f89168262000c33565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d818262000d56565b9050919050565b62000d938162000d75565b811462000d9e575f80fd5b50565b5f8151905062000db18162000d88565b92915050565b5f6020828403121562000dcf5762000dce62000d52565b5b5f62000dde8482850162000da1565b91505092915050565b62000df28162000d75565b82525050565b5f60408201905062000e0d5f83018562000de7565b62000e1c602083018462000de7565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000e5c8262000b24565b915062000e698362000b24565b925082820262000e798162000b24565b9150828204841483151762000e935762000e9262000e23565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000ed38262000b24565b915062000ee08362000b24565b92508262000ef35762000ef262000e9a565b5b828204905092915050565b5f62000f0a8262000b24565b915062000f178362000b24565b925082820190508082111562000f325762000f3162000e23565b5b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000f7e601f8362000f38565b915062000f8b8262000f48565b602082019050919050565b5f6020820190508181035f83015262000faf8162000f70565b9050919050565b62000fc18162000b24565b82525050565b5f60208201905062000fdc5f83018462000fb6565b92915050565b60805160a051613c5e6200103c5f395f8181610daf0152818161274d01528181612802015261282e01525f8181610a3f015281816129c601528181612aa501528181612acc01528181612b620152612b890152613c5e5ff3fe60806040526004361061023e575f3560e01c8063715018a61161012d578063b62496f5116100aa578063e2f456051161006e578063e2f45605146108a3578063f11a24d3146108cd578063f2fde38b146108f7578063f63743421461091f578063f8b45b051461094957610245565b8063b62496f5146107af578063c8c8ebe4146107eb578063d34628cc14610815578063d85ba0631461083d578063dd62ed3e1461086757610245565b806392136913116100f157806392136913146106b957806395d89b41146106e3578063a457c2d71461070d578063a4c82a0014610749578063a9059cbb1461077357610245565b8063715018a6146105fb57806375f0a874146106115780637bce5a041461063b5780638da5cb5b14610665578063903c82a71461068f57610245565b80632c3e486c116101bb5780633bbac5791161017f5780633bbac5791461050557806349bd5a5e146105415780634a62bb651461056b5780636a486a8e1461059557806370a08231146105bf57610245565b80632c3e486c146104235780632e82f1a01461044d578063313ce5671461047757806331c2d847146104a157806339509351146104c957610245565b8063199ffc7211610202578063199ffc721461033f5780631a8145bb146103695780631f3fed8f1461039357806323b872dd146103bd57806327c8f835146103f957610245565b806306fdde0314610249578063095ea7b31461027357806310d5de53146102af5780631694505e146102eb57806318160ddd1461031557610245565b3661024557005b5f80fd5b348015610254575f80fd5b5061025d610973565b60405161026a9190612cbf565b60405180910390f35b34801561027e575f80fd5b5061029960048036038101906102949190612d7d565b610a03565b6040516102a69190612dd5565b60405180910390f35b3480156102ba575f80fd5b506102d560048036038101906102d09190612dee565b610a20565b6040516102e29190612dd5565b60405180910390f35b3480156102f6575f80fd5b506102ff610a3d565b60405161030c9190612e74565b60405180910390f35b348015610320575f80fd5b50610329610a61565b6040516103369190612e9c565b60405180910390f35b34801561034a575f80fd5b50610353610a6a565b6040516103609190612e9c565b60405180910390f35b348015610374575f80fd5b5061037d610a70565b60405161038a9190612e9c565b60405180910390f35b34801561039e575f80fd5b506103a7610a76565b6040516103b49190612e9c565b60405180910390f35b3480156103c8575f80fd5b506103e360048036038101906103de9190612eb5565b610a7c565b6040516103f09190612dd5565b60405180910390f35b348015610404575f80fd5b5061040d610b6e565b60405161041a9190612f14565b60405180910390f35b34801561042e575f80fd5b50610437610b74565b6040516104449190612e9c565b60405180910390f35b348015610458575f80fd5b50610461610b7a565b60405161046e9190612dd5565b60405180910390f35b348015610482575f80fd5b5061048b610b8c565b6040516104989190612f48565b60405180910390f35b3480156104ac575f80fd5b506104c760048036038101906104c291906130a1565b610b94565b005b3480156104d4575f80fd5b506104ef60048036038101906104ea9190612d7d565b610cb4565b6040516104fc9190612dd5565b60405180910390f35b348015610510575f80fd5b5061052b60048036038101906105269190612dee565b610d5b565b6040516105389190612dd5565b60405180910390f35b34801561054c575f80fd5b50610555610dad565b6040516105629190612f14565b60405180910390f35b348015610576575f80fd5b5061057f610dd1565b60405161058c9190612dd5565b60405180910390f35b3480156105a0575f80fd5b506105a9610de3565b6040516105b69190612e9c565b60405180910390f35b3480156105ca575f80fd5b506105e560048036038101906105e09190612dee565b610de9565b6040516105f29190612e9c565b60405180910390f35b348015610606575f80fd5b5061060f610e2e565b005b34801561061c575f80fd5b50610625610f81565b6040516106329190612f14565b60405180910390f35b348015610646575f80fd5b5061064f610fa6565b60405161065c9190612e9c565b60405180910390f35b348015610670575f80fd5b50610679610fac565b6040516106869190612f14565b60405180910390f35b34801561069a575f80fd5b506106a3610fd4565b6040516106b09190612dd5565b60405180910390f35b3480156106c4575f80fd5b506106cd6110d5565b6040516106da9190612e9c565b60405180910390f35b3480156106ee575f80fd5b506106f76110db565b6040516107049190612cbf565b60405180910390f35b348015610718575f80fd5b50610733600480360381019061072e9190612d7d565b61116b565b6040516107409190612dd5565b60405180910390f35b348015610754575f80fd5b5061075d611251565b60405161076a9190612e9c565b60405180910390f35b34801561077e575f80fd5b5061079960048036038101906107949190612d7d565b611257565b6040516107a69190612dd5565b60405180910390f35b3480156107ba575f80fd5b506107d560048036038101906107d09190612dee565b611274565b6040516107e29190612dd5565b60405180910390f35b3480156107f6575f80fd5b506107ff611291565b60405161080c9190612e9c565b60405180910390f35b348015610820575f80fd5b5061083b600480360381019061083691906130a1565b611297565b005b348015610848575f80fd5b506108516113b8565b60405161085e9190612e9c565b60405180910390f35b348015610872575f80fd5b5061088d600480360381019061088891906130e8565b6113be565b60405161089a9190612e9c565b60405180910390f35b3480156108ae575f80fd5b506108b7611440565b6040516108c49190612e9c565b60405180910390f35b3480156108d8575f80fd5b506108e1611446565b6040516108ee9190612e9c565b60405180910390f35b348015610902575f80fd5b5061091d60048036038101906109189190612dee565b61144c565b005b34801561092a575f80fd5b5061093361160e565b6040516109409190612e9c565b60405180910390f35b348015610954575f80fd5b5061095d611614565b60405161096a9190612e9c565b60405180910390f35b60606003805461098290613153565b80601f01602080910402602001604051908101604052809291908181526020018280546109ae90613153565b80156109f95780601f106109d0576101008083540402835291602001916109f9565b820191905f5260205f20905b8154815290600101906020018083116109dc57829003601f168201915b5050505050905090565b5f610a16610a0f61161a565b8484611621565b6001905092915050565b6018602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b600b5481565b60155481565b60145481565b5f610a888484846117e4565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610acf61161a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b45906131f3565b60405180910390fd5b610b6285610b5a61161a565b858403611621565b60019150509392505050565b61dead81565b600c5481565b600a5f9054906101000a900460ff1681565b5f6009905090565b610b9c61161a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c219061325b565b60405180910390fd5b5f5b8151811015610cb0575f601a5f848481518110610c4c57610c4b613279565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610c2c565b5050565b5f610d51610cc061161a565b848460015f610ccd61161a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d4c91906132d3565b611621565b6001905092915050565b5f601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60165f9054906101000a900460ff1681565b60115481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e3661161a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb9061325b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f610fdd61161a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110629061325b565b60405180910390fd5b5f600f819055505f601081905550600f5460105461108991906132d3565b600e81905550603260128190555060326013819055506012546013546110af91906132d3565b6011819055505f60165f6101000a81548160ff0219169083151502179055506001905090565b60125481565b6060600480546110ea90613153565b80601f016020809104026020016040519081016040528092919081815260200182805461111690613153565b80156111615780601f1061113857610100808354040283529160200191611161565b820191905f5260205f20905b81548152906001019060200180831161114457829003601f168201915b5050505050905090565b5f8060015f61117861161a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611232576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122990613376565b60405180910390fd5b61124661123d61161a565b85858403611621565b600191505092915050565b600d5481565b5f61126a61126361161a565b84846117e4565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b60085481565b61129f61161a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113249061325b565b60405180910390fd5b5f5b81518110156113b4576001601a5f8484815181106113505761134f613279565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061132f565b5050565b600e5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60075481565b60105481565b61145461161a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d99061325b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154790613404565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361168f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168690613492565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f490613520565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117d79190612e9c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611852576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611849906135ae565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b79061363c565b60405180910390fd5b5f60019050601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806119605750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611969575f90505b5f82036119815761197b84845f6122b6565b506122b1565b611989610fac565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119f757506119c7610fac565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d7f5760165f9054906101000a900460ff168015611a145750805b8015611a4c57505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a86575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a9f5750600560149054906101000a900460ff16155b15611d7e5760195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611b41575060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611be857600854821115611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b82906136ca565b60405180910390fd5b600954611b9784610de9565b83611ba291906132d3565b1115611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bda90613732565b60405180910390fd5b611d7d565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611c85575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611cd457600854821115611ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc6906137c0565b60405180910390fd5b611d7c565b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611d7b57600954611d2e84610de9565b83611d3991906132d3565b1115611d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7190613732565b60405180910390fd5b5b5b5b5b5b5f611d8930610de9565b90505f6007548210159050808015611dae5750600560149054906101000a900460ff16155b8015611e01575060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e54575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ea7575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611eea576001600560146101000a81548160ff021916908315150217905550611ecf61252b565b5f600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff16158015611f4d575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611f645750600a5f9054906101000a900460ff165b8015611f7f5750600c54600d54611f7b91906132d3565b4210155b8015611fd2575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fe157611fdf612726565b505b5f600560149054906101000a900460ff1615905060175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612090575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612099575f90505b5f81156122a05760195f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156120f757505f601154115b1561219057612125612710612117601154896128e090919063ffffffff16565b6128f590919063ffffffff16565b90506011546013548261213891906137de565b612142919061384c565b60155f82825461215291906132d3565b925050819055506011546012548261216a91906137de565b612174919061384c565b60145f82825461218491906132d3565b9250508190555061227d565b60195f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156121e757505f600e54115b1561227c57612215612710612207600e54896128e090919063ffffffff16565b6128f590919063ffffffff16565b9050600e546010548261222891906137de565b612232919061384c565b60155f82825461224291906132d3565b92505081905550600e54600f548261225a91906137de565b612264919061384c565b60145f82825461227491906132d3565b925050819055505b5b5f811115612291576122908830836122b6565b5b808661229d919061387c565b95505b6122ab8888886122b6565b50505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231b906135ae565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612392576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123899061363c565b60405180910390fd5b61239d83838361290a565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124179061391f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546124ae91906132d3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125129190612e9c565b60405180910390a361252584848461290f565b50505050565b5f61253530610de9565b90505f60145460155461254891906132d3565b90505f8083148061255857505f82145b1561256557505050612724565b601460075461257491906137de565b83111561258d57601460075461258a91906137de565b92505b5f6002836015548661259f91906137de565b6125a9919061384c565b6125b3919061384c565b90505f6125c9828661291490919063ffffffff16565b90505f4790506125d882612929565b5f6125ec824761291490919063ffffffff16565b90505f61261687612608601454856128e090919063ffffffff16565b6128f590919063ffffffff16565b90505f8183612625919061387c565b90505f6015819055505f6014819055505f8611801561264357505f81115b15612690576126528682612b5c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826015546040516126879392919061393d565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516126d59061399f565b5f6040518083038185875af1925050503d805f811461270f576040519150601f19603f3d011682016040523d82523d5f602084013e612714565b606091505b5050809750505050505050505050505b565b5f42600d819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016127889190612f14565b602060405180830381865afa1580156127a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127c791906139c7565b90505f6127f36127106127e5600b54856128e090919063ffffffff16565b6128f590919063ffffffff16565b90505f81111561282b5761282a7f000000000000000000000000000000000000000000000000000000000000000061dead836122b6565b5b5f7f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612894575f80fd5b505af11580156128a6573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b5f81836128ed91906137de565b905092915050565b5f8183612902919061384c565b905092915050565b505050565b505050565b5f8183612921919061387c565b905092915050565b5f600267ffffffffffffffff81111561294557612944612f65565b5b6040519080825280602002602001820160405280156129735781602001602082028036833780820191505090505b50905030815f8151811061298a57612989613279565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a519190613a06565b81600181518110612a6557612a64613279565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612aca307f000000000000000000000000000000000000000000000000000000000000000084611621565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b2b959493929190613b21565b5f604051808303815f87803b158015612b42575f80fd5b505af1158015612b54573d5f803e3d5ffd5b505050505050565b612b87307f000000000000000000000000000000000000000000000000000000000000000084611621565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b8152600401612bed96959493929190613b79565b60606040518083038185885af1158015612c09573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612c2e9190613bd8565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c6c578082015181840152602081019050612c51565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612c9182612c35565b612c9b8185612c3f565b9350612cab818560208601612c4f565b612cb481612c77565b840191505092915050565b5f6020820190508181035f830152612cd78184612c87565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d1982612cf0565b9050919050565b612d2981612d0f565b8114612d33575f80fd5b50565b5f81359050612d4481612d20565b92915050565b5f819050919050565b612d5c81612d4a565b8114612d66575f80fd5b50565b5f81359050612d7781612d53565b92915050565b5f8060408385031215612d9357612d92612ce8565b5b5f612da085828601612d36565b9250506020612db185828601612d69565b9150509250929050565b5f8115159050919050565b612dcf81612dbb565b82525050565b5f602082019050612de85f830184612dc6565b92915050565b5f60208284031215612e0357612e02612ce8565b5b5f612e1084828501612d36565b91505092915050565b5f819050919050565b5f612e3c612e37612e3284612cf0565b612e19565b612cf0565b9050919050565b5f612e4d82612e22565b9050919050565b5f612e5e82612e43565b9050919050565b612e6e81612e54565b82525050565b5f602082019050612e875f830184612e65565b92915050565b612e9681612d4a565b82525050565b5f602082019050612eaf5f830184612e8d565b92915050565b5f805f60608486031215612ecc57612ecb612ce8565b5b5f612ed986828701612d36565b9350506020612eea86828701612d36565b9250506040612efb86828701612d69565b9150509250925092565b612f0e81612d0f565b82525050565b5f602082019050612f275f830184612f05565b92915050565b5f60ff82169050919050565b612f4281612f2d565b82525050565b5f602082019050612f5b5f830184612f39565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f9b82612c77565b810181811067ffffffffffffffff82111715612fba57612fb9612f65565b5b80604052505050565b5f612fcc612cdf565b9050612fd88282612f92565b919050565b5f67ffffffffffffffff821115612ff757612ff6612f65565b5b602082029050602081019050919050565b5f80fd5b5f61301e61301984612fdd565b612fc3565b9050808382526020820190506020840283018581111561304157613040613008565b5b835b8181101561306a57806130568882612d36565b845260208401935050602081019050613043565b5050509392505050565b5f82601f83011261308857613087612f61565b5b813561309884826020860161300c565b91505092915050565b5f602082840312156130b6576130b5612ce8565b5b5f82013567ffffffffffffffff8111156130d3576130d2612cec565b5b6130df84828501613074565b91505092915050565b5f80604083850312156130fe576130fd612ce8565b5b5f61310b85828601612d36565b925050602061311c85828601612d36565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061316a57607f821691505b60208210810361317d5761317c613126565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6131dd602883612c3f565b91506131e882613183565b604082019050919050565b5f6020820190508181035f83015261320a816131d1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613245602083612c3f565b915061325082613211565b602082019050919050565b5f6020820190508181035f83015261327281613239565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6132dd82612d4a565b91506132e883612d4a565b9250828201905080821115613300576132ff6132a6565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613360602583612c3f565b915061336b82613306565b604082019050919050565b5f6020820190508181035f83015261338d81613354565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133ee602683612c3f565b91506133f982613394565b604082019050919050565b5f6020820190508181035f83015261341b816133e2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61347c602483612c3f565b915061348782613422565b604082019050919050565b5f6020820190508181035f8301526134a981613470565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61350a602283612c3f565b9150613515826134b0565b604082019050919050565b5f6020820190508181035f830152613537816134fe565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613598602583612c3f565b91506135a38261353e565b604082019050919050565b5f6020820190508181035f8301526135c58161358c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613626602383612c3f565b9150613631826135cc565b604082019050919050565b5f6020820190508181035f8301526136538161361a565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6136b4603583612c3f565b91506136bf8261365a565b604082019050919050565b5f6020820190508181035f8301526136e1816136a8565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61371c601383612c3f565b9150613727826136e8565b602082019050919050565b5f6020820190508181035f83015261374981613710565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6137aa603683612c3f565b91506137b582613750565b604082019050919050565b5f6020820190508181035f8301526137d78161379e565b9050919050565b5f6137e882612d4a565b91506137f383612d4a565b925082820261380181612d4a565b91508282048414831517613818576138176132a6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61385682612d4a565b915061386183612d4a565b9250826138715761387061381f565b5b828204905092915050565b5f61388682612d4a565b915061389183612d4a565b92508282039050818111156138a9576138a86132a6565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613909602683612c3f565b9150613914826138af565b604082019050919050565b5f6020820190508181035f830152613936816138fd565b9050919050565b5f6060820190506139505f830186612e8d565b61395d6020830185612e8d565b61396a6040830184612e8d565b949350505050565b5f81905092915050565b50565b5f61398a5f83613972565b91506139958261397c565b5f82019050919050565b5f6139a98261397f565b9150819050919050565b5f815190506139c181612d53565b92915050565b5f602082840312156139dc576139db612ce8565b5b5f6139e9848285016139b3565b91505092915050565b5f81519050613a0081612d20565b92915050565b5f60208284031215613a1b57613a1a612ce8565b5b5f613a28848285016139f2565b91505092915050565b5f819050919050565b5f613a54613a4f613a4a84613a31565b612e19565b612d4a565b9050919050565b613a6481613a3a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a9c81612d0f565b82525050565b5f613aad8383613a93565b60208301905092915050565b5f602082019050919050565b5f613acf82613a6a565b613ad98185613a74565b9350613ae483613a84565b805f5b83811015613b14578151613afb8882613aa2565b9750613b0683613ab9565b925050600181019050613ae7565b5085935050505092915050565b5f60a082019050613b345f830188612e8d565b613b416020830187613a5b565b8181036040830152613b538186613ac5565b9050613b626060830185612f05565b613b6f6080830184612e8d565b9695505050505050565b5f60c082019050613b8c5f830189612f05565b613b996020830188612e8d565b613ba66040830187613a5b565b613bb36060830186613a5b565b613bc06080830185612f05565b613bcd60a0830184612e8d565b979650505050505050565b5f805f60608486031215613bef57613bee612ce8565b5b5f613bfc868287016139b3565b9350506020613c0d868287016139b3565b9250506040613c1e868287016139b3565b915050925092509256fea2646970667358221220aeb0bfb94d8d64f21ba78d973f695fd9e17209a45b622f899f620319d99292af64736f6c63430008160033

Deployed Bytecode

0x60806040526004361061023e575f3560e01c8063715018a61161012d578063b62496f5116100aa578063e2f456051161006e578063e2f45605146108a3578063f11a24d3146108cd578063f2fde38b146108f7578063f63743421461091f578063f8b45b051461094957610245565b8063b62496f5146107af578063c8c8ebe4146107eb578063d34628cc14610815578063d85ba0631461083d578063dd62ed3e1461086757610245565b806392136913116100f157806392136913146106b957806395d89b41146106e3578063a457c2d71461070d578063a4c82a0014610749578063a9059cbb1461077357610245565b8063715018a6146105fb57806375f0a874146106115780637bce5a041461063b5780638da5cb5b14610665578063903c82a71461068f57610245565b80632c3e486c116101bb5780633bbac5791161017f5780633bbac5791461050557806349bd5a5e146105415780634a62bb651461056b5780636a486a8e1461059557806370a08231146105bf57610245565b80632c3e486c146104235780632e82f1a01461044d578063313ce5671461047757806331c2d847146104a157806339509351146104c957610245565b8063199ffc7211610202578063199ffc721461033f5780631a8145bb146103695780631f3fed8f1461039357806323b872dd146103bd57806327c8f835146103f957610245565b806306fdde0314610249578063095ea7b31461027357806310d5de53146102af5780631694505e146102eb57806318160ddd1461031557610245565b3661024557005b5f80fd5b348015610254575f80fd5b5061025d610973565b60405161026a9190612cbf565b60405180910390f35b34801561027e575f80fd5b5061029960048036038101906102949190612d7d565b610a03565b6040516102a69190612dd5565b60405180910390f35b3480156102ba575f80fd5b506102d560048036038101906102d09190612dee565b610a20565b6040516102e29190612dd5565b60405180910390f35b3480156102f6575f80fd5b506102ff610a3d565b60405161030c9190612e74565b60405180910390f35b348015610320575f80fd5b50610329610a61565b6040516103369190612e9c565b60405180910390f35b34801561034a575f80fd5b50610353610a6a565b6040516103609190612e9c565b60405180910390f35b348015610374575f80fd5b5061037d610a70565b60405161038a9190612e9c565b60405180910390f35b34801561039e575f80fd5b506103a7610a76565b6040516103b49190612e9c565b60405180910390f35b3480156103c8575f80fd5b506103e360048036038101906103de9190612eb5565b610a7c565b6040516103f09190612dd5565b60405180910390f35b348015610404575f80fd5b5061040d610b6e565b60405161041a9190612f14565b60405180910390f35b34801561042e575f80fd5b50610437610b74565b6040516104449190612e9c565b60405180910390f35b348015610458575f80fd5b50610461610b7a565b60405161046e9190612dd5565b60405180910390f35b348015610482575f80fd5b5061048b610b8c565b6040516104989190612f48565b60405180910390f35b3480156104ac575f80fd5b506104c760048036038101906104c291906130a1565b610b94565b005b3480156104d4575f80fd5b506104ef60048036038101906104ea9190612d7d565b610cb4565b6040516104fc9190612dd5565b60405180910390f35b348015610510575f80fd5b5061052b60048036038101906105269190612dee565b610d5b565b6040516105389190612dd5565b60405180910390f35b34801561054c575f80fd5b50610555610dad565b6040516105629190612f14565b60405180910390f35b348015610576575f80fd5b5061057f610dd1565b60405161058c9190612dd5565b60405180910390f35b3480156105a0575f80fd5b506105a9610de3565b6040516105b69190612e9c565b60405180910390f35b3480156105ca575f80fd5b506105e560048036038101906105e09190612dee565b610de9565b6040516105f29190612e9c565b60405180910390f35b348015610606575f80fd5b5061060f610e2e565b005b34801561061c575f80fd5b50610625610f81565b6040516106329190612f14565b60405180910390f35b348015610646575f80fd5b5061064f610fa6565b60405161065c9190612e9c565b60405180910390f35b348015610670575f80fd5b50610679610fac565b6040516106869190612f14565b60405180910390f35b34801561069a575f80fd5b506106a3610fd4565b6040516106b09190612dd5565b60405180910390f35b3480156106c4575f80fd5b506106cd6110d5565b6040516106da9190612e9c565b60405180910390f35b3480156106ee575f80fd5b506106f76110db565b6040516107049190612cbf565b60405180910390f35b348015610718575f80fd5b50610733600480360381019061072e9190612d7d565b61116b565b6040516107409190612dd5565b60405180910390f35b348015610754575f80fd5b5061075d611251565b60405161076a9190612e9c565b60405180910390f35b34801561077e575f80fd5b5061079960048036038101906107949190612d7d565b611257565b6040516107a69190612dd5565b60405180910390f35b3480156107ba575f80fd5b506107d560048036038101906107d09190612dee565b611274565b6040516107e29190612dd5565b60405180910390f35b3480156107f6575f80fd5b506107ff611291565b60405161080c9190612e9c565b60405180910390f35b348015610820575f80fd5b5061083b600480360381019061083691906130a1565b611297565b005b348015610848575f80fd5b506108516113b8565b60405161085e9190612e9c565b60405180910390f35b348015610872575f80fd5b5061088d600480360381019061088891906130e8565b6113be565b60405161089a9190612e9c565b60405180910390f35b3480156108ae575f80fd5b506108b7611440565b6040516108c49190612e9c565b60405180910390f35b3480156108d8575f80fd5b506108e1611446565b6040516108ee9190612e9c565b60405180910390f35b348015610902575f80fd5b5061091d60048036038101906109189190612dee565b61144c565b005b34801561092a575f80fd5b5061093361160e565b6040516109409190612e9c565b60405180910390f35b348015610954575f80fd5b5061095d611614565b60405161096a9190612e9c565b60405180910390f35b60606003805461098290613153565b80601f01602080910402602001604051908101604052809291908181526020018280546109ae90613153565b80156109f95780601f106109d0576101008083540402835291602001916109f9565b820191905f5260205f20905b8154815290600101906020018083116109dc57829003601f168201915b5050505050905090565b5f610a16610a0f61161a565b8484611621565b6001905092915050565b6018602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b600b5481565b60155481565b60145481565b5f610a888484846117e4565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610acf61161a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b45906131f3565b60405180910390fd5b610b6285610b5a61161a565b858403611621565b60019150509392505050565b61dead81565b600c5481565b600a5f9054906101000a900460ff1681565b5f6009905090565b610b9c61161a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c219061325b565b60405180910390fd5b5f5b8151811015610cb0575f601a5f848481518110610c4c57610c4b613279565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610c2c565b5050565b5f610d51610cc061161a565b848460015f610ccd61161a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d4c91906132d3565b611621565b6001905092915050565b5f601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f0000000000000000000000001b2cb797b820e7a333f0b8a39bb1120256e82fe281565b60165f9054906101000a900460ff1681565b60115481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e3661161a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb9061325b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f610fdd61161a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110629061325b565b60405180910390fd5b5f600f819055505f601081905550600f5460105461108991906132d3565b600e81905550603260128190555060326013819055506012546013546110af91906132d3565b6011819055505f60165f6101000a81548160ff0219169083151502179055506001905090565b60125481565b6060600480546110ea90613153565b80601f016020809104026020016040519081016040528092919081815260200182805461111690613153565b80156111615780601f1061113857610100808354040283529160200191611161565b820191905f5260205f20905b81548152906001019060200180831161114457829003601f168201915b5050505050905090565b5f8060015f61117861161a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611232576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122990613376565b60405180910390fd5b61124661123d61161a565b85858403611621565b600191505092915050565b600d5481565b5f61126a61126361161a565b84846117e4565b6001905092915050565b6019602052805f5260405f205f915054906101000a900460ff1681565b60085481565b61129f61161a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113249061325b565b60405180910390fd5b5f5b81518110156113b4576001601a5f8484815181106113505761134f613279565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061132f565b5050565b600e5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60075481565b60105481565b61145461161a565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d99061325b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611550576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154790613404565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b60095481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361168f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168690613492565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f490613520565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117d79190612e9c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611852576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611849906135ae565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b79061363c565b60405180910390fd5b5f60019050601a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806119605750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611969575f90505b5f82036119815761197b84845f6122b6565b506122b1565b611989610fac565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119f757506119c7610fac565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d7f5760165f9054906101000a900460ff168015611a145750805b8015611a4c57505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a86575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a9f5750600560149054906101000a900460ff16155b15611d7e5760195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611b41575060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611be857600854821115611b8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b82906136ca565b60405180910390fd5b600954611b9784610de9565b83611ba291906132d3565b1115611be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bda90613732565b60405180910390fd5b611d7d565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611c85575060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611cd457600854821115611ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc6906137c0565b60405180910390fd5b611d7c565b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611d7b57600954611d2e84610de9565b83611d3991906132d3565b1115611d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7190613732565b60405180910390fd5b5b5b5b5b5b5f611d8930610de9565b90505f6007548210159050808015611dae5750600560149054906101000a900460ff16155b8015611e01575060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e54575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ea7575060175f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611eea576001600560146101000a81548160ff021916908315150217905550611ecf61252b565b5f600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff16158015611f4d575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611f645750600a5f9054906101000a900460ff165b8015611f7f5750600c54600d54611f7b91906132d3565b4210155b8015611fd2575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fe157611fdf612726565b505b5f600560149054906101000a900460ff1615905060175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612090575060175f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612099575f90505b5f81156122a05760195f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156120f757505f601154115b1561219057612125612710612117601154896128e090919063ffffffff16565b6128f590919063ffffffff16565b90506011546013548261213891906137de565b612142919061384c565b60155f82825461215291906132d3565b925050819055506011546012548261216a91906137de565b612174919061384c565b60145f82825461218491906132d3565b9250508190555061227d565b60195f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156121e757505f600e54115b1561227c57612215612710612207600e54896128e090919063ffffffff16565b6128f590919063ffffffff16565b9050600e546010548261222891906137de565b612232919061384c565b60155f82825461224291906132d3565b92505081905550600e54600f548261225a91906137de565b612264919061384c565b60145f82825461227491906132d3565b925050819055505b5b5f811115612291576122908830836122b6565b5b808661229d919061387c565b95505b6122ab8888886122b6565b50505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231b906135ae565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612392576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123899061363c565b60405180910390fd5b61239d83838361290a565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124179061391f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546124ae91906132d3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125129190612e9c565b60405180910390a361252584848461290f565b50505050565b5f61253530610de9565b90505f60145460155461254891906132d3565b90505f8083148061255857505f82145b1561256557505050612724565b601460075461257491906137de565b83111561258d57601460075461258a91906137de565b92505b5f6002836015548661259f91906137de565b6125a9919061384c565b6125b3919061384c565b90505f6125c9828661291490919063ffffffff16565b90505f4790506125d882612929565b5f6125ec824761291490919063ffffffff16565b90505f61261687612608601454856128e090919063ffffffff16565b6128f590919063ffffffff16565b90505f8183612625919061387c565b90505f6015819055505f6014819055505f8611801561264357505f81115b15612690576126528682612b5c565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826015546040516126879392919061393d565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516126d59061399f565b5f6040518083038185875af1925050503d805f811461270f576040519150601f19603f3d011682016040523d82523d5f602084013e612714565b606091505b5050809750505050505050505050505b565b5f42600d819055505f3073ffffffffffffffffffffffffffffffffffffffff166370a082317f0000000000000000000000001b2cb797b820e7a333f0b8a39bb1120256e82fe26040518263ffffffff1660e01b81526004016127889190612f14565b602060405180830381865afa1580156127a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127c791906139c7565b90505f6127f36127106127e5600b54856128e090919063ffffffff16565b6128f590919063ffffffff16565b90505f81111561282b5761282a7f0000000000000000000000001b2cb797b820e7a333f0b8a39bb1120256e82fe261dead836122b6565b5b5f7f0000000000000000000000001b2cb797b820e7a333f0b8a39bb1120256e82fe290508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612894575f80fd5b505af11580156128a6573d5f803e3d5ffd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b5f81836128ed91906137de565b905092915050565b5f8183612902919061384c565b905092915050565b505050565b505050565b5f8183612921919061387c565b905092915050565b5f600267ffffffffffffffff81111561294557612944612f65565b5b6040519080825280602002602001820160405280156129735781602001602082028036833780820191505090505b50905030815f8151811061298a57612989613279565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a519190613a06565b81600181518110612a6557612a64613279565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612aca307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611621565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b2b959493929190613b21565b5f604051808303815f87803b158015612b42575f80fd5b505af1158015612b54573d5f803e3d5ffd5b505050505050565b612b87307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611621565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b8152600401612bed96959493929190613b79565b60606040518083038185885af1158015612c09573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612c2e9190613bd8565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c6c578082015181840152602081019050612c51565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612c9182612c35565b612c9b8185612c3f565b9350612cab818560208601612c4f565b612cb481612c77565b840191505092915050565b5f6020820190508181035f830152612cd78184612c87565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d1982612cf0565b9050919050565b612d2981612d0f565b8114612d33575f80fd5b50565b5f81359050612d4481612d20565b92915050565b5f819050919050565b612d5c81612d4a565b8114612d66575f80fd5b50565b5f81359050612d7781612d53565b92915050565b5f8060408385031215612d9357612d92612ce8565b5b5f612da085828601612d36565b9250506020612db185828601612d69565b9150509250929050565b5f8115159050919050565b612dcf81612dbb565b82525050565b5f602082019050612de85f830184612dc6565b92915050565b5f60208284031215612e0357612e02612ce8565b5b5f612e1084828501612d36565b91505092915050565b5f819050919050565b5f612e3c612e37612e3284612cf0565b612e19565b612cf0565b9050919050565b5f612e4d82612e22565b9050919050565b5f612e5e82612e43565b9050919050565b612e6e81612e54565b82525050565b5f602082019050612e875f830184612e65565b92915050565b612e9681612d4a565b82525050565b5f602082019050612eaf5f830184612e8d565b92915050565b5f805f60608486031215612ecc57612ecb612ce8565b5b5f612ed986828701612d36565b9350506020612eea86828701612d36565b9250506040612efb86828701612d69565b9150509250925092565b612f0e81612d0f565b82525050565b5f602082019050612f275f830184612f05565b92915050565b5f60ff82169050919050565b612f4281612f2d565b82525050565b5f602082019050612f5b5f830184612f39565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f9b82612c77565b810181811067ffffffffffffffff82111715612fba57612fb9612f65565b5b80604052505050565b5f612fcc612cdf565b9050612fd88282612f92565b919050565b5f67ffffffffffffffff821115612ff757612ff6612f65565b5b602082029050602081019050919050565b5f80fd5b5f61301e61301984612fdd565b612fc3565b9050808382526020820190506020840283018581111561304157613040613008565b5b835b8181101561306a57806130568882612d36565b845260208401935050602081019050613043565b5050509392505050565b5f82601f83011261308857613087612f61565b5b813561309884826020860161300c565b91505092915050565b5f602082840312156130b6576130b5612ce8565b5b5f82013567ffffffffffffffff8111156130d3576130d2612cec565b5b6130df84828501613074565b91505092915050565b5f80604083850312156130fe576130fd612ce8565b5b5f61310b85828601612d36565b925050602061311c85828601612d36565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061316a57607f821691505b60208210810361317d5761317c613126565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6131dd602883612c3f565b91506131e882613183565b604082019050919050565b5f6020820190508181035f83015261320a816131d1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613245602083612c3f565b915061325082613211565b602082019050919050565b5f6020820190508181035f83015261327281613239565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6132dd82612d4a565b91506132e883612d4a565b9250828201905080821115613300576132ff6132a6565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613360602583612c3f565b915061336b82613306565b604082019050919050565b5f6020820190508181035f83015261338d81613354565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133ee602683612c3f565b91506133f982613394565b604082019050919050565b5f6020820190508181035f83015261341b816133e2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61347c602483612c3f565b915061348782613422565b604082019050919050565b5f6020820190508181035f8301526134a981613470565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61350a602283612c3f565b9150613515826134b0565b604082019050919050565b5f6020820190508181035f830152613537816134fe565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613598602583612c3f565b91506135a38261353e565b604082019050919050565b5f6020820190508181035f8301526135c58161358c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613626602383612c3f565b9150613631826135cc565b604082019050919050565b5f6020820190508181035f8301526136538161361a565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6136b4603583612c3f565b91506136bf8261365a565b604082019050919050565b5f6020820190508181035f8301526136e1816136a8565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61371c601383612c3f565b9150613727826136e8565b602082019050919050565b5f6020820190508181035f83015261374981613710565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6137aa603683612c3f565b91506137b582613750565b604082019050919050565b5f6020820190508181035f8301526137d78161379e565b9050919050565b5f6137e882612d4a565b91506137f383612d4a565b925082820261380181612d4a565b91508282048414831517613818576138176132a6565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61385682612d4a565b915061386183612d4a565b9250826138715761387061381f565b5b828204905092915050565b5f61388682612d4a565b915061389183612d4a565b92508282039050818111156138a9576138a86132a6565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613909602683612c3f565b9150613914826138af565b604082019050919050565b5f6020820190508181035f830152613936816138fd565b9050919050565b5f6060820190506139505f830186612e8d565b61395d6020830185612e8d565b61396a6040830184612e8d565b949350505050565b5f81905092915050565b50565b5f61398a5f83613972565b91506139958261397c565b5f82019050919050565b5f6139a98261397f565b9150819050919050565b5f815190506139c181612d53565b92915050565b5f602082840312156139dc576139db612ce8565b5b5f6139e9848285016139b3565b91505092915050565b5f81519050613a0081612d20565b92915050565b5f60208284031215613a1b57613a1a612ce8565b5b5f613a28848285016139f2565b91505092915050565b5f819050919050565b5f613a54613a4f613a4a84613a31565b612e19565b612d4a565b9050919050565b613a6481613a3a565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613a9c81612d0f565b82525050565b5f613aad8383613a93565b60208301905092915050565b5f602082019050919050565b5f613acf82613a6a565b613ad98185613a74565b9350613ae483613a84565b805f5b83811015613b14578151613afb8882613aa2565b9750613b0683613ab9565b925050600181019050613ae7565b5085935050505092915050565b5f60a082019050613b345f830188612e8d565b613b416020830187613a5b565b8181036040830152613b538186613ac5565b9050613b626060830185612f05565b613b6f6080830184612e8d565b9695505050505050565b5f60c082019050613b8c5f830189612f05565b613b996020830188612e8d565b613ba66040830187613a5b565b613bb36060830186613a5b565b613bc06080830185612f05565b613bcd60a0830184612e8d565b979650505050505050565b5f805f60608486031215613bef57613bee612ce8565b5b5f613bfc868287016139b3565b9350506020613c0d868287016139b3565b9250506040613c1e868287016139b3565b915050925092509256fea2646970667358221220aeb0bfb94d8d64f21ba78d973f695fd9e17209a45b622f899f620319d99292af64736f6c63430008160033

Deployed Bytecode Sourcemap

16266:11840:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3706:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4685:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17282:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16341:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4026:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16731:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17139:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17099;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4887:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16444:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16786:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16692:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3926:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27850:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5424:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28020:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16399:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17181:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16986:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4142:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1675:148;;;;;;;;;;;;;:::i;:::-;;16536:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16910;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1033:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19692:391;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17021:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3814:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5722:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16838:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4293:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17354:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16617:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27678:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16876:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4501:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16575:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16947:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1978:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17059:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16659:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3706:100;3760:13;3793:5;3786:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3706:100;:::o;4685:194::-;4793:4;4810:39;4819:12;:10;:12::i;:::-;4833:7;4842:6;4810:8;:39::i;:::-;4867:4;4860:11;;4685:194;;;;:::o;17282:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;16341:51::-;;;:::o;4026:108::-;4087:7;4114:12;;4107:19;;4026:108;:::o;16731:36::-;;;;:::o;17139:33::-;;;;:::o;17099:::-;;;;:::o;4887:529::-;5027:4;5044:36;5054:6;5062:9;5073:6;5044:9;:36::i;:::-;5093:24;5120:11;:19;5132:6;5120:19;;;;;;;;;;;;;;;:33;5140:12;:10;:12::i;:::-;5120:33;;;;;;;;;;;;;;;;5093:60;;5206:6;5186:16;:26;;5164:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;5316:57;5325:6;5333:12;:10;:12::i;:::-;5366:6;5347:16;:25;5316:8;:57::i;:::-;5404:4;5397:11;;;4887:529;;;;;:::o;16444:53::-;16490:6;16444:53;:::o;16786:45::-;;;;:::o;16692:32::-;;;;;;;;;;;;;:::o;3926:92::-;3984:5;4009:1;4002:8;;3926:92;:::o;27850:162::-;1255:12;:10;:12::i;:::-;1245:22;;:6;;;;;;;;;;;:22;;;1237:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27923:6:::1;27918:87;27939:6;:13;27935:1;:17;27918:87;;;27990:5;27972:4;:15;27977:6;27984:1;27977:9;;;;;;;;:::i;:::-;;;;;;;;27972:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;27954:3;;;;;;;27918:87;;;;27850:162:::0;:::o;5424:290::-;5537:4;5554:130;5577:12;:10;:12::i;:::-;5604:7;5663:10;5626:11;:25;5638:12;:10;:12::i;:::-;5626:25;;;;;;;;;;;;;;;:34;5652:7;5626:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5554:8;:130::i;:::-;5702:4;5695:11;;5424:290;;;;:::o;28020:83::-;28067:4;28088;:7;28093:1;28088:7;;;;;;;;;;;;;;;;;;;;;;;;;28081:14;;28020:83;;;:::o;16399:38::-;;;:::o;17181:33::-;;;;;;;;;;;;;:::o;16986:28::-;;;;:::o;4142:143::-;4232:7;4259:9;:18;4269:7;4259:18;;;;;;;;;;;;;;;;4252:25;;4142:143;;;:::o;1675:148::-;1255:12;:10;:12::i;:::-;1245:22;;:6;;;;;;;;;;;:22;;;1237:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1782:1:::1;1745:40;;1766:6;;;;;;;;;;;1745:40;;;;;;;;;;;;1813:1;1796:6;;:19;;;;;;;;;;;;;;;;;;1675:148::o:0;16536:30::-;;;;;;;;;;;;;:::o;16910:::-;;;;:::o;1033:79::-;1071:7;1098:6;;;;;;;;;;;1091:13;;1033:79;:::o;19692:391::-;19741:4;1255:12;:10;:12::i;:::-;1245:22;;:6;;;;;;;;;;;:22;;;1237:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19785:1:::1;19767:15;:19;;;;19815:1;19797:15;:19;;;;19860:15;;19842;;:33;;;;:::i;:::-;19827:12;:48;;;;19914:2;19895:16;:21;;;;19946:2;19927:16;:21;;;;19994:16;;19975;;:35;;;;:::i;:::-;19959:13;:51;;;;20048:5;20031:14;;:22;;;;;;;;;;;;;;;;;;20071:4;20064:11;;19692:391:::0;:::o;17021:31::-;;;;:::o;3814:104::-;3870:13;3903:7;3896:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3814:104;:::o;5722:475::-;5840:4;5857:24;5884:11;:25;5896:12;:10;:12::i;:::-;5884:25;;;;;;;;;;;;;;;:34;5910:7;5884:34;;;;;;;;;;;;;;;;5857:61;;5971:15;5951:16;:35;;5929:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;6087:67;6096:12;:10;:12::i;:::-;6110:7;6138:15;6119:16;:34;6087:8;:67::i;:::-;6185:4;6178:11;;;5722:475;;;;:::o;16838:29::-;;;;:::o;4293:200::-;4404:4;4421:42;4431:12;:10;:12::i;:::-;4445:9;4456:6;4421:9;:42::i;:::-;4481:4;4474:11;;4293:200;;;;:::o;17354:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;16617:35::-;;;;:::o;27678:164::-;1255:12;:10;:12::i;:::-;1245:22;;:6;;;;;;;;;;;:22;;;1237:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27752:6:::1;27747:88;27768:5;:12;27764:1;:16;27747:88;;;27819:4;27802;:14;27807:5;27813:1;27807:8;;;;;;;;:::i;:::-;;;;;;;;27802:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;27782:3;;;;;;;27747:88;;;;27678:164:::0;:::o;16876:27::-;;;;:::o;4501:176::-;4615:7;4642:11;:18;4654:5;4642:18;;;;;;;;;;;;;;;:27;4661:7;4642:27;;;;;;;;;;;;;;;;4635:34;;4501:176;;;;:::o;16575:33::-;;;;:::o;16947:30::-;;;;:::o;1978:281::-;1255:12;:10;:12::i;:::-;1245:22;;:6;;;;;;;;;;;:22;;;1237:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2101:1:::1;2081:22;;:8;:22;;::::0;2059:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2214:8;2185:38;;2206:6;;;;;;;;;;;2185:38;;;;;;;;;;;;2243:8;2234:6;;:17;;;;;;;;;;;;;;;;;;1978:281:::0;:::o;17059:31::-;;;;:::o;16659:24::-;;;;:::o;303:98::-;356:7;383:10;376:17;;303:98;:::o;7989:380::-;8142:1;8125:19;;:5;:19;;;8117:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8223:1;8204:21;;:7;:21;;;8196:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8307:6;8277:11;:18;8289:5;8277:18;;;;;;;;;;;;;;;:27;8296:7;8277:27;;;;;;;;;;;;;;;:36;;;;8345:7;8329:32;;8338:5;8329:32;;;8354:6;8329:32;;;;;;:::i;:::-;;;;;;;;7989:380;;;:::o;20295:3923::-;20443:1;20427:18;;:4;:18;;;20419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20520:1;20506:16;;:2;:16;;;20498:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20575:11;20589:4;20575:18;;20607:4;:10;20612:4;20607:10;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;;20621:4;:8;20626:2;20621:8;;;;;;;;;;;;;;;;;;;;;;;;;20607:22;20604:77;;;20664:5;20655:14;;20604:77;20705:1;20695:6;:11;20691:93;;20723:28;20739:4;20745:2;20749:1;20723:15;:28::i;:::-;20766:7;;;20691:93;20808:7;:5;:7::i;:::-;20800:15;;:4;:15;;;;:32;;;;;20825:7;:5;:7::i;:::-;20819:13;;:2;:13;;;;20800:32;20796:1445;;;20871:14;;;;;;;;;;;:24;;;;;20889:6;20871:24;:61;;;;;20930:1;20916:16;;:2;:16;;;;20871:61;:103;;;;;20967:6;20953:21;;:2;:21;;;;20871:103;:133;;;;;20996:8;;;;;;;;;;;20995:9;20871:133;20849:1381;;;21094:25;:31;21120:4;21094:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21151:31;:35;21183:2;21151:35;;;;;;;;;;;;;;;;;;;;;;;;;21150:36;21094:92;21068:1147;;;21273:20;;21263:6;:30;;21229:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;21481:9;;21464:13;21474:2;21464:9;:13::i;:::-;21455:6;:22;;;;:::i;:::-;:35;;21421:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21068:1147;;;21659:25;:29;21685:2;21659:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21714:31;:37;21746:4;21714:37;;;;;;;;;;;;;;;;;;;;;;;;;21713:38;21659:92;21633:582;;;21838:20;;21828:6;:30;;21794:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;21633:582;;;21995:31;:35;22027:2;21995:35;;;;;;;;;;;;;;;;;;;;;;;;;21990:225;;22115:9;;22098:13;22108:2;22098:9;:13::i;:::-;22089:6;:22;;;;:::i;:::-;:35;;22055:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21990:225;21633:582;21068:1147;20849:1381;20796:1445;22253:28;22284:24;22302:4;22284:9;:24::i;:::-;22253:55;;22321:12;22360:18;;22336:20;:42;;22321:57;;22409:7;:33;;;;;22434:8;;;;;;;;;;;22433:9;22409:33;:82;;;;;22460:25;:31;22486:4;22460:31;;;;;;;;;;;;;;;;;;;;;;;;;22459:32;22409:82;:125;;;;;22509:19;:25;22529:4;22509:25;;;;;;;;;;;;;;;;;;;;;;;;;22508:26;22409:125;:166;;;;;22552:19;:23;22572:2;22552:23;;;;;;;;;;;;;;;;;;;;;;;;;22551:24;22409:166;22391:298;;;22613:4;22602:8;;:15;;;;;;;;;;;;;;;;;;22634:10;:8;:10::i;:::-;22672:5;22661:8;;:16;;;;;;;;;;;;;;;;;;22391:298;22720:8;;;;;;;;;;;22719:9;:55;;;;;22745:25;:29;22771:2;22745:29;;;;;;;;;;;;;;;;;;;;;;;;;22719:55;:85;;;;;22791:13;;;;;;;;;;;22719:85;:153;;;;;22857:15;;22840:14;;:32;;;;:::i;:::-;22821:15;:51;;22719:153;:196;;;;;22890:19;:25;22910:4;22890:25;;;;;;;;;;;;;;;;;;;;;;;;;22889:26;22719:196;22701:282;;;22942:29;:27;:29::i;:::-;;22701:282;22995:12;23011:8;;;;;;;;;;;23010:9;22995:24;;23121:19;:25;23141:4;23121:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23150:19;:23;23170:2;23150:23;;;;;;;;;;;;;;;;;;;;;;;;;23121:52;23117:100;;;23200:5;23190:15;;23117:100;23229:12;23334:7;23330:835;;;23386:25;:29;23412:2;23386:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23435:1;23419:13;;:17;23386:50;23382:634;;;23464:36;23494:5;23464:25;23475:13;;23464:6;:10;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;23457:43;;23569:13;;23549:16;;23542:4;:23;;;;:::i;:::-;23541:41;;;;:::i;:::-;23519:18;;:63;;;;;;;:::i;:::-;;;;;;;;23651:13;;23631:16;;23624:4;:23;;;;:::i;:::-;23623:41;;;;:::i;:::-;23601:18;;:63;;;;;;;:::i;:::-;;;;;;;;23382:634;;;23726:25;:31;23752:4;23726:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23776:1;23761:12;;:16;23726:51;23722:294;;;23805:35;23834:5;23805:24;23816:12;;23805:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;23798:42;;23908:12;;23889:15;;23882:4;:22;;;;:::i;:::-;23881:39;;;;:::i;:::-;23859:18;;:61;;;;;;;:::i;:::-;;;;;;;;23988:12;;23969:15;;23962:4;:22;;;;:::i;:::-;23961:39;;;;:::i;:::-;23939:18;;:61;;;;;;;:::i;:::-;;;;;;;;23722:294;23382:634;24043:1;24036:4;:8;24032:91;;;24065:42;24081:4;24095;24102;24065:15;:42::i;:::-;24032:91;24149:4;24139:14;;;;;:::i;:::-;;;23330:835;24177:33;24193:4;24199:2;24203:6;24177:15;:33::i;:::-;20408:3810;;;;;20295:3923;;;;:::o;6205:770::-;6363:1;6345:20;;:6;:20;;;6337:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6447:1;6426:23;;:9;:23;;;6418:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6502:47;6523:6;6531:9;6542:6;6502:20;:47::i;:::-;6562:21;6586:9;:17;6596:6;6586:17;;;;;;;;;;;;;;;;6562:41;;6653:6;6636:13;:23;;6614:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;6797:6;6781:13;:22;6761:9;:17;6771:6;6761:17;;;;;;;;;;;;;;;:42;;;;6849:6;6825:9;:20;6835:9;6825:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6890:9;6873:35;;6882:6;6873:35;;;6901:6;6873:35;;;;;;:::i;:::-;;;;;;;;6921:46;6941:6;6949:9;6960:6;6921:19;:46::i;:::-;6326:649;6205:770;;;:::o;25348:1522::-;25387:23;25413:24;25431:4;25413:9;:24::i;:::-;25387:50;;25448:25;25497:18;;25476;;:39;;;;:::i;:::-;25448:67;;25526:12;25574:1;25555:15;:20;:46;;;;25600:1;25579:17;:22;25555:46;25551:85;;;25618:7;;;;;25551:85;25691:2;25670:18;;:23;;;;:::i;:::-;25652:15;:41;25648:115;;;25749:2;25728:18;;:23;;;;:::i;:::-;25710:41;;25648:115;25824:23;25937:1;25904:17;25869:18;;25851:15;:36;;;;:::i;:::-;25850:71;;;;:::i;:::-;:88;;;;:::i;:::-;25824:114;;25949:26;25978:36;25998:15;25978;:19;;:36;;;;:::i;:::-;25949:65;;26027:25;26055:21;26027:49;;26089:36;26106:18;26089:16;:36::i;:::-;26138:18;26159:44;26185:17;26159:21;:25;;:44;;;;:::i;:::-;26138:65;;26216:23;26242:81;26295:17;26242:34;26257:18;;26242:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;26216:107;;26336:23;26375:15;26362:10;:28;;;;:::i;:::-;26336:54;;26424:1;26403:18;:22;;;;26457:1;26436:18;:22;;;;26493:1;26475:15;:19;:42;;;;;26516:1;26498:15;:19;26475:42;26471:278;;;26534:46;26547:15;26564;26534:12;:46::i;:::-;26600:137;26633:18;26670:15;26704:18;;26600:137;;;;;;;;:::i;:::-;;;;;;;;26471:278;26783:15;;;;;;;;;;;26775:29;;26826:21;26775:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26761:101;;;;;25376:1494;;;;;;;;;25348:1522;:::o;26878:788::-;26935:4;26969:15;26952:14;:32;;;;27039:28;27070:4;:14;;;27085:13;27070:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27039:60;;27149:20;27172:77;27233:5;27172:42;27197:16;;27172:20;:24;;:42;;;;:::i;:::-;:46;;:77;;;;:::i;:::-;27149:100;;27369:1;27354:12;:16;27350:110;;;27387:61;27403:13;27426:6;27435:12;27387:15;:61::i;:::-;27350:110;27535:19;27572:13;27535:51;;27597:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27624:12;;;;;;;;;;27654:4;27647:11;;;;;26878:788;:::o;10118:98::-;10176:7;10207:1;10203;:5;;;;:::i;:::-;10196:12;;10118:98;;;;:::o;10224:::-;10282:7;10313:1;10309;:5;;;;:::i;:::-;10302:12;;10224:98;;;;:::o;8377:125::-;;;;:::o;8510:124::-;;;;:::o;10012:98::-;10070:7;10101:1;10097;:5;;;;:::i;:::-;10090:12;;10012:98;;;;:::o;24226:589::-;24352:21;24390:1;24376:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24352:40;;24421:4;24403;24408:1;24403:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24447:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24437:4;24442:1;24437:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24482:62;24499:4;24514:15;24532:11;24482:8;:62::i;:::-;24583:15;:66;;;24664:11;24690:1;24734:4;24761;24781:15;24583:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24281:534;24226:589;:::o;24823:517::-;24971:62;24988:4;25003:15;25021:11;24971:8;:62::i;:::-;25076:15;:31;;;25115:9;25148:4;25168:11;25194:1;25237;16490:6;25306:15;25076:256;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24823:517;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:619::-;5188:6;5196;5204;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5111:619;;;;;:::o;5736:118::-;5823:24;5841:5;5823:24;:::i;:::-;5818:3;5811:37;5736:118;;:::o;5860:222::-;5953:4;5991:2;5980:9;5976:18;5968:26;;6004:71;6072:1;6061:9;6057:17;6048:6;6004:71;:::i;:::-;5860:222;;;;:::o;6088:86::-;6123:7;6163:4;6156:5;6152:16;6141:27;;6088:86;;;:::o;6180:112::-;6263:22;6279:5;6263:22;:::i;:::-;6258:3;6251:35;6180:112;;:::o;6298:214::-;6387:4;6425:2;6414:9;6410:18;6402:26;;6438:67;6502:1;6491:9;6487:17;6478:6;6438:67;:::i;:::-;6298:214;;;;:::o;6518:117::-;6627:1;6624;6617:12;6641:180;6689:77;6686:1;6679:88;6786:4;6783:1;6776:15;6810:4;6807:1;6800:15;6827:281;6910:27;6932:4;6910:27;:::i;:::-;6902:6;6898:40;7040:6;7028:10;7025:22;7004:18;6992:10;6989:34;6986:62;6983:88;;;7051:18;;:::i;:::-;6983:88;7091:10;7087:2;7080:22;6870:238;6827:281;;:::o;7114:129::-;7148:6;7175:20;;:::i;:::-;7165:30;;7204:33;7232:4;7224:6;7204:33;:::i;:::-;7114:129;;;:::o;7249:311::-;7326:4;7416:18;7408:6;7405:30;7402:56;;;7438:18;;:::i;:::-;7402:56;7488:4;7480:6;7476:17;7468:25;;7548:4;7542;7538:15;7530:23;;7249:311;;;:::o;7566:117::-;7675:1;7672;7665:12;7706:710;7802:5;7827:81;7843:64;7900:6;7843:64;:::i;:::-;7827:81;:::i;:::-;7818:90;;7928:5;7957:6;7950:5;7943:21;7991:4;7984:5;7980:16;7973:23;;8044:4;8036:6;8032:17;8024:6;8020:30;8073:3;8065:6;8062:15;8059:122;;;8092:79;;:::i;:::-;8059:122;8207:6;8190:220;8224:6;8219:3;8216:15;8190:220;;;8299:3;8328:37;8361:3;8349:10;8328:37;:::i;:::-;8323:3;8316:50;8395:4;8390:3;8386:14;8379:21;;8266:144;8250:4;8245:3;8241:14;8234:21;;8190:220;;;8194:21;7808:608;;7706:710;;;;;:::o;8439:370::-;8510:5;8559:3;8552:4;8544:6;8540:17;8536:27;8526:122;;8567:79;;:::i;:::-;8526:122;8684:6;8671:20;8709:94;8799:3;8791:6;8784:4;8776:6;8772:17;8709:94;:::i;:::-;8700:103;;8516:293;8439:370;;;;:::o;8815:539::-;8899:6;8948:2;8936:9;8927:7;8923:23;8919:32;8916:119;;;8954:79;;:::i;:::-;8916:119;9102:1;9091:9;9087:17;9074:31;9132:18;9124:6;9121:30;9118:117;;;9154:79;;:::i;:::-;9118:117;9259:78;9329:7;9320:6;9309:9;9305:22;9259:78;:::i;:::-;9249:88;;9045:302;8815:539;;;;:::o;9360:474::-;9428:6;9436;9485:2;9473:9;9464:7;9460:23;9456:32;9453:119;;;9491:79;;:::i;:::-;9453:119;9611:1;9636:53;9681:7;9672:6;9661:9;9657:22;9636:53;:::i;:::-;9626:63;;9582:117;9738:2;9764:53;9809:7;9800:6;9789:9;9785:22;9764:53;:::i;:::-;9754:63;;9709:118;9360:474;;;;;:::o;9840:180::-;9888:77;9885:1;9878:88;9985:4;9982:1;9975:15;10009:4;10006:1;9999:15;10026:320;10070:6;10107:1;10101:4;10097:12;10087:22;;10154:1;10148:4;10144:12;10175:18;10165:81;;10231:4;10223:6;10219:17;10209:27;;10165:81;10293:2;10285:6;10282:14;10262:18;10259:38;10256:84;;10312:18;;:::i;:::-;10256:84;10077:269;10026:320;;;:::o;10352:227::-;10492:34;10488:1;10480:6;10476:14;10469:58;10561:10;10556:2;10548:6;10544:15;10537:35;10352:227;:::o;10585:366::-;10727:3;10748:67;10812:2;10807:3;10748:67;:::i;:::-;10741:74;;10824:93;10913:3;10824:93;:::i;:::-;10942:2;10937:3;10933:12;10926:19;;10585:366;;;:::o;10957:419::-;11123:4;11161:2;11150:9;11146:18;11138:26;;11210:9;11204:4;11200:20;11196:1;11185:9;11181:17;11174:47;11238:131;11364:4;11238:131;:::i;:::-;11230:139;;10957:419;;;:::o;11382:182::-;11522:34;11518:1;11510:6;11506:14;11499:58;11382:182;:::o;11570:366::-;11712:3;11733:67;11797:2;11792:3;11733:67;:::i;:::-;11726:74;;11809:93;11898:3;11809:93;:::i;:::-;11927:2;11922:3;11918:12;11911:19;;11570:366;;;:::o;11942:419::-;12108:4;12146:2;12135:9;12131:18;12123:26;;12195:9;12189:4;12185:20;12181:1;12170:9;12166:17;12159:47;12223:131;12349:4;12223:131;:::i;:::-;12215:139;;11942:419;;;:::o;12367:180::-;12415:77;12412:1;12405:88;12512:4;12509:1;12502:15;12536:4;12533:1;12526:15;12553:180;12601:77;12598:1;12591:88;12698:4;12695:1;12688:15;12722:4;12719:1;12712:15;12739:191;12779:3;12798:20;12816:1;12798:20;:::i;:::-;12793:25;;12832:20;12850:1;12832:20;:::i;:::-;12827:25;;12875:1;12872;12868:9;12861:16;;12896:3;12893:1;12890:10;12887:36;;;12903:18;;:::i;:::-;12887:36;12739:191;;;;:::o;12936:224::-;13076:34;13072:1;13064:6;13060:14;13053:58;13145:7;13140:2;13132:6;13128:15;13121:32;12936:224;:::o;13166:366::-;13308:3;13329:67;13393:2;13388:3;13329:67;:::i;:::-;13322:74;;13405:93;13494:3;13405:93;:::i;:::-;13523:2;13518:3;13514:12;13507:19;;13166:366;;;:::o;13538:419::-;13704:4;13742:2;13731:9;13727:18;13719:26;;13791:9;13785:4;13781:20;13777:1;13766:9;13762:17;13755:47;13819:131;13945:4;13819:131;:::i;:::-;13811:139;;13538:419;;;:::o;13963:225::-;14103:34;14099:1;14091:6;14087:14;14080:58;14172:8;14167:2;14159:6;14155:15;14148:33;13963:225;:::o;14194:366::-;14336:3;14357:67;14421:2;14416:3;14357:67;:::i;:::-;14350:74;;14433:93;14522:3;14433:93;:::i;:::-;14551:2;14546:3;14542:12;14535:19;;14194:366;;;:::o;14566:419::-;14732:4;14770:2;14759:9;14755:18;14747:26;;14819:9;14813:4;14809:20;14805:1;14794:9;14790:17;14783:47;14847:131;14973:4;14847:131;:::i;:::-;14839:139;;14566:419;;;:::o;14991:223::-;15131:34;15127:1;15119:6;15115:14;15108:58;15200:6;15195:2;15187:6;15183:15;15176:31;14991:223;:::o;15220:366::-;15362:3;15383:67;15447:2;15442:3;15383:67;:::i;:::-;15376:74;;15459:93;15548:3;15459:93;:::i;:::-;15577:2;15572:3;15568:12;15561:19;;15220:366;;;:::o;15592:419::-;15758:4;15796:2;15785:9;15781:18;15773:26;;15845:9;15839:4;15835:20;15831:1;15820:9;15816:17;15809:47;15873:131;15999:4;15873:131;:::i;:::-;15865:139;;15592:419;;;:::o;16017:221::-;16157:34;16153:1;16145:6;16141:14;16134:58;16226:4;16221:2;16213:6;16209:15;16202:29;16017:221;:::o;16244:366::-;16386:3;16407:67;16471:2;16466:3;16407:67;:::i;:::-;16400:74;;16483:93;16572:3;16483:93;:::i;:::-;16601:2;16596:3;16592:12;16585:19;;16244:366;;;:::o;16616:419::-;16782:4;16820:2;16809:9;16805:18;16797:26;;16869:9;16863:4;16859:20;16855:1;16844:9;16840:17;16833:47;16897:131;17023:4;16897:131;:::i;:::-;16889:139;;16616:419;;;:::o;17041:224::-;17181:34;17177:1;17169:6;17165:14;17158:58;17250:7;17245:2;17237:6;17233:15;17226:32;17041:224;:::o;17271:366::-;17413:3;17434:67;17498:2;17493:3;17434:67;:::i;:::-;17427:74;;17510:93;17599:3;17510:93;:::i;:::-;17628:2;17623:3;17619:12;17612:19;;17271:366;;;:::o;17643:419::-;17809:4;17847:2;17836:9;17832:18;17824:26;;17896:9;17890:4;17886:20;17882:1;17871:9;17867:17;17860:47;17924:131;18050:4;17924:131;:::i;:::-;17916:139;;17643:419;;;:::o;18068:222::-;18208:34;18204:1;18196:6;18192:14;18185:58;18277:5;18272:2;18264:6;18260:15;18253:30;18068:222;:::o;18296:366::-;18438:3;18459:67;18523:2;18518:3;18459:67;:::i;:::-;18452:74;;18535:93;18624:3;18535:93;:::i;:::-;18653:2;18648:3;18644:12;18637:19;;18296:366;;;:::o;18668:419::-;18834:4;18872:2;18861:9;18857:18;18849:26;;18921:9;18915:4;18911:20;18907:1;18896:9;18892:17;18885:47;18949:131;19075:4;18949:131;:::i;:::-;18941:139;;18668:419;;;:::o;19093:240::-;19233:34;19229:1;19221:6;19217:14;19210:58;19302:23;19297:2;19289:6;19285:15;19278:48;19093:240;:::o;19339:366::-;19481:3;19502:67;19566:2;19561:3;19502:67;:::i;:::-;19495:74;;19578:93;19667:3;19578:93;:::i;:::-;19696:2;19691:3;19687:12;19680:19;;19339:366;;;:::o;19711:419::-;19877:4;19915:2;19904:9;19900:18;19892:26;;19964:9;19958:4;19954:20;19950:1;19939:9;19935:17;19928:47;19992:131;20118:4;19992:131;:::i;:::-;19984:139;;19711:419;;;:::o;20136:169::-;20276:21;20272:1;20264:6;20260:14;20253:45;20136:169;:::o;20311:366::-;20453:3;20474:67;20538:2;20533:3;20474:67;:::i;:::-;20467:74;;20550:93;20639:3;20550:93;:::i;:::-;20668:2;20663:3;20659:12;20652:19;;20311:366;;;:::o;20683:419::-;20849:4;20887:2;20876:9;20872:18;20864:26;;20936:9;20930:4;20926:20;20922:1;20911:9;20907:17;20900:47;20964:131;21090:4;20964:131;:::i;:::-;20956:139;;20683:419;;;:::o;21108:241::-;21248:34;21244:1;21236:6;21232:14;21225:58;21317:24;21312:2;21304:6;21300:15;21293:49;21108:241;:::o;21355:366::-;21497:3;21518:67;21582:2;21577:3;21518:67;:::i;:::-;21511:74;;21594:93;21683:3;21594:93;:::i;:::-;21712:2;21707:3;21703:12;21696:19;;21355:366;;;:::o;21727:419::-;21893:4;21931:2;21920:9;21916:18;21908:26;;21980:9;21974:4;21970:20;21966:1;21955:9;21951:17;21944:47;22008:131;22134:4;22008:131;:::i;:::-;22000:139;;21727:419;;;:::o;22152:410::-;22192:7;22215:20;22233:1;22215:20;:::i;:::-;22210:25;;22249:20;22267:1;22249:20;:::i;:::-;22244:25;;22304:1;22301;22297:9;22326:30;22344:11;22326:30;:::i;:::-;22315:41;;22505:1;22496:7;22492:15;22489:1;22486:22;22466:1;22459:9;22439:83;22416:139;;22535:18;;:::i;:::-;22416:139;22200:362;22152:410;;;;:::o;22568:180::-;22616:77;22613:1;22606:88;22713:4;22710:1;22703:15;22737:4;22734:1;22727:15;22754:185;22794:1;22811:20;22829:1;22811:20;:::i;:::-;22806:25;;22845:20;22863:1;22845:20;:::i;:::-;22840:25;;22884:1;22874:35;;22889:18;;:::i;:::-;22874:35;22931:1;22928;22924:9;22919:14;;22754:185;;;;:::o;22945:194::-;22985:4;23005:20;23023:1;23005:20;:::i;:::-;23000:25;;23039:20;23057:1;23039:20;:::i;:::-;23034:25;;23083:1;23080;23076:9;23068:17;;23107:1;23101:4;23098:11;23095:37;;;23112:18;;:::i;:::-;23095:37;22945:194;;;;:::o;23145:225::-;23285:34;23281:1;23273:6;23269:14;23262:58;23354:8;23349:2;23341:6;23337:15;23330:33;23145:225;:::o;23376:366::-;23518:3;23539:67;23603:2;23598:3;23539:67;:::i;:::-;23532:74;;23615:93;23704:3;23615:93;:::i;:::-;23733:2;23728:3;23724:12;23717:19;;23376:366;;;:::o;23748:419::-;23914:4;23952:2;23941:9;23937:18;23929:26;;24001:9;23995:4;23991:20;23987:1;23976:9;23972:17;23965:47;24029:131;24155:4;24029:131;:::i;:::-;24021:139;;23748:419;;;:::o;24173:442::-;24322:4;24360:2;24349:9;24345:18;24337:26;;24373:71;24441:1;24430:9;24426:17;24417:6;24373:71;:::i;:::-;24454:72;24522:2;24511:9;24507:18;24498:6;24454:72;:::i;:::-;24536;24604:2;24593:9;24589:18;24580:6;24536:72;:::i;:::-;24173:442;;;;;;:::o;24621:147::-;24722:11;24759:3;24744:18;;24621:147;;;;:::o;24774:114::-;;:::o;24894:398::-;25053:3;25074:83;25155:1;25150:3;25074:83;:::i;:::-;25067:90;;25166:93;25255:3;25166:93;:::i;:::-;25284:1;25279:3;25275:11;25268:18;;24894:398;;;:::o;25298:379::-;25482:3;25504:147;25647:3;25504:147;:::i;:::-;25497:154;;25668:3;25661:10;;25298:379;;;:::o;25683:143::-;25740:5;25771:6;25765:13;25756:22;;25787:33;25814:5;25787:33;:::i;:::-;25683:143;;;;:::o;25832:351::-;25902:6;25951:2;25939:9;25930:7;25926:23;25922:32;25919:119;;;25957:79;;:::i;:::-;25919:119;26077:1;26102:64;26158:7;26149:6;26138:9;26134:22;26102:64;:::i;:::-;26092:74;;26048:128;25832:351;;;;:::o;26189:143::-;26246:5;26277:6;26271:13;26262:22;;26293:33;26320:5;26293:33;:::i;:::-;26189:143;;;;:::o;26338:351::-;26408:6;26457:2;26445:9;26436:7;26432:23;26428:32;26425:119;;;26463:79;;:::i;:::-;26425:119;26583:1;26608:64;26664:7;26655:6;26644:9;26640:22;26608:64;:::i;:::-;26598:74;;26554:128;26338:351;;;;:::o;26695:85::-;26740:7;26769:5;26758:16;;26695:85;;;:::o;26786:158::-;26844:9;26877:61;26895:42;26904:32;26930:5;26904:32;:::i;:::-;26895:42;:::i;:::-;26877:61;:::i;:::-;26864:74;;26786:158;;;:::o;26950:147::-;27045:45;27084:5;27045:45;:::i;:::-;27040:3;27033:58;26950:147;;:::o;27103:114::-;27170:6;27204:5;27198:12;27188:22;;27103:114;;;:::o;27223:184::-;27322:11;27356:6;27351:3;27344:19;27396:4;27391:3;27387:14;27372:29;;27223:184;;;;:::o;27413:132::-;27480:4;27503:3;27495:11;;27533:4;27528:3;27524:14;27516:22;;27413:132;;;:::o;27551:108::-;27628:24;27646:5;27628:24;:::i;:::-;27623:3;27616:37;27551:108;;:::o;27665:179::-;27734:10;27755:46;27797:3;27789:6;27755:46;:::i;:::-;27833:4;27828:3;27824:14;27810:28;;27665:179;;;;:::o;27850:113::-;27920:4;27952;27947:3;27943:14;27935:22;;27850:113;;;:::o;27999:732::-;28118:3;28147:54;28195:5;28147:54;:::i;:::-;28217:86;28296:6;28291:3;28217:86;:::i;:::-;28210:93;;28327:56;28377:5;28327:56;:::i;:::-;28406:7;28437:1;28422:284;28447:6;28444:1;28441:13;28422:284;;;28523:6;28517:13;28550:63;28609:3;28594:13;28550:63;:::i;:::-;28543:70;;28636:60;28689:6;28636:60;:::i;:::-;28626:70;;28482:224;28469:1;28466;28462:9;28457:14;;28422:284;;;28426:14;28722:3;28715:10;;28123:608;;;27999:732;;;;:::o;28737:831::-;29000:4;29038:3;29027:9;29023:19;29015:27;;29052:71;29120:1;29109:9;29105:17;29096:6;29052:71;:::i;:::-;29133:80;29209:2;29198:9;29194:18;29185:6;29133:80;:::i;:::-;29260:9;29254:4;29250:20;29245:2;29234:9;29230:18;29223:48;29288:108;29391:4;29382:6;29288:108;:::i;:::-;29280:116;;29406:72;29474:2;29463:9;29459:18;29450:6;29406:72;:::i;:::-;29488:73;29556:3;29545:9;29541:19;29532:6;29488:73;:::i;:::-;28737:831;;;;;;;;:::o;29574:807::-;29823:4;29861:3;29850:9;29846:19;29838:27;;29875:71;29943:1;29932:9;29928:17;29919:6;29875:71;:::i;:::-;29956:72;30024:2;30013:9;30009:18;30000:6;29956:72;:::i;:::-;30038:80;30114:2;30103:9;30099:18;30090:6;30038:80;:::i;:::-;30128;30204:2;30193:9;30189:18;30180:6;30128:80;:::i;:::-;30218:73;30286:3;30275:9;30271:19;30262:6;30218:73;:::i;:::-;30301;30369:3;30358:9;30354:19;30345:6;30301:73;:::i;:::-;29574:807;;;;;;;;;:::o;30387:663::-;30475:6;30483;30491;30540:2;30528:9;30519:7;30515:23;30511:32;30508:119;;;30546:79;;:::i;:::-;30508:119;30666:1;30691:64;30747:7;30738:6;30727:9;30723:22;30691:64;:::i;:::-;30681:74;;30637:128;30804:2;30830:64;30886:7;30877:6;30866:9;30862:22;30830:64;:::i;:::-;30820:74;;30775:129;30943:2;30969:64;31025:7;31016:6;31005:9;31001:22;30969:64;:::i;:::-;30959:74;;30914:129;30387:663;;;;;:::o

Swarm Source

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