ETH Price: $2,386.47 (-0.69%)

Token

NewYearFloki ($NYF)
 

Overview

Max Total Supply

100,000,000 $NYF

Holders

27

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,269,391.584809521 $NYF

Value
$0.00
0x6992373Daa697d26371D45A6be55780EbAe95d3a
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
NewYearFloki

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-28
*/

//Telegram: https://t.me/NewYearFlokiERC
//Twitter: https://twitter.com/NewYearFlokiERC

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;

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 {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            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 IDexFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

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

    function WETH() external pure returns (address);

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

    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;
}

interface IERC20Extended {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

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

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

    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 recipient,
        address indexed to,
        uint256 value
    );
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

abstract contract Ownable {
    address internal owner;
    event OwnershipTransferred(address owner);

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }
}

// main contract
contract NewYearFloki is IERC20Extended, Ownable {
    using SafeMath for uint256;

    string private constant _name = "NewYearFloki";
    string private constant _symbol = "$NYF";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 100_000_000 * 10**_decimals;

    address private constant DEAD = address(0xdead);
    address private constant ZERO = address(0);
    address public giftToken =
        address(0xdAC17F958D2ee523a2206206994597C13D831ec7);
    IDexRouter public router;
    address public pair;
    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address public giftsFeeReceiver;

    uint256 _liquidityBuyFee = 1;
    uint256 _marketingBuyFee = 2;
    uint256 _giftsBuyFee = 0;
    uint256 _surpriseBuyFee = 1;

    uint256 _liquiditySellFee = 3;
    uint256 _marketingSellFee = 5;
    uint256 _giftsSellFee = 0;
    uint256 _surpriseSellFee = 2;

    uint256 _liquidityFeeCount;
    uint256 _marketingFeeCount;
    uint256 _giftsFeeCount;
    uint256 _surpriseFeeCount;

    uint256 public totalBuyFee = 5;
    uint256 public totalSellFee = 15;
    uint256 public feeDenominator = 100;

    uint256 public maxTxnAmount = (_totalSupply * 5) / 1000;
    uint256 public maxWalletAmount = (_totalSupply * 15) / 1000;
    uint256 public launchedAt;
    uint256 public snipingTime = 40 seconds;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isLimitExmpt;
    mapping(address => bool) public isWalletExmpt;
    mapping(address => bool) public isBot;
    address[] public buyers;

    bool public surpriseEnable;
    bool public swapEnabled;
    uint256 public swapThreshold = _totalSupply / 1_000;
    bool public trading; // once enable can't be disable afterwards

    bool inSwap;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

    constructor() Ownable(msg.sender) {
        address router_ = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // uniswap v2
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = address(
            0xde500bB4eD23cc217dd98c2CE4100d797033DD01
        );
        giftsFeeReceiver = address(0xB3c9c4c30BB1ceD91DD7E174F6aE071b8E87cF53);

        router = IDexRouter(router_);
        pair = IDexFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );

        isFeeExempt[msg.sender] = true;
        isFeeExempt[marketingFeeReceiver] = true;
        isFeeExempt[giftsFeeReceiver] = true;

        isLimitExmpt[msg.sender] = true;
        isLimitExmpt[address(this)] = true;

        isWalletExmpt[msg.sender] = true;
        isWalletExmpt[router_] = true;
        isWalletExmpt[pair] = true;
        isWalletExmpt[address(this)] = true;
        isWalletExmpt[ZERO] = true;
        isWalletExmpt[DEAD] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function totalSupply() external pure override returns (uint256) {
        return _totalSupply;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

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

    function allowance(address holder, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowances[holder][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        return _transferrecipient(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != _totalSupply) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }

        return _transferrecipient(sender, recipient, amount);
    }

    function _transferrecipient(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(!isBot[sender], "Bot detected");
        if (!isLimitExmpt[sender] && !isLimitExmpt[recipient]) {
            require(amount <= maxTxnAmount, "Max limit exceeds");
            if (!trading) {
                require(
                    pair != sender && pair != recipient,
                    " trading is disable"
                );
            }
        }

        if (!isWalletExmpt[recipient]) {
            require(
                balanceOf(recipient).add(amount) < maxWalletAmount,
                "Max Wallet limit exceeds"
            );
        }

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (shouldSwapBack()) {
            swapBack();
        }

        if (
            block.timestamp < launchedAt + snipingTime &&
            recipient != address(router)
        ) {
            if (pair == sender) {
                isBot[recipient] = true;
            } else if (pair == recipient) {
                isBot[sender] = true;
            }
        }

        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );

        uint256 amountReceived;
        if (
            isFeeExempt[sender] ||
            isFeeExempt[recipient] ||
            (sender != pair && recipient != pair)
        ) {
            amountReceived = amount;
        } else {
            uint256 feeAmount;
            if (sender == pair) {
                feeAmount = amount.mul(totalBuyFee).div(feeDenominator);
                amountReceived = amount.sub(feeAmount);
                takeFee(sender, feeAmount);
                setBuyAccFee(amount);
                buyers.push(recipient);
            } else {
                feeAmount = amount.mul(totalSellFee).div(feeDenominator);
                amountReceived = amount.sub(feeAmount);
                takeFee(sender, feeAmount);
                setSellAccFee(amount);
                if (!isLimitExmpt[sender] && surpriseEnable) {
                    buyersReward();
                }
            }
        }

        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 feeAmount) internal {
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
    }

    function setBuyAccFee(uint256 _amount) internal {
        _liquidityFeeCount += _amount.mul(_liquidityBuyFee).div(feeDenominator);
        _marketingFeeCount += _amount.mul(_marketingBuyFee).div(feeDenominator);
        _giftsFeeCount += _amount.mul(_giftsBuyFee).div(feeDenominator);
        _surpriseFeeCount += _amount.mul(_surpriseBuyFee).div(feeDenominator);
    }

    function setSellAccFee(uint256 _amount) internal {
        _liquidityFeeCount += _amount.mul(_liquiditySellFee).div(
            feeDenominator
        );
        _marketingFeeCount += _amount.mul(_marketingSellFee).div(
            feeDenominator
        );
        _giftsFeeCount += _amount.mul(_giftsSellFee).div(feeDenominator);
        _surpriseFeeCount += _amount.mul(_surpriseSellFee).div(feeDenominator);
    }

    function shouldSwapBack() internal view returns (bool) {
        return
            msg.sender != pair &&
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 totalFee = _liquidityFeeCount.add(_marketingFeeCount).add(
            _giftsFeeCount
        );

        uint256 amountToLiquify = swapThreshold
            .mul(_liquidityFeeCount)
            .div(totalFee)
            .div(2);

        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);
        _allowances[address(this)][address(router)] = _totalSupply;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance.sub(balanceBefore);

        uint256 totalBNBFee = totalFee.sub(_liquidityFeeCount.div(2));

        uint256 amountBNBLiquidity = amountBNB
            .mul(_liquidityFeeCount)
            .div(totalBNBFee)
            .div(2);
        if (amountToLiquify > 0) {
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }

        uint256 amountBNBgifts = amountBNB.mul(_giftsFeeCount).div(totalBNBFee);
        if (amountBNBgifts > 0) {
            address[] memory path1 = new address[](2);
            path1[0] = router.WETH();
            path1[1] = address(giftToken);

            router.swapExactETHForTokensSupportingFeeOnTransferTokens{
                value: amountBNBgifts
            }(0, path1, giftsFeeReceiver, block.timestamp);
        }

        uint256 amountBNBMarketing = amountBNB.mul(_marketingFeeCount).div(
            totalBNBFee
        );
        if (amountBNBMarketing > 0) {
            payable(marketingFeeReceiver).transfer(amountBNBMarketing);
        }

        _liquidityFeeCount = 0;
        _marketingFeeCount = 0;
        _giftsFeeCount = 0;
    }

    function buyersReward() internal swapping {
        uint256 amountToSwap = _surpriseFeeCount;
        _allowances[address(this)][address(router)] = _totalSupply;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance.sub(balanceBefore);
        uint256 rewardForEach;
        if (buyers.length < 5) {
            rewardForEach = amountBNB / buyers.length;
            for (uint256 i; i < buyers.length; i++) {
                payable(buyers[i]).transfer(rewardForEach);
            }
        } else {
            rewardForEach = amountBNB / 5;
            for (uint256 i = buyers.length - 1; i >= buyers.length - 5; i--) {
                payable(buyers[i]).transfer(rewardForEach);
            }
        }

        _surpriseFeeCount = 0;
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsLimitExempt(address holder, bool exempt) external onlyOwner {
        isLimitExmpt[holder] = exempt;
    }

    function setIsWalletExempt(address holder, bool exempt) external onlyOwner {
        isWalletExmpt[holder] = exempt;
    }

    function removeStuckFunds() external onlyOwner {
        payable(owner).transfer(address(this).balance);
    }

    function setMaxTxnAmount(uint256 _amount) external onlyOwner {
        maxTxnAmount = _amount;
    }

    function setMaxWalletAmount(uint256 _amount) external onlyOwner {
        maxWalletAmount = _amount;
    }

    function enableTrading() external onlyOwner {
        require(!trading, "already enabled");
        trading = true;
        swapEnabled = true;
        surpriseEnable = true;
        launchedAt = block.timestamp;
    }

    function setSurpriseEnable(bool _value) external onlyOwner {
        surpriseEnable = _value;
    }

    function setBuyFees(
        uint256 _liquidityFee,
        uint256 _marketingFee,
        uint256 _giftsFee,
        uint256 _surpriseFee,
        uint256 _feeDenominator
    ) public onlyOwner {
        _liquidityBuyFee = _liquidityFee;
        _marketingBuyFee = _marketingFee;
        _surpriseBuyFee = _giftsFee;
        _giftsBuyFee = _surpriseFee;
        totalBuyFee = _liquidityFee.add(_marketingFee).add(_giftsFee).add(
            _surpriseFee
        );
        feeDenominator = _feeDenominator;
    }

    function setSellFees(
        uint256 _liquidityFee,
        uint256 _marketingFee,
        uint256 _giftsFee,
        uint256 _surpriseFee,
        uint256 _feeDenominator
    ) public onlyOwner {
        _liquiditySellFee = _liquidityFee;
        _marketingSellFee = _marketingFee;
        _giftsSellFee = _giftsFee;
        _surpriseSellFee = _surpriseFee;
        totalSellFee = _liquidityFee.add(_marketingFee).add(_giftsFee).add(
            _surpriseFee
        );
        feeDenominator = _feeDenominator;
    }

    function setFeeReceivers(
        address _autoLiquidityReceiver,
        address _marketingFeeReceiver,
        address _giftsFeeReceiver
    ) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        giftsFeeReceiver = _giftsFeeReceiver;
    }

    function setGiftToken(address _giftToken) external onlyOwner {
        giftToken = _giftToken;
    }

    function addOrRemoveBots(address[] memory accounts, bool value)
        external
        onlyOwner
    {
        for (uint256 i; i < accounts.length; i++) {
            require(
                accounts[i] != address(router) && pair != accounts[i],
                "cannot blacklist Dex"
            );
            isBot[accounts[i]] = value;
        }
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount)
        external
        onlyOwner
    {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"addOrRemoveBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"buyers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"giftToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"giftsFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLimitExmpt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletExmpt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStuckFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_giftsFee","type":"uint256"},{"internalType":"uint256","name":"_surpriseFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_giftsFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_giftToken","type":"address"}],"name":"setGiftToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_giftsFee","type":"uint256"},{"internalType":"uint256","name":"_surpriseFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setSurpriseEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"surpriseEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273dac17f958d2ee523a2206206994597c13d831ec7600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600755600260085560006009556001600a556003600b556005600c556000600d556002600e556005601355600f60145560646015556103e860056009600a620000a5919062000b85565b6305f5e100620000b6919062000bd6565b620000c2919062000bd6565b620000ce919062000c66565b6016556103e8600f6009600a620000e6919062000b85565b6305f5e100620000f7919062000bd6565b62000103919062000bd6565b6200010f919062000c66565b60175560286019556103e86009600a6200012a919062000b85565b6305f5e1006200013b919062000bd6565b62000147919062000c66565b6022553480156200015757600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073de500bb4ed23cc217dd98c2ce4100d797033dd01600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b3c9c4c30bb1ced91dd7e174f6ae071b8e87cf53600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000373919062000d08565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000423919062000d08565b6040518363ffffffff1660e01b81526004016200044292919062000d4b565b6020604051808303816000875af115801562000462573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000488919062000d08565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601c6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009600a62000908919062000b85565b6305f5e10062000919919062000bd6565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620009bc919062000b85565b6305f5e100620009cd919062000bd6565b604051620009dc919062000d89565b60405180910390a35062000da6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a795780860481111562000a515762000a50620009eb565b5b600185161562000a615780820291505b808102905062000a718562000a1a565b945062000a31565b94509492505050565b60008262000a94576001905062000b67565b8162000aa4576000905062000b67565b816001811462000abd576002811462000ac85762000afe565b600191505062000b67565b60ff84111562000add5762000adc620009eb565b5b8360020a91508482111562000af75762000af6620009eb565b5b5062000b67565b5060208310610133831016604e8410600b841016171562000b385782820a90508381111562000b325762000b31620009eb565b5b62000b67565b62000b47848484600162000a27565b9250905081840481111562000b615762000b60620009eb565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000b928262000b6e565b915062000b9f8362000b78565b925062000bce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a82565b905092915050565b600062000be38262000b6e565b915062000bf08362000b6e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c2c5762000c2b620009eb565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000c738262000b6e565b915062000c808362000b6e565b92508262000c935762000c9262000c37565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cd08262000ca3565b9050919050565b62000ce28162000cc3565b811462000cee57600080fd5b50565b60008151905062000d028162000cd7565b92915050565b60006020828403121562000d215762000d2062000c9e565b5b600062000d318482850162000cf1565b91505092915050565b62000d458162000cc3565b82525050565b600060408201905062000d62600083018562000d3a565b62000d71602083018462000d3a565b9392505050565b62000d838162000b6e565b82525050565b600060208201905062000da0600083018462000d78565b92915050565b614c6a8062000db66000396000f3fe6080604052600436106102975760003560e01c806382db44881161015a578063d7c01032116100c1578063ebfef14d1161007a578063ebfef14d14610a4d578063ec44acf214610a64578063f2aa821814610a8f578063f2fde38b14610acc578063f887ea4014610af5578063fc899bdc14610b205761029e565b8063d7c010321461093f578063d91f852e14610968578063d962cf5814610993578063dd62ed3e146109bc578063df20fd49146109f9578063e96fada214610a225761029e565b8063a9059cbb11610113578063a9059cbb1461082d578063aa4bde281461086a578063bf56b37114610895578063c1cf53c4146108c0578063ca33e64c146108e9578063cf46f24c146109145761029e565b806382db44881461072f57806386cb8fb1146107585780638a8c523c1461079557806395d89b41146107ac5780639d9241ec146107d7578063a8aa1b31146108025761029e565b80633f4218e0116101fe578063658d4b7f116101b7578063658d4b7f1461061f5780636ddd17131461064857806370a082311461067357806374010ece146106b057806375cd44f5146106d95780637d99c66d146107045761029e565b80633f4218e0146104eb57806347a28b79146105285780634b52f89b14610551578063540b8a271461057a578063571ac8b0146105b757806359b107b9146105f45761029e565b80632091f955116102505780632091f955146103b557806323b872dd146103e057806327a14fc21461041d5780632f54bf6e14610446578063313ce567146104835780633bbac579146104ae5761029e565b80630445b667146102a357806306fdde03146102ce578063095ea7b3146102f957806310a60f0214610336578063180b0d7e1461035f57806318160ddd1461038a5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610b49565b6040516102c59190613b36565b60405180910390f35b3480156102da57600080fd5b506102e3610b4f565b6040516102f09190613bea565b60405180910390f35b34801561030557600080fd5b50610320600480360381019061031b9190613caa565b610b8c565b60405161032d9190613d05565b60405180910390f35b34801561034257600080fd5b5061035d60048036038101906103589190613e94565b610c7e565b005b34801561036b57600080fd5b50610374610e7a565b6040516103819190613b36565b60405180910390f35b34801561039657600080fd5b5061039f610e80565b6040516103ac9190613b36565b60405180910390f35b3480156103c157600080fd5b506103ca610ea4565b6040516103d79190613eff565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190613f1a565b610eca565b6040516104149190613d05565b60405180910390f35b34801561042957600080fd5b50610444600480360381019061043f9190613f6d565b6110c6565b005b34801561045257600080fd5b5061046d60048036038101906104689190613f9a565b611118565b60405161047a9190613d05565b60405180910390f35b34801561048f57600080fd5b50610498611171565b6040516104a59190613fe3565b60405180910390f35b3480156104ba57600080fd5b506104d560048036038101906104d09190613f9a565b61117a565b6040516104e29190613d05565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d9190613f9a565b61119a565b60405161051f9190613d05565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190613ffe565b6111ba565b005b34801561055d57600080fd5b5061057860048036038101906105739190613f9a565b611269565b005b34801561058657600080fd5b506105a1600480360381019061059c9190613f9a565b6112f5565b6040516105ae9190613d05565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d99190613f9a565b611315565b6040516105eb9190613d05565b60405180910390f35b34801561060057600080fd5b50610609611344565b6040516106169190613b36565b60405180910390f35b34801561062b57600080fd5b5061064660048036038101906106419190614079565b61134a565b005b34801561065457600080fd5b5061065d6113ed565b60405161066a9190613d05565b60405180910390f35b34801561067f57600080fd5b5061069a60048036038101906106959190613f9a565b611400565b6040516106a79190613b36565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d29190613f6d565b611449565b005b3480156106e557600080fd5b506106ee61149b565b6040516106fb9190613eff565b60405180910390f35b34801561071057600080fd5b506107196114c1565b6040516107269190613b36565b60405180910390f35b34801561073b57600080fd5b50610756600480360381019061075191906140b9565b6114c7565b005b34801561076457600080fd5b5061077f600480360381019061077a9190613f9a565b61152c565b60405161078c9190613d05565b60405180910390f35b3480156107a157600080fd5b506107aa61154c565b005b3480156107b857600080fd5b506107c161163e565b6040516107ce9190613bea565b60405180910390f35b3480156107e357600080fd5b506107ec61167b565b6040516107f99190613b36565b60405180910390f35b34801561080e57600080fd5b50610817611681565b6040516108249190613eff565b60405180910390f35b34801561083957600080fd5b50610854600480360381019061084f9190613caa565b6116a7565b6040516108619190613d05565b60405180910390f35b34801561087657600080fd5b5061087f6116bc565b60405161088c9190613b36565b60405180910390f35b3480156108a157600080fd5b506108aa6116c2565b6040516108b79190613b36565b60405180910390f35b3480156108cc57600080fd5b506108e760048036038101906108e29190613ffe565b6116c8565b005b3480156108f557600080fd5b506108fe611777565b60405161090b9190613eff565b60405180910390f35b34801561092057600080fd5b5061092961179d565b6040516109369190613b36565b60405180910390f35b34801561094b57600080fd5b50610966600480360381019061096191906140e6565b6117a3565b005b34801561097457600080fd5b5061097d6118b3565b60405161098a9190613d05565b60405180910390f35b34801561099f57600080fd5b506109ba60048036038101906109b59190614079565b6118c6565b005b3480156109c857600080fd5b506109e360048036038101906109de9190614139565b611969565b6040516109f09190613b36565b60405180910390f35b348015610a0557600080fd5b50610a206004803603810190610a1b9190614179565b6119f0565b005b348015610a2e57600080fd5b50610a37611a5d565b604051610a449190613eff565b60405180910390f35b348015610a5957600080fd5b50610a62611a83565b005b348015610a7057600080fd5b50610a79611b34565b604051610a869190613d05565b60405180910390f35b348015610a9b57600080fd5b50610ab66004803603810190610ab19190613f6d565b611b47565b604051610ac39190613eff565b60405180910390f35b348015610ad857600080fd5b50610af36004803603810190610aee91906141f7565b611b86565b005b348015610b0157600080fd5b50610b0a611c48565b604051610b179190614283565b60405180910390f35b348015610b2c57600080fd5b50610b476004803603810190610b429190614079565b611c6e565b005b60225481565b60606040518060400160405280600c81526020017f4e657759656172466c6f6b690000000000000000000000000000000000000000815250905090565b600081601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c6c9190613b36565b60405180910390a36001905092915050565b610c8733611118565b610cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbd906142ea565b60405180910390fd5b60005b8251811015610e7557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838281518110610d1e57610d1d61430a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015610db25750828181518110610d5857610d5761430a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b610df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de890614385565b60405180910390fd5b81601f6000858481518110610e0957610e0861430a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e6d906143d4565b915050610cc9565b505050565b60155481565b60006009600a610e909190614550565b6305f5e100610e9f919061459b565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009600a610eda9190614550565b6305f5e100610ee9919061459b565b601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146110b257611031826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d119092919063ffffffff16565b601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6110bd848484611d66565b90509392505050565b6110cf33611118565b61110e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611105906142ea565b60405180910390fd5b8060178190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b601f6020528060005260406000206000915054906101000a900460ff1681565b601c6020528060005260406000206000915054906101000a900460ff1681565b6111c333611118565b611202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f9906142ea565b60405180910390fd5b846007819055508360088190555082600a81905550816009819055506112558261124785611239888a6127b990919063ffffffff16565b6127b990919063ffffffff16565b6127b990919063ffffffff16565b601381905550806015819055505050505050565b61127233611118565b6112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a8906142ea565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d6020528060005260406000206000915054906101000a900460ff1681565b600061133d826009600a6113299190614550565b6305f5e100611338919061459b565b610b8c565b9050919050565b60135481565b61135333611118565b611392576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611389906142ea565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602160019054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61145233611118565b611491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611488906142ea565b60405180910390fd5b8060168190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b6114d033611118565b61150f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611506906142ea565b60405180910390fd5b80602160006101000a81548160ff02191690831515021790555050565b601e6020528060005260406000206000915054906101000a900460ff1681565b61155533611118565b611594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158b906142ea565b60405180910390fd5b602360009054906101000a900460ff16156115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90614641565b60405180910390fd5b6001602360006101000a81548160ff0219169083151502179055506001602160016101000a81548160ff0219169083151502179055506001602160006101000a81548160ff02191690831515021790555042601881905550565b60606040518060400160405280600481526020017f244e594600000000000000000000000000000000000000000000000000000000815250905090565b60145481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116b4338484611d66565b905092915050565b60175481565b60185481565b6116d133611118565b611710576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611707906142ea565b60405180910390fd5b84600b8190555083600c8190555082600d8190555081600e819055506117638261175585611747888a6127b990919063ffffffff16565b6127b990919063ffffffff16565b6127b990919063ffffffff16565b601481905550806015819055505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b6117ac33611118565b6117eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e2906142ea565b60405180910390fd5b82600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b602160009054906101000a900460ff1681565b6118cf33611118565b61190e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611905906142ea565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119f933611118565b611a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2f906142ea565b60405180910390fd5b81602160016101000a81548160ff021916908315150217905550806022819055505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a8c33611118565b611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac2906142ea565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611b31573d6000803e3d6000fd5b50565b602360009054906101000a900460ff1681565b60208181548110611b5757600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b8f33611118565b611bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc5906142ea565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611c3d9190614682565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c7733611118565b611cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cad906142ea565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000838311158290611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d509190613bea565b60405180910390fd5b5082840390509392505050565b6000601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec906146e9565b60405180910390fd5b601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e995750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611fe457601654821115611ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eda90614755565b60405180910390fd5b602360009054906101000a900460ff16611fe3578373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611fa357508273ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b611fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd9906147c1565b60405180910390fd5b5b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612094576017546120538361204586611400565b6127b990919063ffffffff16565b10612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a9061482d565b60405180910390fd5b5b602360019054906101000a900460ff16156120bb576120b48484846127cf565b90506127b2565b6120c36129a2565b156120d1576120d0612a79565b5b6019546018546120e1919061484d565b4210801561213d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122a6578373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156121f5576001601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506122a5565b8273ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156122a4576001601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b61232f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d119092919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124155750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124c85750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156124c75750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b156124d5578290506126b2565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156125e857612556601554612548601354876132ed90919063ffffffff16565b61330390919063ffffffff16565b905061256b818561331990919063ffffffff16565b9150612577868261332f565b6125808461342d565b6020859080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506126b0565b612611601554612603601454876132ed90919063ffffffff16565b61330390919063ffffffff16565b9050612626818561331990919063ffffffff16565b9150612632868261332f565b61263b84613534565b601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126a15750602160009054906101000a900460ff165b156126af576126ae61363b565b5b5b505b61270481601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b990919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127a49190613b36565b60405180910390a360019150505b9392505050565b600081836127c7919061484d565b905092915050565b600061285a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d119092919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128ef82601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b990919063ffffffff16565b601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161298f9190613b36565b60405180910390a3600190509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612a0f5750602360019054906101000a900460ff16155b8015612a275750602160019054906101000a900460ff165b8015612a745750602254601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602360016101000a81548160ff0219169083151502179055506000612ac1601154612ab3601054600f546127b990919063ffffffff16565b6127b990919063ffffffff16565b90506000612b016002612af384612ae5600f546022546132ed90919063ffffffff16565b61330390919063ffffffff16565b61330390919063ffffffff16565b90506000612b1a8260225461331990919063ffffffff16565b90506009600a612b2a9190614550565b6305f5e100612b39919061459b565b601b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600267ffffffffffffffff811115612bf857612bf7613d25565b5b604051908082528060200260200182016040528015612c265781602001602082028036833780820191505090505b5090503081600081518110612c3e57612c3d61430a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0991906148b8565b81600181518110612d1d57612d1c61430a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612dc09594939291906149de565b600060405180830381600087803b158015612dda57600080fd5b505af1158015612dee573d6000803e3d6000fd5b505050506000612e07824761331990919063ffffffff16565b90506000612e33612e246002600f5461330390919063ffffffff16565b8861331990919063ffffffff16565b90506000612e716002612e6384612e55600f54886132ed90919063ffffffff16565b61330390919063ffffffff16565b61330390919063ffffffff16565b90506000871115612f8557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308a600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612f0596959493929190614a38565b60606040518083038185885af1158015612f23573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f489190614aae565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068188604051612f7c929190614b01565b60405180910390a15b6000612fae83612fa0601154876132ed90919063ffffffff16565b61330390919063ffffffff16565b90506000811115613210576000600267ffffffffffffffff811115612fd657612fd5613d25565b5b6040519080825280602002602001820160405280156130045781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613074573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309891906148b8565b816000815181106130ac576130ab61430a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061311d5761311c61430a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de9583600084600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016131dc9493929190614b2a565b6000604051808303818588803b1580156131f557600080fd5b505af1158015613209573d6000803e3d6000fd5b5050505050505b60006132398461322b601054886132ed90919063ffffffff16565b61330390919063ffffffff16565b905060008111156132ae57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156132ac573d6000803e3d6000fd5b505b6000600f8190555060006010819055506000601181905550505050505050505050506000602360016101000a81548160ff021916908315150217905550565b600081836132fb919061459b565b905092915050565b600081836133119190614ba5565b905092915050565b600081836133279190614bd6565b905092915050565b61338181601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b990919063ffffffff16565b601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134219190613b36565b60405180910390a35050565b613456601554613448600754846132ed90919063ffffffff16565b61330390919063ffffffff16565b600f6000828254613467919061484d565b92505081905550613497601554613489600854846132ed90919063ffffffff16565b61330390919063ffffffff16565b601060008282546134a8919061484d565b925050819055506134d86015546134ca600954846132ed90919063ffffffff16565b61330390919063ffffffff16565b601160008282546134e9919061484d565b9250508190555061351960155461350b600a54846132ed90919063ffffffff16565b61330390919063ffffffff16565b6012600082825461352a919061484d565b9250508190555050565b61355d60155461354f600b54846132ed90919063ffffffff16565b61330390919063ffffffff16565b600f600082825461356e919061484d565b9250508190555061359e601554613590600c54846132ed90919063ffffffff16565b61330390919063ffffffff16565b601060008282546135af919061484d565b925050819055506135df6015546135d1600d54846132ed90919063ffffffff16565b61330390919063ffffffff16565b601160008282546135f0919061484d565b92505081905550613620601554613612600e54846132ed90919063ffffffff16565b61330390919063ffffffff16565b60126000828254613631919061484d565b9250508190555050565b6001602360016101000a81548160ff021916908315150217905550600060125490506009600a61366b9190614550565b6305f5e10061367a919061459b565b601b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600267ffffffffffffffff81111561373957613738613d25565b5b6040519080825280602002602001820160405280156137675781602001602082028036833780820191505090505b509050308160008151811061377f5761377e61430a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613826573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061384a91906148b8565b8160018151811061385e5761385d61430a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016139019594939291906149de565b600060405180830381600087803b15801561391b57600080fd5b505af115801561392f573d6000803e3d6000fd5b505050506000613948824761331990919063ffffffff16565b9050600060056020805490501015613a1b576020805490508261396b9190614ba5565b905060005b602080549050811015613a1557602081815481106139915761399061430a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613a01573d6000803e3d6000fd5b508080613a0d906143d4565b915050613970565b50613af3565b600582613a289190614ba5565b905060006001602080549050613a3e9190614bd6565b90505b6005602080549050613a539190614bd6565b8110613af15760208181548110613a6d57613a6c61430a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613add573d6000803e3d6000fd5b508080613ae990614c0a565b915050613a41565b505b600060128190555050505050506000602360016101000a81548160ff021916908315150217905550565b6000819050919050565b613b3081613b1d565b82525050565b6000602082019050613b4b6000830184613b27565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b8b578082015181840152602081019050613b70565b83811115613b9a576000848401525b50505050565b6000601f19601f8301169050919050565b6000613bbc82613b51565b613bc68185613b5c565b9350613bd6818560208601613b6d565b613bdf81613ba0565b840191505092915050565b60006020820190508181036000830152613c048184613bb1565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c4b82613c20565b9050919050565b613c5b81613c40565b8114613c6657600080fd5b50565b600081359050613c7881613c52565b92915050565b613c8781613b1d565b8114613c9257600080fd5b50565b600081359050613ca481613c7e565b92915050565b60008060408385031215613cc157613cc0613c16565b5b6000613ccf85828601613c69565b9250506020613ce085828601613c95565b9150509250929050565b60008115159050919050565b613cff81613cea565b82525050565b6000602082019050613d1a6000830184613cf6565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d5d82613ba0565b810181811067ffffffffffffffff82111715613d7c57613d7b613d25565b5b80604052505050565b6000613d8f613c0c565b9050613d9b8282613d54565b919050565b600067ffffffffffffffff821115613dbb57613dba613d25565b5b602082029050602081019050919050565b600080fd5b6000613de4613ddf84613da0565b613d85565b90508083825260208201905060208402830185811115613e0757613e06613dcc565b5b835b81811015613e305780613e1c8882613c69565b845260208401935050602081019050613e09565b5050509392505050565b600082601f830112613e4f57613e4e613d20565b5b8135613e5f848260208601613dd1565b91505092915050565b613e7181613cea565b8114613e7c57600080fd5b50565b600081359050613e8e81613e68565b92915050565b60008060408385031215613eab57613eaa613c16565b5b600083013567ffffffffffffffff811115613ec957613ec8613c1b565b5b613ed585828601613e3a565b9250506020613ee685828601613e7f565b9150509250929050565b613ef981613c40565b82525050565b6000602082019050613f146000830184613ef0565b92915050565b600080600060608486031215613f3357613f32613c16565b5b6000613f4186828701613c69565b9350506020613f5286828701613c69565b9250506040613f6386828701613c95565b9150509250925092565b600060208284031215613f8357613f82613c16565b5b6000613f9184828501613c95565b91505092915050565b600060208284031215613fb057613faf613c16565b5b6000613fbe84828501613c69565b91505092915050565b600060ff82169050919050565b613fdd81613fc7565b82525050565b6000602082019050613ff86000830184613fd4565b92915050565b600080600080600060a0868803121561401a57614019613c16565b5b600061402888828901613c95565b955050602061403988828901613c95565b945050604061404a88828901613c95565b935050606061405b88828901613c95565b925050608061406c88828901613c95565b9150509295509295909350565b600080604083850312156140905761408f613c16565b5b600061409e85828601613c69565b92505060206140af85828601613e7f565b9150509250929050565b6000602082840312156140cf576140ce613c16565b5b60006140dd84828501613e7f565b91505092915050565b6000806000606084860312156140ff576140fe613c16565b5b600061410d86828701613c69565b935050602061411e86828701613c69565b925050604061412f86828701613c69565b9150509250925092565b600080604083850312156141505761414f613c16565b5b600061415e85828601613c69565b925050602061416f85828601613c69565b9150509250929050565b600080604083850312156141905761418f613c16565b5b600061419e85828601613e7f565b92505060206141af85828601613c95565b9150509250929050565b60006141c482613c20565b9050919050565b6141d4816141b9565b81146141df57600080fd5b50565b6000813590506141f1816141cb565b92915050565b60006020828403121561420d5761420c613c16565b5b600061421b848285016141e2565b91505092915050565b6000819050919050565b600061424961424461423f84613c20565b614224565b613c20565b9050919050565b600061425b8261422e565b9050919050565b600061426d82614250565b9050919050565b61427d81614262565b82525050565b60006020820190506142986000830184614274565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006142d4600683613b5c565b91506142df8261429e565b602082019050919050565b60006020820190508181036000830152614303816142c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f63616e6e6f7420626c61636b6c69737420446578000000000000000000000000600082015250565b600061436f601483613b5c565b915061437a82614339565b602082019050919050565b6000602082019050818103600083015261439e81614362565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006143df82613b1d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614412576144116143a5565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115614474578086048111156144505761444f6143a5565b5b600185161561445f5780820291505b808102905061446d8561441d565b9450614434565b94509492505050565b60008261448d5760019050614549565b8161449b5760009050614549565b81600181146144b157600281146144bb576144ea565b6001915050614549565b60ff8411156144cd576144cc6143a5565b5b8360020a9150848211156144e4576144e36143a5565b5b50614549565b5060208310610133831016604e8410600b841016171561451f5782820a90508381111561451a576145196143a5565b5b614549565b61452c848484600161442a565b92509050818404811115614543576145426143a5565b5b81810290505b9392505050565b600061455b82613b1d565b915061456683613fc7565b92506145937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461447d565b905092915050565b60006145a682613b1d565b91506145b183613b1d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145ea576145e96143a5565b5b828202905092915050565b7f616c726561647920656e61626c65640000000000000000000000000000000000600082015250565b600061462b600f83613b5c565b9150614636826145f5565b602082019050919050565b6000602082019050818103600083015261465a8161461e565b9050919050565b600061466c82614250565b9050919050565b61467c81614661565b82525050565b60006020820190506146976000830184614673565b92915050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b60006146d3600c83613b5c565b91506146de8261469d565b602082019050919050565b60006020820190508181036000830152614702816146c6565b9050919050565b7f4d6178206c696d69742065786365656473000000000000000000000000000000600082015250565b600061473f601183613b5c565b915061474a82614709565b602082019050919050565b6000602082019050818103600083015261476e81614732565b9050919050565b7f2074726164696e672069732064697361626c6500000000000000000000000000600082015250565b60006147ab601383613b5c565b91506147b682614775565b602082019050919050565b600060208201905081810360008301526147da8161479e565b9050919050565b7f4d61782057616c6c6574206c696d697420657863656564730000000000000000600082015250565b6000614817601883613b5c565b9150614822826147e1565b602082019050919050565b600060208201905081810360008301526148468161480a565b9050919050565b600061485882613b1d565b915061486383613b1d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614898576148976143a5565b5b828201905092915050565b6000815190506148b281613c52565b92915050565b6000602082840312156148ce576148cd613c16565b5b60006148dc848285016148a3565b91505092915050565b6000819050919050565b600061490a614905614900846148e5565b614224565b613b1d565b9050919050565b61491a816148ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61495581613c40565b82525050565b6000614967838361494c565b60208301905092915050565b6000602082019050919050565b600061498b82614920565b614995818561492b565b93506149a08361493c565b8060005b838110156149d15781516149b8888261495b565b97506149c383614973565b9250506001810190506149a4565b5085935050505092915050565b600060a0820190506149f36000830188613b27565b614a006020830187614911565b8181036040830152614a128186614980565b9050614a216060830185613ef0565b614a2e6080830184613b27565b9695505050505050565b600060c082019050614a4d6000830189613ef0565b614a5a6020830188613b27565b614a676040830187614911565b614a746060830186614911565b614a816080830185613ef0565b614a8e60a0830184613b27565b979650505050505050565b600081519050614aa881613c7e565b92915050565b600080600060608486031215614ac757614ac6613c16565b5b6000614ad586828701614a99565b9350506020614ae686828701614a99565b9250506040614af786828701614a99565b9150509250925092565b6000604082019050614b166000830185613b27565b614b236020830184613b27565b9392505050565b6000608082019050614b3f6000830187614911565b8181036020830152614b518186614980565b9050614b606040830185613ef0565b614b6d6060830184613b27565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614bb082613b1d565b9150614bbb83613b1d565b925082614bcb57614bca614b76565b5b828204905092915050565b6000614be182613b1d565b9150614bec83613b1d565b925082821015614bff57614bfe6143a5565b5b828203905092915050565b6000614c1582613b1d565b91506000821415614c2957614c286143a5565b5b60018203905091905056fea2646970667358221220b65d10a649e39593b92d32a32dee587f531e8cc471c6fa09f4c1c2e69432675364736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102975760003560e01c806382db44881161015a578063d7c01032116100c1578063ebfef14d1161007a578063ebfef14d14610a4d578063ec44acf214610a64578063f2aa821814610a8f578063f2fde38b14610acc578063f887ea4014610af5578063fc899bdc14610b205761029e565b8063d7c010321461093f578063d91f852e14610968578063d962cf5814610993578063dd62ed3e146109bc578063df20fd49146109f9578063e96fada214610a225761029e565b8063a9059cbb11610113578063a9059cbb1461082d578063aa4bde281461086a578063bf56b37114610895578063c1cf53c4146108c0578063ca33e64c146108e9578063cf46f24c146109145761029e565b806382db44881461072f57806386cb8fb1146107585780638a8c523c1461079557806395d89b41146107ac5780639d9241ec146107d7578063a8aa1b31146108025761029e565b80633f4218e0116101fe578063658d4b7f116101b7578063658d4b7f1461061f5780636ddd17131461064857806370a082311461067357806374010ece146106b057806375cd44f5146106d95780637d99c66d146107045761029e565b80633f4218e0146104eb57806347a28b79146105285780634b52f89b14610551578063540b8a271461057a578063571ac8b0146105b757806359b107b9146105f45761029e565b80632091f955116102505780632091f955146103b557806323b872dd146103e057806327a14fc21461041d5780632f54bf6e14610446578063313ce567146104835780633bbac579146104ae5761029e565b80630445b667146102a357806306fdde03146102ce578063095ea7b3146102f957806310a60f0214610336578063180b0d7e1461035f57806318160ddd1461038a5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610b49565b6040516102c59190613b36565b60405180910390f35b3480156102da57600080fd5b506102e3610b4f565b6040516102f09190613bea565b60405180910390f35b34801561030557600080fd5b50610320600480360381019061031b9190613caa565b610b8c565b60405161032d9190613d05565b60405180910390f35b34801561034257600080fd5b5061035d60048036038101906103589190613e94565b610c7e565b005b34801561036b57600080fd5b50610374610e7a565b6040516103819190613b36565b60405180910390f35b34801561039657600080fd5b5061039f610e80565b6040516103ac9190613b36565b60405180910390f35b3480156103c157600080fd5b506103ca610ea4565b6040516103d79190613eff565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190613f1a565b610eca565b6040516104149190613d05565b60405180910390f35b34801561042957600080fd5b50610444600480360381019061043f9190613f6d565b6110c6565b005b34801561045257600080fd5b5061046d60048036038101906104689190613f9a565b611118565b60405161047a9190613d05565b60405180910390f35b34801561048f57600080fd5b50610498611171565b6040516104a59190613fe3565b60405180910390f35b3480156104ba57600080fd5b506104d560048036038101906104d09190613f9a565b61117a565b6040516104e29190613d05565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d9190613f9a565b61119a565b60405161051f9190613d05565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190613ffe565b6111ba565b005b34801561055d57600080fd5b5061057860048036038101906105739190613f9a565b611269565b005b34801561058657600080fd5b506105a1600480360381019061059c9190613f9a565b6112f5565b6040516105ae9190613d05565b60405180910390f35b3480156105c357600080fd5b506105de60048036038101906105d99190613f9a565b611315565b6040516105eb9190613d05565b60405180910390f35b34801561060057600080fd5b50610609611344565b6040516106169190613b36565b60405180910390f35b34801561062b57600080fd5b5061064660048036038101906106419190614079565b61134a565b005b34801561065457600080fd5b5061065d6113ed565b60405161066a9190613d05565b60405180910390f35b34801561067f57600080fd5b5061069a60048036038101906106959190613f9a565b611400565b6040516106a79190613b36565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d29190613f6d565b611449565b005b3480156106e557600080fd5b506106ee61149b565b6040516106fb9190613eff565b60405180910390f35b34801561071057600080fd5b506107196114c1565b6040516107269190613b36565b60405180910390f35b34801561073b57600080fd5b50610756600480360381019061075191906140b9565b6114c7565b005b34801561076457600080fd5b5061077f600480360381019061077a9190613f9a565b61152c565b60405161078c9190613d05565b60405180910390f35b3480156107a157600080fd5b506107aa61154c565b005b3480156107b857600080fd5b506107c161163e565b6040516107ce9190613bea565b60405180910390f35b3480156107e357600080fd5b506107ec61167b565b6040516107f99190613b36565b60405180910390f35b34801561080e57600080fd5b50610817611681565b6040516108249190613eff565b60405180910390f35b34801561083957600080fd5b50610854600480360381019061084f9190613caa565b6116a7565b6040516108619190613d05565b60405180910390f35b34801561087657600080fd5b5061087f6116bc565b60405161088c9190613b36565b60405180910390f35b3480156108a157600080fd5b506108aa6116c2565b6040516108b79190613b36565b60405180910390f35b3480156108cc57600080fd5b506108e760048036038101906108e29190613ffe565b6116c8565b005b3480156108f557600080fd5b506108fe611777565b60405161090b9190613eff565b60405180910390f35b34801561092057600080fd5b5061092961179d565b6040516109369190613b36565b60405180910390f35b34801561094b57600080fd5b50610966600480360381019061096191906140e6565b6117a3565b005b34801561097457600080fd5b5061097d6118b3565b60405161098a9190613d05565b60405180910390f35b34801561099f57600080fd5b506109ba60048036038101906109b59190614079565b6118c6565b005b3480156109c857600080fd5b506109e360048036038101906109de9190614139565b611969565b6040516109f09190613b36565b60405180910390f35b348015610a0557600080fd5b50610a206004803603810190610a1b9190614179565b6119f0565b005b348015610a2e57600080fd5b50610a37611a5d565b604051610a449190613eff565b60405180910390f35b348015610a5957600080fd5b50610a62611a83565b005b348015610a7057600080fd5b50610a79611b34565b604051610a869190613d05565b60405180910390f35b348015610a9b57600080fd5b50610ab66004803603810190610ab19190613f6d565b611b47565b604051610ac39190613eff565b60405180910390f35b348015610ad857600080fd5b50610af36004803603810190610aee91906141f7565b611b86565b005b348015610b0157600080fd5b50610b0a611c48565b604051610b179190614283565b60405180910390f35b348015610b2c57600080fd5b50610b476004803603810190610b429190614079565b611c6e565b005b60225481565b60606040518060400160405280600c81526020017f4e657759656172466c6f6b690000000000000000000000000000000000000000815250905090565b600081601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c6c9190613b36565b60405180910390a36001905092915050565b610c8733611118565b610cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbd906142ea565b60405180910390fd5b60005b8251811015610e7557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838281518110610d1e57610d1d61430a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015610db25750828181518110610d5857610d5761430a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b610df1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de890614385565b60405180910390fd5b81601f6000858481518110610e0957610e0861430a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e6d906143d4565b915050610cc9565b505050565b60155481565b60006009600a610e909190614550565b6305f5e100610e9f919061459b565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006009600a610eda9190614550565b6305f5e100610ee9919061459b565b601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146110b257611031826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d119092919063ffffffff16565b601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6110bd848484611d66565b90509392505050565b6110cf33611118565b61110e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611105906142ea565b60405180910390fd5b8060178190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b601f6020528060005260406000206000915054906101000a900460ff1681565b601c6020528060005260406000206000915054906101000a900460ff1681565b6111c333611118565b611202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f9906142ea565b60405180910390fd5b846007819055508360088190555082600a81905550816009819055506112558261124785611239888a6127b990919063ffffffff16565b6127b990919063ffffffff16565b6127b990919063ffffffff16565b601381905550806015819055505050505050565b61127233611118565b6112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a8906142ea565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d6020528060005260406000206000915054906101000a900460ff1681565b600061133d826009600a6113299190614550565b6305f5e100611338919061459b565b610b8c565b9050919050565b60135481565b61135333611118565b611392576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611389906142ea565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602160019054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61145233611118565b611491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611488906142ea565b60405180910390fd5b8060168190555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b6114d033611118565b61150f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611506906142ea565b60405180910390fd5b80602160006101000a81548160ff02191690831515021790555050565b601e6020528060005260406000206000915054906101000a900460ff1681565b61155533611118565b611594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158b906142ea565b60405180910390fd5b602360009054906101000a900460ff16156115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90614641565b60405180910390fd5b6001602360006101000a81548160ff0219169083151502179055506001602160016101000a81548160ff0219169083151502179055506001602160006101000a81548160ff02191690831515021790555042601881905550565b60606040518060400160405280600481526020017f244e594600000000000000000000000000000000000000000000000000000000815250905090565b60145481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116b4338484611d66565b905092915050565b60175481565b60185481565b6116d133611118565b611710576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611707906142ea565b60405180910390fd5b84600b8190555083600c8190555082600d8190555081600e819055506117638261175585611747888a6127b990919063ffffffff16565b6127b990919063ffffffff16565b6127b990919063ffffffff16565b601481905550806015819055505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b6117ac33611118565b6117eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e2906142ea565b60405180910390fd5b82600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b602160009054906101000a900460ff1681565b6118cf33611118565b61190e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611905906142ea565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119f933611118565b611a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2f906142ea565b60405180910390fd5b81602160016101000a81548160ff021916908315150217905550806022819055505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a8c33611118565b611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac2906142ea565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611b31573d6000803e3d6000fd5b50565b602360009054906101000a900460ff1681565b60208181548110611b5757600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b8f33611118565b611bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc5906142ea565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611c3d9190614682565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c7733611118565b611cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cad906142ea565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000838311158290611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d509190613bea565b60405180910390fd5b5082840390509392505050565b6000601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec906146e9565b60405180910390fd5b601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e995750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611fe457601654821115611ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eda90614755565b60405180910390fd5b602360009054906101000a900460ff16611fe3578373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015611fa357508273ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b611fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd9906147c1565b60405180910390fd5b5b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612094576017546120538361204586611400565b6127b990919063ffffffff16565b10612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a9061482d565b60405180910390fd5b5b602360019054906101000a900460ff16156120bb576120b48484846127cf565b90506127b2565b6120c36129a2565b156120d1576120d0612a79565b5b6019546018546120e1919061484d565b4210801561213d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156122a6578373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156121f5576001601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506122a5565b8273ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156122a4576001601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b61232f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d119092919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124155750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806124c85750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156124c75750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b156124d5578290506126b2565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156125e857612556601554612548601354876132ed90919063ffffffff16565b61330390919063ffffffff16565b905061256b818561331990919063ffffffff16565b9150612577868261332f565b6125808461342d565b6020859080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506126b0565b612611601554612603601454876132ed90919063ffffffff16565b61330390919063ffffffff16565b9050612626818561331990919063ffffffff16565b9150612632868261332f565b61263b84613534565b601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126a15750602160009054906101000a900460ff165b156126af576126ae61363b565b5b5b505b61270481601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b990919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127a49190613b36565b60405180910390a360019150505b9392505050565b600081836127c7919061484d565b905092915050565b600061285a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d119092919063ffffffff16565b601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128ef82601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b990919063ffffffff16565b601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161298f9190613b36565b60405180910390a3600190509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612a0f5750602360019054906101000a900460ff16155b8015612a275750602160019054906101000a900460ff165b8015612a745750602254601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602360016101000a81548160ff0219169083151502179055506000612ac1601154612ab3601054600f546127b990919063ffffffff16565b6127b990919063ffffffff16565b90506000612b016002612af384612ae5600f546022546132ed90919063ffffffff16565b61330390919063ffffffff16565b61330390919063ffffffff16565b90506000612b1a8260225461331990919063ffffffff16565b90506009600a612b2a9190614550565b6305f5e100612b39919061459b565b601b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600267ffffffffffffffff811115612bf857612bf7613d25565b5b604051908082528060200260200182016040528015612c265781602001602082028036833780820191505090505b5090503081600081518110612c3e57612c3d61430a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0991906148b8565b81600181518110612d1d57612d1c61430a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612dc09594939291906149de565b600060405180830381600087803b158015612dda57600080fd5b505af1158015612dee573d6000803e3d6000fd5b505050506000612e07824761331990919063ffffffff16565b90506000612e33612e246002600f5461330390919063ffffffff16565b8861331990919063ffffffff16565b90506000612e716002612e6384612e55600f54886132ed90919063ffffffff16565b61330390919063ffffffff16565b61330390919063ffffffff16565b90506000871115612f8557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308a600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612f0596959493929190614a38565b60606040518083038185885af1158015612f23573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f489190614aae565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068188604051612f7c929190614b01565b60405180910390a15b6000612fae83612fa0601154876132ed90919063ffffffff16565b61330390919063ffffffff16565b90506000811115613210576000600267ffffffffffffffff811115612fd657612fd5613d25565b5b6040519080825280602002602001820160405280156130045781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613074573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309891906148b8565b816000815181106130ac576130ab61430a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061311d5761311c61430a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de9583600084600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016131dc9493929190614b2a565b6000604051808303818588803b1580156131f557600080fd5b505af1158015613209573d6000803e3d6000fd5b5050505050505b60006132398461322b601054886132ed90919063ffffffff16565b61330390919063ffffffff16565b905060008111156132ae57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156132ac573d6000803e3d6000fd5b505b6000600f8190555060006010819055506000601181905550505050505050505050506000602360016101000a81548160ff021916908315150217905550565b600081836132fb919061459b565b905092915050565b600081836133119190614ba5565b905092915050565b600081836133279190614bd6565b905092915050565b61338181601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127b990919063ffffffff16565b601a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134219190613b36565b60405180910390a35050565b613456601554613448600754846132ed90919063ffffffff16565b61330390919063ffffffff16565b600f6000828254613467919061484d565b92505081905550613497601554613489600854846132ed90919063ffffffff16565b61330390919063ffffffff16565b601060008282546134a8919061484d565b925050819055506134d86015546134ca600954846132ed90919063ffffffff16565b61330390919063ffffffff16565b601160008282546134e9919061484d565b9250508190555061351960155461350b600a54846132ed90919063ffffffff16565b61330390919063ffffffff16565b6012600082825461352a919061484d565b9250508190555050565b61355d60155461354f600b54846132ed90919063ffffffff16565b61330390919063ffffffff16565b600f600082825461356e919061484d565b9250508190555061359e601554613590600c54846132ed90919063ffffffff16565b61330390919063ffffffff16565b601060008282546135af919061484d565b925050819055506135df6015546135d1600d54846132ed90919063ffffffff16565b61330390919063ffffffff16565b601160008282546135f0919061484d565b92505081905550613620601554613612600e54846132ed90919063ffffffff16565b61330390919063ffffffff16565b60126000828254613631919061484d565b9250508190555050565b6001602360016101000a81548160ff021916908315150217905550600060125490506009600a61366b9190614550565b6305f5e10061367a919061459b565b601b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600267ffffffffffffffff81111561373957613738613d25565b5b6040519080825280602002602001820160405280156137675781602001602082028036833780820191505090505b509050308160008151811061377f5761377e61430a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613826573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061384a91906148b8565b8160018151811061385e5761385d61430a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016139019594939291906149de565b600060405180830381600087803b15801561391b57600080fd5b505af115801561392f573d6000803e3d6000fd5b505050506000613948824761331990919063ffffffff16565b9050600060056020805490501015613a1b576020805490508261396b9190614ba5565b905060005b602080549050811015613a1557602081815481106139915761399061430a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613a01573d6000803e3d6000fd5b508080613a0d906143d4565b915050613970565b50613af3565b600582613a289190614ba5565b905060006001602080549050613a3e9190614bd6565b90505b6005602080549050613a539190614bd6565b8110613af15760208181548110613a6d57613a6c61430a565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613add573d6000803e3d6000fd5b508080613ae990614c0a565b915050613a41565b505b600060128190555050505050506000602360016101000a81548160ff021916908315150217905550565b6000819050919050565b613b3081613b1d565b82525050565b6000602082019050613b4b6000830184613b27565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b8b578082015181840152602081019050613b70565b83811115613b9a576000848401525b50505050565b6000601f19601f8301169050919050565b6000613bbc82613b51565b613bc68185613b5c565b9350613bd6818560208601613b6d565b613bdf81613ba0565b840191505092915050565b60006020820190508181036000830152613c048184613bb1565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c4b82613c20565b9050919050565b613c5b81613c40565b8114613c6657600080fd5b50565b600081359050613c7881613c52565b92915050565b613c8781613b1d565b8114613c9257600080fd5b50565b600081359050613ca481613c7e565b92915050565b60008060408385031215613cc157613cc0613c16565b5b6000613ccf85828601613c69565b9250506020613ce085828601613c95565b9150509250929050565b60008115159050919050565b613cff81613cea565b82525050565b6000602082019050613d1a6000830184613cf6565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d5d82613ba0565b810181811067ffffffffffffffff82111715613d7c57613d7b613d25565b5b80604052505050565b6000613d8f613c0c565b9050613d9b8282613d54565b919050565b600067ffffffffffffffff821115613dbb57613dba613d25565b5b602082029050602081019050919050565b600080fd5b6000613de4613ddf84613da0565b613d85565b90508083825260208201905060208402830185811115613e0757613e06613dcc565b5b835b81811015613e305780613e1c8882613c69565b845260208401935050602081019050613e09565b5050509392505050565b600082601f830112613e4f57613e4e613d20565b5b8135613e5f848260208601613dd1565b91505092915050565b613e7181613cea565b8114613e7c57600080fd5b50565b600081359050613e8e81613e68565b92915050565b60008060408385031215613eab57613eaa613c16565b5b600083013567ffffffffffffffff811115613ec957613ec8613c1b565b5b613ed585828601613e3a565b9250506020613ee685828601613e7f565b9150509250929050565b613ef981613c40565b82525050565b6000602082019050613f146000830184613ef0565b92915050565b600080600060608486031215613f3357613f32613c16565b5b6000613f4186828701613c69565b9350506020613f5286828701613c69565b9250506040613f6386828701613c95565b9150509250925092565b600060208284031215613f8357613f82613c16565b5b6000613f9184828501613c95565b91505092915050565b600060208284031215613fb057613faf613c16565b5b6000613fbe84828501613c69565b91505092915050565b600060ff82169050919050565b613fdd81613fc7565b82525050565b6000602082019050613ff86000830184613fd4565b92915050565b600080600080600060a0868803121561401a57614019613c16565b5b600061402888828901613c95565b955050602061403988828901613c95565b945050604061404a88828901613c95565b935050606061405b88828901613c95565b925050608061406c88828901613c95565b9150509295509295909350565b600080604083850312156140905761408f613c16565b5b600061409e85828601613c69565b92505060206140af85828601613e7f565b9150509250929050565b6000602082840312156140cf576140ce613c16565b5b60006140dd84828501613e7f565b91505092915050565b6000806000606084860312156140ff576140fe613c16565b5b600061410d86828701613c69565b935050602061411e86828701613c69565b925050604061412f86828701613c69565b9150509250925092565b600080604083850312156141505761414f613c16565b5b600061415e85828601613c69565b925050602061416f85828601613c69565b9150509250929050565b600080604083850312156141905761418f613c16565b5b600061419e85828601613e7f565b92505060206141af85828601613c95565b9150509250929050565b60006141c482613c20565b9050919050565b6141d4816141b9565b81146141df57600080fd5b50565b6000813590506141f1816141cb565b92915050565b60006020828403121561420d5761420c613c16565b5b600061421b848285016141e2565b91505092915050565b6000819050919050565b600061424961424461423f84613c20565b614224565b613c20565b9050919050565b600061425b8261422e565b9050919050565b600061426d82614250565b9050919050565b61427d81614262565b82525050565b60006020820190506142986000830184614274565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006142d4600683613b5c565b91506142df8261429e565b602082019050919050565b60006020820190508181036000830152614303816142c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f63616e6e6f7420626c61636b6c69737420446578000000000000000000000000600082015250565b600061436f601483613b5c565b915061437a82614339565b602082019050919050565b6000602082019050818103600083015261439e81614362565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006143df82613b1d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614412576144116143a5565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115614474578086048111156144505761444f6143a5565b5b600185161561445f5780820291505b808102905061446d8561441d565b9450614434565b94509492505050565b60008261448d5760019050614549565b8161449b5760009050614549565b81600181146144b157600281146144bb576144ea565b6001915050614549565b60ff8411156144cd576144cc6143a5565b5b8360020a9150848211156144e4576144e36143a5565b5b50614549565b5060208310610133831016604e8410600b841016171561451f5782820a90508381111561451a576145196143a5565b5b614549565b61452c848484600161442a565b92509050818404811115614543576145426143a5565b5b81810290505b9392505050565b600061455b82613b1d565b915061456683613fc7565b92506145937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461447d565b905092915050565b60006145a682613b1d565b91506145b183613b1d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145ea576145e96143a5565b5b828202905092915050565b7f616c726561647920656e61626c65640000000000000000000000000000000000600082015250565b600061462b600f83613b5c565b9150614636826145f5565b602082019050919050565b6000602082019050818103600083015261465a8161461e565b9050919050565b600061466c82614250565b9050919050565b61467c81614661565b82525050565b60006020820190506146976000830184614673565b92915050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b60006146d3600c83613b5c565b91506146de8261469d565b602082019050919050565b60006020820190508181036000830152614702816146c6565b9050919050565b7f4d6178206c696d69742065786365656473000000000000000000000000000000600082015250565b600061473f601183613b5c565b915061474a82614709565b602082019050919050565b6000602082019050818103600083015261476e81614732565b9050919050565b7f2074726164696e672069732064697361626c6500000000000000000000000000600082015250565b60006147ab601383613b5c565b91506147b682614775565b602082019050919050565b600060208201905081810360008301526147da8161479e565b9050919050565b7f4d61782057616c6c6574206c696d697420657863656564730000000000000000600082015250565b6000614817601883613b5c565b9150614822826147e1565b602082019050919050565b600060208201905081810360008301526148468161480a565b9050919050565b600061485882613b1d565b915061486383613b1d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614898576148976143a5565b5b828201905092915050565b6000815190506148b281613c52565b92915050565b6000602082840312156148ce576148cd613c16565b5b60006148dc848285016148a3565b91505092915050565b6000819050919050565b600061490a614905614900846148e5565b614224565b613b1d565b9050919050565b61491a816148ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61495581613c40565b82525050565b6000614967838361494c565b60208301905092915050565b6000602082019050919050565b600061498b82614920565b614995818561492b565b93506149a08361493c565b8060005b838110156149d15781516149b8888261495b565b97506149c383614973565b9250506001810190506149a4565b5085935050505092915050565b600060a0820190506149f36000830188613b27565b614a006020830187614911565b8181036040830152614a128186614980565b9050614a216060830185613ef0565b614a2e6080830184613b27565b9695505050505050565b600060c082019050614a4d6000830189613ef0565b614a5a6020830188613b27565b614a676040830187614911565b614a746060830186614911565b614a816080830185613ef0565b614a8e60a0830184613b27565b979650505050505050565b600081519050614aa881613c7e565b92915050565b600080600060608486031215614ac757614ac6613c16565b5b6000614ad586828701614a99565b9350506020614ae686828701614a99565b9250506040614af786828701614a99565b9150509250925092565b6000604082019050614b166000830185613b27565b614b236020830184613b27565b9392505050565b6000608082019050614b3f6000830187614911565b8181036020830152614b518186614980565b9050614b606040830185613ef0565b614b6d6060830184613b27565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614bb082613b1d565b9150614bbb83613b1d565b925082614bcb57614bca614b76565b5b828204905092915050565b6000614be182613b1d565b9150614bec83613b1d565b925082821015614bff57614bfe6143a5565b5b828203905092915050565b6000614c1582613b1d565b91506000821415614c2957614c286143a5565b5b60018203905091905056fea2646970667358221220b65d10a649e39593b92d32a32dee587f531e8cc471c6fa09f4c1c2e69432675364736f6c634300080a0033

Deployed Bytecode Sourcemap

5628:15769:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7470:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9252:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9677:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20839:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6800:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8934:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6041:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10259:424;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18851:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5356:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9044:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7331:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7178:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19308:528;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20729:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7228:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9933:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6724:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18232:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7440:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9354:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18741:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6277:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7004:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19199:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7279:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18967:224;;;;;;;;;;;;;:::i;:::-;;9146:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6761:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6166:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10058:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6906:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6972:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19844:534;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6192:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6844:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20386:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7407:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18359:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9481:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21216:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6235:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18621:112;;;;;;;;;;;;;:::i;:::-;;7528:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7375:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5467:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6135:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18489:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7470:51;;;;:::o;9252:94::-;9300:13;9333:5;;;;;;;;;;;;;;;;;9326:12;;9252:94;:::o;9677:248::-;9779:4;9836:6;9801:11;:23;9813:10;9801:23;;;;;;;;;;;;;;;:32;9825:7;9801:32;;;;;;;;;;;;;;;:41;;;;9879:7;9858:37;;9867:10;9858:37;;;9888:6;9858:37;;;;;;:::i;:::-;;;;;;;;9913:4;9906:11;;9677:248;;;;:::o;20839:369::-;5298:19;5306:10;5298:7;:19::i;:::-;5290:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20961:9:::1;20956:245;20976:8;:15;20972:1;:19;20956:245;;;21062:6;;;;;;;;;;;21039:30;;:8;21048:1;21039:11;;;;;;;;:::i;:::-;;;;;;;;:30;;;;:53;;;;;21081:8;21090:1;21081:11;;;;;;;;:::i;:::-;;;;;;;;21073:19;;:4;;;;;;;;;;;:19;;;;21039:53;21013:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;21184:5;21163;:18;21169:8;21178:1;21169:11;;;;;;;;:::i;:::-;;;;;;;;21163:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;20993:3;;;;;:::i;:::-;;;;20956:245;;;;20839:369:::0;;:::o;6800:35::-;;;;:::o;8934:102::-;8989:7;5854:1;5916:2;:13;;;;:::i;:::-;5902:11;:27;;;;:::i;:::-;9009:19;;8934:102;:::o;6041:87::-;;;;;;;;;;;;;:::o;10259:424::-;10393:4;5854:1;5916:2;:13;;;;:::i;:::-;5902:11;:27;;;;:::i;:::-;10414:11;:19;10426:6;10414:19;;;;;;;;;;;;;;;:31;10434:10;10414:31;;;;;;;;;;;;;;;;:47;10410:201;;10512:87;10566:6;10512:87;;;;;;;;;;;;;;;;;:11;:19;10524:6;10512:19;;;;;;;;;;;;;;;:31;10532:10;10512:31;;;;;;;;;;;;;;;;:53;;:87;;;;;:::i;:::-;10478:11;:19;10490:6;10478:19;;;;;;;;;;;;;;;:31;10498:10;10478:31;;;;;;;;;;;;;;;:121;;;;10410:201;10630:45;10649:6;10657:9;10668:6;10630:18;:45::i;:::-;10623:52;;10259:424;;;;;:::o;18851:108::-;5298:19;5306:10;5298:7;:19::i;:::-;5290:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18944:7:::1;18926:15;:25;;;;18851:108:::0;:::o;5356:103::-;5411:4;5446:5;;;;;;;;;;;5435:16;;:7;:16;;;5428:23;;5356:103;;;:::o;9044:94::-;9096:5;5854:1;9114:16;;9044:94;:::o;7331:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;7178:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;19308:528::-;5298:19;5306:10;5298:7;:19::i;:::-;5290:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19539:13:::1;19520:16;:32;;;;19582:13;19563:16;:32;;;;19624:9;19606:15;:27;;;;19659:12;19644;:27;;;;19696:89;19762:12;19696:47;19733:9;19696:32;19714:13;19696;:17;;:32;;;;:::i;:::-;:36;;:47;;;;:::i;:::-;:51;;:89;;;;:::i;:::-;19682:11;:103;;;;19813:15;19796:14;:32;;;;19308:528:::0;;;;;:::o;20729:102::-;5298:19;5306:10;5298:7;:19::i;:::-;5290:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20813:10:::1;20801:9;;:22;;;;;;;;;;;;;;;;;;20729:102:::0;:::o;7228:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;9933:117::-;9988:4;10012:30;10020:7;5854:1;5916:2;:13;;;;:::i;:::-;5902:11;:27;;;;:::i;:::-;10012:7;:30::i;:::-;10005:37;;9933:117;;;:::o;6724:30::-;;;;:::o;18232:119::-;5298:19;5306:10;5298:7;:19::i;:::-;5290:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18337:6:::1;18315:11;:19;18327:6;18315:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18232:119:::0;;:::o;7440:23::-;;;;;;;;;;;;;:::o;9354:119::-;9420:7;9447:9;:18;9457:7;9447:18;;;;;;;;;;;;;;;;9440:25;;9354:119;;;:::o;18741:102::-;5298:19;5306:10;5298:7;:19::i;:::-;5290:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18828:7:::1;18813:12;:22;;;;18741:102:::0;:::o;6277:31::-;;;;;;;;;;;;;:::o;7004:39::-;;;;:::o;19199:101::-;5298:19;5306:10;5298:7;:19::i;:::-;5290:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19286:6:::1;19269:14;;:23;;;;;;;;;;;;;;;;;;19199:101:::0;:::o;7279:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;18967:224::-;5298:19;5306:10;5298:7;:19::i;:::-;5290:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19031:7:::1;;;;;;;;;;;19030:8;19022:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;19079:4;19069:7;;:14;;;;;;;;;;;;;;;;;;19108:4;19094:11;;:18;;;;;;;;;;;;;;;;;;19140:4;19123:14;;:21;;;;;;;;;;;;;;;;;;19168:15;19155:10;:28;;;;18967:224::o:0;9146:98::-;9196:13;9229:7;;;;;;;;;;;;;;;;;9222:14;;9146:98;:::o;6761:32::-;;;;:::o;6166:19::-;;;;;;;;;;;;;:::o;10058:193::-;10165:4;10194:49;10213:10;10225:9;10236:6;10194:18;:49::i;:::-;10187:56;;10058:193;;;;:::o;6906:59::-;;;;:::o;6972:25::-;;;;:::o;19844:534::-;5298:19;5306:10;5298:7;:19::i;:::-;5290:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20077:13:::1;20057:17;:33;;;;20121:13;20101:17;:33;;;;20161:9;20145:13;:25;;;;20200:12;20181:16;:31;;;;20238:89;20304:12;20238:47;20275:9;20238:32;20256:13;20238;:17;;:32;;;;:::i;:::-;:36;;:47;;;;:::i;:::-;:51;;:89;;;;:::i;:::-;20223:12;:104;;;;20355:15;20338:14;:32;;;;19844:534:::0;;;;;:::o;6192:36::-;;;;;;;;;;;;;:::o;6844:55::-;;;;:::o;20386:335::-;5298:19;5306:10;5298:7;:19::i;:::-;5290:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20589:22:::1;20565:21;;:46;;;;;;;;;;;;;;;;;;20645:21;20622:20;;:44;;;;;;;;;;;;;;;;;;20696:17;20677:16;;:36;;;;;;;;;;;;;;;;;;20386:335:::0;;;:::o;7407:26::-;;;;;;;;;;;;;:::o;18359:122::-;5298:19;5306:10;5298:7;:19::i;:::-;5290:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18467:6:::1;18444:12;:20;18457:6;18444:20;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18359:122:::0;;:::o;9481:188::-;9601:7;9633:11;:19;9645:6;9633:19;;;;;;;;;;;;;;;:28;9653:7;9633:28;;;;;;;;;;;;;;;;9626:35;;9481:188;;;;:::o;21216:178::-;5298:19;5306:10;5298:7;:19::i;:::-;5290:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;21344:8:::1;21330:11;;:22;;;;;;;;;;;;;;;;;;21379:7;21363:13;:23;;;;21216:178:::0;;:::o;6235:35::-;;;;;;;;;;;;;:::o;18621:112::-;5298:19;5306:10;5298:7;:19::i;:::-;5290:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18687:5:::1;::::0;::::1;;;;;;;;18679:23;;:46;18703:21;18679:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18621:112::o:0;7528:19::-;;;;;;;;;;;;;:::o;7375:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5467:136::-;5298:19;5306:10;5298:7;:19::i;:::-;5290:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;5551:3:::1;5543:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;5570:25;5591:3;5570:25;;;;;;:::i;:::-;;;;;;;;5467:136:::0;:::o;6135:24::-;;;;;;;;;;;;;:::o;18489:124::-;5298:19;5306:10;5298:7;:19::i;:::-;5290:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18599:6:::1;18575:13;:21;18589:6;18575:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;18489:124:::0;;:::o;2218:240::-;2338:7;2396:1;2391;:6;;2399:12;2383:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2438:1;2434;:5;2427:12;;2218:240;;;;;:::o;10691:2457::-;10822:4;10848:5;:13;10854:6;10848:13;;;;;;;;;;;;;;;;;;;;;;;;;10847:14;10839:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;10894:12;:20;10907:6;10894:20;;;;;;;;;;;;;;;;;;;;;;;;;10893:21;:49;;;;;10919:12;:23;10932:9;10919:23;;;;;;;;;;;;;;;;;;;;;;;;;10918:24;10893:49;10889:325;;;10977:12;;10967:6;:22;;10959:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11031:7;;;;;;;;;;;11026:177;;11097:6;11089:14;;:4;;;;;;;;;;;:14;;;;:35;;;;;11115:9;11107:17;;:4;;;;;;;;;;;:17;;;;11089:35;11059:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;11026:177;10889:325;11231:13;:24;11245:9;11231:24;;;;;;;;;;;;;;;;;;;;;;;;;11226:194;;11333:15;;11298:32;11323:6;11298:20;11308:9;11298;:20::i;:::-;:24;;:32;;;;:::i;:::-;:50;11272:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;11226:194;11436:6;;;;;;;;;;;11432:87;;;11466:41;11481:6;11489:9;11500:6;11466:14;:41::i;:::-;11459:48;;;;11432:87;11535:16;:14;:16::i;:::-;11531:59;;;11568:10;:8;:10::i;:::-;11531:59;11651:11;;11638:10;;:24;;;;:::i;:::-;11620:15;:42;:87;;;;;11700:6;;;;;;;;;;;11679:28;;:9;:28;;;;11620:87;11602:305;;;11746:6;11738:14;;:4;;;;;;;;;;;:14;;;11734:162;;;11792:4;11773:5;:16;11779:9;11773:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11734:162;;;11830:9;11822:17;;:4;;;;;;;;;;;:17;;;11818:78;;;11876:4;11860:5;:13;11866:6;11860:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;11818:78;11734:162;11602:305;11939:90;11975:6;11939:90;;;;;;;;;;;;;;;;;:9;:17;11949:6;11939:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;11919:9;:17;11929:6;11919:17;;;;;;;;;;;;;;;:110;;;;12042:22;12093:11;:19;12105:6;12093:19;;;;;;;;;;;;;;;;;;;;;;;;;:58;;;;12129:11;:22;12141:9;12129:22;;;;;;;;;;;;;;;;;;;;;;;;;12093:58;:112;;;;12179:4;;;;;;;;;;;12169:14;;:6;:14;;;;:35;;;;;12200:4;;;;;;;;;;;12187:17;;:9;:17;;;;12169:35;12093:112;12075:907;;;12249:6;12232:23;;12075:907;;;12288:17;12334:4;;;;;;;;;;;12324:14;;:6;:14;;;12320:651;;;12371:43;12399:14;;12371:23;12382:11;;12371:6;:10;;:23;;;;:::i;:::-;:27;;:43;;;;:::i;:::-;12359:55;;12450:21;12461:9;12450:6;:10;;:21;;;;:::i;:::-;12433:38;;12490:26;12498:6;12506:9;12490:7;:26::i;:::-;12535:20;12548:6;12535:12;:20::i;:::-;12574:6;12586:9;12574:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12320:651;;;12649:44;12678:14;;12649:24;12660:12;;12649:6;:10;;:24;;;;:::i;:::-;:28;;:44;;;;:::i;:::-;12637:56;;12729:21;12740:9;12729:6;:10;;:21;;;;:::i;:::-;12712:38;;12769:26;12777:6;12785:9;12769:7;:26::i;:::-;12814:21;12828:6;12814:13;:21::i;:::-;12859:12;:20;12872:6;12859:20;;;;;;;;;;;;;;;;;;;;;;;;;12858:21;:39;;;;;12883:14;;;;;;;;;;;12858:39;12854:102;;;12922:14;:12;:14::i;:::-;12854:102;12320:651;12273:709;12075:907;13017:40;13042:14;13017:9;:20;13027:9;13017:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;12994:9;:20;13004:9;12994:20;;;;;;;;;;;;;;;:63;;;;13092:9;13075:43;;13084:6;13075:43;;;13103:14;13075:43;;;;;;:::i;:::-;;;;;;;;13136:4;13129:11;;;10691:2457;;;;;;:::o;1688:98::-;1746:7;1777:1;1773;:5;;;;:::i;:::-;1766:12;;1688:98;;;;:::o;13156:401::-;13283:4;13320:90;13356:6;13320:90;;;;;;;;;;;;;;;;;:9;:17;13330:6;13320:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;13300:9;:17;13310:6;13300:17;;;;;;;;;;;;;;;:110;;;;13444:32;13469:6;13444:9;:20;13454:9;13444:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13421:9;:20;13431:9;13421:20;;;;;;;;;;;;;;;:55;;;;13509:9;13492:35;;13501:6;13492:35;;;13520:6;13492:35;;;;;;:::i;:::-;;;;;;;;13545:4;13538:11;;13156:401;;;;;:::o;14594:222::-;14643:4;14694;;;;;;;;;;;14680:18;;:10;:18;;;;:42;;;;;14716:6;;;;;;;;;;;14715:7;14680:42;:70;;;;;14739:11;;;;;;;;;;;14680:70;:128;;;;;14795:13;;14767:9;:24;14785:4;14767:24;;;;;;;;;;;;;;;;:41;;14680:128;14660:148;;14594:222;:::o;14824:2257::-;7657:4;7648:6;;:13;;;;;;;;;;;;;;;;;;14873:16:::1;14892:86;14953:14;;14892:42;14915:18;;14892;;:22;;:42;;;;:::i;:::-;:46;;:86;;;;:::i;:::-;14873:105;;14991:23;15017:100;15115:1;15017:79;15087:8;15017:51;15049:18;;15017:13;;:31;;:51;;;;:::i;:::-;:69;;:79;;;;:::i;:::-;:97;;:100;;;;:::i;:::-;14991:126;;15130:20;15153:34;15171:15;15153:13;;:17;;:34;;;;:::i;:::-;15130:57;;5854:1;5916:2;:13;;;;:::i;:::-;5902:11;:27;;;;:::i;:::-;15198:11;:26;15218:4;15198:26;;;;;;;;;;;;;;;:43;15233:6;;;;;;;;;;;15198:43;;;;;;;;;;;;;;;:58;;;;15267:21;15305:1;15291:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15267:40;;15336:4;15318;15323:1;15318:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15362:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15352:4;15357:1;15352:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15386:21;15410;15386:45;;15444:6;;;;;;;;;;;:57;;;15516:12;15543:1;15559:4;15586;15606:15;15444:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15645:17;15665:40;15691:13;15665:21;:25;;:40;;;;:::i;:::-;15645:60;;15718:19;15740:39;15753:25;15776:1;15753:18;;:22;;:25;;;;:::i;:::-;15740:8;:12;;:39;;;;:::i;:::-;15718:61;;15792:26;15821:99;15918:1;15821:78;15887:11;15821:47;15849:18;;15821:9;:27;;:47;;;;:::i;:::-;:65;;:78;;;;:::i;:::-;:96;;:99;;;;:::i;:::-;15792:128;;15953:1;15935:15;:19;15931:364;;;15971:6;;;;;;;;;;;:22;;;16001:18;16047:4;16071:15;16105:1;16125::::0;16145:21:::1;;;;;;;;;;;16185:15;15971:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16235:48;16247:18;16267:15;16235:48;;;;;;;:::i;:::-;;;;;;;;15931:364;16307:22;16332:46;16366:11;16332:29;16346:14;;16332:9;:13;;:29;;;;:::i;:::-;:33;;:46;;;;:::i;:::-;16307:71;;16410:1;16393:14;:18;16389:349;;;16428:22;16467:1;16453:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16428:41;;16495:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16484:5;16490:1;16484:8;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;::::0;::::1;16542:9;;;;;;;;;;;16523:5;16529:1;16523:8;;;;;;;;:::i;:::-;;;;;;;:29;;;;;;;;;::::0;::::1;16569:6;;;;;;;;;;;:57;;;16652:14;16682:1;16685:5;16692:16;;;;;;;;;;;16710:15;16569:157;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;16413:325;16389:349;16750:26;16779:74;16831:11;16779:33;16793:18;;16779:9;:13;;:33;;;;:::i;:::-;:37;;:74;;;;:::i;:::-;16750:103;;16889:1;16868:18;:22;16864:113;;;16915:20;;;;;;;;;;;16907:38;;:58;16946:18;16907:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16864:113;17010:1;16989:18;:22;;;;17043:1;17022:18;:22;;;;17072:1;17055:14;:18;;;;14862:2219;;;;;;;;;;7693:5:::0;7684:6;;:14;;;;;;;;;;;;;;;;;;14824:2257::o;1900:98::-;1958:7;1989:1;1985;:5;;;;:::i;:::-;1978:12;;1900:98;;;;:::o;2006:::-;2064:7;2095:1;2091;:5;;;;:::i;:::-;2084:12;;2006:98;;;;:::o;1794:::-;1852:7;1883:1;1879;:5;;;;:::i;:::-;1872:12;;1794:98;;;;:::o;13565:204::-;13664:39;13693:9;13664;:24;13682:4;13664:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13637:9;:24;13655:4;13637:24;;;;;;;;;;;;;;;:66;;;;13744:4;13719:42;;13728:6;13719:42;;;13751:9;13719:42;;;;;;:::i;:::-;;;;;;;;13565:204;;:::o;13777:374::-;13858:49;13892:14;;13858:29;13870:16;;13858:7;:11;;:29;;;;:::i;:::-;:33;;:49;;;;:::i;:::-;13836:18;;:71;;;;;;;:::i;:::-;;;;;;;;13940:49;13974:14;;13940:29;13952:16;;13940:7;:11;;:29;;;;:::i;:::-;:33;;:49;;;;:::i;:::-;13918:18;;:71;;;;;;;:::i;:::-;;;;;;;;14018:45;14048:14;;14018:25;14030:12;;14018:7;:11;;:25;;;;:::i;:::-;:29;;:45;;;;:::i;:::-;14000:14;;:63;;;;;;;:::i;:::-;;;;;;;;14095:48;14128:14;;14095:28;14107:15;;14095:7;:11;;:28;;;;:::i;:::-;:32;;:48;;;;:::i;:::-;14074:17;;:69;;;;;;;:::i;:::-;;;;;;;;13777:374;:::o;14159:427::-;14241:74;14290:14;;14241:30;14253:17;;14241:7;:11;;:30;;;;:::i;:::-;:34;;:74;;;;:::i;:::-;14219:18;;:96;;;;;;;:::i;:::-;;;;;;;;14348:74;14397:14;;14348:30;14360:17;;14348:7;:11;;:30;;;;:::i;:::-;:34;;:74;;;;:::i;:::-;14326:18;;:96;;;;;;;:::i;:::-;;;;;;;;14451:46;14482:14;;14451:26;14463:13;;14451:7;:11;;:26;;;;:::i;:::-;:30;;:46;;;;:::i;:::-;14433:14;;:64;;;;;;;:::i;:::-;;;;;;;;14529:49;14563:14;;14529:29;14541:16;;14529:7;:11;;:29;;;;:::i;:::-;:33;;:49;;;;:::i;:::-;14508:17;;:70;;;;;;;:::i;:::-;;;;;;;;14159:427;:::o;17089:1135::-;7657:4;7648:6;;:13;;;;;;;;;;;;;;;;;;17142:20:::1;17165:17;;17142:40;;5854:1;5916:2;:13;;;;:::i;:::-;5902:11;:27;;;;:::i;:::-;17193:11;:26;17213:4;17193:26;;;;;;;;;;;;;;;:43;17228:6;;;;;;;;;;;17193:43;;;;;;;;;;;;;;;:58;;;;17262:21;17300:1;17286:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17262:40;;17331:4;17313;17318:1;17313:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;17357:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17347:4;17352:1;17347:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;17381:21;17405;17381:45;;17439:6;;;;;;;;;;;:57;;;17511:12;17538:1;17554:4;17581;17601:15;17439:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17640:17;17660:40;17686:13;17660:21;:25;;:40;;;;:::i;:::-;17640:60;;17711:21;17763:1;17747:6;:13;;;;:17;17743:440;;;17809:6;:13;;;;17797:9;:25;;;;:::i;:::-;17781:41;;17842:9;17837:117;17857:6;:13;;;;17853:1;:17;17837:117;;;17904:6;17911:1;17904:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17896:27;;:42;17924:13;17896:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17872:3;;;;;:::i;:::-;;;;17837:117;;;;17743:440;;;18014:1;18002:9;:13;;;;:::i;:::-;17986:29;;18035:9;18063:1;18047:6;:13;;;;:17;;;;:::i;:::-;18035:29;;18030:142;18087:1;18071:6;:13;;;;:17;;;;:::i;:::-;18066:1;:22;18030:142;;18122:6;18129:1;18122:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18114:27;;:42;18142:13;18114:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18090:3;;;;;:::i;:::-;;;;18030:142;;;;17743:440;18215:1;18195:17;:21;;;;17131:1093;;;;;7693:5:::0;7684:6;;:14;;;;;;;;;;;;;;;;;;17089:1135::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1832:75::-;1865:6;1898:2;1892:9;1882:19;;1832:75;:::o;1913:117::-;2022:1;2019;2012:12;2036:117;2145:1;2142;2135:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:117::-;3955:1;3952;3945:12;3969:180;4017:77;4014:1;4007:88;4114:4;4111:1;4104:15;4138:4;4135:1;4128:15;4155:281;4238:27;4260:4;4238:27;:::i;:::-;4230:6;4226:40;4368:6;4356:10;4353:22;4332:18;4320:10;4317:34;4314:62;4311:88;;;4379:18;;:::i;:::-;4311:88;4419:10;4415:2;4408:22;4198:238;4155:281;;:::o;4442:129::-;4476:6;4503:20;;:::i;:::-;4493:30;;4532:33;4560:4;4552:6;4532:33;:::i;:::-;4442:129;;;:::o;4577:311::-;4654:4;4744:18;4736:6;4733:30;4730:56;;;4766:18;;:::i;:::-;4730:56;4816:4;4808:6;4804:17;4796:25;;4876:4;4870;4866:15;4858:23;;4577:311;;;:::o;4894:117::-;5003:1;5000;4993:12;5034:710;5130:5;5155:81;5171:64;5228:6;5171:64;:::i;:::-;5155:81;:::i;:::-;5146:90;;5256:5;5285:6;5278:5;5271:21;5319:4;5312:5;5308:16;5301:23;;5372:4;5364:6;5360:17;5352:6;5348:30;5401:3;5393:6;5390:15;5387:122;;;5420:79;;:::i;:::-;5387:122;5535:6;5518:220;5552:6;5547:3;5544:15;5518:220;;;5627:3;5656:37;5689:3;5677:10;5656:37;:::i;:::-;5651:3;5644:50;5723:4;5718:3;5714:14;5707:21;;5594:144;5578:4;5573:3;5569:14;5562:21;;5518:220;;;5522:21;5136:608;;5034:710;;;;;:::o;5767:370::-;5838:5;5887:3;5880:4;5872:6;5868:17;5864:27;5854:122;;5895:79;;:::i;:::-;5854:122;6012:6;5999:20;6037:94;6127:3;6119:6;6112:4;6104:6;6100:17;6037:94;:::i;:::-;6028:103;;5844:293;5767:370;;;;:::o;6143:116::-;6213:21;6228:5;6213:21;:::i;:::-;6206:5;6203:32;6193:60;;6249:1;6246;6239:12;6193:60;6143:116;:::o;6265:133::-;6308:5;6346:6;6333:20;6324:29;;6362:30;6386:5;6362:30;:::i;:::-;6265:133;;;;:::o;6404:678::-;6494:6;6502;6551:2;6539:9;6530:7;6526:23;6522:32;6519:119;;;6557:79;;:::i;:::-;6519:119;6705:1;6694:9;6690:17;6677:31;6735:18;6727:6;6724:30;6721:117;;;6757:79;;:::i;:::-;6721:117;6862:78;6932:7;6923:6;6912:9;6908:22;6862:78;:::i;:::-;6852:88;;6648:302;6989:2;7015:50;7057:7;7048:6;7037:9;7033:22;7015:50;:::i;:::-;7005:60;;6960:115;6404:678;;;;;:::o;7088:118::-;7175:24;7193:5;7175:24;:::i;:::-;7170:3;7163:37;7088:118;;:::o;7212:222::-;7305:4;7343:2;7332:9;7328:18;7320:26;;7356:71;7424:1;7413:9;7409:17;7400:6;7356:71;:::i;:::-;7212:222;;;;:::o;7440:619::-;7517:6;7525;7533;7582:2;7570:9;7561:7;7557:23;7553:32;7550:119;;;7588:79;;:::i;:::-;7550:119;7708:1;7733:53;7778:7;7769:6;7758:9;7754:22;7733:53;:::i;:::-;7723:63;;7679:117;7835:2;7861:53;7906:7;7897:6;7886:9;7882:22;7861:53;:::i;:::-;7851:63;;7806:118;7963:2;7989:53;8034:7;8025:6;8014:9;8010:22;7989:53;:::i;:::-;7979:63;;7934:118;7440:619;;;;;:::o;8065:329::-;8124:6;8173:2;8161:9;8152:7;8148:23;8144:32;8141:119;;;8179:79;;:::i;:::-;8141:119;8299:1;8324:53;8369:7;8360:6;8349:9;8345:22;8324:53;:::i;:::-;8314:63;;8270:117;8065:329;;;;:::o;8400:::-;8459:6;8508:2;8496:9;8487:7;8483:23;8479:32;8476:119;;;8514:79;;:::i;:::-;8476:119;8634:1;8659:53;8704:7;8695:6;8684:9;8680:22;8659:53;:::i;:::-;8649:63;;8605:117;8400:329;;;;:::o;8735:86::-;8770:7;8810:4;8803:5;8799:16;8788:27;;8735:86;;;:::o;8827:112::-;8910:22;8926:5;8910:22;:::i;:::-;8905:3;8898:35;8827:112;;:::o;8945:214::-;9034:4;9072:2;9061:9;9057:18;9049:26;;9085:67;9149:1;9138:9;9134:17;9125:6;9085:67;:::i;:::-;8945:214;;;;:::o;9165:911::-;9260:6;9268;9276;9284;9292;9341:3;9329:9;9320:7;9316:23;9312:33;9309:120;;;9348:79;;:::i;:::-;9309:120;9468:1;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;:::i;:::-;9483:63;;9439:117;9595:2;9621:53;9666:7;9657:6;9646:9;9642:22;9621:53;:::i;:::-;9611:63;;9566:118;9723:2;9749:53;9794:7;9785:6;9774:9;9770:22;9749:53;:::i;:::-;9739:63;;9694:118;9851:2;9877:53;9922:7;9913:6;9902:9;9898:22;9877:53;:::i;:::-;9867:63;;9822:118;9979:3;10006:53;10051:7;10042:6;10031:9;10027:22;10006:53;:::i;:::-;9996:63;;9950:119;9165:911;;;;;;;;:::o;10082:468::-;10147:6;10155;10204:2;10192:9;10183:7;10179:23;10175:32;10172:119;;;10210:79;;:::i;:::-;10172:119;10330:1;10355:53;10400:7;10391:6;10380:9;10376:22;10355:53;:::i;:::-;10345:63;;10301:117;10457:2;10483:50;10525:7;10516:6;10505:9;10501:22;10483:50;:::i;:::-;10473:60;;10428:115;10082:468;;;;;:::o;10556:323::-;10612:6;10661:2;10649:9;10640:7;10636:23;10632:32;10629:119;;;10667:79;;:::i;:::-;10629:119;10787:1;10812:50;10854:7;10845:6;10834:9;10830:22;10812:50;:::i;:::-;10802:60;;10758:114;10556:323;;;;:::o;10885:619::-;10962:6;10970;10978;11027:2;11015:9;11006:7;11002:23;10998:32;10995:119;;;11033:79;;:::i;:::-;10995:119;11153:1;11178:53;11223:7;11214:6;11203:9;11199:22;11178:53;:::i;:::-;11168:63;;11124:117;11280:2;11306:53;11351:7;11342:6;11331:9;11327:22;11306:53;:::i;:::-;11296:63;;11251:118;11408:2;11434:53;11479:7;11470:6;11459:9;11455:22;11434:53;:::i;:::-;11424:63;;11379:118;10885:619;;;;;:::o;11510:474::-;11578:6;11586;11635:2;11623:9;11614:7;11610:23;11606:32;11603:119;;;11641:79;;:::i;:::-;11603:119;11761:1;11786:53;11831:7;11822:6;11811:9;11807:22;11786:53;:::i;:::-;11776:63;;11732:117;11888:2;11914:53;11959:7;11950:6;11939:9;11935:22;11914:53;:::i;:::-;11904:63;;11859:118;11510:474;;;;;:::o;11990:468::-;12055:6;12063;12112:2;12100:9;12091:7;12087:23;12083:32;12080:119;;;12118:79;;:::i;:::-;12080:119;12238:1;12263:50;12305:7;12296:6;12285:9;12281:22;12263:50;:::i;:::-;12253:60;;12209:114;12362:2;12388:53;12433:7;12424:6;12413:9;12409:22;12388:53;:::i;:::-;12378:63;;12333:118;11990:468;;;;;:::o;12464:104::-;12509:7;12538:24;12556:5;12538:24;:::i;:::-;12527:35;;12464:104;;;:::o;12574:138::-;12655:32;12681:5;12655:32;:::i;:::-;12648:5;12645:43;12635:71;;12702:1;12699;12692:12;12635:71;12574:138;:::o;12718:155::-;12772:5;12810:6;12797:20;12788:29;;12826:41;12861:5;12826:41;:::i;:::-;12718:155;;;;:::o;12879:345::-;12946:6;12995:2;12983:9;12974:7;12970:23;12966:32;12963:119;;;13001:79;;:::i;:::-;12963:119;13121:1;13146:61;13199:7;13190:6;13179:9;13175:22;13146:61;:::i;:::-;13136:71;;13092:125;12879:345;;;;:::o;13230:60::-;13258:3;13279:5;13272:12;;13230:60;;;:::o;13296:142::-;13346:9;13379:53;13397:34;13406:24;13424:5;13406:24;:::i;:::-;13397:34;:::i;:::-;13379:53;:::i;:::-;13366:66;;13296:142;;;:::o;13444:126::-;13494:9;13527:37;13558:5;13527:37;:::i;:::-;13514:50;;13444:126;;;:::o;13576:144::-;13644:9;13677:37;13708:5;13677:37;:::i;:::-;13664:50;;13576:144;;;:::o;13726:167::-;13831:55;13880:5;13831:55;:::i;:::-;13826:3;13819:68;13726:167;;:::o;13899:258::-;14010:4;14048:2;14037:9;14033:18;14025:26;;14061:89;14147:1;14136:9;14132:17;14123:6;14061:89;:::i;:::-;13899:258;;;;:::o;14163:156::-;14303:8;14299:1;14291:6;14287:14;14280:32;14163:156;:::o;14325:365::-;14467:3;14488:66;14552:1;14547:3;14488:66;:::i;:::-;14481:73;;14563:93;14652:3;14563:93;:::i;:::-;14681:2;14676:3;14672:12;14665:19;;14325:365;;;:::o;14696:419::-;14862:4;14900:2;14889:9;14885:18;14877:26;;14949:9;14943:4;14939:20;14935:1;14924:9;14920:17;14913:47;14977:131;15103:4;14977:131;:::i;:::-;14969:139;;14696:419;;;:::o;15121:180::-;15169:77;15166:1;15159:88;15266:4;15263:1;15256:15;15290:4;15287:1;15280:15;15307:170;15447:22;15443:1;15435:6;15431:14;15424:46;15307:170;:::o;15483:366::-;15625:3;15646:67;15710:2;15705:3;15646:67;:::i;:::-;15639:74;;15722:93;15811:3;15722:93;:::i;:::-;15840:2;15835:3;15831:12;15824:19;;15483:366;;;:::o;15855:419::-;16021:4;16059:2;16048:9;16044:18;16036:26;;16108:9;16102:4;16098:20;16094:1;16083:9;16079:17;16072:47;16136:131;16262:4;16136:131;:::i;:::-;16128:139;;15855:419;;;:::o;16280:180::-;16328:77;16325:1;16318:88;16425:4;16422:1;16415:15;16449:4;16446:1;16439:15;16466:233;16505:3;16528:24;16546:5;16528:24;:::i;:::-;16519:33;;16574:66;16567:5;16564:77;16561:103;;;16644:18;;:::i;:::-;16561:103;16691:1;16684:5;16680:13;16673:20;;16466:233;;;:::o;16705:102::-;16747:8;16794:5;16791:1;16787:13;16766:34;;16705:102;;;:::o;16813:848::-;16874:5;16881:4;16905:6;16896:15;;16929:5;16920:14;;16943:712;16964:1;16954:8;16951:15;16943:712;;;17059:4;17054:3;17050:14;17044:4;17041:24;17038:50;;;17068:18;;:::i;:::-;17038:50;17118:1;17108:8;17104:16;17101:451;;;17533:4;17526:5;17522:16;17513:25;;17101:451;17583:4;17577;17573:15;17565:23;;17613:32;17636:8;17613:32;:::i;:::-;17601:44;;16943:712;;;16813:848;;;;;;;:::o;17667:1073::-;17721:5;17912:8;17902:40;;17933:1;17924:10;;17935:5;;17902:40;17961:4;17951:36;;17978:1;17969:10;;17980:5;;17951:36;18047:4;18095:1;18090:27;;;;18131:1;18126:191;;;;18040:277;;18090:27;18108:1;18099:10;;18110:5;;;18126:191;18171:3;18161:8;18158:17;18155:43;;;18178:18;;:::i;:::-;18155:43;18227:8;18224:1;18220:16;18211:25;;18262:3;18255:5;18252:14;18249:40;;;18269:18;;:::i;:::-;18249:40;18302:5;;;18040:277;;18426:2;18416:8;18413:16;18407:3;18401:4;18398:13;18394:36;18376:2;18366:8;18363:16;18358:2;18352:4;18349:12;18345:35;18329:111;18326:246;;;18482:8;18476:4;18472:19;18463:28;;18517:3;18510:5;18507:14;18504:40;;;18524:18;;:::i;:::-;18504:40;18557:5;;18326:246;18597:42;18635:3;18625:8;18619:4;18616:1;18597:42;:::i;:::-;18582:57;;;;18671:4;18666:3;18662:14;18655:5;18652:25;18649:51;;;18680:18;;:::i;:::-;18649:51;18729:4;18722:5;18718:16;18709:25;;17667:1073;;;;;;:::o;18746:281::-;18804:5;18828:23;18846:4;18828:23;:::i;:::-;18820:31;;18872:25;18888:8;18872:25;:::i;:::-;18860:37;;18916:104;18953:66;18943:8;18937:4;18916:104;:::i;:::-;18907:113;;18746:281;;;;:::o;19033:348::-;19073:7;19096:20;19114:1;19096:20;:::i;:::-;19091:25;;19130:20;19148:1;19130:20;:::i;:::-;19125:25;;19318:1;19250:66;19246:74;19243:1;19240:81;19235:1;19228:9;19221:17;19217:105;19214:131;;;19325:18;;:::i;:::-;19214:131;19373:1;19370;19366:9;19355:20;;19033:348;;;;:::o;19387:165::-;19527:17;19523:1;19515:6;19511:14;19504:41;19387:165;:::o;19558:366::-;19700:3;19721:67;19785:2;19780:3;19721:67;:::i;:::-;19714:74;;19797:93;19886:3;19797:93;:::i;:::-;19915:2;19910:3;19906:12;19899:19;;19558:366;;;:::o;19930:419::-;20096:4;20134:2;20123:9;20119:18;20111:26;;20183:9;20177:4;20173:20;20169:1;20158:9;20154:17;20147:47;20211:131;20337:4;20211:131;:::i;:::-;20203:139;;19930:419;;;:::o;20355:134::-;20413:9;20446:37;20477:5;20446:37;:::i;:::-;20433:50;;20355:134;;;:::o;20495:147::-;20590:45;20629:5;20590:45;:::i;:::-;20585:3;20578:58;20495:147;;:::o;20648:238::-;20749:4;20787:2;20776:9;20772:18;20764:26;;20800:79;20876:1;20865:9;20861:17;20852:6;20800:79;:::i;:::-;20648:238;;;;:::o;20892:162::-;21032:14;21028:1;21020:6;21016:14;21009:38;20892:162;:::o;21060:366::-;21202:3;21223:67;21287:2;21282:3;21223:67;:::i;:::-;21216:74;;21299:93;21388:3;21299:93;:::i;:::-;21417:2;21412:3;21408:12;21401:19;;21060:366;;;:::o;21432:419::-;21598:4;21636:2;21625:9;21621:18;21613:26;;21685:9;21679:4;21675:20;21671:1;21660:9;21656:17;21649:47;21713:131;21839:4;21713:131;:::i;:::-;21705:139;;21432:419;;;:::o;21857:167::-;21997:19;21993:1;21985:6;21981:14;21974:43;21857:167;:::o;22030:366::-;22172:3;22193:67;22257:2;22252:3;22193:67;:::i;:::-;22186:74;;22269:93;22358:3;22269:93;:::i;:::-;22387:2;22382:3;22378:12;22371:19;;22030:366;;;:::o;22402:419::-;22568:4;22606:2;22595:9;22591:18;22583:26;;22655:9;22649:4;22645:20;22641:1;22630:9;22626:17;22619:47;22683:131;22809:4;22683:131;:::i;:::-;22675:139;;22402:419;;;:::o;22827:169::-;22967:21;22963:1;22955:6;22951:14;22944:45;22827:169;:::o;23002:366::-;23144:3;23165:67;23229:2;23224:3;23165:67;:::i;:::-;23158:74;;23241:93;23330:3;23241:93;:::i;:::-;23359:2;23354:3;23350:12;23343:19;;23002:366;;;:::o;23374:419::-;23540:4;23578:2;23567:9;23563:18;23555:26;;23627:9;23621:4;23617:20;23613:1;23602:9;23598:17;23591:47;23655:131;23781:4;23655:131;:::i;:::-;23647:139;;23374:419;;;:::o;23799:174::-;23939:26;23935:1;23927:6;23923:14;23916:50;23799:174;:::o;23979:366::-;24121:3;24142:67;24206:2;24201:3;24142:67;:::i;:::-;24135:74;;24218:93;24307:3;24218:93;:::i;:::-;24336:2;24331:3;24327:12;24320:19;;23979:366;;;:::o;24351:419::-;24517:4;24555:2;24544:9;24540:18;24532:26;;24604:9;24598:4;24594:20;24590:1;24579:9;24575:17;24568:47;24632:131;24758:4;24632:131;:::i;:::-;24624:139;;24351:419;;;:::o;24776:305::-;24816:3;24835:20;24853:1;24835:20;:::i;:::-;24830:25;;24869:20;24887:1;24869:20;:::i;:::-;24864:25;;25023:1;24955:66;24951:74;24948:1;24945:81;24942:107;;;25029:18;;:::i;:::-;24942:107;25073:1;25070;25066:9;25059:16;;24776:305;;;;:::o;25087:143::-;25144:5;25175:6;25169:13;25160:22;;25191:33;25218:5;25191:33;:::i;:::-;25087:143;;;;:::o;25236:351::-;25306:6;25355:2;25343:9;25334:7;25330:23;25326:32;25323:119;;;25361:79;;:::i;:::-;25323:119;25481:1;25506:64;25562:7;25553:6;25542:9;25538:22;25506:64;:::i;:::-;25496:74;;25452:128;25236:351;;;;:::o;25593:85::-;25638:7;25667:5;25656:16;;25593:85;;;:::o;25684:158::-;25742:9;25775:61;25793:42;25802:32;25828:5;25802:32;:::i;:::-;25793:42;:::i;:::-;25775:61;:::i;:::-;25762:74;;25684:158;;;:::o;25848:147::-;25943:45;25982:5;25943:45;:::i;:::-;25938:3;25931:58;25848:147;;:::o;26001:114::-;26068:6;26102:5;26096:12;26086:22;;26001:114;;;:::o;26121:184::-;26220:11;26254:6;26249:3;26242:19;26294:4;26289:3;26285:14;26270:29;;26121:184;;;;:::o;26311:132::-;26378:4;26401:3;26393:11;;26431:4;26426:3;26422:14;26414:22;;26311:132;;;:::o;26449:108::-;26526:24;26544:5;26526:24;:::i;:::-;26521:3;26514:37;26449:108;;:::o;26563:179::-;26632:10;26653:46;26695:3;26687:6;26653:46;:::i;:::-;26731:4;26726:3;26722:14;26708:28;;26563:179;;;;:::o;26748:113::-;26818:4;26850;26845:3;26841:14;26833:22;;26748:113;;;:::o;26897:732::-;27016:3;27045:54;27093:5;27045:54;:::i;:::-;27115:86;27194:6;27189:3;27115:86;:::i;:::-;27108:93;;27225:56;27275:5;27225:56;:::i;:::-;27304:7;27335:1;27320:284;27345:6;27342:1;27339:13;27320:284;;;27421:6;27415:13;27448:63;27507:3;27492:13;27448:63;:::i;:::-;27441:70;;27534:60;27587:6;27534:60;:::i;:::-;27524:70;;27380:224;27367:1;27364;27360:9;27355:14;;27320:284;;;27324:14;27620:3;27613:10;;27021:608;;;26897:732;;;;:::o;27635:831::-;27898:4;27936:3;27925:9;27921:19;27913:27;;27950:71;28018:1;28007:9;28003:17;27994:6;27950:71;:::i;:::-;28031:80;28107:2;28096:9;28092:18;28083:6;28031:80;:::i;:::-;28158:9;28152:4;28148:20;28143:2;28132:9;28128:18;28121:48;28186:108;28289:4;28280:6;28186:108;:::i;:::-;28178:116;;28304:72;28372:2;28361:9;28357:18;28348:6;28304:72;:::i;:::-;28386:73;28454:3;28443:9;28439:19;28430:6;28386:73;:::i;:::-;27635:831;;;;;;;;:::o;28472:807::-;28721:4;28759:3;28748:9;28744:19;28736:27;;28773:71;28841:1;28830:9;28826:17;28817:6;28773:71;:::i;:::-;28854:72;28922:2;28911:9;28907:18;28898:6;28854:72;:::i;:::-;28936:80;29012:2;29001:9;28997:18;28988:6;28936:80;:::i;:::-;29026;29102:2;29091:9;29087:18;29078:6;29026:80;:::i;:::-;29116:73;29184:3;29173:9;29169:19;29160:6;29116:73;:::i;:::-;29199;29267:3;29256:9;29252:19;29243:6;29199:73;:::i;:::-;28472:807;;;;;;;;;:::o;29285:143::-;29342:5;29373:6;29367:13;29358:22;;29389:33;29416:5;29389:33;:::i;:::-;29285:143;;;;:::o;29434:663::-;29522:6;29530;29538;29587:2;29575:9;29566:7;29562:23;29558:32;29555:119;;;29593:79;;:::i;:::-;29555:119;29713:1;29738:64;29794:7;29785:6;29774:9;29770:22;29738:64;:::i;:::-;29728:74;;29684:128;29851:2;29877:64;29933:7;29924:6;29913:9;29909:22;29877:64;:::i;:::-;29867:74;;29822:129;29990:2;30016:64;30072:7;30063:6;30052:9;30048:22;30016:64;:::i;:::-;30006:74;;29961:129;29434:663;;;;;:::o;30103:332::-;30224:4;30262:2;30251:9;30247:18;30239:26;;30275:71;30343:1;30332:9;30328:17;30319:6;30275:71;:::i;:::-;30356:72;30424:2;30413:9;30409:18;30400:6;30356:72;:::i;:::-;30103:332;;;;;:::o;30441:720::-;30676:4;30714:3;30703:9;30699:19;30691:27;;30728:79;30804:1;30793:9;30789:17;30780:6;30728:79;:::i;:::-;30854:9;30848:4;30844:20;30839:2;30828:9;30824:18;30817:48;30882:108;30985:4;30976:6;30882:108;:::i;:::-;30874:116;;31000:72;31068:2;31057:9;31053:18;31044:6;31000:72;:::i;:::-;31082;31150:2;31139:9;31135:18;31126:6;31082:72;:::i;:::-;30441:720;;;;;;;:::o;31167:180::-;31215:77;31212:1;31205:88;31312:4;31309:1;31302:15;31336:4;31333:1;31326:15;31353:185;31393:1;31410:20;31428:1;31410:20;:::i;:::-;31405:25;;31444:20;31462:1;31444:20;:::i;:::-;31439:25;;31483:1;31473:35;;31488:18;;:::i;:::-;31473:35;31530:1;31527;31523:9;31518:14;;31353:185;;;;:::o;31544:191::-;31584:4;31604:20;31622:1;31604:20;:::i;:::-;31599:25;;31638:20;31656:1;31638:20;:::i;:::-;31633:25;;31677:1;31674;31671:8;31668:34;;;31682:18;;:::i;:::-;31668:34;31727:1;31724;31720:9;31712:17;;31544:191;;;;:::o;31741:171::-;31780:3;31803:24;31821:5;31803:24;:::i;:::-;31794:33;;31849:4;31842:5;31839:15;31836:41;;;31857:18;;:::i;:::-;31836:41;31904:1;31897:5;31893:13;31886:20;;31741:171;;;:::o

Swarm Source

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