ETH Price: $3,237.73 (-2.82%)

Token

Fuck The Queen (FTQ)
 

Overview

Max Total Supply

100,000,000 FTQ

Holders

14

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,258,119.544830788154930179 FTQ

Value
$0.00
0x882c2eae9b3a602c08d8cf017f712a63171be159
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:
FTQ

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-08
*/

// SPDX-License-Identifier: MIT

/*
 
$FTQ (Fuck The Queen)

*/

pragma solidity ^0.8.15;
pragma experimental ABIEncoderV2;

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

abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);
    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);
}

interface IERC20Metadata is IERC20 {
   
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

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

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

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

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

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

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

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

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

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

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
    function allPairs(uint256) external view returns (address pair);
    function allPairsLength() external view returns (uint256);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint256);
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;
    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint256);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );
    function price0CumulativeLast() external view returns (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function mint(address to) external returns (uint256 liquidity);
    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);
    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

    bool private swapping;

    address public marketingWallet;
    address public devWallet;

    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    uint256 public maxTransactionAmount;

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

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

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    bool public limitsInEffect = true;
    bool public swapEnabled = false;
    bool public tradingActive = false;

    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;

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

    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

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

    constructor() ERC20("Fuck The Queen", "FTQ") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

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

        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 2;
        uint256 _buyDevFee = 4;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 2;
        uint256 _sellDevFee = 4;

        uint256 totalSupply = 100000000 * 1e18;

        maxTransactionAmount = 150000 * 1e18;
        maxWallet = 1500000 * 1e18;
        swapTokensAtAmount = (totalSupply * 10) / 100000;

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

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

        marketingWallet = address(0x4D3b306B91B9AF53f0cAd113cC43C2121d0A6c9A);
        devWallet = address(0x4D3b306B91B9AF53f0cAd113cC43C2121d0A6c9A);

        excludeFromFees(owner(), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(marketingWallet), true);
        excludeFromFees(address(this), true);
        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(marketingWallet), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }
    
    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from automatedMarketMakerPairs"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                if (transferDelayEnabled) {
                    if (
                        to != owner() &&
                        to != address(uniswapV2Router) &&
                        to != address(uniswapV2Pair)
                    ) {
                        require(
                            _holderLastTransferTimestamp[tx.origin] <
                                block.number,
                            "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                        );
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }

                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

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

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

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

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

        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

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

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

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;

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

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

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

    }

}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001601660006101000a81548160ff0219169083151502179055506000601660016101000a81548160ff0219169083151502179055506000601660026101000a81548160ff0219169083151502179055506000601860006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600e81526020017f4675636b2054686520517565656e0000000000000000000000000000000000008152506040518060400160405280600381526020017f46545100000000000000000000000000000000000000000000000000000000008152508160039081620000fb919062000dbd565b5080600490816200010d919062000dbd565b50505062000130620001246200060460201b60201c565b6200060c60201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200015c816001620006d260201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000202919062000f0e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000f0e565b6040518363ffffffff1660e01b8152600401620002af92919062000f51565b6020604051808303816000875af1158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062000f0e565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200033d60a0516001620006d260201b60201c565b6200035260a0516001620007bc60201b60201c565b600080600290506000600490506000806002905060006004905060006a52b7d2dcc80cd2e40000009050691fc3842bd1f071c00000600a819055506a013da329b6336471800000600981905550620186a0600a82620003b2919062000fad565b620003be91906200103d565b60088190555086600d8190555085600e8190555084600b81905550600b54600e54600d54620003ee919062001075565b620003fa919062001075565b600c819055508360118190555082601081905550816012819055506012546010546011546200042a919062001075565b62000436919062001075565b600f81905550734d3b306b91b9af53f0cad113cc43c2121d0a6c9a600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734d3b306b91b9af53f0cad113cc43c2121d0a6c9a600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000508620004fa6200085d60201b60201c565b60016200088760201b60201c565b6200051d61dead60016200088760201b60201c565b62000552600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200088760201b60201c565b620005653060016200088760201b60201c565b62000587620005796200085d60201b60201c565b6001620006d260201b60201c565b620005bc600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006d260201b60201c565b620005cf306001620006d260201b60201c565b620005e461dead6001620006d260201b60201c565b620005f63382620009c160201b60201c565b50505050505050506200122f565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006e26200060460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007086200085d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000761576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007589062001133565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008976200060460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008bd6200085d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000916576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200090d9062001133565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009b5919062001172565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a2a90620011df565b60405180910390fd5b62000a476000838362000b3960201b60201c565b806002600082825462000a5b919062001075565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000ab2919062001075565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b19919062001212565b60405180910390a362000b356000838362000b3e60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bc557607f821691505b60208210810362000bdb5762000bda62000b7d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c06565b62000c51868362000c06565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c9e62000c9862000c928462000c69565b62000c73565b62000c69565b9050919050565b6000819050919050565b62000cba8362000c7d565b62000cd262000cc98262000ca5565b84845462000c13565b825550505050565b600090565b62000ce962000cda565b62000cf681848462000caf565b505050565b5b8181101562000d1e5762000d1260008262000cdf565b60018101905062000cfc565b5050565b601f82111562000d6d5762000d378162000be1565b62000d428462000bf6565b8101602085101562000d52578190505b62000d6a62000d618562000bf6565b83018262000cfb565b50505b505050565b600082821c905092915050565b600062000d926000198460080262000d72565b1980831691505092915050565b600062000dad838362000d7f565b9150826002028217905092915050565b62000dc88262000b43565b67ffffffffffffffff81111562000de45762000de362000b4e565b5b62000df0825462000bac565b62000dfd82828562000d22565b600060209050601f83116001811462000e35576000841562000e20578287015190505b62000e2c858262000d9f565b86555062000e9c565b601f19841662000e458662000be1565b60005b8281101562000e6f5784890151825560018201915060208501945060208101905062000e48565b8683101562000e8f578489015162000e8b601f89168262000d7f565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ed68262000ea9565b9050919050565b62000ee88162000ec9565b811462000ef457600080fd5b50565b60008151905062000f088162000edd565b92915050565b60006020828403121562000f275762000f2662000ea4565b5b600062000f378482850162000ef7565b91505092915050565b62000f4b8162000ec9565b82525050565b600060408201905062000f68600083018562000f40565b62000f77602083018462000f40565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fba8262000c69565b915062000fc78362000c69565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001003576200100262000f7e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200104a8262000c69565b9150620010578362000c69565b9250826200106a57620010696200100e565b5b828204905092915050565b6000620010828262000c69565b91506200108f8362000c69565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620010c757620010c662000f7e565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200111b602083620010d2565b91506200112882620010e3565b602082019050919050565b600060208201905081810360008301526200114e816200110c565b9050919050565b60008115159050919050565b6200116c8162001155565b82525050565b600060208201905062001189600083018462001161565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620011c7601f83620010d2565b9150620011d4826200118f565b602082019050919050565b60006020820190508181036000830152620011fa81620011b8565b9050919050565b6200120c8162000c69565b82525050565b600060208201905062001229600083018462001201565b92915050565b60805160a0516142546200128d60003960008181610d8a015281816112bb0152611da3015260008181610b9d01528181611d4b01528181612e3b01528181612f1c01528181612f4301528181612fdf015261300601526142546000f3fe6080604052600436106102815760003560e01c80638da5cb5b1161014f578063bbc0c742116100c1578063e2f456051161007a578063e2f45605146109cb578063e884f260146109f6578063f11a24d314610a21578063f2fde38b14610a4c578063f637434214610a75578063f8b45b0514610aa057610288565b8063bbc0c742146108b9578063c0246668146108e4578063c876d0b91461090d578063c8c8ebe414610938578063d85ba06314610963578063dd62ed3e1461098e57610288565b80639c3b4fdc116101135780639c3b4fdc146107815780639fccce32146107ac578063a0d82dc5146107d7578063a457c2d714610802578063a9059cbb1461083f578063b62496f51461087c57610288565b80638da5cb5b146106ac5780638ea5220f146106d7578063921369131461070257806395d89b411461072d5780639a7a23d61461075857610288565b806349bd5a5e116101f3578063715018a6116101ac578063715018a6146105d4578063751039fc146105eb5780637571336a1461061657806375f0a8741461063f5780637bce5a041461066a5780638a8c523c1461069557610288565b806349bd5a5e146104ae5780634a62bb65146104d95780634fbee193146105045780636a486a8e146105415780636ddd17131461056c57806370a082311461059757610288565b80631a8145bb116102455780631a8145bb146103885780631f3fed8f146103b357806323b872dd146103de57806327c8f8351461041b578063313ce56714610446578063395093511461047157610288565b806306fdde031461028d578063095ea7b3146102b857806310d5de53146102f55780631694505e1461033257806318160ddd1461035d57610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610acb565b6040516102af919061316e565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190613229565b610b5d565b6040516102ec9190613284565b60405180910390f35b34801561030157600080fd5b5061031c6004803603810190610317919061329f565b610b7b565b6040516103299190613284565b60405180910390f35b34801561033e57600080fd5b50610347610b9b565b604051610354919061332b565b60405180910390f35b34801561036957600080fd5b50610372610bbf565b60405161037f9190613355565b60405180910390f35b34801561039457600080fd5b5061039d610bc9565b6040516103aa9190613355565b60405180910390f35b3480156103bf57600080fd5b506103c8610bcf565b6040516103d59190613355565b60405180910390f35b3480156103ea57600080fd5b5061040560048036038101906104009190613370565b610bd5565b6040516104129190613284565b60405180910390f35b34801561042757600080fd5b50610430610ccd565b60405161043d91906133d2565b60405180910390f35b34801561045257600080fd5b5061045b610cd3565b6040516104689190613409565b60405180910390f35b34801561047d57600080fd5b5061049860048036038101906104939190613229565b610cdc565b6040516104a59190613284565b60405180910390f35b3480156104ba57600080fd5b506104c3610d88565b6040516104d091906133d2565b60405180910390f35b3480156104e557600080fd5b506104ee610dac565b6040516104fb9190613284565b60405180910390f35b34801561051057600080fd5b5061052b6004803603810190610526919061329f565b610dbf565b6040516105389190613284565b60405180910390f35b34801561054d57600080fd5b50610556610e15565b6040516105639190613355565b60405180910390f35b34801561057857600080fd5b50610581610e1b565b60405161058e9190613284565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b9919061329f565b610e2e565b6040516105cb9190613355565b60405180910390f35b3480156105e057600080fd5b506105e9610e76565b005b3480156105f757600080fd5b50610600610efe565b60405161060d9190613284565b60405180910390f35b34801561062257600080fd5b5061063d60048036038101906106389190613450565b610f9e565b005b34801561064b57600080fd5b50610654611075565b60405161066191906133d2565b60405180910390f35b34801561067657600080fd5b5061067f61109b565b60405161068c9190613355565b60405180910390f35b3480156106a157600080fd5b506106aa6110a1565b005b3480156106b857600080fd5b506106c1611155565b6040516106ce91906133d2565b60405180910390f35b3480156106e357600080fd5b506106ec61117f565b6040516106f991906133d2565b60405180910390f35b34801561070e57600080fd5b506107176111a5565b6040516107249190613355565b60405180910390f35b34801561073957600080fd5b506107426111ab565b60405161074f919061316e565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a9190613450565b61123d565b005b34801561078d57600080fd5b50610796611355565b6040516107a39190613355565b60405180910390f35b3480156107b857600080fd5b506107c161135b565b6040516107ce9190613355565b60405180910390f35b3480156107e357600080fd5b506107ec611361565b6040516107f99190613355565b60405180910390f35b34801561080e57600080fd5b5061082960048036038101906108249190613229565b611367565b6040516108369190613284565b60405180910390f35b34801561084b57600080fd5b5061086660048036038101906108619190613229565b611452565b6040516108739190613284565b60405180910390f35b34801561088857600080fd5b506108a3600480360381019061089e919061329f565b611470565b6040516108b09190613284565b60405180910390f35b3480156108c557600080fd5b506108ce611490565b6040516108db9190613284565b60405180910390f35b3480156108f057600080fd5b5061090b60048036038101906109069190613450565b6114a3565b005b34801561091957600080fd5b506109226115c8565b60405161092f9190613284565b60405180910390f35b34801561094457600080fd5b5061094d6115db565b60405161095a9190613355565b60405180910390f35b34801561096f57600080fd5b506109786115e1565b6040516109859190613355565b60405180910390f35b34801561099a57600080fd5b506109b560048036038101906109b09190613490565b6115e7565b6040516109c29190613355565b60405180910390f35b3480156109d757600080fd5b506109e061166e565b6040516109ed9190613355565b60405180910390f35b348015610a0257600080fd5b50610a0b611674565b604051610a189190613284565b60405180910390f35b348015610a2d57600080fd5b50610a36611714565b604051610a439190613355565b60405180910390f35b348015610a5857600080fd5b50610a736004803603810190610a6e919061329f565b61171a565b005b348015610a8157600080fd5b50610a8a611811565b604051610a979190613355565b60405180910390f35b348015610aac57600080fd5b50610ab5611817565b604051610ac29190613355565b60405180910390f35b606060038054610ada906134ff565b80601f0160208091040260200160405190810160405280929190818152602001828054610b06906134ff565b8015610b535780601f10610b2857610100808354040283529160200191610b53565b820191906000526020600020905b815481529060010190602001808311610b3657829003601f168201915b5050505050905090565b6000610b71610b6a61181d565b8484611825565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60145481565b60135481565b6000610be28484846119ee565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c2d61181d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca4906135a2565b60405180910390fd5b610cc185610cb961181d565b858403611825565b60019150509392505050565b61dead81565b60006012905090565b6000610d7e610ce961181d565b848460016000610cf761181d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d7991906135f1565b611825565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601660009054906101000a900460ff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b601660019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e7e61181d565b73ffffffffffffffffffffffffffffffffffffffff16610e9c611155565b73ffffffffffffffffffffffffffffffffffffffff1614610ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee990613693565b60405180910390fd5b610efc6000612685565b565b6000610f0861181d565b73ffffffffffffffffffffffffffffffffffffffff16610f26611155565b73ffffffffffffffffffffffffffffffffffffffff1614610f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7390613693565b60405180910390fd5b6000601660006101000a81548160ff0219169083151502179055506001905090565b610fa661181d565b73ffffffffffffffffffffffffffffffffffffffff16610fc4611155565b73ffffffffffffffffffffffffffffffffffffffff161461101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101190613693565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b6110a961181d565b73ffffffffffffffffffffffffffffffffffffffff166110c7611155565b73ffffffffffffffffffffffffffffffffffffffff161461111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111490613693565b60405180910390fd5b6001601660026101000a81548160ff0219169083151502179055506001601660016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b6060600480546111ba906134ff565b80601f01602080910402602001604051908101604052809291908181526020018280546111e6906134ff565b80156112335780601f1061120857610100808354040283529160200191611233565b820191906000526020600020905b81548152906001019060200180831161121657829003601f168201915b5050505050905090565b61124561181d565b73ffffffffffffffffffffffffffffffffffffffff16611263611155565b73ffffffffffffffffffffffffffffffffffffffff16146112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b090613693565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e90613725565b60405180910390fd5b611351828261274b565b5050565b600b5481565b60155481565b60125481565b6000806001600061137661181d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a906137b7565b60405180910390fd5b61144761143e61181d565b85858403611825565b600191505092915050565b600061146661145f61181d565b84846119ee565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b601660029054906101000a900460ff1681565b6114ab61181d565b73ffffffffffffffffffffffffffffffffffffffff166114c9611155565b73ffffffffffffffffffffffffffffffffffffffff161461151f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151690613693565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516115bc9190613284565b60405180910390a25050565b601860009054906101000a900460ff1681565b600a5481565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600061167e61181d565b73ffffffffffffffffffffffffffffffffffffffff1661169c611155565b73ffffffffffffffffffffffffffffffffffffffff16146116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990613693565b60405180910390fd5b6000601860006101000a81548160ff0219169083151502179055506001905090565b600e5481565b61172261181d565b73ffffffffffffffffffffffffffffffffffffffff16611740611155565b73ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90613693565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc90613849565b60405180910390fd5b61180e81612685565b50565b60105481565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188b906138db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa9061396d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119e19190613355565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a54906139ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac390613a91565b60405180910390fd5b60008103611ae557611ae0838360006127ec565b612680565b601660009054906101000a900460ff16156121a857611b02611155565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b705750611b40611155565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba95750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611be3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bfc5750600560149054906101000a900460ff16155b156121a757601660029054906101000a900460ff16611cf657601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cb65750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613afd565b60405180910390fd5b5b601860009054906101000a900460ff1615611ebe57611d13611155565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611d9a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611df257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ebd5743601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6f90613bb5565b60405180910390fd5b43601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f615750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561200857600a54811115611fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa290613c47565b60405180910390fd5b600954611fb783610e2e565b82611fc291906135f1565b1115612003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffa90613cb3565b60405180910390fd5b6121a6565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120ab5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120fa57600a548111156120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec90613d45565b60405180910390fd5b6121a5565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121a45760095461215783610e2e565b8261216291906135f1565b11156121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90613cb3565b60405180910390fd5b5b5b5b5b5b60006121b330610e2e565b9050600060085482101590508080156121d85750601660019054906101000a900460ff165b80156121f15750600560149054906101000a900460ff16155b80156122475750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561229d5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122f35750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612337576001600560146101000a81548160ff02191690831515021790555061231b612a6b565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123ed5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123f757600090505b6000811561267057601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561245a57506000600f54115b15612527576124876064612479600f5488612d5090919063ffffffff16565b612d6690919063ffffffff16565b9050600f546010548261249a9190613d65565b6124a49190613dee565b601460008282546124b591906135f1565b92505081905550600f54601254826124cd9190613d65565b6124d79190613dee565b601560008282546124e891906135f1565b92505081905550600f54601154826125009190613d65565b61250a9190613dee565b6013600082825461251b91906135f1565b9250508190555061264c565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561258257506000600c54115b1561264b576125af60646125a1600c5488612d5090919063ffffffff16565b612d6690919063ffffffff16565b9050600c54600e54826125c29190613d65565b6125cc9190613dee565b601460008282546125dd91906135f1565b92505081905550600c54600b54826125f59190613d65565b6125ff9190613dee565b6015600082825461261091906135f1565b92505081905550600c54600d54826126289190613d65565b6126329190613dee565b6013600082825461264391906135f1565b925050819055505b5b6000811115612661576126608730836127ec565b5b808561266d9190613e1f565b94505b61267b8787876127ec565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361285b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612852906139ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c190613a91565b60405180910390fd5b6128d5838383612d7c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561295b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295290613ec5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129ee91906135f1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a529190613355565b60405180910390a3612a65848484612d81565b50505050565b6000612a7630610e2e565b90506000601554601354601454612a8d91906135f1565b612a9791906135f1565b9050600080831480612aa95750600082145b15612ab657505050612d4e565b6014600854612ac59190613d65565b831115612ade576014600854612adb9190613d65565b92505b600060028360145486612af19190613d65565b612afb9190613dee565b612b059190613dee565b90506000612b1c8286612d8690919063ffffffff16565b90506000479050612b2c82612d9c565b6000612b418247612d8690919063ffffffff16565b90506000612b6c87612b5e60135485612d5090919063ffffffff16565b612d6690919063ffffffff16565b90506000612b9788612b8960155486612d5090919063ffffffff16565b612d6690919063ffffffff16565b90506000818385612ba89190613e1f565b612bb29190613e1f565b9050600060148190555060006013819055506000601581905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612c1290613f16565b60006040518083038185875af1925050503d8060008114612c4f576040519150601f19603f3d011682016040523d82523d6000602084013e612c54565b606091505b505080985050600087118015612c6a5750600081115b15612cb557612c798782612fd9565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868289604051612cac93929190613f2b565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612cfb90613f16565b60006040518083038185875af1925050503d8060008114612d38576040519150601f19603f3d011682016040523d82523d6000602084013e612d3d565b606091505b505080985050505050505050505050505b565b60008183612d5e9190613d65565b905092915050565b60008183612d749190613dee565b905092915050565b505050565b505050565b60008183612d949190613e1f565b905092915050565b6000600267ffffffffffffffff811115612db957612db8613f62565b5b604051908082528060200260200182016040528015612de75781602001602082028036833780820191505090505b5090503081600081518110612dff57612dfe613f91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec89190613fd5565b81600181518110612edc57612edb613f91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f41307f000000000000000000000000000000000000000000000000000000000000000084611825565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612fa39594939291906140fb565b600060405180830381600087803b158015612fbd57600080fd5b505af1158015612fd1573d6000803e3d6000fd5b505050505050565b613004307f000000000000000000000000000000000000000000000000000000000000000084611825565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161308b96959493929190614155565b60606040518083038185885af11580156130a9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130ce91906141cb565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561310f5780820151818401526020810190506130f4565b8381111561311e576000848401525b50505050565b6000601f19601f8301169050919050565b6000613140826130d5565b61314a81856130e0565b935061315a8185602086016130f1565b61316381613124565b840191505092915050565b600060208201905081810360008301526131888184613135565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131c082613195565b9050919050565b6131d0816131b5565b81146131db57600080fd5b50565b6000813590506131ed816131c7565b92915050565b6000819050919050565b613206816131f3565b811461321157600080fd5b50565b600081359050613223816131fd565b92915050565b600080604083850312156132405761323f613190565b5b600061324e858286016131de565b925050602061325f85828601613214565b9150509250929050565b60008115159050919050565b61327e81613269565b82525050565b60006020820190506132996000830184613275565b92915050565b6000602082840312156132b5576132b4613190565b5b60006132c3848285016131de565b91505092915050565b6000819050919050565b60006132f16132ec6132e784613195565b6132cc565b613195565b9050919050565b6000613303826132d6565b9050919050565b6000613315826132f8565b9050919050565b6133258161330a565b82525050565b6000602082019050613340600083018461331c565b92915050565b61334f816131f3565b82525050565b600060208201905061336a6000830184613346565b92915050565b60008060006060848603121561338957613388613190565b5b6000613397868287016131de565b93505060206133a8868287016131de565b92505060406133b986828701613214565b9150509250925092565b6133cc816131b5565b82525050565b60006020820190506133e760008301846133c3565b92915050565b600060ff82169050919050565b613403816133ed565b82525050565b600060208201905061341e60008301846133fa565b92915050565b61342d81613269565b811461343857600080fd5b50565b60008135905061344a81613424565b92915050565b6000806040838503121561346757613466613190565b5b6000613475858286016131de565b92505060206134868582860161343b565b9150509250929050565b600080604083850312156134a7576134a6613190565b5b60006134b5858286016131de565b92505060206134c6858286016131de565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061351757607f821691505b60208210810361352a576135296134d0565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061358c6028836130e0565b915061359782613530565b604082019050919050565b600060208201905081810360008301526135bb8161357f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135fc826131f3565b9150613607836131f3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561363c5761363b6135c2565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061367d6020836130e0565b915061368882613647565b602082019050919050565b600060208201905081810360008301526136ac81613670565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061370f6039836130e0565b915061371a826136b3565b604082019050919050565b6000602082019050818103600083015261373e81613702565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006137a16025836130e0565b91506137ac82613745565b604082019050919050565b600060208201905081810360008301526137d081613794565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138336026836130e0565b915061383e826137d7565b604082019050919050565b6000602082019050818103600083015261386281613826565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006138c56024836130e0565b91506138d082613869565b604082019050919050565b600060208201905081810360008301526138f4816138b8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139576022836130e0565b9150613962826138fb565b604082019050919050565b600060208201905081810360008301526139868161394a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139e96025836130e0565b91506139f48261398d565b604082019050919050565b60006020820190508181036000830152613a18816139dc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a7b6023836130e0565b9150613a8682613a1f565b604082019050919050565b60006020820190508181036000830152613aaa81613a6e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613ae76016836130e0565b9150613af282613ab1565b602082019050919050565b60006020820190508181036000830152613b1681613ada565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000613b9f6049836130e0565b9150613baa82613b1d565b606082019050919050565b60006020820190508181036000830152613bce81613b92565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613c316035836130e0565b9150613c3c82613bd5565b604082019050919050565b60006020820190508181036000830152613c6081613c24565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613c9d6013836130e0565b9150613ca882613c67565b602082019050919050565b60006020820190508181036000830152613ccc81613c90565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613d2f6036836130e0565b9150613d3a82613cd3565b604082019050919050565b60006020820190508181036000830152613d5e81613d22565b9050919050565b6000613d70826131f3565b9150613d7b836131f3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613db457613db36135c2565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613df9826131f3565b9150613e04836131f3565b925082613e1457613e13613dbf565b5b828204905092915050565b6000613e2a826131f3565b9150613e35836131f3565b925082821015613e4857613e476135c2565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613eaf6026836130e0565b9150613eba82613e53565b604082019050919050565b60006020820190508181036000830152613ede81613ea2565b9050919050565b600081905092915050565b50565b6000613f00600083613ee5565b9150613f0b82613ef0565b600082019050919050565b6000613f2182613ef3565b9150819050919050565b6000606082019050613f406000830186613346565b613f4d6020830185613346565b613f5a6040830184613346565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613fcf816131c7565b92915050565b600060208284031215613feb57613fea613190565b5b6000613ff984828501613fc0565b91505092915050565b6000819050919050565b600061402761402261401d84614002565b6132cc565b6131f3565b9050919050565b6140378161400c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614072816131b5565b82525050565b60006140848383614069565b60208301905092915050565b6000602082019050919050565b60006140a88261403d565b6140b28185614048565b93506140bd83614059565b8060005b838110156140ee5781516140d58882614078565b97506140e083614090565b9250506001810190506140c1565b5085935050505092915050565b600060a0820190506141106000830188613346565b61411d602083018761402e565b818103604083015261412f818661409d565b905061413e60608301856133c3565b61414b6080830184613346565b9695505050505050565b600060c08201905061416a60008301896133c3565b6141776020830188613346565b614184604083018761402e565b614191606083018661402e565b61419e60808301856133c3565b6141ab60a0830184613346565b979650505050505050565b6000815190506141c5816131fd565b92915050565b6000806000606084860312156141e4576141e3613190565b5b60006141f2868287016141b6565b9350506020614203868287016141b6565b9250506040614214868287016141b6565b915050925092509256fea26469706673582212205dd3036ac7c00fffb5422c7a9af667455fbd6708b7526688972389a89154b1ec64736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102815760003560e01c80638da5cb5b1161014f578063bbc0c742116100c1578063e2f456051161007a578063e2f45605146109cb578063e884f260146109f6578063f11a24d314610a21578063f2fde38b14610a4c578063f637434214610a75578063f8b45b0514610aa057610288565b8063bbc0c742146108b9578063c0246668146108e4578063c876d0b91461090d578063c8c8ebe414610938578063d85ba06314610963578063dd62ed3e1461098e57610288565b80639c3b4fdc116101135780639c3b4fdc146107815780639fccce32146107ac578063a0d82dc5146107d7578063a457c2d714610802578063a9059cbb1461083f578063b62496f51461087c57610288565b80638da5cb5b146106ac5780638ea5220f146106d7578063921369131461070257806395d89b411461072d5780639a7a23d61461075857610288565b806349bd5a5e116101f3578063715018a6116101ac578063715018a6146105d4578063751039fc146105eb5780637571336a1461061657806375f0a8741461063f5780637bce5a041461066a5780638a8c523c1461069557610288565b806349bd5a5e146104ae5780634a62bb65146104d95780634fbee193146105045780636a486a8e146105415780636ddd17131461056c57806370a082311461059757610288565b80631a8145bb116102455780631a8145bb146103885780631f3fed8f146103b357806323b872dd146103de57806327c8f8351461041b578063313ce56714610446578063395093511461047157610288565b806306fdde031461028d578063095ea7b3146102b857806310d5de53146102f55780631694505e1461033257806318160ddd1461035d57610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610acb565b6040516102af919061316e565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190613229565b610b5d565b6040516102ec9190613284565b60405180910390f35b34801561030157600080fd5b5061031c6004803603810190610317919061329f565b610b7b565b6040516103299190613284565b60405180910390f35b34801561033e57600080fd5b50610347610b9b565b604051610354919061332b565b60405180910390f35b34801561036957600080fd5b50610372610bbf565b60405161037f9190613355565b60405180910390f35b34801561039457600080fd5b5061039d610bc9565b6040516103aa9190613355565b60405180910390f35b3480156103bf57600080fd5b506103c8610bcf565b6040516103d59190613355565b60405180910390f35b3480156103ea57600080fd5b5061040560048036038101906104009190613370565b610bd5565b6040516104129190613284565b60405180910390f35b34801561042757600080fd5b50610430610ccd565b60405161043d91906133d2565b60405180910390f35b34801561045257600080fd5b5061045b610cd3565b6040516104689190613409565b60405180910390f35b34801561047d57600080fd5b5061049860048036038101906104939190613229565b610cdc565b6040516104a59190613284565b60405180910390f35b3480156104ba57600080fd5b506104c3610d88565b6040516104d091906133d2565b60405180910390f35b3480156104e557600080fd5b506104ee610dac565b6040516104fb9190613284565b60405180910390f35b34801561051057600080fd5b5061052b6004803603810190610526919061329f565b610dbf565b6040516105389190613284565b60405180910390f35b34801561054d57600080fd5b50610556610e15565b6040516105639190613355565b60405180910390f35b34801561057857600080fd5b50610581610e1b565b60405161058e9190613284565b60405180910390f35b3480156105a357600080fd5b506105be60048036038101906105b9919061329f565b610e2e565b6040516105cb9190613355565b60405180910390f35b3480156105e057600080fd5b506105e9610e76565b005b3480156105f757600080fd5b50610600610efe565b60405161060d9190613284565b60405180910390f35b34801561062257600080fd5b5061063d60048036038101906106389190613450565b610f9e565b005b34801561064b57600080fd5b50610654611075565b60405161066191906133d2565b60405180910390f35b34801561067657600080fd5b5061067f61109b565b60405161068c9190613355565b60405180910390f35b3480156106a157600080fd5b506106aa6110a1565b005b3480156106b857600080fd5b506106c1611155565b6040516106ce91906133d2565b60405180910390f35b3480156106e357600080fd5b506106ec61117f565b6040516106f991906133d2565b60405180910390f35b34801561070e57600080fd5b506107176111a5565b6040516107249190613355565b60405180910390f35b34801561073957600080fd5b506107426111ab565b60405161074f919061316e565b60405180910390f35b34801561076457600080fd5b5061077f600480360381019061077a9190613450565b61123d565b005b34801561078d57600080fd5b50610796611355565b6040516107a39190613355565b60405180910390f35b3480156107b857600080fd5b506107c161135b565b6040516107ce9190613355565b60405180910390f35b3480156107e357600080fd5b506107ec611361565b6040516107f99190613355565b60405180910390f35b34801561080e57600080fd5b5061082960048036038101906108249190613229565b611367565b6040516108369190613284565b60405180910390f35b34801561084b57600080fd5b5061086660048036038101906108619190613229565b611452565b6040516108739190613284565b60405180910390f35b34801561088857600080fd5b506108a3600480360381019061089e919061329f565b611470565b6040516108b09190613284565b60405180910390f35b3480156108c557600080fd5b506108ce611490565b6040516108db9190613284565b60405180910390f35b3480156108f057600080fd5b5061090b60048036038101906109069190613450565b6114a3565b005b34801561091957600080fd5b506109226115c8565b60405161092f9190613284565b60405180910390f35b34801561094457600080fd5b5061094d6115db565b60405161095a9190613355565b60405180910390f35b34801561096f57600080fd5b506109786115e1565b6040516109859190613355565b60405180910390f35b34801561099a57600080fd5b506109b560048036038101906109b09190613490565b6115e7565b6040516109c29190613355565b60405180910390f35b3480156109d757600080fd5b506109e061166e565b6040516109ed9190613355565b60405180910390f35b348015610a0257600080fd5b50610a0b611674565b604051610a189190613284565b60405180910390f35b348015610a2d57600080fd5b50610a36611714565b604051610a439190613355565b60405180910390f35b348015610a5857600080fd5b50610a736004803603810190610a6e919061329f565b61171a565b005b348015610a8157600080fd5b50610a8a611811565b604051610a979190613355565b60405180910390f35b348015610aac57600080fd5b50610ab5611817565b604051610ac29190613355565b60405180910390f35b606060038054610ada906134ff565b80601f0160208091040260200160405190810160405280929190818152602001828054610b06906134ff565b8015610b535780601f10610b2857610100808354040283529160200191610b53565b820191906000526020600020905b815481529060010190602001808311610b3657829003601f168201915b5050505050905090565b6000610b71610b6a61181d565b8484611825565b6001905092915050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60145481565b60135481565b6000610be28484846119ee565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c2d61181d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca4906135a2565b60405180910390fd5b610cc185610cb961181d565b858403611825565b60019150509392505050565b61dead81565b60006012905090565b6000610d7e610ce961181d565b848460016000610cf761181d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d7991906135f1565b611825565b6001905092915050565b7f000000000000000000000000c64d58f15a9504a743bfd5465ead5a05cb8415b081565b601660009054906101000a900460ff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b601660019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e7e61181d565b73ffffffffffffffffffffffffffffffffffffffff16610e9c611155565b73ffffffffffffffffffffffffffffffffffffffff1614610ef2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee990613693565b60405180910390fd5b610efc6000612685565b565b6000610f0861181d565b73ffffffffffffffffffffffffffffffffffffffff16610f26611155565b73ffffffffffffffffffffffffffffffffffffffff1614610f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7390613693565b60405180910390fd5b6000601660006101000a81548160ff0219169083151502179055506001905090565b610fa661181d565b73ffffffffffffffffffffffffffffffffffffffff16610fc4611155565b73ffffffffffffffffffffffffffffffffffffffff161461101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101190613693565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b6110a961181d565b73ffffffffffffffffffffffffffffffffffffffff166110c7611155565b73ffffffffffffffffffffffffffffffffffffffff161461111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111490613693565b60405180910390fd5b6001601660026101000a81548160ff0219169083151502179055506001601660016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b6060600480546111ba906134ff565b80601f01602080910402602001604051908101604052809291908181526020018280546111e6906134ff565b80156112335780601f1061120857610100808354040283529160200191611233565b820191906000526020600020905b81548152906001019060200180831161121657829003601f168201915b5050505050905090565b61124561181d565b73ffffffffffffffffffffffffffffffffffffffff16611263611155565b73ffffffffffffffffffffffffffffffffffffffff16146112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b090613693565b60405180910390fd5b7f000000000000000000000000c64d58f15a9504a743bfd5465ead5a05cb8415b073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611347576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133e90613725565b60405180910390fd5b611351828261274b565b5050565b600b5481565b60155481565b60125481565b6000806001600061137661181d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a906137b7565b60405180910390fd5b61144761143e61181d565b85858403611825565b600191505092915050565b600061146661145f61181d565b84846119ee565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b601660029054906101000a900460ff1681565b6114ab61181d565b73ffffffffffffffffffffffffffffffffffffffff166114c9611155565b73ffffffffffffffffffffffffffffffffffffffff161461151f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151690613693565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516115bc9190613284565b60405180910390a25050565b601860009054906101000a900460ff1681565b600a5481565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600061167e61181d565b73ffffffffffffffffffffffffffffffffffffffff1661169c611155565b73ffffffffffffffffffffffffffffffffffffffff16146116f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e990613693565b60405180910390fd5b6000601860006101000a81548160ff0219169083151502179055506001905090565b600e5481565b61172261181d565b73ffffffffffffffffffffffffffffffffffffffff16611740611155565b73ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90613693565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc90613849565b60405180910390fd5b61180e81612685565b50565b60105481565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188b906138db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa9061396d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119e19190613355565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a54906139ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac390613a91565b60405180910390fd5b60008103611ae557611ae0838360006127ec565b612680565b601660009054906101000a900460ff16156121a857611b02611155565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b705750611b40611155565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba95750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611be3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bfc5750600560149054906101000a900460ff16155b156121a757601660029054906101000a900460ff16611cf657601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cb65750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cec90613afd565b60405180910390fd5b5b601860009054906101000a900460ff1615611ebe57611d13611155565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611d9a57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611df257507f000000000000000000000000c64d58f15a9504a743bfd5465ead5a05cb8415b073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ebd5743601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6f90613bb5565b60405180910390fd5b43601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611f615750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561200857600a54811115611fab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa290613c47565b60405180910390fd5b600954611fb783610e2e565b82611fc291906135f1565b1115612003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffa90613cb3565b60405180910390fd5b6121a6565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156120ab5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120fa57600a548111156120f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ec90613d45565b60405180910390fd5b6121a5565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166121a45760095461215783610e2e565b8261216291906135f1565b11156121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90613cb3565b60405180910390fd5b5b5b5b5b5b60006121b330610e2e565b9050600060085482101590508080156121d85750601660019054906101000a900460ff165b80156121f15750600560149054906101000a900460ff16155b80156122475750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561229d5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122f35750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612337576001600560146101000a81548160ff02191690831515021790555061231b612a6b565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123ed5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123f757600090505b6000811561267057601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561245a57506000600f54115b15612527576124876064612479600f5488612d5090919063ffffffff16565b612d6690919063ffffffff16565b9050600f546010548261249a9190613d65565b6124a49190613dee565b601460008282546124b591906135f1565b92505081905550600f54601254826124cd9190613d65565b6124d79190613dee565b601560008282546124e891906135f1565b92505081905550600f54601154826125009190613d65565b61250a9190613dee565b6013600082825461251b91906135f1565b9250508190555061264c565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561258257506000600c54115b1561264b576125af60646125a1600c5488612d5090919063ffffffff16565b612d6690919063ffffffff16565b9050600c54600e54826125c29190613d65565b6125cc9190613dee565b601460008282546125dd91906135f1565b92505081905550600c54600b54826125f59190613d65565b6125ff9190613dee565b6015600082825461261091906135f1565b92505081905550600c54600d54826126289190613d65565b6126329190613dee565b6013600082825461264391906135f1565b925050819055505b5b6000811115612661576126608730836127ec565b5b808561266d9190613e1f565b94505b61267b8787876127ec565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361285b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612852906139ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c190613a91565b60405180910390fd5b6128d5838383612d7c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561295b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295290613ec5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129ee91906135f1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a529190613355565b60405180910390a3612a65848484612d81565b50505050565b6000612a7630610e2e565b90506000601554601354601454612a8d91906135f1565b612a9791906135f1565b9050600080831480612aa95750600082145b15612ab657505050612d4e565b6014600854612ac59190613d65565b831115612ade576014600854612adb9190613d65565b92505b600060028360145486612af19190613d65565b612afb9190613dee565b612b059190613dee565b90506000612b1c8286612d8690919063ffffffff16565b90506000479050612b2c82612d9c565b6000612b418247612d8690919063ffffffff16565b90506000612b6c87612b5e60135485612d5090919063ffffffff16565b612d6690919063ffffffff16565b90506000612b9788612b8960155486612d5090919063ffffffff16565b612d6690919063ffffffff16565b90506000818385612ba89190613e1f565b612bb29190613e1f565b9050600060148190555060006013819055506000601581905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612c1290613f16565b60006040518083038185875af1925050503d8060008114612c4f576040519150601f19603f3d011682016040523d82523d6000602084013e612c54565b606091505b505080985050600087118015612c6a5750600081115b15612cb557612c798782612fd9565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868289604051612cac93929190613f2b565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612cfb90613f16565b60006040518083038185875af1925050503d8060008114612d38576040519150601f19603f3d011682016040523d82523d6000602084013e612d3d565b606091505b505080985050505050505050505050505b565b60008183612d5e9190613d65565b905092915050565b60008183612d749190613dee565b905092915050565b505050565b505050565b60008183612d949190613e1f565b905092915050565b6000600267ffffffffffffffff811115612db957612db8613f62565b5b604051908082528060200260200182016040528015612de75781602001602082028036833780820191505090505b5090503081600081518110612dff57612dfe613f91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ea4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec89190613fd5565b81600181518110612edc57612edb613f91565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f41307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611825565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612fa39594939291906140fb565b600060405180830381600087803b158015612fbd57600080fd5b505af1158015612fd1573d6000803e3d6000fd5b505050505050565b613004307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611825565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161308b96959493929190614155565b60606040518083038185885af11580156130a9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130ce91906141cb565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561310f5780820151818401526020810190506130f4565b8381111561311e576000848401525b50505050565b6000601f19601f8301169050919050565b6000613140826130d5565b61314a81856130e0565b935061315a8185602086016130f1565b61316381613124565b840191505092915050565b600060208201905081810360008301526131888184613135565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131c082613195565b9050919050565b6131d0816131b5565b81146131db57600080fd5b50565b6000813590506131ed816131c7565b92915050565b6000819050919050565b613206816131f3565b811461321157600080fd5b50565b600081359050613223816131fd565b92915050565b600080604083850312156132405761323f613190565b5b600061324e858286016131de565b925050602061325f85828601613214565b9150509250929050565b60008115159050919050565b61327e81613269565b82525050565b60006020820190506132996000830184613275565b92915050565b6000602082840312156132b5576132b4613190565b5b60006132c3848285016131de565b91505092915050565b6000819050919050565b60006132f16132ec6132e784613195565b6132cc565b613195565b9050919050565b6000613303826132d6565b9050919050565b6000613315826132f8565b9050919050565b6133258161330a565b82525050565b6000602082019050613340600083018461331c565b92915050565b61334f816131f3565b82525050565b600060208201905061336a6000830184613346565b92915050565b60008060006060848603121561338957613388613190565b5b6000613397868287016131de565b93505060206133a8868287016131de565b92505060406133b986828701613214565b9150509250925092565b6133cc816131b5565b82525050565b60006020820190506133e760008301846133c3565b92915050565b600060ff82169050919050565b613403816133ed565b82525050565b600060208201905061341e60008301846133fa565b92915050565b61342d81613269565b811461343857600080fd5b50565b60008135905061344a81613424565b92915050565b6000806040838503121561346757613466613190565b5b6000613475858286016131de565b92505060206134868582860161343b565b9150509250929050565b600080604083850312156134a7576134a6613190565b5b60006134b5858286016131de565b92505060206134c6858286016131de565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061351757607f821691505b60208210810361352a576135296134d0565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061358c6028836130e0565b915061359782613530565b604082019050919050565b600060208201905081810360008301526135bb8161357f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135fc826131f3565b9150613607836131f3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561363c5761363b6135c2565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061367d6020836130e0565b915061368882613647565b602082019050919050565b600060208201905081810360008301526136ac81613670565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061370f6039836130e0565b915061371a826136b3565b604082019050919050565b6000602082019050818103600083015261373e81613702565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006137a16025836130e0565b91506137ac82613745565b604082019050919050565b600060208201905081810360008301526137d081613794565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138336026836130e0565b915061383e826137d7565b604082019050919050565b6000602082019050818103600083015261386281613826565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006138c56024836130e0565b91506138d082613869565b604082019050919050565b600060208201905081810360008301526138f4816138b8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139576022836130e0565b9150613962826138fb565b604082019050919050565b600060208201905081810360008301526139868161394a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139e96025836130e0565b91506139f48261398d565b604082019050919050565b60006020820190508181036000830152613a18816139dc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a7b6023836130e0565b9150613a8682613a1f565b604082019050919050565b60006020820190508181036000830152613aaa81613a6e565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613ae76016836130e0565b9150613af282613ab1565b602082019050919050565b60006020820190508181036000830152613b1681613ada565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000613b9f6049836130e0565b9150613baa82613b1d565b606082019050919050565b60006020820190508181036000830152613bce81613b92565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613c316035836130e0565b9150613c3c82613bd5565b604082019050919050565b60006020820190508181036000830152613c6081613c24565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613c9d6013836130e0565b9150613ca882613c67565b602082019050919050565b60006020820190508181036000830152613ccc81613c90565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613d2f6036836130e0565b9150613d3a82613cd3565b604082019050919050565b60006020820190508181036000830152613d5e81613d22565b9050919050565b6000613d70826131f3565b9150613d7b836131f3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613db457613db36135c2565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613df9826131f3565b9150613e04836131f3565b925082613e1457613e13613dbf565b5b828204905092915050565b6000613e2a826131f3565b9150613e35836131f3565b925082821015613e4857613e476135c2565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613eaf6026836130e0565b9150613eba82613e53565b604082019050919050565b60006020820190508181036000830152613ede81613ea2565b9050919050565b600081905092915050565b50565b6000613f00600083613ee5565b9150613f0b82613ef0565b600082019050919050565b6000613f2182613ef3565b9150819050919050565b6000606082019050613f406000830186613346565b613f4d6020830185613346565b613f5a6040830184613346565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613fcf816131c7565b92915050565b600060208284031215613feb57613fea613190565b5b6000613ff984828501613fc0565b91505092915050565b6000819050919050565b600061402761402261401d84614002565b6132cc565b6131f3565b9050919050565b6140378161400c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614072816131b5565b82525050565b60006140848383614069565b60208301905092915050565b6000602082019050919050565b60006140a88261403d565b6140b28185614048565b93506140bd83614059565b8060005b838110156140ee5781516140d58882614078565b97506140e083614090565b9250506001810190506140c1565b5085935050505092915050565b600060a0820190506141106000830188613346565b61411d602083018761402e565b818103604083015261412f818661409d565b905061413e60608301856133c3565b61414b6080830184613346565b9695505050505050565b600060c08201905061416a60008301896133c3565b6141776020830188613346565b614184604083018761402e565b614191606083018661402e565b61419e60808301856133c3565b6141ab60a0830184613346565b979650505050505050565b6000815190506141c5816131fd565b92915050565b6000806000606084860312156141e4576141e3613190565b5b60006141f2868287016141b6565b9350506020614203868287016141b6565b9250506040614214868287016141b6565b915050925092509256fea26469706673582212205dd3036ac7c00fffb5422c7a9af667455fbd6708b7526688972389a89154b1ec64736f6c634300080f0033

Deployed Bytecode Sourcemap

15089:12191:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2793:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3426:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16241:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15162:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3131:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15868:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15828;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3979:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15265:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2899:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3758:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15220:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15942:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19932:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15683:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15982:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2998:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;834:103;;;;;;;;;;;;;:::i;:::-;;19028:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24815:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15357:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15607;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19157:112;;;;;;;;;;;;;:::i;:::-;;615:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15394:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15756:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2683:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19424:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15542:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15908:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15794:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4477:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3245:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16313:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16020:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24990:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16133:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15498:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15573:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3601:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15427:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19277:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15644:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;943:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15718:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15467:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2793:100;2847:13;2880:5;2873:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2793:100;:::o;3426:169::-;3509:4;3526:39;3535:12;:10;:12::i;:::-;3549:7;3558:6;3526:8;:39::i;:::-;3583:4;3576:11;;3426:169;;;;:::o;16241:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15162:51::-;;;:::o;3131:108::-;3192:7;3219:12;;3212:19;;3131:108;:::o;15868:33::-;;;;:::o;15828:::-;;;;:::o;3979:492::-;4119:4;4136:36;4146:6;4154:9;4165:6;4136:9;:36::i;:::-;4185:24;4212:11;:19;4224:6;4212:19;;;;;;;;;;;;;;;:33;4232:12;:10;:12::i;:::-;4212:33;;;;;;;;;;;;;;;;4185:60;;4284:6;4264:16;:26;;4256:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4371:57;4380:6;4388:12;:10;:12::i;:::-;4421:6;4402:16;:25;4371:8;:57::i;:::-;4459:4;4452:11;;;3979:492;;;;;:::o;15265:53::-;15311:6;15265:53;:::o;2899:93::-;2957:5;2982:2;2975:9;;2899:93;:::o;3758:215::-;3846:4;3863:80;3872:12;:10;:12::i;:::-;3886:7;3932:10;3895:11;:25;3907:12;:10;:12::i;:::-;3895:25;;;;;;;;;;;;;;;:34;3921:7;3895:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3863:8;:80::i;:::-;3961:4;3954:11;;3758:215;;;;:::o;15220:38::-;;;:::o;15942:33::-;;;;;;;;;;;;;:::o;19932:126::-;19998:4;20022:19;:28;20042:7;20022:28;;;;;;;;;;;;;;;;;;;;;;;;;20015:35;;19932:126;;;:::o;15683:28::-;;;;:::o;15982:31::-;;;;;;;;;;;;;:::o;2998:127::-;3072:7;3099:9;:18;3109:7;3099:18;;;;;;;;;;;;;;;;3092:25;;2998:127;;;:::o;834:103::-;759:12;:10;:12::i;:::-;748:23;;:7;:5;:7::i;:::-;:23;;;740:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;899:30:::1;926:1;899:18;:30::i;:::-;834:103::o:0;19028:121::-;19080:4;759:12;:10;:12::i;:::-;748:23;;:7;:5;:7::i;:::-;:23;;;740:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19114:5:::1;19097:14;;:22;;;;;;;;;;;;;;;;;;19137:4;19130:11;;19028:121:::0;:::o;24815:167::-;759:12;:10;:12::i;:::-;748:23;;:7;:5;:7::i;:::-;:23;;;740:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24970:4:::1;24928:31;:39;24960:6;24928:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;24815:167:::0;;:::o;15357:30::-;;;;;;;;;;;;;:::o;15607:::-;;;;:::o;19157:112::-;759:12;:10;:12::i;:::-;748:23;;:7;:5;:7::i;:::-;:23;;;740:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19228:4:::1;19212:13;;:20;;;;;;;;;;;;;;;;;;19257:4;19243:11;;:18;;;;;;;;;;;;;;;;;;19157:112::o:0;615:87::-;661:7;688:6;;;;;;;;;;;681:13;;615:87;:::o;15394:24::-;;;;;;;;;;;;;:::o;15756:31::-;;;;:::o;2683:104::-;2739:13;2772:7;2765:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2683:104;:::o;19424:304::-;759:12;:10;:12::i;:::-;748:23;;:7;:5;:7::i;:::-;:23;;;740:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19568:13:::1;19560:21;;:4;:21;;::::0;19538:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19679:41;19708:4;19714:5;19679:28;:41::i;:::-;19424:304:::0;;:::o;15542:24::-;;;;:::o;15908:27::-;;;;:::o;15794:25::-;;;;:::o;4477:413::-;4570:4;4587:24;4614:11;:25;4626:12;:10;:12::i;:::-;4614:25;;;;;;;;;;;;;;;:34;4640:7;4614:34;;;;;;;;;;;;;;;;4587:61;;4687:15;4667:16;:35;;4659:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4780:67;4789:12;:10;:12::i;:::-;4803:7;4831:15;4812:16;:34;4780:8;:67::i;:::-;4878:4;4871:11;;;4477:413;;;;:::o;3245:175::-;3331:4;3348:42;3358:12;:10;:12::i;:::-;3372:9;3383:6;3348:9;:42::i;:::-;3408:4;3401:11;;3245:175;;;;:::o;16313:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;16020:33::-;;;;;;;;;;;;;:::o;24990:182::-;759:12;:10;:12::i;:::-;748:23;;:7;:5;:7::i;:::-;:23;;;740:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25106:8:::1;25075:19;:28;25095:7;25075:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25146:7;25130:34;;;25155:8;25130:34;;;;;;:::i;:::-;;;;;;;;24990:182:::0;;:::o;16133:40::-;;;;;;;;;;;;;:::o;15498:35::-;;;;:::o;15573:27::-;;;;:::o;3601:151::-;3690:7;3717:11;:18;3729:5;3717:18;;;;;;;;;;;;;;;:27;3736:7;3717:27;;;;;;;;;;;;;;;;3710:34;;3601:151;;;;:::o;15427:33::-;;;;:::o;19277:135::-;19337:4;759:12;:10;:12::i;:::-;748:23;;:7;:5;:7::i;:::-;:23;;;740:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19377:5:::1;19354:20;;:28;;;;;;;;;;;;;;;;;;19400:4;19393:11;;19277:135:::0;:::o;15644:30::-;;;;:::o;943:201::-;759:12;:10;:12::i;:::-;748:23;;:7;:5;:7::i;:::-;:23;;;740:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1052:1:::1;1032:22;;:8;:22;;::::0;1024:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1108:28;1127:8;1108:18;:28::i;:::-;943:201:::0;:::o;15718:31::-;;;;:::o;15467:24::-;;;;:::o;276:98::-;329:7;356:10;349:17;;276:98;:::o;6637:380::-;6790:1;6773:19;;:5;:19;;;6765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6871:1;6852:21;;:7;:21;;;6844:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6955:6;6925:11;:18;6937:5;6925:18;;;;;;;;;;;;;;;:27;6944:7;6925:27;;;;;;;;;;;;;;;:36;;;;6993:7;6977:32;;6986:5;6977:32;;;7002:6;6977:32;;;;;;:::i;:::-;;;;;;;;6637:380;;;:::o;20066:4369::-;20214:1;20198:18;;:4;:18;;;20190:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20291:1;20277:16;;:2;:16;;;20269:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20360:1;20350:6;:11;20346:93;;20378:28;20394:4;20400:2;20404:1;20378:15;:28::i;:::-;20421:7;;20346:93;20455:14;;;;;;;;;;;20451:2298;;;20516:7;:5;:7::i;:::-;20508:15;;:4;:15;;;;:49;;;;;20550:7;:5;:7::i;:::-;20544:13;;:2;:13;;;;20508:49;:86;;;;;20592:1;20578:16;;:2;:16;;;;20508:86;:128;;;;;20629:6;20615:21;;:2;:21;;;;20508:128;:158;;;;;20658:8;;;;;;;;;;;20657:9;20508:158;20486:2252;;;20706:13;;;;;;;;;;;20701:223;;20778:19;:25;20798:4;20778:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20807:19;:23;20827:2;20807:23;;;;;;;;;;;;;;;;;;;;;;;;;20778:52;20744:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;20701:223;20948:20;;;;;;;;;;;20944:641;;;21029:7;:5;:7::i;:::-;21023:13;;:2;:13;;;;:72;;;;;21079:15;21065:30;;:2;:30;;;;21023:72;:129;;;;;21138:13;21124:28;;:2;:28;;;;21023:129;20993:573;;;21316:12;21241:28;:39;21270:9;21241:39;;;;;;;;;;;;;;;;:87;21203:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;21530:12;21488:28;:39;21517:9;21488:39;;;;;;;;;;;;;;;:54;;;;20993:573;20944:641;21631:25;:31;21657:4;21631:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;21688:31;:35;21720:2;21688:35;;;;;;;;;;;;;;;;;;;;;;;;;21687:36;21631:92;21605:1118;;;21810:20;;21800:6;:30;;21766:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;22018:9;;22001:13;22011:2;22001:9;:13::i;:::-;21992:6;:22;;;;:::i;:::-;:35;;21958:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;21605:1118;;;22167:25;:29;22193:2;22167:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;22222:31;:37;22254:4;22222:37;;;;;;;;;;;;;;;;;;;;;;;;;22221:38;22167:92;22141:582;;;22346:20;;22336:6;:30;;22302:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;22141:582;;;22503:31;:35;22535:2;22503:35;;;;;;;;;;;;;;;;;;;;;;;;;22498:225;;22623:9;;22606:13;22616:2;22606:9;:13::i;:::-;22597:6;:22;;;;:::i;:::-;:35;;22563:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;22498:225;22141:582;21605:1118;20486:2252;20451:2298;22761:28;22792:24;22810:4;22792:9;:24::i;:::-;22761:55;;22829:12;22868:18;;22844:20;:42;;22829:57;;22917:7;:35;;;;;22941:11;;;;;;;;;;;22917:35;:61;;;;;22970:8;;;;;;;;;;;22969:9;22917:61;:110;;;;;22996:25;:31;23022:4;22996:31;;;;;;;;;;;;;;;;;;;;;;;;;22995:32;22917:110;:153;;;;;23045:19;:25;23065:4;23045:25;;;;;;;;;;;;;;;;;;;;;;;;;23044:26;22917:153;:194;;;;;23088:19;:23;23108:2;23088:23;;;;;;;;;;;;;;;;;;;;;;;;;23087:24;22917:194;22899:326;;;23149:4;23138:8;;:15;;;;;;;;;;;;;;;;;;23170:10;:8;:10::i;:::-;23208:5;23197:8;;:16;;;;;;;;;;;;;;;;;;22899:326;23237:12;23253:8;;;;;;;;;;;23252:9;23237:24;;23278:19;:25;23298:4;23278:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;23307:19;:23;23327:2;23307:23;;;;;;;;;;;;;;;;;;;;;;;;;23278:52;23274:100;;;23357:5;23347:15;;23274:100;23386:12;23417:7;23413:969;;;23469:25;:29;23495:2;23469:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;23518:1;23502:13;;:17;23469:50;23465:768;;;23547:34;23577:3;23547:25;23558:13;;23547:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;23540:41;;23650:13;;23630:16;;23623:4;:23;;;;:::i;:::-;23622:41;;;;:::i;:::-;23600:18;;:63;;;;;;;:::i;:::-;;;;;;;;23720:13;;23706:10;;23699:4;:17;;;;:::i;:::-;23698:35;;;;:::i;:::-;23682:12;;:51;;;;;;;:::i;:::-;;;;;;;;23802:13;;23782:16;;23775:4;:23;;;;:::i;:::-;23774:41;;;;:::i;:::-;23752:18;;:63;;;;;;;:::i;:::-;;;;;;;;23465:768;;;23877:25;:31;23903:4;23877:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;23927:1;23912:12;;:16;23877:51;23873:360;;;23956:33;23985:3;23956:24;23967:12;;23956:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;23949:40;;24057:12;;24038:15;;24031:4;:22;;;;:::i;:::-;24030:39;;;;:::i;:::-;24008:18;;:61;;;;;;;:::i;:::-;;;;;;;;24125:12;;24112:9;;24105:4;:16;;;;:::i;:::-;24104:33;;;;:::i;:::-;24088:12;;:49;;;;;;;:::i;:::-;;;;;;;;24205:12;;24186:15;;24179:4;:22;;;;:::i;:::-;24178:39;;;;:::i;:::-;24156:18;;:61;;;;;;;:::i;:::-;;;;;;;;23873:360;23465:768;24260:1;24253:4;:8;24249:91;;;24282:42;24298:4;24312;24319;24282:15;:42::i;:::-;24249:91;24366:4;24356:14;;;;;:::i;:::-;;;23413:969;24394:33;24410:4;24416:2;24420:6;24394:15;:33::i;:::-;20179:4256;;;;20066:4369;;;;:::o;1150:191::-;1224:16;1243:6;;;;;;;;;;;1224:25;;1269:8;1260:6;;:17;;;;;;;;;;;;;;;;;;1324:8;1293:40;;1314:8;1293:40;;;;;;;;;;;;1213:128;1150:191;:::o;19736:188::-;19853:5;19819:25;:31;19845:4;19819:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19910:5;19876:40;;19904:4;19876:40;;;;;;;;;;;;19736:188;;:::o;4896:733::-;5054:1;5036:20;;:6;:20;;;5028:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5138:1;5117:23;;:9;:23;;;5109:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5193:47;5214:6;5222:9;5233:6;5193:20;:47::i;:::-;5253:21;5277:9;:17;5287:6;5277:17;;;;;;;;;;;;;;;;5253:41;;5330:6;5313:13;:23;;5305:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5451:6;5435:13;:22;5415:9;:17;5425:6;5415:17;;;;;;;;;;;;;;;:42;;;;5503:6;5479:9;:20;5489:9;5479:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5544:9;5527:35;;5536:6;5527:35;;;5555:6;5527:35;;;;;;:::i;:::-;;;;;;;;5575:46;5595:6;5603:9;5614:6;5575:19;:46::i;:::-;5017:612;4896:733;;;:::o;25663:1612::-;25702:23;25728:24;25746:4;25728:9;:24::i;:::-;25702:50;;25763:25;25833:12;;25812:18;;25791;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;25763:82;;25856:12;25904:1;25885:15;:20;:46;;;;25930:1;25909:17;:22;25885:46;25881:85;;;25948:7;;;;;25881:85;26021:2;26000:18;;:23;;;;:::i;:::-;25982:15;:41;25978:115;;;26079:2;26058:18;;:23;;;;:::i;:::-;26040:41;;25978:115;26105:23;26192:1;26172:17;26150:18;;26132:15;:36;;;;:::i;:::-;26131:58;;;;:::i;:::-;:62;;;;:::i;:::-;26105:88;;26204:26;26233:36;26253:15;26233;:19;;:36;;;;:::i;:::-;26204:65;;26282:25;26310:21;26282:49;;26344:36;26361:18;26344:16;:36::i;:::-;26393:18;26414:44;26440:17;26414:21;:25;;:44;;;;:::i;:::-;26393:65;;26471:23;26497:57;26536:17;26497:34;26512:18;;26497:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;26471:83;;26565:17;26585:51;26618:17;26585:28;26600:12;;26585:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;26565:71;;26649:23;26706:9;26688:15;26675:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;26649:66;;26749:1;26728:18;:22;;;;26782:1;26761:18;:22;;;;26809:1;26794:12;:16;;;;26845:15;;;;;;;;;;;26837:29;;26874:15;26837:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26823:71;;;;;26929:1;26911:15;:19;:42;;;;;26952:1;26934:15;:19;26911:42;26907:275;;;26970:46;26983:15;27000;26970:12;:46::i;:::-;27036:134;27069:18;27106:15;27140;27036:134;;;;;;;;:::i;:::-;;;;;;;;26907:275;27216:9;;;;;;;;;;;27208:23;;27239:21;27208:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27194:71;;;;;25691:1584;;;;;;;;;;25663:1612;:::o;8752:98::-;8810:7;8841:1;8837;:5;;;;:::i;:::-;8830:12;;8752:98;;;;:::o;8960:::-;9018:7;9049:1;9045;:5;;;;:::i;:::-;9038:12;;8960:98;;;;:::o;7023:125::-;;;;:::o;7154:124::-;;;;:::o;8856:98::-;8914:7;8945:1;8941;:5;;;;:::i;:::-;8934:12;;8856:98;;;;:::o;25180:475::-;25246:21;25284:1;25270:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25246:40;;25315:4;25297;25302:1;25297:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25341:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25331:4;25336:1;25331:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25376:62;25393:4;25408:15;25426:11;25376:8;:62::i;:::-;25451:15;:66;;;25532:11;25558:1;25574:4;25601;25621:15;25451:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25235:420;25180:475;:::o;24443:364::-;24524:62;24541:4;24556:15;24574:11;24524:8;:62::i;:::-;24599:15;:31;;;24638:9;24671:4;24691:11;24717:1;24733;24749:9;;;;;;;;;;;24773:15;24599:200;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24443:364;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:118::-;5871:24;5889:5;5871:24;:::i;:::-;5866:3;5859:37;5784:118;;:::o;5908:222::-;6001:4;6039:2;6028:9;6024:18;6016:26;;6052:71;6120:1;6109:9;6105:17;6096:6;6052:71;:::i;:::-;5908:222;;;;:::o;6136:86::-;6171:7;6211:4;6204:5;6200:16;6189:27;;6136:86;;;:::o;6228:112::-;6311:22;6327:5;6311:22;:::i;:::-;6306:3;6299:35;6228:112;;:::o;6346:214::-;6435:4;6473:2;6462:9;6458:18;6450:26;;6486:67;6550:1;6539:9;6535:17;6526:6;6486:67;:::i;:::-;6346:214;;;;:::o;6566:116::-;6636:21;6651:5;6636:21;:::i;:::-;6629:5;6626:32;6616:60;;6672:1;6669;6662:12;6616:60;6566:116;:::o;6688:133::-;6731:5;6769:6;6756:20;6747:29;;6785:30;6809:5;6785:30;:::i;:::-;6688:133;;;;:::o;6827:468::-;6892:6;6900;6949:2;6937:9;6928:7;6924:23;6920:32;6917:119;;;6955:79;;:::i;:::-;6917:119;7075:1;7100:53;7145:7;7136:6;7125:9;7121:22;7100:53;:::i;:::-;7090:63;;7046:117;7202:2;7228:50;7270:7;7261:6;7250:9;7246:22;7228:50;:::i;:::-;7218:60;;7173:115;6827:468;;;;;:::o;7301:474::-;7369:6;7377;7426:2;7414:9;7405:7;7401:23;7397:32;7394:119;;;7432:79;;:::i;:::-;7394:119;7552:1;7577:53;7622:7;7613:6;7602:9;7598:22;7577:53;:::i;:::-;7567:63;;7523:117;7679:2;7705:53;7750:7;7741:6;7730:9;7726:22;7705:53;:::i;:::-;7695:63;;7650:118;7301:474;;;;;:::o;7781:180::-;7829:77;7826:1;7819:88;7926:4;7923:1;7916:15;7950:4;7947:1;7940:15;7967:320;8011:6;8048:1;8042:4;8038:12;8028:22;;8095:1;8089:4;8085:12;8116:18;8106:81;;8172:4;8164:6;8160:17;8150:27;;8106:81;8234:2;8226:6;8223:14;8203:18;8200:38;8197:84;;8253:18;;:::i;:::-;8197:84;8018:269;7967:320;;;:::o;8293:227::-;8433:34;8429:1;8421:6;8417:14;8410:58;8502:10;8497:2;8489:6;8485:15;8478:35;8293:227;:::o;8526:366::-;8668:3;8689:67;8753:2;8748:3;8689:67;:::i;:::-;8682:74;;8765:93;8854:3;8765:93;:::i;:::-;8883:2;8878:3;8874:12;8867:19;;8526:366;;;:::o;8898:419::-;9064:4;9102:2;9091:9;9087:18;9079:26;;9151:9;9145:4;9141:20;9137:1;9126:9;9122:17;9115:47;9179:131;9305:4;9179:131;:::i;:::-;9171:139;;8898:419;;;:::o;9323:180::-;9371:77;9368:1;9361:88;9468:4;9465:1;9458:15;9492:4;9489:1;9482:15;9509:305;9549:3;9568:20;9586:1;9568:20;:::i;:::-;9563:25;;9602:20;9620:1;9602:20;:::i;:::-;9597:25;;9756:1;9688:66;9684:74;9681:1;9678:81;9675:107;;;9762:18;;:::i;:::-;9675:107;9806:1;9803;9799:9;9792:16;;9509:305;;;;:::o;9820:182::-;9960:34;9956:1;9948:6;9944:14;9937:58;9820:182;:::o;10008:366::-;10150:3;10171:67;10235:2;10230:3;10171:67;:::i;:::-;10164:74;;10247:93;10336:3;10247:93;:::i;:::-;10365:2;10360:3;10356:12;10349:19;;10008:366;;;:::o;10380:419::-;10546:4;10584:2;10573:9;10569:18;10561:26;;10633:9;10627:4;10623:20;10619:1;10608:9;10604:17;10597:47;10661:131;10787:4;10661:131;:::i;:::-;10653:139;;10380:419;;;:::o;10805:244::-;10945:34;10941:1;10933:6;10929:14;10922:58;11014:27;11009:2;11001:6;10997:15;10990:52;10805:244;:::o;11055:366::-;11197:3;11218:67;11282:2;11277:3;11218:67;:::i;:::-;11211:74;;11294:93;11383:3;11294:93;:::i;:::-;11412:2;11407:3;11403:12;11396:19;;11055:366;;;:::o;11427:419::-;11593:4;11631:2;11620:9;11616:18;11608:26;;11680:9;11674:4;11670:20;11666:1;11655:9;11651:17;11644:47;11708:131;11834:4;11708:131;:::i;:::-;11700:139;;11427:419;;;:::o;11852:224::-;11992:34;11988:1;11980:6;11976:14;11969:58;12061:7;12056:2;12048:6;12044:15;12037:32;11852:224;:::o;12082:366::-;12224:3;12245:67;12309:2;12304:3;12245:67;:::i;:::-;12238:74;;12321:93;12410:3;12321:93;:::i;:::-;12439:2;12434:3;12430:12;12423:19;;12082:366;;;:::o;12454:419::-;12620:4;12658:2;12647:9;12643:18;12635:26;;12707:9;12701:4;12697:20;12693:1;12682:9;12678:17;12671:47;12735:131;12861:4;12735:131;:::i;:::-;12727:139;;12454:419;;;:::o;12879:225::-;13019:34;13015:1;13007:6;13003:14;12996:58;13088:8;13083:2;13075:6;13071:15;13064:33;12879:225;:::o;13110:366::-;13252:3;13273:67;13337:2;13332:3;13273:67;:::i;:::-;13266:74;;13349:93;13438:3;13349:93;:::i;:::-;13467:2;13462:3;13458:12;13451:19;;13110:366;;;:::o;13482:419::-;13648:4;13686:2;13675:9;13671:18;13663:26;;13735:9;13729:4;13725:20;13721:1;13710:9;13706:17;13699:47;13763:131;13889:4;13763:131;:::i;:::-;13755:139;;13482:419;;;:::o;13907:223::-;14047:34;14043:1;14035:6;14031:14;14024:58;14116:6;14111:2;14103:6;14099:15;14092:31;13907:223;:::o;14136:366::-;14278:3;14299:67;14363:2;14358:3;14299:67;:::i;:::-;14292:74;;14375:93;14464:3;14375:93;:::i;:::-;14493:2;14488:3;14484:12;14477:19;;14136:366;;;:::o;14508:419::-;14674:4;14712:2;14701:9;14697:18;14689:26;;14761:9;14755:4;14751:20;14747:1;14736:9;14732:17;14725:47;14789:131;14915:4;14789:131;:::i;:::-;14781:139;;14508:419;;;:::o;14933:221::-;15073:34;15069:1;15061:6;15057:14;15050:58;15142:4;15137:2;15129:6;15125:15;15118:29;14933:221;:::o;15160:366::-;15302:3;15323:67;15387:2;15382:3;15323:67;:::i;:::-;15316:74;;15399:93;15488:3;15399:93;:::i;:::-;15517:2;15512:3;15508:12;15501:19;;15160:366;;;:::o;15532:419::-;15698:4;15736:2;15725:9;15721:18;15713:26;;15785:9;15779:4;15775:20;15771:1;15760:9;15756:17;15749:47;15813:131;15939:4;15813:131;:::i;:::-;15805:139;;15532:419;;;:::o;15957:224::-;16097:34;16093:1;16085:6;16081:14;16074:58;16166:7;16161:2;16153:6;16149:15;16142:32;15957:224;:::o;16187:366::-;16329:3;16350:67;16414:2;16409:3;16350:67;:::i;:::-;16343:74;;16426:93;16515:3;16426:93;:::i;:::-;16544:2;16539:3;16535:12;16528:19;;16187:366;;;:::o;16559:419::-;16725:4;16763:2;16752:9;16748:18;16740:26;;16812:9;16806:4;16802:20;16798:1;16787:9;16783:17;16776:47;16840:131;16966:4;16840:131;:::i;:::-;16832:139;;16559:419;;;:::o;16984:222::-;17124:34;17120:1;17112:6;17108:14;17101:58;17193:5;17188:2;17180:6;17176:15;17169:30;16984:222;:::o;17212:366::-;17354:3;17375:67;17439:2;17434:3;17375:67;:::i;:::-;17368:74;;17451:93;17540:3;17451:93;:::i;:::-;17569:2;17564:3;17560:12;17553:19;;17212:366;;;:::o;17584:419::-;17750:4;17788:2;17777:9;17773:18;17765:26;;17837:9;17831:4;17827:20;17823:1;17812:9;17808:17;17801:47;17865:131;17991:4;17865:131;:::i;:::-;17857:139;;17584:419;;;:::o;18009:172::-;18149:24;18145:1;18137:6;18133:14;18126:48;18009:172;:::o;18187:366::-;18329:3;18350:67;18414:2;18409:3;18350:67;:::i;:::-;18343:74;;18426:93;18515:3;18426:93;:::i;:::-;18544:2;18539:3;18535:12;18528:19;;18187:366;;;:::o;18559:419::-;18725:4;18763:2;18752:9;18748:18;18740:26;;18812:9;18806:4;18802:20;18798:1;18787:9;18783:17;18776:47;18840:131;18966:4;18840:131;:::i;:::-;18832:139;;18559:419;;;:::o;18984:297::-;19124:34;19120:1;19112:6;19108:14;19101:58;19193:34;19188:2;19180:6;19176:15;19169:59;19262:11;19257:2;19249:6;19245:15;19238:36;18984:297;:::o;19287:366::-;19429:3;19450:67;19514:2;19509:3;19450:67;:::i;:::-;19443:74;;19526:93;19615:3;19526:93;:::i;:::-;19644:2;19639:3;19635:12;19628:19;;19287:366;;;:::o;19659:419::-;19825:4;19863:2;19852:9;19848:18;19840:26;;19912:9;19906:4;19902:20;19898:1;19887:9;19883:17;19876:47;19940:131;20066:4;19940:131;:::i;:::-;19932:139;;19659:419;;;:::o;20084:240::-;20224:34;20220:1;20212:6;20208:14;20201:58;20293:23;20288:2;20280:6;20276:15;20269:48;20084:240;:::o;20330:366::-;20472:3;20493:67;20557:2;20552:3;20493:67;:::i;:::-;20486:74;;20569:93;20658:3;20569:93;:::i;:::-;20687:2;20682:3;20678:12;20671:19;;20330:366;;;:::o;20702:419::-;20868:4;20906:2;20895:9;20891:18;20883:26;;20955:9;20949:4;20945:20;20941:1;20930:9;20926:17;20919:47;20983:131;21109:4;20983:131;:::i;:::-;20975:139;;20702:419;;;:::o;21127:169::-;21267:21;21263:1;21255:6;21251:14;21244:45;21127:169;:::o;21302:366::-;21444:3;21465:67;21529:2;21524:3;21465:67;:::i;:::-;21458:74;;21541:93;21630:3;21541:93;:::i;:::-;21659:2;21654:3;21650:12;21643:19;;21302:366;;;:::o;21674:419::-;21840:4;21878:2;21867:9;21863:18;21855:26;;21927:9;21921:4;21917:20;21913:1;21902:9;21898:17;21891:47;21955:131;22081:4;21955:131;:::i;:::-;21947:139;;21674:419;;;:::o;22099:241::-;22239:34;22235:1;22227:6;22223:14;22216:58;22308:24;22303:2;22295:6;22291:15;22284:49;22099:241;:::o;22346:366::-;22488:3;22509:67;22573:2;22568:3;22509:67;:::i;:::-;22502:74;;22585:93;22674:3;22585:93;:::i;:::-;22703:2;22698:3;22694:12;22687:19;;22346:366;;;:::o;22718:419::-;22884:4;22922:2;22911:9;22907:18;22899:26;;22971:9;22965:4;22961:20;22957:1;22946:9;22942:17;22935:47;22999:131;23125:4;22999:131;:::i;:::-;22991:139;;22718:419;;;:::o;23143:348::-;23183:7;23206:20;23224:1;23206:20;:::i;:::-;23201:25;;23240:20;23258:1;23240:20;:::i;:::-;23235:25;;23428:1;23360:66;23356:74;23353:1;23350:81;23345:1;23338:9;23331:17;23327:105;23324:131;;;23435:18;;:::i;:::-;23324:131;23483:1;23480;23476:9;23465:20;;23143:348;;;;:::o;23497:180::-;23545:77;23542:1;23535:88;23642:4;23639:1;23632:15;23666:4;23663:1;23656:15;23683:185;23723:1;23740:20;23758:1;23740:20;:::i;:::-;23735:25;;23774:20;23792:1;23774:20;:::i;:::-;23769:25;;23813:1;23803:35;;23818:18;;:::i;:::-;23803:35;23860:1;23857;23853:9;23848:14;;23683:185;;;;:::o;23874:191::-;23914:4;23934:20;23952:1;23934:20;:::i;:::-;23929:25;;23968:20;23986:1;23968:20;:::i;:::-;23963:25;;24007:1;24004;24001:8;23998:34;;;24012:18;;:::i;:::-;23998:34;24057:1;24054;24050:9;24042:17;;23874:191;;;;:::o;24071:225::-;24211:34;24207:1;24199:6;24195:14;24188:58;24280:8;24275:2;24267:6;24263:15;24256:33;24071:225;:::o;24302:366::-;24444:3;24465:67;24529:2;24524:3;24465:67;:::i;:::-;24458:74;;24541:93;24630:3;24541:93;:::i;:::-;24659:2;24654:3;24650:12;24643:19;;24302:366;;;:::o;24674:419::-;24840:4;24878:2;24867:9;24863:18;24855:26;;24927:9;24921:4;24917:20;24913:1;24902:9;24898:17;24891:47;24955:131;25081:4;24955:131;:::i;:::-;24947:139;;24674:419;;;:::o;25099:147::-;25200:11;25237:3;25222:18;;25099:147;;;;:::o;25252:114::-;;:::o;25372:398::-;25531:3;25552:83;25633:1;25628:3;25552:83;:::i;:::-;25545:90;;25644:93;25733:3;25644:93;:::i;:::-;25762:1;25757:3;25753:11;25746:18;;25372:398;;;:::o;25776:379::-;25960:3;25982:147;26125:3;25982:147;:::i;:::-;25975:154;;26146:3;26139:10;;25776:379;;;:::o;26161:442::-;26310:4;26348:2;26337:9;26333:18;26325:26;;26361:71;26429:1;26418:9;26414:17;26405:6;26361:71;:::i;:::-;26442:72;26510:2;26499:9;26495:18;26486:6;26442:72;:::i;:::-;26524;26592:2;26581:9;26577:18;26568:6;26524:72;:::i;:::-;26161:442;;;;;;:::o;26609:180::-;26657:77;26654:1;26647:88;26754:4;26751:1;26744:15;26778:4;26775:1;26768:15;26795:180;26843:77;26840:1;26833:88;26940:4;26937:1;26930:15;26964:4;26961:1;26954:15;26981:143;27038:5;27069:6;27063:13;27054:22;;27085:33;27112:5;27085:33;:::i;:::-;26981:143;;;;:::o;27130:351::-;27200:6;27249:2;27237:9;27228:7;27224:23;27220:32;27217:119;;;27255:79;;:::i;:::-;27217:119;27375:1;27400:64;27456:7;27447:6;27436:9;27432:22;27400:64;:::i;:::-;27390:74;;27346:128;27130:351;;;;:::o;27487:85::-;27532:7;27561:5;27550:16;;27487:85;;;:::o;27578:158::-;27636:9;27669:61;27687:42;27696:32;27722:5;27696:32;:::i;:::-;27687:42;:::i;:::-;27669:61;:::i;:::-;27656:74;;27578:158;;;:::o;27742:147::-;27837:45;27876:5;27837:45;:::i;:::-;27832:3;27825:58;27742:147;;:::o;27895:114::-;27962:6;27996:5;27990:12;27980:22;;27895:114;;;:::o;28015:184::-;28114:11;28148:6;28143:3;28136:19;28188:4;28183:3;28179:14;28164:29;;28015:184;;;;:::o;28205:132::-;28272:4;28295:3;28287:11;;28325:4;28320:3;28316:14;28308:22;;28205:132;;;:::o;28343:108::-;28420:24;28438:5;28420:24;:::i;:::-;28415:3;28408:37;28343:108;;:::o;28457:179::-;28526:10;28547:46;28589:3;28581:6;28547:46;:::i;:::-;28625:4;28620:3;28616:14;28602:28;;28457:179;;;;:::o;28642:113::-;28712:4;28744;28739:3;28735:14;28727:22;;28642:113;;;:::o;28791:732::-;28910:3;28939:54;28987:5;28939:54;:::i;:::-;29009:86;29088:6;29083:3;29009:86;:::i;:::-;29002:93;;29119:56;29169:5;29119:56;:::i;:::-;29198:7;29229:1;29214:284;29239:6;29236:1;29233:13;29214:284;;;29315:6;29309:13;29342:63;29401:3;29386:13;29342:63;:::i;:::-;29335:70;;29428:60;29481:6;29428:60;:::i;:::-;29418:70;;29274:224;29261:1;29258;29254:9;29249:14;;29214:284;;;29218:14;29514:3;29507:10;;28915:608;;;28791:732;;;;:::o;29529:831::-;29792:4;29830:3;29819:9;29815:19;29807:27;;29844:71;29912:1;29901:9;29897:17;29888:6;29844:71;:::i;:::-;29925:80;30001:2;29990:9;29986:18;29977:6;29925:80;:::i;:::-;30052:9;30046:4;30042:20;30037:2;30026:9;30022:18;30015:48;30080:108;30183:4;30174:6;30080:108;:::i;:::-;30072:116;;30198:72;30266:2;30255:9;30251:18;30242:6;30198:72;:::i;:::-;30280:73;30348:3;30337:9;30333:19;30324:6;30280:73;:::i;:::-;29529:831;;;;;;;;:::o;30366:807::-;30615:4;30653:3;30642:9;30638:19;30630:27;;30667:71;30735:1;30724:9;30720:17;30711:6;30667:71;:::i;:::-;30748:72;30816:2;30805:9;30801:18;30792:6;30748:72;:::i;:::-;30830:80;30906:2;30895:9;30891:18;30882:6;30830:80;:::i;:::-;30920;30996:2;30985:9;30981:18;30972:6;30920:80;:::i;:::-;31010:73;31078:3;31067:9;31063:19;31054:6;31010:73;:::i;:::-;31093;31161:3;31150:9;31146:19;31137:6;31093:73;:::i;:::-;30366:807;;;;;;;;;:::o;31179:143::-;31236:5;31267:6;31261:13;31252:22;;31283:33;31310:5;31283:33;:::i;:::-;31179:143;;;;:::o;31328:663::-;31416:6;31424;31432;31481:2;31469:9;31460:7;31456:23;31452:32;31449:119;;;31487:79;;:::i;:::-;31449:119;31607:1;31632:64;31688:7;31679:6;31668:9;31664:22;31632:64;:::i;:::-;31622:74;;31578:128;31745:2;31771:64;31827:7;31818:6;31807:9;31803:22;31771:64;:::i;:::-;31761:74;;31716:129;31884:2;31910:64;31966:7;31957:6;31946:9;31942:22;31910:64;:::i;:::-;31900:74;;31855:129;31328:663;;;;;:::o

Swarm Source

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