ETH Price: $2,521.92 (-5.11%)

Token

TMFINR ($TMFINR)
 

Overview

Max Total Supply

53,180,000,008 $TMFINR

Holders

103

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.653186413 $TMFINR

Value
$0.00
0xd6d32d2f9cf7bba95d9a75a5f0a6f3bd5708e83e
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:
TMFINR

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 2023-07-14
*/

// SPDX-License-Identifier:MIT
pragma solidity ^0.8.10;

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

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

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

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

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

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

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

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

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

// Dex Router contract interface
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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

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

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

contract TMFINR is Context, IERC20, Ownable {
    using SafeMath for uint256;

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

    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isExcludedFromMaxTxn;
    mapping(address => bool) public isExcludedFromMaxHolding;
    mapping(address => bool) public isBot;

    string private _name = "TMFINR";
    string private _symbol = "$TMFINR";
    uint8 private _decimals = 9;
    uint256 private _totalSupply = 5_318_000_000_8 * 1e9;

    address private constant DEAD = address(0xdead);
    address private constant ZERO = address(0);
    IDexRouter public dexRouter;
    address public dexPair;
    address public marketingWallet;

    uint256 public minTokenToSwap = _totalSupply.div(1e5); // this amount will trigger swap and distribute
    uint256 public maxHoldLimit = _totalSupply.div(100); // this is the max wallet holding limit
    uint256 public maxTxnLimit = _totalSupply.div(100); // this is the max transaction limit
    uint256 public botFee = 990;
    uint256 public percentDivider = 1000;
    uint256 public snipingTime = 60 seconds;
    uint256 public launchedAt;

    bool public distributeAndLiquifyStatus; // should be true to turn on to liquidate the pool
    bool public feesStatus; // enable by default
    bool public trading; // once enable can't be disable afterwards

    uint256 public liquidityFeeOnBuying = 10; // 1% will be added to the liquidity
    uint256 public marketingFeeOnBuying = 10; // 1% will be added to the marketing address

    uint256 public liquidityFeeOnSelling = 10; // 1% will be added to the liquidity
    uint256 public marketingFeeOnSelling = 20; // 3% will be added to the marketing address

    uint256 liquidityFeeCounter = 0;
    uint256 marketingFeeCounter = 0;

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

    constructor() {
        _balances[owner()] = _totalSupply;
        marketingWallet = address(0x8200fF459DcC094e65EDEC5F0389F5095fb8F4a9);

        IDexRouter _dexRouter = IDexRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        // Create a dex pair for this new ERC20
        address _dexPair = IDexFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );
        dexPair = _dexPair;

        // set the rest of the contract variables
        dexRouter = _dexRouter;

        //exclude owner and this contract from fee
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(dexRouter)] = true;

        //exclude owner and this contract from max Txn
        isExcludedFromMaxTxn[owner()] = true;
        isExcludedFromMaxTxn[address(this)] = true;
        isExcludedFromMaxTxn[address(dexRouter)] = true;

        //exclude owner and this contract from max hold limit
        isExcludedFromMaxHolding[owner()] = true;
        isExcludedFromMaxHolding[address(this)] = true;
        isExcludedFromMaxHolding[address(dexRouter)] = true;
        isExcludedFromMaxHolding[dexPair] = true;
        isExcludedFromMaxHolding[marketingWallet] = true;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    //to receive ETH from dexRouter when swapping
    receive() external payable {}

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "NT: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "NT: decreased allowance or below zero"
            )
        );
        return true;
    }

    function includeOrExcludeFromFee(address account, bool value)
        external
        onlyOwner
    {
        isExcludedFromFee[account] = value;
    }

    function includeOrExcludeFromMaxTxn(address account, bool value)
        external
        onlyOwner
    {
        isExcludedFromMaxTxn[account] = value;
    }

    function includeOrExcludeFromMaxHolding(address account, bool value)
        external
        onlyOwner
    {
        isExcludedFromMaxHolding[account] = value;
    }

    function setMinTokenToSwap(uint256 _amount) external onlyOwner {
        require(_amount > 0, "NT: can't be 0");
        minTokenToSwap = _amount;
    }

    function setMaxHoldLimit(uint256 _amount) external onlyOwner {
        require(
            _amount >= _totalSupply.div(percentDivider),
            "NT: should be greater than 0.1%"
        );
        maxHoldLimit = _amount;
    }

    function setMaxTxnLimit(uint256 _amount) external onlyOwner {
        require(
            _amount >= _totalSupply / percentDivider,
            "NT: should be greater than 0.1%"
        );
        maxTxnLimit = _amount;
    }

    function setBuyFeePercent(
        uint256 _lpFee,
        uint256 _marketingFee
    ) external onlyOwner {
        marketingFeeOnBuying = _lpFee;
        liquidityFeeOnBuying = _marketingFee;
        require(
            _lpFee.add(_marketingFee) <= percentDivider.div(10),
            "NT: can't be more than 10%"
        );
    }

    function setSellFeePercent(
        uint256 _lpFee,
        uint256 _marketingFee
    ) external onlyOwner {
        marketingFeeOnSelling = _lpFee;
        liquidityFeeOnSelling = _marketingFee;
        require(
            _lpFee.add(_marketingFee) <= percentDivider.div(10),
            "NT: can't be more than 10%"
        );
    }

    function setDistributionStatus(bool _value) public onlyOwner {
        distributeAndLiquifyStatus = _value;
    }

    function enableOrDisableFees(bool _value) external onlyOwner {
        feesStatus = _value;
    }

    function updateAddresses(address _marketingWallet) external onlyOwner {
        marketingWallet = _marketingWallet;
    }

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

    function enableTrading() external onlyOwner {
        require(!trading, "NT: already enabled");
        trading = true;
        feesStatus = true;
        distributeAndLiquifyStatus = true;
        launchedAt = block.timestamp;
    }

    function removeStuckEth(address _receiver) public onlyOwner {
        payable(_receiver).transfer(address(this).balance);
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = amount
            .mul(marketingFeeOnBuying.add(liquidityFeeOnBuying))
            .div(percentDivider);
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = amount
            .mul(marketingFeeOnSelling.add(liquidityFeeOnSelling))
            .div(percentDivider);
        return fee;
    }

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "NT: transfer from the zero address");
        require(to != address(0), "NT: transfer to the zero address");
        require(amount > 0, "NT: Amount must be greater than zero");
        require(!isBot[from],"Bot detected");

        if (!isExcludedFromMaxTxn[from] && !isExcludedFromMaxTxn[to]) {
            require(amount <= maxTxnLimit, "NT: max txn limit exceeds");

            // trading disable till launch
            if (!trading) {
                require(
                    dexPair != from && dexPair != to,
                    "NT: trading is disable"
                );
            }
        }

        if (!isExcludedFromMaxHolding[to]) {
            require(
                balanceOf(to).add(amount) <= maxHoldLimit,
                "NT: max hold limit exceeds"
            );
        }

        // swap and liquify
        distributeAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

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

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (dexPair == sender && takeFee) {
            uint256 allFee;
            uint256 tTransferAmount;
            // antibot
            if (
                block.timestamp < launchedAt + snipingTime &&
                sender != address(dexRouter)
            ) {
                allFee = amount.mul(botFee).div(percentDivider);
                marketingFeeCounter += allFee;
                tTransferAmount = amount.sub(allFee);
            } else {
                allFee = totalBuyFeePerTx(amount);
                tTransferAmount = amount.sub(allFee);
                setFeeCountersOnBuying(amount);
            }

            _balances[sender] = _balances[sender].sub(
                amount,
                "NT: insufficient balance"
            );
            _balances[recipient] = _balances[recipient].add(tTransferAmount);
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else if (dexPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount.sub(allFee);
            _balances[sender] = _balances[sender].sub(
                amount,
                "NT: insufficient balance"
            );
            _balances[recipient] = _balances[recipient].add(tTransferAmount);
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
            setFeeCountersOnSelling(amount);
        } else {
            _balances[sender] = _balances[sender].sub(
                amount,
                "NT: insufficient balance"
            );
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)].add(amount);

        emit Transfer(sender, address(this), amount);
    }

    function setFeeCountersOnBuying(uint256 amount) private {
        liquidityFeeCounter += amount.mul(liquidityFeeOnBuying).div(
            percentDivider
        );
        marketingFeeCounter += amount.mul(marketingFeeOnBuying).div(
            percentDivider
        );
    }

    function setFeeCountersOnSelling(uint256 amount) private {
        liquidityFeeCounter += amount.mul(liquidityFeeOnSelling).div(
            percentDivider
        );
        marketingFeeCounter += amount.mul(marketingFeeOnSelling).div(
            percentDivider
        );
    }

    function distributeAndLiquify(address from, address to) private {
        if(liquidityFeeCounter.add(marketingFeeCounter) == 0) return;
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is Dex pair.
        uint256 contractTokenBalance = balanceOf(address(this));

        bool shouldSell = contractTokenBalance >= minTokenToSwap;

        if (
            shouldSell &&
            from != dexPair &&
            distributeAndLiquifyStatus &&
            !(from == address(this) && to == dexPair) // swap 1 time
        ) {
            // approve contract
            _approve(address(this), address(dexRouter), contractTokenBalance);

            uint256 halfLiquidity = liquidityFeeCounter.div(2);
            uint256 otherHalfLiquidity = liquidityFeeCounter.sub(halfLiquidity);

            uint256 tokenAmountToBeSwapped = contractTokenBalance.sub(
                otherHalfLiquidity
            );

            uint256 balanceBefore = address(this).balance;

            // now is to lock into liquidty pool
            Utils.swapTokensForEth(address(dexRouter), tokenAmountToBeSwapped);

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

            uint256 ethToBeAddedToLiquidity = deltaBalance
                .mul(halfLiquidity)
                .div(tokenAmountToBeSwapped);

            // add liquidity to Dex
            if (ethToBeAddedToLiquidity > 0) {
                Utils.addLiquidity(
                    address(dexRouter),
                    DEAD,
                    otherHalfLiquidity,
                    ethToBeAddedToLiquidity
                );

                emit SwapAndLiquify(
                    halfLiquidity,
                    ethToBeAddedToLiquidity,
                    otherHalfLiquidity
                );
            }

            uint256 ethForMarketing = address(this).balance;

            // sending Eth to Marketing wallet
            if (ethForMarketing > 0) payable(marketingWallet).transfer(ethForMarketing);

            // Reset all fee counters
            liquidityFeeCounter = 0;
            marketingFeeCounter = 0;
        }
    }
}

// Library for doing a swap on Dex
library Utils {
    using SafeMath for uint256;

    function swapTokensForEth(address routerAddress, uint256 tokenAmount)
        internal
    {
        IDexRouter dexRouter = IDexRouter(routerAddress);

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

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

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // 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 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxHolding","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromMaxTxn","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":"liquidityFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lpFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxHoldLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lpFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600681526020017f544d46494e520000000000000000000000000000000000000000000000000000815250600790805190602001906200005192919062000aea565b506040518060400160405280600781526020017f24544d46494e5200000000000000000000000000000000000000000000000000815250600890805190602001906200009f92919062000aea565b5060098060006101000a81548160ff021916908360ff1602179055506802e205503f601c5000600a55620000e7620186a0600a54620009ff60201b6200231e1790919060201c565b600e55620001076064600a54620009ff60201b6200231e1790919060201c565b600f55620001276064600a54620009ff60201b6200231e1790919060201c565b6010556103de6011556103e8601255603c601355600a601655600a601755600a60185560146019556000601a556000601b553480156200016657600080fd5b506200017762000a5160201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600a54600160006200024862000a5960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550738200ff459dcc094e65edec5f0389f5095fb8f4a9600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000342573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000368919062000c04565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f6919062000c04565b6040518363ffffffff1660e01b81526004016200041592919062000c47565b6020604051808303816000875af115801562000435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045b919062000c04565b905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000620004f562000a5960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460006200062e62000a5960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560006200076762000a5960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200098e62000a5960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620009ef919062000c8f565b60405180910390a3505062000e40565b600062000a4983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000a8260201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000acc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ac3919062000d50565b60405180910390fd5b506000838562000add919062000da3565b9050809150509392505050565b82805462000af89062000e0a565b90600052602060002090601f01602090048101928262000b1c576000855562000b68565b82601f1062000b3757805160ff191683800117855562000b68565b8280016001018555821562000b68579182015b8281111562000b6757825182559160200191906001019062000b4a565b5b50905062000b77919062000b7b565b5090565b5b8082111562000b9657600081600090555060010162000b7c565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bcc8262000b9f565b9050919050565b62000bde8162000bbf565b811462000bea57600080fd5b50565b60008151905062000bfe8162000bd3565b92915050565b60006020828403121562000c1d5762000c1c62000b9a565b5b600062000c2d8482850162000bed565b91505092915050565b62000c418162000bbf565b82525050565b600060408201905062000c5e600083018562000c36565b62000c6d602083018462000c36565b9392505050565b6000819050919050565b62000c898162000c74565b82525050565b600060208201905062000ca6600083018462000c7e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000ce857808201518184015260208101905062000ccb565b8381111562000cf8576000848401525b50505050565b6000601f19601f8301169050919050565b600062000d1c8262000cac565b62000d28818562000cb7565b935062000d3a81856020860162000cc8565b62000d458162000cfe565b840191505092915050565b6000602082019050818103600083015262000d6c818462000d0f565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000db08262000c74565b915062000dbd8362000c74565b92508262000dd05762000dcf62000d74565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e2357607f821691505b6020821081141562000e3a5762000e3962000ddb565b5b50919050565b614d4d8062000e506000396000f3fe6080604052600436106102e85760003560e01c8063879dd3c511610190578063bf56b371116100dc578063ed42142911610095578063f2fde38b1161006f578063f2fde38b14610b71578063f4b3dbc314610b9a578063f9dfdaeb14610bd7578063fe6f1b0514610c00576102ef565b8063ed42142914610ae0578063f097ea1a14610b1d578063f242ab4114610b46576102ef565b8063bf56b371146109ce578063bf862391146109f9578063dd62ed3e14610a24578063e6c84dc614610a61578063ea5b9e8514610a8c578063ec44acf214610ab5576102ef565b80639b6a275011610149578063a7c29b4011610123578063a7c29b4014610916578063a9059cbb1461093f578063b0bc2a2d1461097c578063be291dc6146109a5576102ef565b80639b6a275014610887578063a457c2d7146108b0578063a643c1a0146108ed576102ef565b8063879dd3c5146107875780638a8c523c146107b25780638da5cb5b146107c957806395d89b41146107f457806399b102b51461081f5780639a36dfa11461085c576102ef565b80633bbac5791161024f57806375f0a874116102085780637d99c66d116101e25780637d99c66d146106cb578063844af78e146106f657806384ea21bc146107215780638756aabd1461075e576102ef565b806375f0a8741461064a57806379777b4e146106755780637c6a9a9c146106a0576102ef565b80633bbac579146105285780635342acb414610565578063679a3c59146105a2578063681aa362146105cb57806370a08231146105f6578063715018a614610633576102ef565b80631884f1e6116102a15780631884f1e61461040457806323b872dd1461042f5780632d1293901461046c578063313ce567146104955780633326d7f2146104c057806339509351146104eb576102ef565b806303c0f5d4146102f457806306fdde031461031d5780630758d92414610348578063095ea7b3146103735780630a2d140c146103b057806318160ddd146103d9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b5061031b60048036038101906103169190613c22565b610c2b565b005b34801561032957600080fd5b50610332610d1b565b60405161033f9190613cfb565b60405180910390f35b34801561035457600080fd5b5061035d610dad565b60405161036a9190613d7c565b60405180910390f35b34801561037f57600080fd5b5061039a60048036038101906103959190613dcd565b610dd3565b6040516103a79190613e1c565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190613e37565b610df1565b005b3480156103e557600080fd5b506103ee610ea3565b6040516103fb9190613e73565b60405180910390f35b34801561041057600080fd5b50610419610ead565b6040516104269190613e73565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190613e8e565b610eb3565b6040516104639190613e1c565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e9190613c22565b610f8c565b005b3480156104a157600080fd5b506104aa61107c565b6040516104b79190613efd565b60405180910390f35b3480156104cc57600080fd5b506104d5611093565b6040516104e29190613e73565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d9190613dcd565b611099565b60405161051f9190613e1c565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190613f18565b61114c565b60405161055c9190613e1c565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190613f18565b61116c565b6040516105999190613e1c565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c49190613f18565b61118c565b005b3480156105d757600080fd5b506105e061126b565b6040516105ed9190613e73565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190613f18565b611271565b60405161062a9190613e73565b60405180910390f35b34801561063f57600080fd5b506106486112ba565b005b34801561065657600080fd5b5061065f61140d565b60405161066c9190613f54565b60405180910390f35b34801561068157600080fd5b5061068a611433565b6040516106979190613e1c565b60405180910390f35b3480156106ac57600080fd5b506106b5611446565b6040516106c29190613e73565b60405180910390f35b3480156106d757600080fd5b506106e061144c565b6040516106ed9190613e73565b60405180910390f35b34801561070257600080fd5b5061070b611452565b6040516107189190613e73565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190613f18565b611458565b6040516107559190613e1c565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190613f6f565b611478565b005b34801561079357600080fd5b5061079c611570565b6040516107a99190613e1c565b60405180910390f35b3480156107be57600080fd5b506107c7611583565b005b3480156107d557600080fd5b506107de6116c2565b6040516107eb9190613f54565b60405180910390f35b34801561080057600080fd5b506108096116eb565b6040516108169190613cfb565b60405180910390f35b34801561082b57600080fd5b5061084660048036038101906108419190613f18565b61177d565b6040516108539190613e1c565b60405180910390f35b34801561086857600080fd5b5061087161179d565b60405161087e9190613e73565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a99190613f6f565b6117a3565b005b3480156108bc57600080fd5b506108d760048036038101906108d29190613dcd565b611894565b6040516108e49190613e1c565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f9190613f18565b611961565b005b34801561092257600080fd5b5061093d60048036038101906109389190613c22565b611a3a565b005b34801561094b57600080fd5b5061096660048036038101906109619190613dcd565b611b2a565b6040516109739190613e1c565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e9190613e37565b611b48565b005b3480156109b157600080fd5b506109cc60048036038101906109c79190613f9c565b611bfa565b005b3480156109da57600080fd5b506109e3611d0b565b6040516109f09190613e73565b60405180910390f35b348015610a0557600080fd5b50610a0e611d11565b604051610a1b9190613e73565b60405180910390f35b348015610a3057600080fd5b50610a4b6004803603810190610a469190613fdc565b611d17565b604051610a589190613e73565b60405180910390f35b348015610a6d57600080fd5b50610a76611d9e565b604051610a839190613e73565b60405180910390f35b348015610a9857600080fd5b50610ab36004803603810190610aae9190613c22565b611da4565b005b348015610ac157600080fd5b50610aca611e94565b604051610ad79190613e1c565b60405180910390f35b348015610aec57600080fd5b50610b076004803603810190610b029190613f6f565b611ea7565b604051610b149190613e73565b60405180910390f35b348015610b2957600080fd5b50610b446004803603810190610b3f9190613f6f565b611ef2565b005b348015610b5257600080fd5b50610b5b611fd4565b604051610b689190613f54565b60405180910390f35b348015610b7d57600080fd5b50610b986004803603810190610b939190613f18565b611ffa565b005b348015610ba657600080fd5b50610bc16004803603810190610bbc9190613f6f565b6121bc565b604051610bce9190613e73565b60405180910390f35b348015610be357600080fd5b50610bfe6004803603810190610bf99190613f9c565b612207565b005b348015610c0c57600080fd5b50610c15612318565b604051610c229190613e73565b60405180910390f35b610c33612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb790614068565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060078054610d2a906140b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610d56906140b7565b8015610da35780601f10610d7857610100808354040283529160200191610da3565b820191906000526020600020905b815481529060010190602001808311610d8657829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610de7610de0612368565b8484612370565b6001905092915050565b610df9612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d90614068565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6000600a54905090565b600e5481565b6000610ec084848461253b565b610f8184610ecc612368565b610f7c85604051806060016040528060258152602001614cce60259139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f32612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b612370565b600190509392505050565b610f94612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101890614068565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600960009054906101000a900460ff16905090565b60165481565b60006111426110a6612368565b8461113d85600260006110b7612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b612370565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b611194612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890614068565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611267573d6000803e3d6000fd5b5050565b60105481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112c2612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690614068565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900460ff1681565b60175481565b60135481565b60195481565b60056020528060005260406000206000915054906101000a900460ff1681565b611480612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150490614068565b60405180910390fd5b611524601254600a5461231e90919063ffffffff16565b811015611566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155d90614135565b60405180910390fd5b80600f8190555050565b601560019054906101000a900460ff1681565b61158b612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f90614068565b60405180910390fd5b601560029054906101000a900460ff1615611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f906141a1565b60405180910390fd5b6001601560026101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560006101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600880546116fa906140b7565b80601f0160208091040260200160405190810160405280929190818152602001828054611726906140b7565b80156117735780601f1061174857610100808354040283529160200191611773565b820191906000526020600020905b81548152906001019060200180831161175657829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b600f5481565b6117ab612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f90614068565b60405180910390fd5b601254600a54611848919061421f565b81101561188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188190614135565b60405180910390fd5b8060108190555050565b60006119576118a1612368565b8461195285604051806060016040528060258152602001614cf360259139600260006118cb612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b612370565b6001905092915050565b611969612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed90614068565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a42612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac690614068565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b3e611b37612368565b848461253b565b6001905092915050565b611b50612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490614068565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b611c02612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8690614068565b60405180910390fd5b8160198190555080601881905550611cb3600a60125461231e90919063ffffffff16565b611cc68284612ad490919063ffffffff16565b1115611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe9061429c565b60405180910390fd5b5050565b60145481565b60115481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60185481565b611dac612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090614068565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560029054906101000a900460ff1681565b600080611ee7601254611ed9611eca601654601754612ad490919063ffffffff16565b86612b3290919063ffffffff16565b61231e90919063ffffffff16565b905080915050919050565b611efa612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7e90614068565b60405180910390fd5b60008111611fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc190614308565b60405180910390fd5b80600e8190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612002612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208690614068565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f69061439a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806121fc6012546121ee6121df601854601954612ad490919063ffffffff16565b86612b3290919063ffffffff16565b61231e90919063ffffffff16565b905080915050919050565b61220f612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461229c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229390614068565b60405180910390fd5b81601781905550806016819055506122c0600a60125461231e90919063ffffffff16565b6122d38284612ad490919063ffffffff16565b1115612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b9061429c565b60405180910390fd5b5050565b60125481565b600061236083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bad565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d79061442c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244790614498565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161252e9190613e73565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a29061452a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561261b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261290614596565b60405180910390fd5b6000811161265e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265590614628565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e290614694565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561278f5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128da576010548111156127d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d090614700565b60405180910390fd5b601560029054906101000a900460ff166128d9578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561289957508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b6128d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cf9061476c565b60405180910390fd5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661298b57600f546129498261293b85611271565b612ad490919063ffffffff16565b111561298a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612981906147d8565b60405180910390fd5b5b6129958383612c10565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a3c5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612a545750601560019054906101000a900460ff16155b15612a5e57600090505b612a6a84848484612f48565b50505050565b6000838311158290612ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aaf9190613cfb565b60405180910390fd5b5060008385612ac791906147f8565b9050809150509392505050565b6000808284612ae3919061482c565b905083811015612b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1f906148ce565b60405180910390fd5b8091505092915050565b600080831415612b455760009050612ba7565b60008284612b5391906148ee565b9050828482612b62919061421f565b14612ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b99906149ba565b60405180910390fd5b809150505b92915050565b60008083118290612bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612beb9190613cfb565b60405180910390fd5b5060008385612c03919061421f565b9050809150509392505050565b6000612c29601b54601a54612ad490919063ffffffff16565b1415612c3457612f44565b6000612c3f30611271565b90506000600e548210159050808015612ca65750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612cbe5750601560009054906101000a900460ff165b8015612d4f57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612d4d5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15612f4157612d8130600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612370565b6000612d996002601a5461231e90919063ffffffff16565b90506000612db282601a546136ab90919063ffffffff16565b90506000612dc982866136ab90919063ffffffff16565b90506000479050612dfc600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836136f5565b6000612e1182476136ab90919063ffffffff16565b90506000612e3a84612e2c8885612b3290919063ffffffff16565b61231e90919063ffffffff16565b90506000811115612eb157612e75600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead87846138db565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868287604051612ea8939291906149da565b60405180910390a15b60004790506000811115612f2957600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f27573d6000803e3d6000fd5b505b6000601a819055506000601b81905550505050505050505b50505b5050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612fa25750805b1561327a57600080601354601454612fba919061482c565b421080156130165750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b156130795761304460125461303660115487612b3290919063ffffffff16565b61231e90919063ffffffff16565b915081601b6000828254613058919061482c565b9250508190555061307282856136ab90919063ffffffff16565b90506130a3565b61308284611ea7565b915061309782856136ab90919063ffffffff16565b90506130a28461397f565b5b61312c846040518060400160405280601881526020017f4e543a20696e73756666696369656e742062616c616e63650000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131c181600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132619190613e73565b60405180910390a36132738683613a04565b50506136a5565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156132d45750805b156134dd5760006132e4836121bc565b905060006132fb82856136ab90919063ffffffff16565b9050613386846040518060400160405280601881526020017f4e543a20696e73756666696369656e742062616c616e63650000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061341b81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134bb9190613e73565b60405180910390a36134cd8683613a04565b6134d684613b02565b50506136a4565b613566826040518060400160405280601881526020017f4e543a20696e73756666696369656e742062616c616e63650000000000000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135fb82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161369b9190613e73565b60405180910390a35b5b50505050565b60006136ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a70565b905092915050565b60008290506000600267ffffffffffffffff81111561371757613716614a11565b5b6040519080825280602002602001820160405280156137455781602001602082028036833780820191505090505b509050308160008151811061375d5761375c614a40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138069190614a84565b8160018151811061381a57613819614a40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42613883919061482c565b6040518663ffffffff1660e01b81526004016138a3959493929190614baa565b600060405180830381600087803b1580156138bd57600080fd5b505af11580156138d1573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c42613911919061482c565b6040518863ffffffff1660e01b815260040161393296959493929190614c04565b60606040518083038185885af1158015613950573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139759190614c7a565b5050505050505050565b6139a860125461399a60165484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601a60008282546139b9919061482c565b925050819055506139e96012546139db60175484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601b60008282546139fa919061482c565b9250508190555050565b613a5681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613af69190613e73565b60405180910390a35050565b613b2b601254613b1d60185484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601a6000828254613b3c919061482c565b92505081905550613b6c601254613b5e60195484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601b6000828254613b7d919061482c565b9250508190555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bb782613b8c565b9050919050565b613bc781613bac565b8114613bd257600080fd5b50565b600081359050613be481613bbe565b92915050565b60008115159050919050565b613bff81613bea565b8114613c0a57600080fd5b50565b600081359050613c1c81613bf6565b92915050565b60008060408385031215613c3957613c38613b87565b5b6000613c4785828601613bd5565b9250506020613c5885828601613c0d565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c9c578082015181840152602081019050613c81565b83811115613cab576000848401525b50505050565b6000601f19601f8301169050919050565b6000613ccd82613c62565b613cd78185613c6d565b9350613ce7818560208601613c7e565b613cf081613cb1565b840191505092915050565b60006020820190508181036000830152613d158184613cc2565b905092915050565b6000819050919050565b6000613d42613d3d613d3884613b8c565b613d1d565b613b8c565b9050919050565b6000613d5482613d27565b9050919050565b6000613d6682613d49565b9050919050565b613d7681613d5b565b82525050565b6000602082019050613d916000830184613d6d565b92915050565b6000819050919050565b613daa81613d97565b8114613db557600080fd5b50565b600081359050613dc781613da1565b92915050565b60008060408385031215613de457613de3613b87565b5b6000613df285828601613bd5565b9250506020613e0385828601613db8565b9150509250929050565b613e1681613bea565b82525050565b6000602082019050613e316000830184613e0d565b92915050565b600060208284031215613e4d57613e4c613b87565b5b6000613e5b84828501613c0d565b91505092915050565b613e6d81613d97565b82525050565b6000602082019050613e886000830184613e64565b92915050565b600080600060608486031215613ea757613ea6613b87565b5b6000613eb586828701613bd5565b9350506020613ec686828701613bd5565b9250506040613ed786828701613db8565b9150509250925092565b600060ff82169050919050565b613ef781613ee1565b82525050565b6000602082019050613f126000830184613eee565b92915050565b600060208284031215613f2e57613f2d613b87565b5b6000613f3c84828501613bd5565b91505092915050565b613f4e81613bac565b82525050565b6000602082019050613f696000830184613f45565b92915050565b600060208284031215613f8557613f84613b87565b5b6000613f9384828501613db8565b91505092915050565b60008060408385031215613fb357613fb2613b87565b5b6000613fc185828601613db8565b9250506020613fd285828601613db8565b9150509250929050565b60008060408385031215613ff357613ff2613b87565b5b600061400185828601613bd5565b925050602061401285828601613bd5565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614052602083613c6d565b915061405d8261401c565b602082019050919050565b6000602082019050818103600083015261408181614045565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140cf57607f821691505b602082108114156140e3576140e2614088565b5b50919050565b7f4e543a2073686f756c642062652067726561746572207468616e20302e312500600082015250565b600061411f601f83613c6d565b915061412a826140e9565b602082019050919050565b6000602082019050818103600083015261414e81614112565b9050919050565b7f4e543a20616c726561647920656e61626c656400000000000000000000000000600082015250565b600061418b601383613c6d565b915061419682614155565b602082019050919050565b600060208201905081810360008301526141ba8161417e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061422a82613d97565b915061423583613d97565b925082614245576142446141c1565b5b828204905092915050565b7f4e543a2063616e2774206265206d6f7265207468616e20313025000000000000600082015250565b6000614286601a83613c6d565b915061429182614250565b602082019050919050565b600060208201905081810360008301526142b581614279565b9050919050565b7f4e543a2063616e27742062652030000000000000000000000000000000000000600082015250565b60006142f2600e83613c6d565b91506142fd826142bc565b602082019050919050565b60006020820190508181036000830152614321816142e5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614384602683613c6d565b915061438f82614328565b604082019050919050565b600060208201905081810360008301526143b381614377565b9050919050565b7f4e543a20617070726f76652066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614416602183613c6d565b9150614421826143ba565b604082019050919050565b6000602082019050818103600083015261444581614409565b9050919050565b7f4e543a20617070726f766520746f20746865207a65726f206164647265737300600082015250565b6000614482601f83613c6d565b915061448d8261444c565b602082019050919050565b600060208201905081810360008301526144b181614475565b9050919050565b7f4e543a207472616e736665722066726f6d20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614514602283613c6d565b915061451f826144b8565b604082019050919050565b6000602082019050818103600083015261454381614507565b9050919050565b7f4e543a207472616e7366657220746f20746865207a65726f2061646472657373600082015250565b6000614580602083613c6d565b915061458b8261454a565b602082019050919050565b600060208201905081810360008301526145af81614573565b9050919050565b7f4e543a20416d6f756e74206d7573742062652067726561746572207468616e2060008201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b6000614612602483613c6d565b915061461d826145b6565b604082019050919050565b6000602082019050818103600083015261464181614605565b9050919050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b600061467e600c83613c6d565b915061468982614648565b602082019050919050565b600060208201905081810360008301526146ad81614671565b9050919050565b7f4e543a206d61782074786e206c696d6974206578636565647300000000000000600082015250565b60006146ea601983613c6d565b91506146f5826146b4565b602082019050919050565b60006020820190508181036000830152614719816146dd565b9050919050565b7f4e543a2074726164696e672069732064697361626c6500000000000000000000600082015250565b6000614756601683613c6d565b915061476182614720565b602082019050919050565b6000602082019050818103600083015261478581614749565b9050919050565b7f4e543a206d617820686f6c64206c696d69742065786365656473000000000000600082015250565b60006147c2601a83613c6d565b91506147cd8261478c565b602082019050919050565b600060208201905081810360008301526147f1816147b5565b9050919050565b600061480382613d97565b915061480e83613d97565b925082821015614821576148206141f0565b5b828203905092915050565b600061483782613d97565b915061484283613d97565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614877576148766141f0565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006148b8601b83613c6d565b91506148c382614882565b602082019050919050565b600060208201905081810360008301526148e7816148ab565b9050919050565b60006148f982613d97565b915061490483613d97565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561493d5761493c6141f0565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006149a4602183613c6d565b91506149af82614948565b604082019050919050565b600060208201905081810360008301526149d381614997565b9050919050565b60006060820190506149ef6000830186613e64565b6149fc6020830185613e64565b614a096040830184613e64565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614a7e81613bbe565b92915050565b600060208284031215614a9a57614a99613b87565b5b6000614aa884828501614a6f565b91505092915050565b6000819050919050565b6000614ad6614ad1614acc84614ab1565b613d1d565b613d97565b9050919050565b614ae681614abb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b2181613bac565b82525050565b6000614b338383614b18565b60208301905092915050565b6000602082019050919050565b6000614b5782614aec565b614b618185614af7565b9350614b6c83614b08565b8060005b83811015614b9d578151614b848882614b27565b9750614b8f83614b3f565b925050600181019050614b70565b5085935050505092915050565b600060a082019050614bbf6000830188613e64565b614bcc6020830187614add565b8181036040830152614bde8186614b4c565b9050614bed6060830185613f45565b614bfa6080830184613e64565b9695505050505050565b600060c082019050614c196000830189613f45565b614c266020830188613e64565b614c336040830187614add565b614c406060830186614add565b614c4d6080830185613f45565b614c5a60a0830184613e64565b979650505050505050565b600081519050614c7481613da1565b92915050565b600080600060608486031215614c9357614c92613b87565b5b6000614ca186828701614c65565b9350506020614cb286828701614c65565b9250506040614cc386828701614c65565b915050925092509256fe4e543a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654e543a2064656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726fa2646970667358221220f0c1c204e9ca339151e1dba74cf3a2323bd5d48e242e4a99a536bd1a0a49db1364736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c8063879dd3c511610190578063bf56b371116100dc578063ed42142911610095578063f2fde38b1161006f578063f2fde38b14610b71578063f4b3dbc314610b9a578063f9dfdaeb14610bd7578063fe6f1b0514610c00576102ef565b8063ed42142914610ae0578063f097ea1a14610b1d578063f242ab4114610b46576102ef565b8063bf56b371146109ce578063bf862391146109f9578063dd62ed3e14610a24578063e6c84dc614610a61578063ea5b9e8514610a8c578063ec44acf214610ab5576102ef565b80639b6a275011610149578063a7c29b4011610123578063a7c29b4014610916578063a9059cbb1461093f578063b0bc2a2d1461097c578063be291dc6146109a5576102ef565b80639b6a275014610887578063a457c2d7146108b0578063a643c1a0146108ed576102ef565b8063879dd3c5146107875780638a8c523c146107b25780638da5cb5b146107c957806395d89b41146107f457806399b102b51461081f5780639a36dfa11461085c576102ef565b80633bbac5791161024f57806375f0a874116102085780637d99c66d116101e25780637d99c66d146106cb578063844af78e146106f657806384ea21bc146107215780638756aabd1461075e576102ef565b806375f0a8741461064a57806379777b4e146106755780637c6a9a9c146106a0576102ef565b80633bbac579146105285780635342acb414610565578063679a3c59146105a2578063681aa362146105cb57806370a08231146105f6578063715018a614610633576102ef565b80631884f1e6116102a15780631884f1e61461040457806323b872dd1461042f5780632d1293901461046c578063313ce567146104955780633326d7f2146104c057806339509351146104eb576102ef565b806303c0f5d4146102f457806306fdde031461031d5780630758d92414610348578063095ea7b3146103735780630a2d140c146103b057806318160ddd146103d9576102ef565b366102ef57005b600080fd5b34801561030057600080fd5b5061031b60048036038101906103169190613c22565b610c2b565b005b34801561032957600080fd5b50610332610d1b565b60405161033f9190613cfb565b60405180910390f35b34801561035457600080fd5b5061035d610dad565b60405161036a9190613d7c565b60405180910390f35b34801561037f57600080fd5b5061039a60048036038101906103959190613dcd565b610dd3565b6040516103a79190613e1c565b60405180910390f35b3480156103bc57600080fd5b506103d760048036038101906103d29190613e37565b610df1565b005b3480156103e557600080fd5b506103ee610ea3565b6040516103fb9190613e73565b60405180910390f35b34801561041057600080fd5b50610419610ead565b6040516104269190613e73565b60405180910390f35b34801561043b57600080fd5b5061045660048036038101906104519190613e8e565b610eb3565b6040516104639190613e1c565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e9190613c22565b610f8c565b005b3480156104a157600080fd5b506104aa61107c565b6040516104b79190613efd565b60405180910390f35b3480156104cc57600080fd5b506104d5611093565b6040516104e29190613e73565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d9190613dcd565b611099565b60405161051f9190613e1c565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190613f18565b61114c565b60405161055c9190613e1c565b60405180910390f35b34801561057157600080fd5b5061058c60048036038101906105879190613f18565b61116c565b6040516105999190613e1c565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c49190613f18565b61118c565b005b3480156105d757600080fd5b506105e061126b565b6040516105ed9190613e73565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190613f18565b611271565b60405161062a9190613e73565b60405180910390f35b34801561063f57600080fd5b506106486112ba565b005b34801561065657600080fd5b5061065f61140d565b60405161066c9190613f54565b60405180910390f35b34801561068157600080fd5b5061068a611433565b6040516106979190613e1c565b60405180910390f35b3480156106ac57600080fd5b506106b5611446565b6040516106c29190613e73565b60405180910390f35b3480156106d757600080fd5b506106e061144c565b6040516106ed9190613e73565b60405180910390f35b34801561070257600080fd5b5061070b611452565b6040516107189190613e73565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190613f18565b611458565b6040516107559190613e1c565b60405180910390f35b34801561076a57600080fd5b5061078560048036038101906107809190613f6f565b611478565b005b34801561079357600080fd5b5061079c611570565b6040516107a99190613e1c565b60405180910390f35b3480156107be57600080fd5b506107c7611583565b005b3480156107d557600080fd5b506107de6116c2565b6040516107eb9190613f54565b60405180910390f35b34801561080057600080fd5b506108096116eb565b6040516108169190613cfb565b60405180910390f35b34801561082b57600080fd5b5061084660048036038101906108419190613f18565b61177d565b6040516108539190613e1c565b60405180910390f35b34801561086857600080fd5b5061087161179d565b60405161087e9190613e73565b60405180910390f35b34801561089357600080fd5b506108ae60048036038101906108a99190613f6f565b6117a3565b005b3480156108bc57600080fd5b506108d760048036038101906108d29190613dcd565b611894565b6040516108e49190613e1c565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f9190613f18565b611961565b005b34801561092257600080fd5b5061093d60048036038101906109389190613c22565b611a3a565b005b34801561094b57600080fd5b5061096660048036038101906109619190613dcd565b611b2a565b6040516109739190613e1c565b60405180910390f35b34801561098857600080fd5b506109a3600480360381019061099e9190613e37565b611b48565b005b3480156109b157600080fd5b506109cc60048036038101906109c79190613f9c565b611bfa565b005b3480156109da57600080fd5b506109e3611d0b565b6040516109f09190613e73565b60405180910390f35b348015610a0557600080fd5b50610a0e611d11565b604051610a1b9190613e73565b60405180910390f35b348015610a3057600080fd5b50610a4b6004803603810190610a469190613fdc565b611d17565b604051610a589190613e73565b60405180910390f35b348015610a6d57600080fd5b50610a76611d9e565b604051610a839190613e73565b60405180910390f35b348015610a9857600080fd5b50610ab36004803603810190610aae9190613c22565b611da4565b005b348015610ac157600080fd5b50610aca611e94565b604051610ad79190613e1c565b60405180910390f35b348015610aec57600080fd5b50610b076004803603810190610b029190613f6f565b611ea7565b604051610b149190613e73565b60405180910390f35b348015610b2957600080fd5b50610b446004803603810190610b3f9190613f6f565b611ef2565b005b348015610b5257600080fd5b50610b5b611fd4565b604051610b689190613f54565b60405180910390f35b348015610b7d57600080fd5b50610b986004803603810190610b939190613f18565b611ffa565b005b348015610ba657600080fd5b50610bc16004803603810190610bbc9190613f6f565b6121bc565b604051610bce9190613e73565b60405180910390f35b348015610be357600080fd5b50610bfe6004803603810190610bf99190613f9c565b612207565b005b348015610c0c57600080fd5b50610c15612318565b604051610c229190613e73565b60405180910390f35b610c33612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb790614068565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060078054610d2a906140b7565b80601f0160208091040260200160405190810160405280929190818152602001828054610d56906140b7565b8015610da35780601f10610d7857610100808354040283529160200191610da3565b820191906000526020600020905b815481529060010190602001808311610d8657829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610de7610de0612368565b8484612370565b6001905092915050565b610df9612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7d90614068565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6000600a54905090565b600e5481565b6000610ec084848461253b565b610f8184610ecc612368565b610f7c85604051806060016040528060258152602001614cce60259139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f32612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b612370565b600190509392505050565b610f94612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101890614068565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600960009054906101000a900460ff16905090565b60165481565b60006111426110a6612368565b8461113d85600260006110b7612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b612370565b6001905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b611194612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890614068565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611267573d6000803e3d6000fd5b5050565b60105481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112c2612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134690614068565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900460ff1681565b60175481565b60135481565b60195481565b60056020528060005260406000206000915054906101000a900460ff1681565b611480612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150490614068565b60405180910390fd5b611524601254600a5461231e90919063ffffffff16565b811015611566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155d90614135565b60405180910390fd5b80600f8190555050565b601560019054906101000a900460ff1681565b61158b612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f90614068565b60405180910390fd5b601560029054906101000a900460ff1615611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f906141a1565b60405180910390fd5b6001601560026101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560006101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600880546116fa906140b7565b80601f0160208091040260200160405190810160405280929190818152602001828054611726906140b7565b80156117735780601f1061174857610100808354040283529160200191611773565b820191906000526020600020905b81548152906001019060200180831161175657829003601f168201915b5050505050905090565b60046020528060005260406000206000915054906101000a900460ff1681565b600f5481565b6117ab612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f90614068565b60405180910390fd5b601254600a54611848919061421f565b81101561188a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188190614135565b60405180910390fd5b8060108190555050565b60006119576118a1612368565b8461195285604051806060016040528060258152602001614cf360259139600260006118cb612368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b612370565b6001905092915050565b611969612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ed90614068565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611a42612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac690614068565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611b3e611b37612368565b848461253b565b6001905092915050565b611b50612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490614068565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b611c02612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8690614068565b60405180910390fd5b8160198190555080601881905550611cb3600a60125461231e90919063ffffffff16565b611cc68284612ad490919063ffffffff16565b1115611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe9061429c565b60405180910390fd5b5050565b60145481565b60115481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60185481565b611dac612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3090614068565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560029054906101000a900460ff1681565b600080611ee7601254611ed9611eca601654601754612ad490919063ffffffff16565b86612b3290919063ffffffff16565b61231e90919063ffffffff16565b905080915050919050565b611efa612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7e90614068565b60405180910390fd5b60008111611fca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc190614308565b60405180910390fd5b80600e8190555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612002612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208690614068565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f69061439a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806121fc6012546121ee6121df601854601954612ad490919063ffffffff16565b86612b3290919063ffffffff16565b61231e90919063ffffffff16565b905080915050919050565b61220f612368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461229c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229390614068565b60405180910390fd5b81601781905550806016819055506122c0600a60125461231e90919063ffffffff16565b6122d38284612ad490919063ffffffff16565b1115612314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230b9061429c565b60405180910390fd5b5050565b60125481565b600061236083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bad565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d79061442c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244790614498565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161252e9190613e73565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a29061452a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561261b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261290614596565b60405180910390fd5b6000811161265e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265590614628565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156126eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e290614694565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561278f5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156128da576010548111156127d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d090614700565b60405180910390fd5b601560029054906101000a900460ff166128d9578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561289957508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b6128d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cf9061476c565b60405180910390fd5b5b5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661298b57600f546129498261293b85611271565b612ad490919063ffffffff16565b111561298a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612981906147d8565b60405180910390fd5b5b6129958383612c10565b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612a3c5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612a545750601560019054906101000a900460ff16155b15612a5e57600090505b612a6a84848484612f48565b50505050565b6000838311158290612ab8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aaf9190613cfb565b60405180910390fd5b5060008385612ac791906147f8565b9050809150509392505050565b6000808284612ae3919061482c565b905083811015612b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1f906148ce565b60405180910390fd5b8091505092915050565b600080831415612b455760009050612ba7565b60008284612b5391906148ee565b9050828482612b62919061421f565b14612ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b99906149ba565b60405180910390fd5b809150505b92915050565b60008083118290612bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612beb9190613cfb565b60405180910390fd5b5060008385612c03919061421f565b9050809150509392505050565b6000612c29601b54601a54612ad490919063ffffffff16565b1415612c3457612f44565b6000612c3f30611271565b90506000600e548210159050808015612ca65750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612cbe5750601560009054906101000a900460ff165b8015612d4f57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612d4d5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b15612f4157612d8130600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612370565b6000612d996002601a5461231e90919063ffffffff16565b90506000612db282601a546136ab90919063ffffffff16565b90506000612dc982866136ab90919063ffffffff16565b90506000479050612dfc600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836136f5565b6000612e1182476136ab90919063ffffffff16565b90506000612e3a84612e2c8885612b3290919063ffffffff16565b61231e90919063ffffffff16565b90506000811115612eb157612e75600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead87846138db565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868287604051612ea8939291906149da565b60405180910390a15b60004790506000811115612f2957600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f27573d6000803e3d6000fd5b505b6000601a819055506000601b81905550505050505050505b50505b5050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148015612fa25750805b1561327a57600080601354601454612fba919061482c565b421080156130165750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b156130795761304460125461303660115487612b3290919063ffffffff16565b61231e90919063ffffffff16565b915081601b6000828254613058919061482c565b9250508190555061307282856136ab90919063ffffffff16565b90506130a3565b61308284611ea7565b915061309782856136ab90919063ffffffff16565b90506130a28461397f565b5b61312c846040518060400160405280601881526020017f4e543a20696e73756666696369656e742062616c616e63650000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506131c181600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132619190613e73565b60405180910390a36132738683613a04565b50506136a5565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156132d45750805b156134dd5760006132e4836121bc565b905060006132fb82856136ab90919063ffffffff16565b9050613386846040518060400160405280601881526020017f4e543a20696e73756666696369656e742062616c616e63650000000000000000815250600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061341b81600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134bb9190613e73565b60405180910390a36134cd8683613a04565b6134d684613b02565b50506136a4565b613566826040518060400160405280601881526020017f4e543a20696e73756666696369656e742062616c616e63650000000000000000815250600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a709092919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506135fb82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161369b9190613e73565b60405180910390a35b5b50505050565b60006136ed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a70565b905092915050565b60008290506000600267ffffffffffffffff81111561371757613716614a11565b5b6040519080825280602002602001820160405280156137455781602001602082028036833780820191505090505b509050308160008151811061375d5761375c614a40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138069190614a84565b8160018151811061381a57613819614a40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42613883919061482c565b6040518663ffffffff1660e01b81526004016138a3959493929190614baa565b600060405180830381600087803b1580156138bd57600080fd5b505af11580156138d1573d6000803e3d6000fd5b5050505050505050565b60008490508073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330866000808a61012c42613911919061482c565b6040518863ffffffff1660e01b815260040161393296959493929190614c04565b60606040518083038185885af1158015613950573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906139759190614c7a565b5050505050505050565b6139a860125461399a60165484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601a60008282546139b9919061482c565b925050819055506139e96012546139db60175484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601b60008282546139fa919061482c565b9250508190555050565b613a5681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ad490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613af69190613e73565b60405180910390a35050565b613b2b601254613b1d60185484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601a6000828254613b3c919061482c565b92505081905550613b6c601254613b5e60195484612b3290919063ffffffff16565b61231e90919063ffffffff16565b601b6000828254613b7d919061482c565b9250508190555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bb782613b8c565b9050919050565b613bc781613bac565b8114613bd257600080fd5b50565b600081359050613be481613bbe565b92915050565b60008115159050919050565b613bff81613bea565b8114613c0a57600080fd5b50565b600081359050613c1c81613bf6565b92915050565b60008060408385031215613c3957613c38613b87565b5b6000613c4785828601613bd5565b9250506020613c5885828601613c0d565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c9c578082015181840152602081019050613c81565b83811115613cab576000848401525b50505050565b6000601f19601f8301169050919050565b6000613ccd82613c62565b613cd78185613c6d565b9350613ce7818560208601613c7e565b613cf081613cb1565b840191505092915050565b60006020820190508181036000830152613d158184613cc2565b905092915050565b6000819050919050565b6000613d42613d3d613d3884613b8c565b613d1d565b613b8c565b9050919050565b6000613d5482613d27565b9050919050565b6000613d6682613d49565b9050919050565b613d7681613d5b565b82525050565b6000602082019050613d916000830184613d6d565b92915050565b6000819050919050565b613daa81613d97565b8114613db557600080fd5b50565b600081359050613dc781613da1565b92915050565b60008060408385031215613de457613de3613b87565b5b6000613df285828601613bd5565b9250506020613e0385828601613db8565b9150509250929050565b613e1681613bea565b82525050565b6000602082019050613e316000830184613e0d565b92915050565b600060208284031215613e4d57613e4c613b87565b5b6000613e5b84828501613c0d565b91505092915050565b613e6d81613d97565b82525050565b6000602082019050613e886000830184613e64565b92915050565b600080600060608486031215613ea757613ea6613b87565b5b6000613eb586828701613bd5565b9350506020613ec686828701613bd5565b9250506040613ed786828701613db8565b9150509250925092565b600060ff82169050919050565b613ef781613ee1565b82525050565b6000602082019050613f126000830184613eee565b92915050565b600060208284031215613f2e57613f2d613b87565b5b6000613f3c84828501613bd5565b91505092915050565b613f4e81613bac565b82525050565b6000602082019050613f696000830184613f45565b92915050565b600060208284031215613f8557613f84613b87565b5b6000613f9384828501613db8565b91505092915050565b60008060408385031215613fb357613fb2613b87565b5b6000613fc185828601613db8565b9250506020613fd285828601613db8565b9150509250929050565b60008060408385031215613ff357613ff2613b87565b5b600061400185828601613bd5565b925050602061401285828601613bd5565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614052602083613c6d565b915061405d8261401c565b602082019050919050565b6000602082019050818103600083015261408181614045565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806140cf57607f821691505b602082108114156140e3576140e2614088565b5b50919050565b7f4e543a2073686f756c642062652067726561746572207468616e20302e312500600082015250565b600061411f601f83613c6d565b915061412a826140e9565b602082019050919050565b6000602082019050818103600083015261414e81614112565b9050919050565b7f4e543a20616c726561647920656e61626c656400000000000000000000000000600082015250565b600061418b601383613c6d565b915061419682614155565b602082019050919050565b600060208201905081810360008301526141ba8161417e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061422a82613d97565b915061423583613d97565b925082614245576142446141c1565b5b828204905092915050565b7f4e543a2063616e2774206265206d6f7265207468616e20313025000000000000600082015250565b6000614286601a83613c6d565b915061429182614250565b602082019050919050565b600060208201905081810360008301526142b581614279565b9050919050565b7f4e543a2063616e27742062652030000000000000000000000000000000000000600082015250565b60006142f2600e83613c6d565b91506142fd826142bc565b602082019050919050565b60006020820190508181036000830152614321816142e5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614384602683613c6d565b915061438f82614328565b604082019050919050565b600060208201905081810360008301526143b381614377565b9050919050565b7f4e543a20617070726f76652066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614416602183613c6d565b9150614421826143ba565b604082019050919050565b6000602082019050818103600083015261444581614409565b9050919050565b7f4e543a20617070726f766520746f20746865207a65726f206164647265737300600082015250565b6000614482601f83613c6d565b915061448d8261444c565b602082019050919050565b600060208201905081810360008301526144b181614475565b9050919050565b7f4e543a207472616e736665722066726f6d20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614514602283613c6d565b915061451f826144b8565b604082019050919050565b6000602082019050818103600083015261454381614507565b9050919050565b7f4e543a207472616e7366657220746f20746865207a65726f2061646472657373600082015250565b6000614580602083613c6d565b915061458b8261454a565b602082019050919050565b600060208201905081810360008301526145af81614573565b9050919050565b7f4e543a20416d6f756e74206d7573742062652067726561746572207468616e2060008201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b6000614612602483613c6d565b915061461d826145b6565b604082019050919050565b6000602082019050818103600083015261464181614605565b9050919050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b600061467e600c83613c6d565b915061468982614648565b602082019050919050565b600060208201905081810360008301526146ad81614671565b9050919050565b7f4e543a206d61782074786e206c696d6974206578636565647300000000000000600082015250565b60006146ea601983613c6d565b91506146f5826146b4565b602082019050919050565b60006020820190508181036000830152614719816146dd565b9050919050565b7f4e543a2074726164696e672069732064697361626c6500000000000000000000600082015250565b6000614756601683613c6d565b915061476182614720565b602082019050919050565b6000602082019050818103600083015261478581614749565b9050919050565b7f4e543a206d617820686f6c64206c696d69742065786365656473000000000000600082015250565b60006147c2601a83613c6d565b91506147cd8261478c565b602082019050919050565b600060208201905081810360008301526147f1816147b5565b9050919050565b600061480382613d97565b915061480e83613d97565b925082821015614821576148206141f0565b5b828203905092915050565b600061483782613d97565b915061484283613d97565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614877576148766141f0565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006148b8601b83613c6d565b91506148c382614882565b602082019050919050565b600060208201905081810360008301526148e7816148ab565b9050919050565b60006148f982613d97565b915061490483613d97565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561493d5761493c6141f0565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006149a4602183613c6d565b91506149af82614948565b604082019050919050565b600060208201905081810360008301526149d381614997565b9050919050565b60006060820190506149ef6000830186613e64565b6149fc6020830185613e64565b614a096040830184613e64565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614a7e81613bbe565b92915050565b600060208284031215614a9a57614a99613b87565b5b6000614aa884828501614a6f565b91505092915050565b6000819050919050565b6000614ad6614ad1614acc84614ab1565b613d1d565b613d97565b9050919050565b614ae681614abb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614b2181613bac565b82525050565b6000614b338383614b18565b60208301905092915050565b6000602082019050919050565b6000614b5782614aec565b614b618185614af7565b9350614b6c83614b08565b8060005b83811015614b9d578151614b848882614b27565b9750614b8f83614b3f565b925050600181019050614b70565b5085935050505092915050565b600060a082019050614bbf6000830188613e64565b614bcc6020830187614add565b8181036040830152614bde8186614b4c565b9050614bed6060830185613f45565b614bfa6080830184613e64565b9695505050505050565b600060c082019050614c196000830189613f45565b614c266020830188613e64565b614c336040830187614add565b614c406060830186614add565b614c4d6080830185613f45565b614c5a60a0830184613e64565b979650505050505050565b600081519050614c7481613da1565b92915050565b600080600060608486031215614c9357614c92613b87565b5b6000614ca186828701614c65565b9350506020614cb286828701614c65565b9250506040614cc386828701614c65565b915050925092509256fe4e543a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654e543a2064656372656173656420616c6c6f77616e6365206f722062656c6f77207a65726fa2646970667358221220f0c1c204e9ca339151e1dba74cf3a2323bd5d48e242e4a99a536bd1a0a49db1364736f6c634300080a0033

Deployed Bytecode Sourcemap

3176:16147:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11235:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6729:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3891:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7640:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10874:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7006:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3993:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7841:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9344:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6915:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4667:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8292:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3568:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3390:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11620:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4199:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7114:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2723:157;;;;;;;;;;;;;:::i;:::-;;3954:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4450:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4751:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4370:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4930:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3505:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9686:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4546:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11373:239;;;;;;;;;;;;;:::i;:::-;;2509:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6820:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3446:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4101:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9931:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8600:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11104:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9173:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7241:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10997:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10521:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4416:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4293:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7448:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4845:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9008:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4596:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11757:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9523:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3925:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2888:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11997:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10171:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4327:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11235:130;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11351:6:::1;11335:5;:13;11341:6;11335:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;11235:130:::0;;:::o;6729:83::-;6766:13;6799:5;6792:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6729:83;:::o;3891:27::-;;;;;;;;;;;;;:::o;7640:193::-;7742:4;7764:39;7773:12;:10;:12::i;:::-;7787:7;7796:6;7764:8;:39::i;:::-;7821:4;7814:11;;7640:193;;;;:::o;10874:115::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10975:6:::1;10946:26;;:35;;;;;;;;;;;;;;;;;;10874:115:::0;:::o;7006:100::-;7059:7;7086:12;;7079:19;;7006:100;:::o;3993:53::-;;;;:::o;7841:443::-;7973:4;7990:36;8000:6;8008:9;8019:6;7990:9;:36::i;:::-;8037:217;8060:6;8081:12;:10;:12::i;:::-;8108:135;8164:6;8108:135;;;;;;;;;;;;;;;;;:11;:19;8120:6;8108:19;;;;;;;;;;;;;;;:33;8128:12;:10;:12::i;:::-;8108:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;8037:8;:217::i;:::-;8272:4;8265:11;;7841:443;;;;;:::o;9344:171::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9502:5:::1;9466:24;:33;9491:7;9466:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;9344:171:::0;;:::o;6915:83::-;6956:5;6981:9;;;;;;;;;;;6974:16;;6915:83;:::o;4667:40::-;;;;:::o;8292:300::-;8407:4;8429:133;8452:12;:10;:12::i;:::-;8479:7;8501:50;8540:10;8501:11;:25;8513:12;:10;:12::i;:::-;8501:25;;;;;;;;;;;;;;;:34;8527:7;8501:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;8429:8;:133::i;:::-;8580:4;8573:11;;8292:300;;;;:::o;3568:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;3390:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;11620:129::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11699:9:::1;11691:27;;:50;11719:21;11691:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11620:129:::0;:::o;4199:50::-;;;;:::o;7114:119::-;7180:7;7207:9;:18;7217:7;7207:18;;;;;;;;;;;;;;;;7200:25;;7114:119;;;:::o;2723:157::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2830:1:::1;2793:40;;2814:6;::::0;::::1;;;;;;;;2793:40;;;;;;;;;;;;2869:1;2844:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;2723:157::o:0;3954:30::-;;;;;;;;;;;;;:::o;4450:38::-;;;;;;;;;;;;;:::o;4751:40::-;;;;:::o;4370:39::-;;;;:::o;4930:41::-;;;;:::o;3505:56::-;;;;;;;;;;;;;;;;;;;;;;:::o;9686:237::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9791:32:::1;9808:14;;9791:12;;:16;;:32;;;;:::i;:::-;9780:7;:43;;9758:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;9908:7;9893:12;:22;;;;9686:237:::0;:::o;4546:22::-;;;;;;;;;;;;;:::o;11373:239::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11437:7:::1;;;;;;;;;;;11436:8;11428:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;11489:4;11479:7;;:14;;;;;;;;;;;;;;;;;;11517:4;11504:10;;:17;;;;;;;;;;;;;;;;;;11561:4;11532:26;;:33;;;;;;;;;;;;;;;;;;11589:15;11576:10;:28;;;;11373:239::o:0;2509:79::-;2547:7;2574:6;;;;;;;;;;;2567:13;;2509:79;:::o;6820:87::-;6859:13;6892:7;6885:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6820:87;:::o;3446:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;4101:51::-;;;;:::o;9931:232::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10050:14:::1;;10035:12;;:29;;;;:::i;:::-;10024:7;:40;;10002:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;10148:7;10134:11;:21;;;;9931:232:::0;:::o;8600:400::-;8720:4;8742:228;8765:12;:10;:12::i;:::-;8792:7;8814:145;8871:15;8814:145;;;;;;;;;;;;;;;;;:11;:25;8826:12;:10;:12::i;:::-;8814:25;;;;;;;;;;;;;;;:34;8840:7;8814:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;8742:8;:228::i;:::-;8988:4;8981:11;;8600:400;;;;:::o;11104:123::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11203:16:::1;11185:15;;:34;;;;;;;;;;;;;;;;;;11104:123:::0;:::o;9173:163::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9323:5:::1;9291:20;:29;9312:7;9291:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;9173:163:::0;;:::o;7241:199::-;7346:4;7368:42;7378:12;:10;:12::i;:::-;7392:9;7403:6;7368:9;:42::i;:::-;7428:4;7421:11;;7241:199;;;;:::o;10997:99::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11082:6:::1;11069:10;;:19;;;;;;;;;;;;;;;;;;10997:99:::0;:::o;10521:345::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10666:6:::1;10642:21;:30;;;;10707:13;10683:21;:37;;;;10782:22;10801:2;10782:14;;:18;;:22;;;;:::i;:::-;10753:25;10764:13;10753:6;:10;;:25;;;;:::i;:::-;:51;;10731:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;10521:345:::0;;:::o;4416:25::-;;;;:::o;4293:27::-;;;;:::o;7448:184::-;7565:7;7597:11;:18;7609:5;7597:18;;;;;;;;;;;;;;;:27;7616:7;7597:27;;;;;;;;;;;;;;;;7590:34;;7448:184;;;;:::o;4845:41::-;;;;:::o;9008:157::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9152:5:::1;9123:17;:26;9141:7;9123:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9008:157:::0;;:::o;4596:19::-;;;;;;;;;;;;;:::o;11757:232::-;11820:7;11840:11;11854:106;11945:14;;11854:72;11879:46;11904:20;;11879;;:24;;:46;;;;:::i;:::-;11854:6;:24;;:72;;;;:::i;:::-;:90;;:106;;;;:::i;:::-;11840:120;;11978:3;11971:10;;;11757:232;;;:::o;9523:155::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9615:1:::1;9605:7;:11;9597:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9663:7;9646:14;:24;;;;9523:155:::0;:::o;3925:22::-;;;;;;;;;;;;;:::o;2888:281::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3011:1:::1;2991:22;;:8;:22;;;;2969:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3124:8;3095:38;;3116:6;::::0;::::1;;;;;;;;3095:38;;;;;;;;;;;;3153:8;3144:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2888:281:::0;:::o;11997:235::-;12061:7;12081:11;12095:108;12188:14;;12095:74;12120:48;12146:21;;12120;;:25;;:48;;;;:::i;:::-;12095:6;:24;;:74;;;;:::i;:::-;:92;;:108;;;;:::i;:::-;12081:122;;12221:3;12214:10;;;11997:235;;;:::o;10171:342::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10314:6:::1;10291:20;:29;;;;10354:13;10331:20;:36;;;;10429:22;10448:2;10429:14;;:18;;:22;;;;:::i;:::-;10400:25;10411:13;10400:6;:10;;:25;;;;:::i;:::-;:51;;10378:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;10171:342:::0;;:::o;4327:36::-;;;;:::o;21619:132::-;21677:7;21704:39;21708:1;21711;21704:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;21697:46;;21619:132;;;;:::o;1845:115::-;1898:15;1941:10;1926:26;;1845:115;:::o;12240:365::-;12384:1;12367:19;;:5;:19;;;;12359:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12462:1;12443:21;;:7;:21;;;;12435:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12543:6;12513:11;:18;12525:5;12513:18;;;;;;;;;;;;;;;:27;12532:7;12513:27;;;;;;;;;;;;;;;:36;;;;12581:7;12565:32;;12574:5;12565:32;;;12590:6;12565:32;;;;;;:::i;:::-;;;;;;;;12240:365;;;:::o;12613:1467::-;12751:1;12735:18;;:4;:18;;;;12727:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12825:1;12811:16;;:2;:16;;;;12803:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;12892:1;12883:6;:10;12875:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;12954:5;:11;12960:4;12954:11;;;;;;;;;;;;;;;;;;;;;;;;;12953:12;12945:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;12999:20;:26;13020:4;12999:26;;;;;;;;;;;;;;;;;;;;;;;;;12998:27;:56;;;;;13030:20;:24;13051:2;13030:24;;;;;;;;;;;;;;;;;;;;;;;;;13029:25;12998:56;12994:385;;;13089:11;;13079:6;:21;;13071:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13196:7;;;;;;;;;;;13191:177;;13265:4;13254:15;;:7;;;;;;;;;;;:15;;;;:32;;;;;13284:2;13273:13;;:7;;;;;;;;;;;:13;;;;13254:32;13224:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;13191:177;12994:385;13396:24;:28;13421:2;13396:28;;;;;;;;;;;;;;;;;;;;;;;;;13391:191;;13496:12;;13467:25;13485:6;13467:13;13477:2;13467:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;:41;;13441:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;13391:191;13623:30;13644:4;13650:2;13623:20;:30::i;:::-;13727:12;13742:4;13727:19;;13846:17;:23;13864:4;13846:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;13873:17;:21;13891:2;13873:21;;;;;;;;;;;;;;;;;;;;;;;;;13846:48;:63;;;;13899:10;;;;;;;;;;;13898:11;13846:63;13842:111;;;13936:5;13926:15;;13842:111;14031:41;14046:4;14052:2;14056:6;14064:7;14031:14;:41::i;:::-;12716:1364;12613:1467;;;:::o;20906:226::-;21026:7;21059:1;21054;:6;;21062:12;21046:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;21086:9;21102:1;21098;:5;;;;:::i;:::-;21086:17;;21123:1;21116:8;;;20906:226;;;;;:::o;20573:181::-;20631:7;20651:9;20667:1;20663;:5;;;;:::i;:::-;20651:17;;20692:1;20687;:6;;20679:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;20745:1;20738:8;;;20573:181;;;;:::o;21140:471::-;21198:7;21448:1;21443;:6;21439:47;;;21473:1;21466:8;;;;21439:47;21498:9;21514:1;21510;:5;;;;:::i;:::-;21498:17;;21543:1;21538;21534;:5;;;;:::i;:::-;:10;21526:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;21602:1;21595:8;;;21140:471;;;;;:::o;21759:312::-;21879:7;21911:1;21907;:5;21914:12;21899:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;21938:9;21954:1;21950;:5;;;;:::i;:::-;21938:17;;22062:1;22055:8;;;21759:312;;;;;:::o;16927:2393::-;17053:1;17005:44;17029:19;;17005;;:23;;:44;;;;:::i;:::-;:49;17002:61;;;17056:7;;17002:61;17351:28;17382:24;17400:4;17382:9;:24::i;:::-;17351:55;;17419:15;17461:14;;17437:20;:38;;17419:56;;17506:10;:42;;;;;17541:7;;;;;;;;;;;17533:15;;:4;:15;;;;17506:42;:85;;;;;17565:26;;;;;;;;;;;17506:85;:143;;;;;17626:4;17610:21;;:4;:21;;;:38;;;;;17641:7;;;;;;;;;;;17635:13;;:2;:13;;;17610:38;17608:41;17506:143;17488:1825;;;17724:65;17741:4;17756:9;;;;;;;;;;;17768:20;17724:8;:65::i;:::-;17806:21;17830:26;17854:1;17830:19;;:23;;:26;;;;:::i;:::-;17806:50;;17871:26;17900:38;17924:13;17900:19;;:23;;:38;;;;:::i;:::-;17871:67;;17955:30;17988:76;18031:18;17988:20;:24;;:76;;;;:::i;:::-;17955:109;;18081:21;18105;18081:45;;18193:66;18224:9;;;;;;;;;;;18236:22;18193;:66::i;:::-;18276:20;18299:40;18325:13;18299:21;:25;;:40;;;;:::i;:::-;18276:63;;18356:31;18390:95;18462:22;18390:49;18425:13;18390:12;:34;;:49;;;;:::i;:::-;:71;;:95;;;;:::i;:::-;18356:129;;18569:1;18543:23;:27;18539:442;;;18591:192;18640:9;;;;;;;;;;;3828:6;18700:18;18741:23;18591:18;:192::i;:::-;18809:156;18846:13;18882:23;18928:18;18809:156;;;;;;;;:::i;:::-;;;;;;;;18539:442;18997:23;19023:21;18997:47;;19131:1;19113:15;:19;19109:75;;;19142:15;;;;;;;;;;;19134:33;;:50;19168:15;19134:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19109:75;19262:1;19240:19;:23;;;;19300:1;19278:19;:23;;;;17676:1637;;;;;;;17488:1825;16991:2329;;16927:2393;;;:::o;14161:1962::-;14327:6;14316:17;;:7;;;;;;;;;;;:17;;;:28;;;;;14337:7;14316:28;14312:1804;;;14361:14;14390:23;14505:11;;14492:10;;:24;;;;:::i;:::-;14474:15;:42;:91;;;;;14555:9;;;;;;;;;;;14537:28;;:6;:28;;;;14474:91;14452:492;;;14609:38;14632:14;;14609:18;14620:6;;14609;:10;;:18;;;;:::i;:::-;:22;;:38;;;;:::i;:::-;14600:47;;14689:6;14666:19;;:29;;;;;;;:::i;:::-;;;;;;;;14732:18;14743:6;14732;:10;;:18;;;;:::i;:::-;14714:36;;14452:492;;;14800:24;14817:6;14800:16;:24::i;:::-;14791:33;;14861:18;14872:6;14861;:10;;:18;;;;:::i;:::-;14843:36;;14898:30;14921:6;14898:22;:30::i;:::-;14452:492;14980:106;15020:6;14980:106;;;;;;;;;;;;;;;;;:9;:17;14990:6;14980:17;;;;;;;;;;;;;;;;:21;;:106;;;;;:::i;:::-;14960:9;:17;14970:6;14960:17;;;;;;;;;;;;;;;:126;;;;15124:41;15149:15;15124:9;:20;15134:9;15124:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;15101:9;:20;15111:9;15101:20;;;;;;;;;;;;;;;:64;;;;15202:9;15185:44;;15194:6;15185:44;;;15213:15;15185:44;;;;;;:::i;:::-;;;;;;;;15246:28;15259:6;15267;15246:12;:28::i;:::-;14346:940;;14312:1804;;;15307:9;15296:20;;:7;;;;;;;;;;;:20;;;:31;;;;;15320:7;15296:31;15292:824;;;15344:14;15361:25;15379:6;15361:17;:25::i;:::-;15344:42;;15401:23;15427:18;15438:6;15427;:10;;:18;;;;:::i;:::-;15401:44;;15480:106;15520:6;15480:106;;;;;;;;;;;;;;;;;:9;:17;15490:6;15480:17;;;;;;;;;;;;;;;;:21;;:106;;;;;:::i;:::-;15460:9;:17;15470:6;15460:17;;;;;;;;;;;;;;;:126;;;;15624:41;15649:15;15624:9;:20;15634:9;15624:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;15601:9;:20;15611:9;15601:20;;;;;;;;;;;;;;;:64;;;;15702:9;15685:44;;15694:6;15685:44;;;15713:15;15685:44;;;;;;:::i;:::-;;;;;;;;15746:28;15759:6;15767;15746:12;:28::i;:::-;15789:31;15813:6;15789:23;:31::i;:::-;15329:503;;15292:824;;;15873:106;15913:6;15873:106;;;;;;;;;;;;;;;;;:9;:17;15883:6;15873:17;;;;;;;;;;;;;;;;:21;;:106;;;;;:::i;:::-;15853:9;:17;15863:6;15853:17;;;;;;;;;;;;;;;:126;;;;16017:32;16042:6;16017:9;:20;16027:9;16017:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15994:9;:20;16004:9;15994:20;;;;;;;;;;;;;;;:55;;;;16086:9;16069:35;;16078:6;16069:35;;;16097:6;16069:35;;;;;;:::i;:::-;;;;;;;;15292:824;14312:1804;14161:1962;;;;:::o;20762:136::-;20820:7;20847:43;20851:1;20854;20847:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;20840:50;;20762:136;;;;:::o;19419:603::-;19523:20;19557:13;19523:48;;19640:21;19678:1;19664:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19640:40;;19709:4;19691;19696:1;19691:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19735:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19725:4;19730:1;19725:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;19790:9;:60;;;19865:11;19891:1;19935:4;19962;20000:3;19982:15;:21;;;;:::i;:::-;19790:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19512:510;;19419:603;;:::o;20030:512::-;20193:20;20227:13;20193:48;;20284:9;:25;;;20317:9;20350:4;20370:11;20396:1;20439;20482:5;20520:3;20502:15;:21;;;;:::i;:::-;20284:250;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20182:360;20030:512;;;;:::o;16340:284::-;16430:76;16481:14;;16430:32;16441:20;;16430:6;:10;;:32;;;;:::i;:::-;:36;;:76;;;;:::i;:::-;16407:19;;:99;;;;;;;:::i;:::-;;;;;;;;16540:76;16591:14;;16540:32;16551:20;;16540:6;:10;;:32;;;;:::i;:::-;:36;;:76;;;;:::i;:::-;16517:19;;:99;;;;;;;:::i;:::-;;;;;;;;16340:284;:::o;16131:201::-;16231:36;16260:6;16231:9;:24;16249:4;16231:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;16204:9;:24;16222:4;16204:24;;;;;;;;;;;;;;;:63;;;;16310:4;16285:39;;16294:6;16285:39;;;16317:6;16285:39;;;;;;:::i;:::-;;;;;;;;16131:201;;:::o;16632:287::-;16723:77;16775:14;;16723:33;16734:21;;16723:6;:10;;:33;;;;:::i;:::-;:37;;:77;;;;:::i;:::-;16700:19;;:100;;;;;;;:::i;:::-;;;;;;;;16834:77;16886:14;;16834:33;16845:21;;16834:6;:10;;:33;;;;:::i;:::-;:37;;:77;;;;:::i;:::-;16811:19;;:100;;;;;;;:::i;:::-;;;;;;;;16632:287;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:90::-;875:7;918:5;911:13;904:21;893:32;;841:90;;;:::o;937:116::-;1007:21;1022:5;1007:21;:::i;:::-;1000:5;997:32;987:60;;1043:1;1040;1033:12;987:60;937:116;:::o;1059:133::-;1102:5;1140:6;1127:20;1118:29;;1156:30;1180:5;1156:30;:::i;:::-;1059:133;;;;:::o;1198:468::-;1263:6;1271;1320:2;1308:9;1299:7;1295:23;1291:32;1288:119;;;1326:79;;:::i;:::-;1288:119;1446:1;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1417:117;1573:2;1599:50;1641:7;1632:6;1621:9;1617:22;1599:50;:::i;:::-;1589:60;;1544:115;1198:468;;;;;:::o;1672:99::-;1724:6;1758:5;1752:12;1742:22;;1672:99;;;:::o;1777:169::-;1861:11;1895:6;1890:3;1883:19;1935:4;1930:3;1926:14;1911:29;;1777:169;;;;:::o;1952:307::-;2020:1;2030:113;2044:6;2041:1;2038:13;2030:113;;;2129:1;2124:3;2120:11;2114:18;2110:1;2105:3;2101:11;2094:39;2066:2;2063:1;2059:10;2054:15;;2030:113;;;2161:6;2158:1;2155:13;2152:101;;;2241:1;2232:6;2227:3;2223:16;2216:27;2152:101;2001:258;1952:307;;;:::o;2265:102::-;2306:6;2357:2;2353:7;2348:2;2341:5;2337:14;2333:28;2323:38;;2265:102;;;:::o;2373:364::-;2461:3;2489:39;2522:5;2489:39;:::i;:::-;2544:71;2608:6;2603:3;2544:71;:::i;:::-;2537:78;;2624:52;2669:6;2664:3;2657:4;2650:5;2646:16;2624:52;:::i;:::-;2701:29;2723:6;2701:29;:::i;:::-;2696:3;2692:39;2685:46;;2465:272;2373:364;;;;:::o;2743:313::-;2856:4;2894:2;2883:9;2879:18;2871:26;;2943:9;2937:4;2933:20;2929:1;2918:9;2914:17;2907:47;2971:78;3044:4;3035:6;2971:78;:::i;:::-;2963:86;;2743:313;;;;:::o;3062:60::-;3090:3;3111:5;3104:12;;3062:60;;;:::o;3128:142::-;3178:9;3211:53;3229:34;3238:24;3256:5;3238:24;:::i;:::-;3229:34;:::i;:::-;3211:53;:::i;:::-;3198:66;;3128:142;;;:::o;3276:126::-;3326:9;3359:37;3390:5;3359:37;:::i;:::-;3346:50;;3276:126;;;:::o;3408:144::-;3476:9;3509:37;3540:5;3509:37;:::i;:::-;3496:50;;3408:144;;;:::o;3558:167::-;3663:55;3712:5;3663:55;:::i;:::-;3658:3;3651:68;3558:167;;:::o;3731:258::-;3842:4;3880:2;3869:9;3865:18;3857:26;;3893:89;3979:1;3968:9;3964:17;3955:6;3893:89;:::i;:::-;3731:258;;;;:::o;3995:77::-;4032:7;4061:5;4050:16;;3995:77;;;:::o;4078:122::-;4151:24;4169:5;4151:24;:::i;:::-;4144:5;4141:35;4131:63;;4190:1;4187;4180:12;4131:63;4078:122;:::o;4206:139::-;4252:5;4290:6;4277:20;4268:29;;4306:33;4333:5;4306:33;:::i;:::-;4206:139;;;;:::o;4351:474::-;4419:6;4427;4476:2;4464:9;4455:7;4451:23;4447:32;4444:119;;;4482:79;;:::i;:::-;4444:119;4602:1;4627:53;4672:7;4663:6;4652:9;4648:22;4627:53;:::i;:::-;4617:63;;4573:117;4729:2;4755:53;4800:7;4791:6;4780:9;4776:22;4755:53;:::i;:::-;4745:63;;4700:118;4351:474;;;;;:::o;4831:109::-;4912:21;4927:5;4912:21;:::i;:::-;4907:3;4900:34;4831:109;;:::o;4946:210::-;5033:4;5071:2;5060:9;5056:18;5048:26;;5084:65;5146:1;5135:9;5131:17;5122:6;5084:65;:::i;:::-;4946:210;;;;:::o;5162:323::-;5218:6;5267:2;5255:9;5246:7;5242:23;5238:32;5235:119;;;5273:79;;:::i;:::-;5235:119;5393:1;5418:50;5460:7;5451:6;5440:9;5436:22;5418:50;:::i;:::-;5408:60;;5364:114;5162:323;;;;:::o;5491:118::-;5578:24;5596:5;5578:24;:::i;:::-;5573:3;5566:37;5491:118;;:::o;5615:222::-;5708:4;5746:2;5735:9;5731:18;5723:26;;5759:71;5827:1;5816:9;5812:17;5803:6;5759:71;:::i;:::-;5615:222;;;;:::o;5843:619::-;5920:6;5928;5936;5985:2;5973:9;5964:7;5960:23;5956:32;5953:119;;;5991:79;;:::i;:::-;5953:119;6111:1;6136:53;6181:7;6172:6;6161:9;6157:22;6136:53;:::i;:::-;6126:63;;6082:117;6238:2;6264:53;6309:7;6300:6;6289:9;6285:22;6264:53;:::i;:::-;6254:63;;6209:118;6366:2;6392:53;6437:7;6428:6;6417:9;6413:22;6392:53;:::i;:::-;6382:63;;6337:118;5843:619;;;;;:::o;6468:86::-;6503:7;6543:4;6536:5;6532:16;6521:27;;6468:86;;;:::o;6560:112::-;6643:22;6659:5;6643:22;:::i;:::-;6638:3;6631:35;6560:112;;:::o;6678:214::-;6767:4;6805:2;6794:9;6790:18;6782:26;;6818:67;6882:1;6871:9;6867:17;6858:6;6818:67;:::i;:::-;6678:214;;;;:::o;6898:329::-;6957:6;7006:2;6994:9;6985:7;6981:23;6977:32;6974:119;;;7012:79;;:::i;:::-;6974:119;7132:1;7157:53;7202:7;7193:6;7182:9;7178:22;7157:53;:::i;:::-;7147:63;;7103:117;6898:329;;;;:::o;7233:118::-;7320:24;7338:5;7320:24;:::i;:::-;7315:3;7308:37;7233:118;;:::o;7357:222::-;7450:4;7488:2;7477:9;7473:18;7465:26;;7501:71;7569:1;7558:9;7554:17;7545:6;7501:71;:::i;:::-;7357:222;;;;:::o;7585:329::-;7644:6;7693:2;7681:9;7672:7;7668:23;7664:32;7661:119;;;7699:79;;:::i;:::-;7661:119;7819:1;7844:53;7889:7;7880:6;7869:9;7865:22;7844:53;:::i;:::-;7834:63;;7790:117;7585:329;;;;:::o;7920:474::-;7988:6;7996;8045:2;8033:9;8024:7;8020:23;8016:32;8013:119;;;8051:79;;:::i;:::-;8013:119;8171:1;8196:53;8241:7;8232:6;8221:9;8217:22;8196:53;:::i;:::-;8186:63;;8142:117;8298:2;8324:53;8369:7;8360:6;8349:9;8345:22;8324:53;:::i;:::-;8314:63;;8269:118;7920:474;;;;;:::o;8400:::-;8468:6;8476;8525:2;8513:9;8504:7;8500:23;8496:32;8493:119;;;8531:79;;:::i;:::-;8493:119;8651:1;8676:53;8721:7;8712:6;8701:9;8697:22;8676:53;:::i;:::-;8666:63;;8622:117;8778:2;8804:53;8849:7;8840:6;8829:9;8825:22;8804:53;:::i;:::-;8794:63;;8749:118;8400:474;;;;;:::o;8880:182::-;9020:34;9016:1;9008:6;9004:14;8997:58;8880:182;:::o;9068:366::-;9210:3;9231:67;9295:2;9290:3;9231:67;:::i;:::-;9224:74;;9307:93;9396:3;9307:93;:::i;:::-;9425:2;9420:3;9416:12;9409:19;;9068:366;;;:::o;9440:419::-;9606:4;9644:2;9633:9;9629:18;9621:26;;9693:9;9687:4;9683:20;9679:1;9668:9;9664:17;9657:47;9721:131;9847:4;9721:131;:::i;:::-;9713:139;;9440:419;;;:::o;9865:180::-;9913:77;9910:1;9903:88;10010:4;10007:1;10000:15;10034:4;10031:1;10024:15;10051:320;10095:6;10132:1;10126:4;10122:12;10112:22;;10179:1;10173:4;10169:12;10200:18;10190:81;;10256:4;10248:6;10244:17;10234:27;;10190:81;10318:2;10310:6;10307:14;10287:18;10284:38;10281:84;;;10337:18;;:::i;:::-;10281:84;10102:269;10051:320;;;:::o;10377:181::-;10517:33;10513:1;10505:6;10501:14;10494:57;10377:181;:::o;10564:366::-;10706:3;10727:67;10791:2;10786:3;10727:67;:::i;:::-;10720:74;;10803:93;10892:3;10803:93;:::i;:::-;10921:2;10916:3;10912:12;10905:19;;10564:366;;;:::o;10936:419::-;11102:4;11140:2;11129:9;11125:18;11117:26;;11189:9;11183:4;11179:20;11175:1;11164:9;11160:17;11153:47;11217:131;11343:4;11217:131;:::i;:::-;11209:139;;10936:419;;;:::o;11361:169::-;11501:21;11497:1;11489:6;11485:14;11478:45;11361:169;:::o;11536:366::-;11678:3;11699:67;11763:2;11758:3;11699:67;:::i;:::-;11692:74;;11775:93;11864:3;11775:93;:::i;:::-;11893:2;11888:3;11884:12;11877:19;;11536:366;;;:::o;11908:419::-;12074:4;12112:2;12101:9;12097:18;12089:26;;12161:9;12155:4;12151:20;12147:1;12136:9;12132:17;12125:47;12189:131;12315:4;12189:131;:::i;:::-;12181:139;;11908:419;;;:::o;12333:180::-;12381:77;12378:1;12371:88;12478:4;12475:1;12468:15;12502:4;12499:1;12492:15;12519:180;12567:77;12564:1;12557:88;12664:4;12661:1;12654:15;12688:4;12685:1;12678:15;12705:185;12745:1;12762:20;12780:1;12762:20;:::i;:::-;12757:25;;12796:20;12814:1;12796:20;:::i;:::-;12791:25;;12835:1;12825:35;;12840:18;;:::i;:::-;12825:35;12882:1;12879;12875:9;12870:14;;12705:185;;;;:::o;12896:176::-;13036:28;13032:1;13024:6;13020:14;13013:52;12896:176;:::o;13078:366::-;13220:3;13241:67;13305:2;13300:3;13241:67;:::i;:::-;13234:74;;13317:93;13406:3;13317:93;:::i;:::-;13435:2;13430:3;13426:12;13419:19;;13078:366;;;:::o;13450:419::-;13616:4;13654:2;13643:9;13639:18;13631:26;;13703:9;13697:4;13693:20;13689:1;13678:9;13674:17;13667:47;13731:131;13857:4;13731:131;:::i;:::-;13723:139;;13450:419;;;:::o;13875:164::-;14015:16;14011:1;14003:6;13999:14;13992:40;13875:164;:::o;14045:366::-;14187:3;14208:67;14272:2;14267:3;14208:67;:::i;:::-;14201:74;;14284:93;14373:3;14284:93;:::i;:::-;14402:2;14397:3;14393:12;14386:19;;14045:366;;;:::o;14417:419::-;14583:4;14621:2;14610:9;14606:18;14598:26;;14670:9;14664:4;14660:20;14656:1;14645:9;14641:17;14634:47;14698:131;14824:4;14698:131;:::i;:::-;14690:139;;14417:419;;;:::o;14842:225::-;14982:34;14978:1;14970:6;14966:14;14959:58;15051:8;15046:2;15038:6;15034:15;15027:33;14842:225;:::o;15073:366::-;15215:3;15236:67;15300:2;15295:3;15236:67;:::i;:::-;15229:74;;15312:93;15401:3;15312:93;:::i;:::-;15430:2;15425:3;15421:12;15414:19;;15073:366;;;:::o;15445:419::-;15611:4;15649:2;15638:9;15634:18;15626:26;;15698:9;15692:4;15688:20;15684:1;15673:9;15669:17;15662:47;15726:131;15852:4;15726:131;:::i;:::-;15718:139;;15445:419;;;:::o;15870:220::-;16010:34;16006:1;15998:6;15994:14;15987:58;16079:3;16074:2;16066:6;16062:15;16055:28;15870:220;:::o;16096:366::-;16238:3;16259:67;16323:2;16318:3;16259:67;:::i;:::-;16252:74;;16335:93;16424:3;16335:93;:::i;:::-;16453:2;16448:3;16444:12;16437:19;;16096:366;;;:::o;16468:419::-;16634:4;16672:2;16661:9;16657:18;16649:26;;16721:9;16715:4;16711:20;16707:1;16696:9;16692:17;16685:47;16749:131;16875:4;16749:131;:::i;:::-;16741:139;;16468:419;;;:::o;16893:181::-;17033:33;17029:1;17021:6;17017:14;17010:57;16893:181;:::o;17080:366::-;17222:3;17243:67;17307:2;17302:3;17243:67;:::i;:::-;17236:74;;17319:93;17408:3;17319:93;:::i;:::-;17437:2;17432:3;17428:12;17421:19;;17080:366;;;:::o;17452:419::-;17618:4;17656:2;17645:9;17641:18;17633:26;;17705:9;17699:4;17695:20;17691:1;17680:9;17676:17;17669:47;17733:131;17859:4;17733:131;:::i;:::-;17725:139;;17452:419;;;:::o;17877:221::-;18017:34;18013:1;18005:6;18001:14;17994:58;18086:4;18081:2;18073:6;18069:15;18062:29;17877:221;:::o;18104:366::-;18246:3;18267:67;18331:2;18326:3;18267:67;:::i;:::-;18260:74;;18343:93;18432:3;18343:93;:::i;:::-;18461:2;18456:3;18452:12;18445:19;;18104:366;;;:::o;18476:419::-;18642:4;18680:2;18669:9;18665:18;18657:26;;18729:9;18723:4;18719:20;18715:1;18704:9;18700:17;18693:47;18757:131;18883:4;18757:131;:::i;:::-;18749:139;;18476:419;;;:::o;18901:182::-;19041:34;19037:1;19029:6;19025:14;19018:58;18901:182;:::o;19089:366::-;19231:3;19252:67;19316:2;19311:3;19252:67;:::i;:::-;19245:74;;19328:93;19417:3;19328:93;:::i;:::-;19446:2;19441:3;19437:12;19430:19;;19089:366;;;:::o;19461:419::-;19627:4;19665:2;19654:9;19650:18;19642:26;;19714:9;19708:4;19704:20;19700:1;19689:9;19685:17;19678:47;19742:131;19868:4;19742:131;:::i;:::-;19734:139;;19461:419;;;:::o;19886:223::-;20026:34;20022:1;20014:6;20010:14;20003:58;20095:6;20090:2;20082:6;20078:15;20071:31;19886:223;:::o;20115:366::-;20257:3;20278:67;20342:2;20337:3;20278:67;:::i;:::-;20271:74;;20354:93;20443:3;20354:93;:::i;:::-;20472:2;20467:3;20463:12;20456:19;;20115:366;;;:::o;20487:419::-;20653:4;20691:2;20680:9;20676:18;20668:26;;20740:9;20734:4;20730:20;20726:1;20715:9;20711:17;20704:47;20768:131;20894:4;20768:131;:::i;:::-;20760:139;;20487:419;;;:::o;20912:162::-;21052:14;21048:1;21040:6;21036:14;21029:38;20912:162;:::o;21080:366::-;21222:3;21243:67;21307:2;21302:3;21243:67;:::i;:::-;21236:74;;21319:93;21408:3;21319:93;:::i;:::-;21437:2;21432:3;21428:12;21421:19;;21080:366;;;:::o;21452:419::-;21618:4;21656:2;21645:9;21641:18;21633:26;;21705:9;21699:4;21695:20;21691:1;21680:9;21676:17;21669:47;21733:131;21859:4;21733:131;:::i;:::-;21725:139;;21452:419;;;:::o;21877:175::-;22017:27;22013:1;22005:6;22001:14;21994:51;21877:175;:::o;22058:366::-;22200:3;22221:67;22285:2;22280:3;22221:67;:::i;:::-;22214:74;;22297:93;22386:3;22297:93;:::i;:::-;22415:2;22410:3;22406:12;22399:19;;22058:366;;;:::o;22430:419::-;22596:4;22634:2;22623:9;22619:18;22611:26;;22683:9;22677:4;22673:20;22669:1;22658:9;22654:17;22647:47;22711:131;22837:4;22711:131;:::i;:::-;22703:139;;22430:419;;;:::o;22855:172::-;22995:24;22991:1;22983:6;22979:14;22972:48;22855:172;:::o;23033:366::-;23175:3;23196:67;23260:2;23255:3;23196:67;:::i;:::-;23189:74;;23272:93;23361:3;23272:93;:::i;:::-;23390:2;23385:3;23381:12;23374:19;;23033:366;;;:::o;23405:419::-;23571:4;23609:2;23598:9;23594:18;23586:26;;23658:9;23652:4;23648:20;23644:1;23633:9;23629:17;23622:47;23686:131;23812:4;23686:131;:::i;:::-;23678:139;;23405:419;;;:::o;23830:176::-;23970:28;23966:1;23958:6;23954:14;23947:52;23830:176;:::o;24012:366::-;24154:3;24175:67;24239:2;24234:3;24175:67;:::i;:::-;24168:74;;24251:93;24340:3;24251:93;:::i;:::-;24369:2;24364:3;24360:12;24353:19;;24012:366;;;:::o;24384:419::-;24550:4;24588:2;24577:9;24573:18;24565:26;;24637:9;24631:4;24627:20;24623:1;24612:9;24608:17;24601:47;24665:131;24791:4;24665:131;:::i;:::-;24657:139;;24384:419;;;:::o;24809:191::-;24849:4;24869:20;24887:1;24869:20;:::i;:::-;24864:25;;24903:20;24921:1;24903:20;:::i;:::-;24898:25;;24942:1;24939;24936:8;24933:34;;;24947:18;;:::i;:::-;24933:34;24992:1;24989;24985:9;24977:17;;24809:191;;;;:::o;25006:305::-;25046:3;25065:20;25083:1;25065:20;:::i;:::-;25060:25;;25099:20;25117:1;25099:20;:::i;:::-;25094:25;;25253:1;25185:66;25181:74;25178:1;25175:81;25172:107;;;25259:18;;:::i;:::-;25172:107;25303:1;25300;25296:9;25289:16;;25006:305;;;;:::o;25317:177::-;25457:29;25453:1;25445:6;25441:14;25434:53;25317:177;:::o;25500:366::-;25642:3;25663:67;25727:2;25722:3;25663:67;:::i;:::-;25656:74;;25739:93;25828:3;25739:93;:::i;:::-;25857:2;25852:3;25848:12;25841:19;;25500:366;;;:::o;25872:419::-;26038:4;26076:2;26065:9;26061:18;26053:26;;26125:9;26119:4;26115:20;26111:1;26100:9;26096:17;26089:47;26153:131;26279:4;26153:131;:::i;:::-;26145:139;;25872:419;;;:::o;26297:348::-;26337:7;26360:20;26378:1;26360:20;:::i;:::-;26355:25;;26394:20;26412:1;26394:20;:::i;:::-;26389:25;;26582:1;26514:66;26510:74;26507:1;26504:81;26499:1;26492:9;26485:17;26481:105;26478:131;;;26589:18;;:::i;:::-;26478:131;26637:1;26634;26630:9;26619:20;;26297:348;;;;:::o;26651:220::-;26791:34;26787:1;26779:6;26775:14;26768:58;26860:3;26855:2;26847:6;26843:15;26836:28;26651:220;:::o;26877:366::-;27019:3;27040:67;27104:2;27099:3;27040:67;:::i;:::-;27033:74;;27116:93;27205:3;27116:93;:::i;:::-;27234:2;27229:3;27225:12;27218:19;;26877:366;;;:::o;27249:419::-;27415:4;27453:2;27442:9;27438:18;27430:26;;27502:9;27496:4;27492:20;27488:1;27477:9;27473:17;27466:47;27530:131;27656:4;27530:131;:::i;:::-;27522:139;;27249:419;;;:::o;27674:442::-;27823:4;27861:2;27850:9;27846:18;27838:26;;27874:71;27942:1;27931:9;27927:17;27918:6;27874:71;:::i;:::-;27955:72;28023:2;28012:9;28008:18;27999:6;27955:72;:::i;:::-;28037;28105:2;28094:9;28090:18;28081:6;28037:72;:::i;:::-;27674:442;;;;;;:::o;28122:180::-;28170:77;28167:1;28160:88;28267:4;28264:1;28257:15;28291:4;28288:1;28281:15;28308:180;28356:77;28353:1;28346:88;28453:4;28450:1;28443:15;28477:4;28474:1;28467:15;28494:143;28551:5;28582:6;28576:13;28567:22;;28598:33;28625:5;28598:33;:::i;:::-;28494:143;;;;:::o;28643:351::-;28713:6;28762:2;28750:9;28741:7;28737:23;28733:32;28730:119;;;28768:79;;:::i;:::-;28730:119;28888:1;28913:64;28969:7;28960:6;28949:9;28945:22;28913:64;:::i;:::-;28903:74;;28859:128;28643:351;;;;:::o;29000:85::-;29045:7;29074:5;29063:16;;29000:85;;;:::o;29091:158::-;29149:9;29182:61;29200:42;29209:32;29235:5;29209:32;:::i;:::-;29200:42;:::i;:::-;29182:61;:::i;:::-;29169:74;;29091:158;;;:::o;29255:147::-;29350:45;29389:5;29350:45;:::i;:::-;29345:3;29338:58;29255:147;;:::o;29408:114::-;29475:6;29509:5;29503:12;29493:22;;29408:114;;;:::o;29528:184::-;29627:11;29661:6;29656:3;29649:19;29701:4;29696:3;29692:14;29677:29;;29528:184;;;;:::o;29718:132::-;29785:4;29808:3;29800:11;;29838:4;29833:3;29829:14;29821:22;;29718:132;;;:::o;29856:108::-;29933:24;29951:5;29933:24;:::i;:::-;29928:3;29921:37;29856:108;;:::o;29970:179::-;30039:10;30060:46;30102:3;30094:6;30060:46;:::i;:::-;30138:4;30133:3;30129:14;30115:28;;29970:179;;;;:::o;30155:113::-;30225:4;30257;30252:3;30248:14;30240:22;;30155:113;;;:::o;30304:732::-;30423:3;30452:54;30500:5;30452:54;:::i;:::-;30522:86;30601:6;30596:3;30522:86;:::i;:::-;30515:93;;30632:56;30682:5;30632:56;:::i;:::-;30711:7;30742:1;30727:284;30752:6;30749:1;30746:13;30727:284;;;30828:6;30822:13;30855:63;30914:3;30899:13;30855:63;:::i;:::-;30848:70;;30941:60;30994:6;30941:60;:::i;:::-;30931:70;;30787:224;30774:1;30771;30767:9;30762:14;;30727:284;;;30731:14;31027:3;31020:10;;30428:608;;;30304:732;;;;:::o;31042:831::-;31305:4;31343:3;31332:9;31328:19;31320:27;;31357:71;31425:1;31414:9;31410:17;31401:6;31357:71;:::i;:::-;31438:80;31514:2;31503:9;31499:18;31490:6;31438:80;:::i;:::-;31565:9;31559:4;31555:20;31550:2;31539:9;31535:18;31528:48;31593:108;31696:4;31687:6;31593:108;:::i;:::-;31585:116;;31711:72;31779:2;31768:9;31764:18;31755:6;31711:72;:::i;:::-;31793:73;31861:3;31850:9;31846:19;31837:6;31793:73;:::i;:::-;31042:831;;;;;;;;:::o;31879:807::-;32128:4;32166:3;32155:9;32151:19;32143:27;;32180:71;32248:1;32237:9;32233:17;32224:6;32180:71;:::i;:::-;32261:72;32329:2;32318:9;32314:18;32305:6;32261:72;:::i;:::-;32343:80;32419:2;32408:9;32404:18;32395:6;32343:80;:::i;:::-;32433;32509:2;32498:9;32494:18;32485:6;32433:80;:::i;:::-;32523:73;32591:3;32580:9;32576:19;32567:6;32523:73;:::i;:::-;32606;32674:3;32663:9;32659:19;32650:6;32606:73;:::i;:::-;31879:807;;;;;;;;;:::o;32692:143::-;32749:5;32780:6;32774:13;32765:22;;32796:33;32823:5;32796:33;:::i;:::-;32692:143;;;;:::o;32841:663::-;32929:6;32937;32945;32994:2;32982:9;32973:7;32969:23;32965:32;32962:119;;;33000:79;;:::i;:::-;32962:119;33120:1;33145:64;33201:7;33192:6;33181:9;33177:22;33145:64;:::i;:::-;33135:74;;33091:128;33258:2;33284:64;33340:7;33331:6;33320:9;33316:22;33284:64;:::i;:::-;33274:74;;33229:129;33397:2;33423:64;33479:7;33470:6;33459:9;33455:22;33423:64;:::i;:::-;33413:74;;33368:129;32841:663;;;;;:::o

Swarm Source

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