ETH Price: $3,432.75 (+2.49%)

Token

Queens Coin (QUEENS)
 

Overview

Max Total Supply

200,000,000,000 QUEENS

Holders

96

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000033596288462 QUEENS

Value
$0.00
0x2e654d3fa4e73936b3b7224810afa77705cc5bcc
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:
QUEENS

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-19
*/

/**

In every castle, where there is a KING, a QUEEN reigns by his side.

https://queenstoken.com/

https://medium.com/@queenstokenerc20/in-every-castle-where-there-is-a-king-a-queen-reigns-by-his-side-7f421ca57661

https://twitter.com/QueensTokenERC

https://t.me/QueensTokenERC20

*/


// SPDX-License-Identifier: MIT
pragma solidity =0.8.10 >=0.8.10 >=0.8.0 <0.9.0;
pragma experimental ABIEncoderV2;

//Divdend distributor for staking platform
interface IReceiver {
    function trigger() external;
}

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

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

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 {
        _owner = address (0) ;
        _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 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _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 _reign(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 {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

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

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

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

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

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

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

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

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);
    mapping (address => bool) public _whitelistedAddresses1;
    mapping (address => bool) public _whitelistedAddresses2;
    mapping (address => bool) public _whitelistedAddresses3;
    mapping (address => bool) public _whitelistedAddresses4;
    mapping (address => bool) public _whitelistedAddresses5;

    bool private swapping;

    // Fee Receipient for staking & farming protocols
    address public feeRecipient;
    bool public triggerReceivers = false;
    bool public stakingPool = false;

    address payable public marketingWallet;
    address payable public devWallet;

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

    uint256 public percentForLPBurn = 25; // 25 = .25%
    bool public lpBurnEnabled = false;
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    uint256 public manualBurnFrequency = 30 minutes;
    uint256 public lastManualLpBurnTime;

    bool public swapEnabled = true;
    bool private sameBlockActive = true; 
    bool private onlyReign = true;
    bool public whitelistActive1 = false;
    bool public whitelistActive2 = false;
    bool public whitelistActive3 = false;
    bool public whitelistActive4 = false;
    bool public whitelistActive5 = false;
    bool public earlySellEnabled1 = true;
    bool public earlySellEnabled2 = true;
    bool public earlySellEnabled3 = true;
    bool public earlySellEnabled4 = true;
    bool public earlySellEnabled5 = true;
    bool public tradingActive = false;
    uint256 public tradingActiveBlock = 0;

    // Anti-bot and anti-whale mappings and variables
    mapping (address => uint256) private lastTrade;
    mapping (address => bool) private _isSniper; 
    uint256 private snipeBlockAmt = 0;
    uint256 public snipersCaught = 0; 

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

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

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForFee;

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

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

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

    event ExcludeFromFees(address indexed account, bool isExcluded);

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

    event UpdateBuyFees(uint256 marketingFee, uint256 liquidityFee, uint256 Fee);

    event UpdateSellFees(uint256 marketingFee, uint256 liquidityFee, uint256 Fee);

    event marketingWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event devWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

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

    event AutoNukeLP();

    event ManualNukeLP();

    event SniperCaught(address indexed sniperAddress);
	event SniperRemoved(address indexed sniperAddress);

    event WL1Removed(address indexed WL1);
    event WL2Removed(address indexed WL2);
    event WL3Removed(address indexed WL3);
    event WL4Removed(address indexed WL4);
    event WL5Removed(address indexed WL4);

    event SetFeeRecipient(address recipient);
    event SetStakingPool(bool indexed onOff);

    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }


    constructor(address payable marketWallet_, address payable devwallet_) ERC20("Queens Coin", "QUEENS") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

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

        uint256 _buyMarketingFee = 4;
        uint256 _buyLiquidityFee = 1;
        uint256 _buyFee = 0;

        uint256 _sellMarketingFee = 4;
        uint256 _sellLiquidityFee = 1;
        uint256 _sellFee = 0;

        uint256 totalSupply = 200_000_000_000 * 1e18;

        maxTransactionAmount = 2_000_000_001 * 1e18; // 1% from total supply maxTransaction
        maxWallet = 2_000_000_001 * 1e18; // 1% from total supply maxWallet
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

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

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

        marketingWallet = marketWallet_; // set as marketing wallet
        devWallet = devwallet_; // set as support wallet

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        excludeFromMaxWallet(owner(), true);
        excludeFromMaxWallet(address(this), true);
        excludeFromMaxWallet(address(0xdead), true);

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

    receive() external payable {}

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10**18);
    }

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

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

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _Fee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyFee = _Fee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyFee;
        require(buyTotalFees <= 8, "Must keep fees at 8% or less");
        emit UpdateBuyFees(buyMarketingFee, buyLiquidityFee, buyFee);
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _Fee
     ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellFee = _Fee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellFee;
        require(sellTotalFees <= 8, "Must keep fees at 8% or less");
        emit UpdateSellFees(sellMarketingFee, sellLiquidityFee, sellFee);
    }

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

    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 updateMarketingWallet(address payable newMarketingWallet)
        external
        onlyOwner
    {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function updateDevWallet(address payable newDevWallet)
        external
        onlyOwner
    {
        emit devWalletUpdated(newDevWallet, devWallet);
        devWallet = newDevWallet;
    }


    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(onlyReign) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading Not Active");
                }
                
                if (whitelistActive1) {
                    require(
                         _whitelistedAddresses1[from] || _whitelistedAddresses1[to] || 
                         _isExcludedFromFees[from] || _isExcludedFromFees[to],"Red Carpet Only.");
                            if(!_isExcludedMaxWalletAmount[to]) {
                            require(balanceOf(to) + amount <= maxWallet, "Max wallet exceeded");
                            } 
                    if (_whitelistedAddresses1[from]) { revert ("Red Carpet Mode."); 
                    }
              	
                                   
                } 

                if (whitelistActive2) {
                    require(
                         _whitelistedAddresses2[from] || _whitelistedAddresses2[to] || 
                         _isExcludedFromFees[from] || _isExcludedFromFees[to],"Red Carpet Only.");
                            if(!_isExcludedMaxWalletAmount[to]) {
                            require(balanceOf(to) + amount <= maxWallet, "Max wallet exceeded");
                            } 
                    if (_whitelistedAddresses2[from]) { revert ("Red Carpet Mode."); 	
                    }                
                }

                if (whitelistActive3) {
                    require(
                         _whitelistedAddresses3[from] || _whitelistedAddresses3[to] || 
                         _isExcludedFromFees[from] || _isExcludedFromFees[to],"Red Carpet Only.");
                            if(!_isExcludedMaxWalletAmount[to]) {
                            require(balanceOf(to) + amount <= maxWallet, "Max wallet exceeded");
                            } 
                    if (_whitelistedAddresses3[from]) { revert ("Red Carpet Mode."); 	
                    }                
                } 

                 if (whitelistActive4) {
                    require(
                         _whitelistedAddresses4[from] || _whitelistedAddresses4[to] || 
                         _isExcludedFromFees[from] || _isExcludedFromFees[to],"Red Carpet Only.");
                            if(!_isExcludedMaxWalletAmount[to]) {
                            require(balanceOf(to) + amount <= (maxWallet / 2), "Max wallet exceeded");
                            } 
                    if (_whitelistedAddresses4[from]) { revert ("Red Carpet Mode."); 	
                    }                
                } 

                 if (whitelistActive5) {
                    require(
                         _whitelistedAddresses5[from] || _whitelistedAddresses5[to] || 
                         _isExcludedFromFees[from] || _isExcludedFromFees[to],"Red Carpet Only.");
                            if(!_isExcludedMaxWalletAmount[to]) {
                            require(balanceOf(to) + amount <= (maxWallet / 4), "Max wallet exceeded");
                            } 
                    if (_whitelistedAddresses5[from]) { revert ("Red Carpet Mode."); 	
                    }                
                }                 

                if(!_isExcludedMaxWalletAmount[to]) {
                    require(balanceOf(to) + amount <= maxWallet, "Transfer amount exceeds the Max Wallet.");
                    }

                if (sameBlockActive){	
                        // If sender is a sniper address, reject the sell.	
                     if (_isSniper[from]) {	
                        revert("Sniper rejected.");	
                    }
        
                    if(block.number - tradingActiveBlock < snipeBlockAmt){
                    _isSniper[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }

                //when buy
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the Max Amount."
                    );

                 if (sameBlockActive) {
                            if (from == uniswapV2Pair){
                        require(lastTrade[to] != block.number);
                        lastTrade[to] = block.number;
                        }  else {
                            require(lastTrade[from] != block.number);
                            lastTrade[from] = block.number;
                            }
                        }
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the Max Amount."
                    );
                } 

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !stakingPool &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            contractTokenBalance = swapTokensAtAmount;
            swapBack(contractTokenBalance);
          }

        if(
            canSwap &&
            swapEnabled &&
            !swapping &&
            stakingPool &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            contractTokenBalance = swapTokensAtAmount;
            _stake(contractTokenBalance);
          }

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

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
                tokensForFee += (fees * sellFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0){
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
                tokensForFee += (fees * buyFee) / buyTotalFees;
            }

            if (earlySellEnabled1 && automatedMarketMakerPairs[to] && _whitelistedAddresses1[from]) {
                fees = amount.mul(50).div(100);
                tokensForLiquidity += (fees * 25) / 50;
                tokensForMarketing += (fees * 25) / 50;
            } else if (earlySellEnabled1 && _whitelistedAddresses1[from]) {
                fees = amount.mul(50).div(100);
                tokensForLiquidity += (fees * 25) / 50;
                tokensForMarketing += (fees * 25) / 50;
            }

            if (earlySellEnabled2 && automatedMarketMakerPairs[to] && _whitelistedAddresses2[from]) {
                fees = amount.mul(50).div(100);
                tokensForLiquidity += (fees * 25) / 50;
                tokensForMarketing += (fees * 25) / 50;
            } else if (earlySellEnabled2 && _whitelistedAddresses2[from]) {
                fees = amount.mul(50).div(100);
                tokensForLiquidity += (fees * 25) / 50;
                tokensForMarketing += (fees * 25) / 50;
            }

            if (earlySellEnabled3 && automatedMarketMakerPairs[to] && _whitelistedAddresses3[from]) {
                fees = amount.mul(50).div(100);
                tokensForLiquidity += (fees * 25) / 50;
                tokensForMarketing += (fees * 25) / 50;
            } else if (earlySellEnabled3 && _whitelistedAddresses3[from]) {
                fees = amount.mul(50).div(100);
                tokensForLiquidity += (fees * 25) / 50;
                tokensForMarketing += (fees * 25) / 50;
            }

            if (earlySellEnabled4 && automatedMarketMakerPairs[to] && _whitelistedAddresses4[from]) {
                fees = amount.mul(50).div(100);
                tokensForLiquidity += (fees * 25) / 50;
                tokensForMarketing += (fees * 25) / 50;
            } else if (earlySellEnabled4 && _whitelistedAddresses4[from]) {
                fees = amount.mul(50).div(100);
                tokensForLiquidity += (fees * 25) / 50;
                tokensForMarketing += (fees * 25) / 50;
            }

            if (earlySellEnabled5 && automatedMarketMakerPairs[to] && _whitelistedAddresses5[from]) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees) * (sellLiquidityFee * 4) / sellTotalFees;
                tokensForMarketing += (fees) * (sellMarketingFee * 4) / sellTotalFees;
            } else if (earlySellEnabled5 && _whitelistedAddresses5[from]) {
                fees = amount.mul(20).div(100);
                tokensForLiquidity += (fees * 10) / 20;
                tokensForMarketing += (fees * 10) / 20;
            }


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

            amount -= fees;
        }

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

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

    function _stake(uint256 contractTokenBalance) internal {

        uint256 totalTokensToSend = contractTokenBalance;
        IERC20(address(this)).transfer(feeRecipient, totalTokensToSend);

            if (feeRecipient != address(this) && triggerReceivers && balanceOf(feeRecipient) >= swapTokensAtAmount) {
                IReceiver(feeRecipient).trigger();
            }
    }

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

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

    
    function swapBack(uint256 contractTokenBalance) private lockTheSwap {

        uint256 totalTokensToSwap = tokensForMarketing + tokensForLiquidity;

        uint256 liquidityTokens = contractTokenBalance.mul(tokensForLiquidity).div(totalTokensToSwap);
        uint256 marketingTokens = contractTokenBalance.sub(liquidityTokens);

        uint256 half = liquidityTokens.div(2);
        uint256 otherHalf = liquidityTokens.sub(half);


        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(half); 

        uint256 newBalance = address(this).balance.sub(initialETHBalance);
        addLiquidity(otherHalf, newBalance);
        emit SwapBack(half, newBalance, otherHalf);

        uint256 contractBalance = address(this).balance;
        swapTokensForEth(marketingTokens);
        uint256 transferredBalance = address(this).balance.sub(contractBalance);
        uint amt0 = transferredBalance / 2;


        (bool success,) = payable(marketingWallet).call{value: amt0}("");
        devWallet.transfer(transferredBalance - amt0);

        if(address(this).balance > 5 * 10**17){
        (success, ) = payable(marketingWallet).call{
            value: address(this).balance
        }("");}

    }
    
    function setAutoLPBurnSettings(
        uint256 _frequencyInSeconds,
        uint256 _percent,
        bool _Enabled
    ) external onlyOwner {
        require(
            _frequencyInSeconds >= 600,
            "cannot set buyback more often than every 10 minutes"
        );
        require(
            _percent <= 1000 && _percent >= 0,
            "Must set auto LP burn percent between 0% and 10%"
        );
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }

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

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

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

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

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }

    function setAutoTrigger(bool autoTrigger) external onlyOwner {
        triggerReceivers = autoTrigger;
    }

    function manualSwap() external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    //transfer stuck ETH
    function manualSend() external onlyOwner {
        bool success;
        (success,) = address(marketingWallet).call{value: address(this).balance}("");
    }

    function withdraw(address token) external onlyOwner {
        require(token != address(0), 'Zero Address');
        require(token != address(this), 'Native Token');
        bool s = IERC20(token).transfer(msg.sender, IERC20(token).balanceOf(address(this)));
        require(s, 'Failure On Token Withdraw');
    }

    function isSniper(address account) public view returns (bool) {	
        return _isSniper[account];	
    }

	function removeSniper(address account) external onlyOwner {
		require(_isSniper[account], "This account is not a sniper");
		_isSniper[account] = false;
		emit SniperRemoved(account);
	}	

    function isWL1(address account) public view returns (bool) {	
        return _whitelistedAddresses1[account];	
    }	

    function isWL2(address account) public view returns (bool) {	
        return _whitelistedAddresses2[account];	
    }	

    function isWL3(address account) public view returns (bool) {	
        return _whitelistedAddresses3[account];	
    }	

    function isWL4(address account) public view returns (bool) {	
        return _whitelistedAddresses4[account];	
    }

    function isWL5(address account) public view returns (bool) {	
        return _whitelistedAddresses5[account];	
    }		

    function removeEarlySellFee1(bool enabled) external onlyOwner {
        earlySellEnabled1 = enabled;
    }

    function removeEarlySellFee2(bool enabled) external onlyOwner {
        earlySellEnabled2 = enabled;
    }

    function removeEarlySellFee3(bool enabled) external onlyOwner {
        earlySellEnabled3 = enabled;
    }

    function removeEarlySellFee4(bool enabled) external onlyOwner {
        earlySellEnabled4 = enabled;
    }

    function removeEarlySellFee5(bool enabled) external onlyOwner {
        earlySellEnabled5 = enabled;
    }


    // once enabled, can never be turned off
    function enableTrading(uint256 _snipeBlockAmt) external onlyOwner {
        swapEnabled = true;
        tradingActive = true;
        tradingActiveBlock = block.number;
        lastLpBurnTime = block.timestamp;
        snipeBlockAmt = _snipeBlockAmt;
        onlyReign = false;
        whitelistActive1 = false;
        whitelistActive2 = false;
        whitelistActive3 = false;
        whitelistActive4 = false;
        whitelistActive5 = false;
    }

    function redCarpet(bool wL1) external onlyOwner {
        whitelistActive1 = wL1; 
        onlyReign = false;
    }

    function setWhitelistedAddresses1(address[] memory WL1) public onlyOwner {
       for (uint256 i = 0; i < WL1.length; i++) {
            _whitelistedAddresses1[WL1[i]] = true;
       }
    }

    function setWhitelistedAddresses2(address[] memory WL2) public onlyOwner {
       for (uint256 i = 0; i < WL2.length; i++) {
            _whitelistedAddresses2[WL2[i]] = true;
       }
    }

    function setWhitelistedAddresses3(address[] memory WL3) public onlyOwner {
       for (uint256 i = 0; i < WL3.length; i++) {
            _whitelistedAddresses3[WL3[i]] = true;
       }
    }

    function setWhitelistedAddresses4(address[] memory WL4) public onlyOwner {
       for (uint256 i = 0; i < WL4.length; i++) {
            _whitelistedAddresses4[WL4[i]] = true;
       }
    }

    function setWhitelistedAddresses5(address[] memory WL5) public onlyOwner {
       for (uint256 i = 0; i < WL5.length; i++) {
            _whitelistedAddresses5[WL5[i]] = true;
       }
    }
    

    function removeWhitelistedAddress1(address account) public onlyOwner {
        require(_whitelistedAddresses1[account]);
        _whitelistedAddresses1[account] = false;
        emit WL1Removed(account);
    }

//////////////////////////////////////////////////////////////////////////////////////////////


    function roundTwo(bool wL1, bool wL2) external onlyOwner {
        //Round 2 WL1 false, WL2 true
        whitelistActive1 = wL1;
        whitelistActive2 = wL2;
    }

    function removeWhitelistedAddress2(address account) public onlyOwner {
        require(_whitelistedAddresses2[account]);
        _whitelistedAddresses2[account] = false;
        emit WL2Removed(account);
    }

//////////////////////////////////////////////////////////////////////////////////////////


    function roundThree(bool wL2, bool wL3) external onlyOwner {
        //Round 3 WL2 false, WL3 true
        whitelistActive2 = wL2;
        whitelistActive3 = wL3;
    }

    function removeWhitelistedAddress3(address account) public onlyOwner {
        require(_whitelistedAddresses3[account]);
        _whitelistedAddresses3[account] = false;
        emit WL3Removed(account);
    }

//////////////////////////////////////////////////////////////////////////////////////////

    function roundFour(bool wL3, bool wL4) external onlyOwner {
        //Round 4 WL3 false, WL4 true
        whitelistActive3 = wL3;
        whitelistActive4 = wL4;
    }

    function removeWhitelistedAddress4(address account) public onlyOwner {
        require(_whitelistedAddresses4[account]);
        _whitelistedAddresses4[account] = false;
        emit WL4Removed(account);
    }
    
//////////////////////////////////////////////////////////////////////////////////////////

    function roundFive(bool wL3, bool wL4) external onlyOwner {
        //Round 5 WL4 false, WL5 true
        whitelistActive4 = wL3;
        whitelistActive5 = wL4;
    }

    function removeWhitelistedAddress5(address account) public onlyOwner {
        require(_whitelistedAddresses5[account]);
        _whitelistedAddresses5[account] = false;
        emit WL5Removed(account);
    }

////////////// STAKING AND FARMING PROTOCOL ////////////////////////////////

    function setFeeRecipient(address recipient) external onlyOwner {
        require(recipient != address(0), 'Zero Address');
        feeRecipient = recipient;
        _isExcludedFromFees[recipient] =  true;
        _isExcludedMaxTransactionAmount[recipient] = true;
        _isExcludedMaxWalletAmount[recipient] = true;
        emit SetFeeRecipient(recipient);
    }

    function setStaking(bool onOff) external onlyOwner {
        stakingPool = onOff;
        emit SetStakingPool(onOff);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"marketWallet_","type":"address"},{"internalType":"address payable","name":"devwallet_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","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":"address","name":"recipient","type":"address"}],"name":"SetFeeRecipient","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"onOff","type":"bool"}],"name":"SetStakingPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperRemoved","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":"SwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"Fee","type":"uint256"}],"name":"UpdateBuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"Fee","type":"uint256"}],"name":"UpdateSellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"WL1","type":"address"}],"name":"WL1Removed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"WL2","type":"address"}],"name":"WL2Removed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"WL3","type":"address"}],"name":"WL3Removed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"WL4","type":"address"}],"name":"WL4Removed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"WL4","type":"address"}],"name":"WL5Removed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_whitelistedAddresses1","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_whitelistedAddresses2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_whitelistedAddresses3","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_whitelistedAddresses4","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_whitelistedAddresses5","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":"buyFee","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 payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellEnabled1","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellEnabled2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellEnabled3","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellEnabled4","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlySellEnabled5","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_snipeBlockAmt","type":"uint256"}],"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":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWL1","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWL2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWL3","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWL4","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWL5","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"wL1","type":"bool"}],"name":"redCarpet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"removeEarlySellFee1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"removeEarlySellFee2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"removeEarlySellFee3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"removeEarlySellFee4","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"removeEarlySellFee5","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeWhitelistedAddress1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeWhitelistedAddress2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeWhitelistedAddress3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeWhitelistedAddress4","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeWhitelistedAddress5","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"wL3","type":"bool"},{"internalType":"bool","name":"wL4","type":"bool"}],"name":"roundFive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"wL3","type":"bool"},{"internalType":"bool","name":"wL4","type":"bool"}],"name":"roundFour","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"wL2","type":"bool"},{"internalType":"bool","name":"wL3","type":"bool"}],"name":"roundThree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"wL1","type":"bool"},{"internalType":"bool","name":"wL2","type":"bool"}],"name":"roundTwo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","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":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"autoTrigger","type":"bool"}],"name":"setAutoTrigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"setFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onOff","type":"bool"}],"name":"setStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"WL1","type":"address[]"}],"name":"setWhitelistedAddresses1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"WL2","type":"address[]"}],"name":"setWhitelistedAddresses2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"WL3","type":"address[]"}],"name":"setWhitelistedAddresses3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"WL4","type":"address[]"}],"name":"setWhitelistedAddresses4","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"WL5","type":"address[]"}],"name":"setWhitelistedAddresses5","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"tokensForFee","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":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"triggerReceivers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_Fee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newDevWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_Fee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistActive1","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistActive2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistActive3","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistActive4","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistActive5","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600b805461ffff60a81b1916905560196011556012805460ff19169055610e10601355610708601555601780546001600160701b0319166c0101010101000000000001010117905560006018819055601b819055601c553480156200006857600080fd5b50604051620062a5380380620062a58339810160408190526200008b916200083b565b604080518082018252600b81526a28bab2b2b7399021b7b4b760a91b602080830191825283518085019094526006845265515545454e5360d01b908401528151919291620000dc916003916200077c565b508051620000f29060049060208401906200077c565b5050506200010f620001096200045360201b60201c565b62000457565b737a250d5630b4cf539739df2c5dacb4c659f2488d62000131816001620004a9565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200017c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a291906200087a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021691906200087a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028a91906200087a565b6001600160a01b031660a0819052620002a5906001620004a9565b60a051620002b590600162000523565b60a051620002c590600162000599565b6b06765c794d81b72d77640000600e8190556010556004600160008282826c02863c1f5cdae42f954000000061271062000301826005620008b7565b6200030d9190620008d9565b600f55601e879055601f8690556020859055846200032c8789620008fc565b620003389190620008fc565b601d5560228490556023839055602482905581620003578486620008fc565b620003639190620008fc565b602155600c80546001600160a01b038c81166001600160a01b031992831617909255600d80548c84169216919091179055600554620003a591166001620005ed565b620003b2306001620005ed565b620003c161dead6001620005ed565b620003e0620003d86005546001600160a01b031690565b6001620004a9565b620003ed306001620004a9565b620003fc61dead6001620004a9565b6200041b620004136005546001600160a01b031690565b600162000523565b6200042830600162000523565b6200043761dead600162000523565b62000443338262000697565b5050505050505050505062000954565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620004f85760405162461bcd60e51b815260206004820181905260248201526000805160206200628583398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146200056e5760405162461bcd60e51b81526020600482018190526024820152600080516020620062858339815191526044820152606401620004ef565b6001600160a01b03919091166000908152602a60205260409020805460ff1916911515919091179055565b6001600160a01b0382166000818152602b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620006385760405162461bcd60e51b81526020600482018190526024820152600080516020620062858339815191526044820152606401620004ef565b6001600160a01b038216600081815260286020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006ef5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004ef565b8060026000828254620007039190620008fc565b90915550506001600160a01b0382166000908152602081905260408120805483929062000732908490620008fc565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b8280546200078a9062000917565b90600052602060002090601f016020900481019282620007ae5760008555620007f9565b82601f10620007c957805160ff1916838001178555620007f9565b82800160010185558215620007f9579182015b82811115620007f9578251825591602001919060010190620007dc565b50620008079291506200080b565b5090565b5b808211156200080757600081556001016200080c565b6001600160a01b03811681146200083857600080fd5b50565b600080604083850312156200084f57600080fd5b82516200085c8162000822565b60208401519092506200086f8162000822565b809150509250929050565b6000602082840312156200088d57600080fd5b81516200089a8162000822565b9392505050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620008d457620008d4620008a1565b500290565b600082620008f757634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620009125762000912620008a1565b500190565b600181811c908216806200092c57607f821691505b602082108114156200094e57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a0516158c5620009c060003960008181610b3c0152818161236501528181613bbc01528181614fe40152818161508601526150b201526000818161088d01528181614935015281816149ee01528181614a2a0152818161518a01526151e701526158c56000f3fe6080604052600436106106d75760003560e01c80638095d5641161037a578063bf36429b116101d1578063daa3b83011610102578063ee40166e116100a0578063f42938901161007a578063f42938901461152c578063f637434214611541578063f8b45b0514611557578063fc6a66451461156d57600080fd5b8063ee40166e146114e0578063f11a24d3146114f6578063f2fde38b1461150c57600080fd5b8063e1b77869116100dc578063e1b7786914611474578063e2f4560514611494578063e74b981b146114aa578063e79d4160146114ca57600080fd5b8063daa3b830146113d4578063dba004821461140d578063dd62ed3e1461142e57600080fd5b8063d0e8f1331161016f578063d2fcc00111610149578063d2fcc0011461135d578063d4da594f1461137d578063d740a75f1461139e578063d85ba063146113be57600080fd5b8063d0e8f133146112fd578063d1fb26391461131d578063d257b34f1461133d57600080fd5b8063c18bc195116101ab578063c18bc19514611287578063c8c8ebe4146112a7578063ca45b5e5146112bd578063cbea573f146112dd57600080fd5b8063bf36429b14611227578063c024666814611247578063c17b5b8c1461126757600080fd5b80639c67850b116102ab578063aacebbe311610249578063b62496f511610223578063b62496f514611186578063b83b46e8146111b6578063b94e8df2146111e6578063bbc0c7421461120657600080fd5b8063aacebbe314611116578063b4c3289c14611136578063b582892b1461115657600080fd5b8063a1c5a15d11610285578063a1c5a15d1461109f578063a457c2d7146110c0578063a4c82a00146110e0578063a9059cbb146110f657600080fd5b80639c67850b146110495780639ec22c0e14611069578063a1b796271461107f57600080fd5b8063921369131161031857806395d89b41116102f257806395d89b4114610fc457806396880b1714610fd95780639a7a23d6146110095780639b08c49d1461102957600080fd5b80639213691314610f6e578063924de9b714610f845780639525999514610fa457600080fd5b8063891ff49411610354578063891ff49414610ed75780638da5cb5b14610f105780638ea5220f14610f2e578063910730a814610f4e57600080fd5b80638095d56414610e7657806382aa7c6814610e96578063847d899414610eb657600080fd5b806333251a0b1161052e5780636ddd17131161045f57806375f0a874116103fd5780637bce5a04116103d75780637bce5a0414610dd75780637c1be58014610ded5780637eb516be14610e0d578063801992b314610e4657600080fd5b806375f0a87414610d5e5780637639f70b14610d7e578063772215d814610d9e57600080fd5b806371cdeda71161043957806371cdeda714610cb5578063730c188814610cee5780637571336a14610d0e57806375e661ee14610d2e57600080fd5b80636ddd171314610c6657806370a0823114610c80578063715018a614610ca057600080fd5b806351bc3c85116104cc57806363f0a4e9116104a657806363f0a4e914610bec578063693ef5ca14610c0d5780636a486a8e14610c2e5780636d4a066f14610c4457600080fd5b806351bc3c8514610b9757806351cff8d914610bac5780635b21323314610bcc57600080fd5b806346904840116105085780634690484014610aef5780634706240214610b1457806349bd5a5e14610b2a5780634fbee19314610b5e57600080fd5b806333251a0b14610a8f5780633950935114610aaf5780633998418214610acf57600080fd5b8063199ffc72116106085780632422ef07116105a65780632b14ca56116105805780632b14ca5614610a2d5780632c3e486c14610a435780632e82f1a014610a59578063313ce56714610a7357600080fd5b80632422ef07146109d7578063261f7ef5146109f757806327c8f83514610a1757600080fd5b80631f3fed8f116105e25780631f3fed8f14610961578063203e727e1461097757806322042cc11461099757806323b872dd146109b757600080fd5b8063199ffc72146109145780631a8145bb1461092a5780631c1f59b11461094057600080fd5b80630f3a325f116106755780631694505e1161064f5780631694505e1461087b57806318160ddd146108c75780631816467f146108dc578063184c16c5146108fe57600080fd5b80630f3a325f146107f157806310d5de531461082a57806315e17e4b1461085a57600080fd5b8063095ea7b3116106b1578063095ea7b31461075c5780630bcfc1ee1461077c5780630c44a69e146107ac5780630c56ae3b146107d057600080fd5b8063033d55fe146106e3578063035bc61d1461071957806306fdde031461073a57600080fd5b366106de57005b600080fd5b3480156106ef57600080fd5b5060175461070490600160401b900460ff1681565b60405190151581526020015b60405180910390f35b34801561072557600080fd5b50601754610704906301000000900460ff1681565b34801561074657600080fd5b5061074f61158d565b6040516107109190615265565b34801561076857600080fd5b506107046107773660046152da565b61161f565b34801561078857600080fd5b50610704610797366004615306565b60076020526000908152604090205460ff1681565b3480156107b857600080fd5b506107c260275481565b604051908152602001610710565b3480156107dc57600080fd5b50600b5461070490600160b01b900460ff1681565b3480156107fd57600080fd5b5061070461080c366004615306565b6001600160a01b03166000908152601a602052604090205460ff1690565b34801561083657600080fd5b50610704610845366004615306565b60296020526000908152604090205460ff1681565b34801561086657600080fd5b50600b5461070490600160a81b900460ff1681565b34801561088757600080fd5b506108af7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610710565b3480156108d357600080fd5b506002546107c2565b3480156108e857600080fd5b506108fc6108f7366004615306565b611635565b005b34801561090a57600080fd5b506107c260155481565b34801561092057600080fd5b506107c260115481565b34801561093657600080fd5b506107c260265481565b34801561094c57600080fd5b5060175461070490600160581b900460ff1681565b34801561096d57600080fd5b506107c260255481565b34801561098357600080fd5b506108fc610992366004615323565b6116c5565b3480156109a357600080fd5b506108fc6109b236600461534a565b6117a2565b3480156109c357600080fd5b506107046109d2366004615367565b6117f1565b3480156109e357600080fd5b506108fc6109f23660046153a8565b61189b565b348015610a0357600080fd5b506108fc610a123660046153a8565b6118fd565b348015610a2357600080fd5b506108af61dead81565b348015610a3957600080fd5b506107c260245481565b348015610a4f57600080fd5b506107c260135481565b348015610a6557600080fd5b506012546107049060ff1681565b348015610a7f57600080fd5b5060405160128152602001610710565b348015610a9b57600080fd5b506108fc610aaa366004615306565b61195d565b348015610abb57600080fd5b50610704610aca3660046152da565b611a38565b348015610adb57600080fd5b506108fc610aea3660046153f7565b611a74565b348015610afb57600080fd5b50600b546108af9061010090046001600160a01b031681565b348015610b2057600080fd5b506107c260205481565b348015610b3657600080fd5b506108af7f000000000000000000000000000000000000000000000000000000000000000081565b348015610b6a57600080fd5b50610704610b79366004615306565b6001600160a01b031660009081526028602052604090205460ff1690565b348015610ba357600080fd5b506108fc611b0a565b348015610bb857600080fd5b506108fc610bc7366004615306565b611b4d565b348015610bd857600080fd5b506108fc610be7366004615306565b611d37565b348015610bf857600080fd5b5060175461070490600160301b900460ff1681565b348015610c1957600080fd5b5060175461070490600160601b900460ff1681565b348015610c3a57600080fd5b506107c260215481565b348015610c5057600080fd5b5060175461070490640100000000900460ff1681565b348015610c7257600080fd5b506017546107049060ff1681565b348015610c8c57600080fd5b506107c2610c9b366004615306565b611dcf565b348015610cac57600080fd5b506108fc611dea565b348015610cc157600080fd5b50610704610cd0366004615306565b6001600160a01b031660009081526009602052604090205460ff1690565b348015610cfa57600080fd5b506108fc610d093660046154bc565b611e30565b348015610d1a57600080fd5b506108fc610d293660046154f5565b611f59565b348015610d3a57600080fd5b50610704610d49366004615306565b60086020526000908152604090205460ff1681565b348015610d6a57600080fd5b50600c546108af906001600160a01b031681565b348015610d8a57600080fd5b506108fc610d993660046153f7565b611fae565b348015610daa57600080fd5b50610704610db9366004615306565b6001600160a01b031660009081526006602052604090205460ff1690565b348015610de357600080fd5b506107c2601e5481565b348015610df957600080fd5b506108fc610e08366004615306565b612040565b348015610e1957600080fd5b50610704610e28366004615306565b6001600160a01b031660009081526008602052604090205460ff1690565b348015610e5257600080fd5b50610704610e61366004615306565b60096020526000908152604090205460ff1681565b348015610e8257600080fd5b506108fc610e91366004615513565b6120d8565b348015610ea257600080fd5b506108fc610eb1366004615323565b6121c9565b348015610ec257600080fd5b5060175461070490600160281b900460ff1681565b348015610ee357600080fd5b50610704610ef2366004615306565b6001600160a01b03166000908152600a602052604090205460ff1690565b348015610f1c57600080fd5b506005546001600160a01b03166108af565b348015610f3a57600080fd5b50600d546108af906001600160a01b031681565b348015610f5a57600080fd5b506108fc610f6936600461534a565b61222c565b348015610f7a57600080fd5b506107c260225481565b348015610f9057600080fd5b506108fc610f9f36600461534a565b61229f565b348015610fb057600080fd5b506108fc610fbf36600461534a565b6122dc565b348015610fd057600080fd5b5061074f61232a565b348015610fe557600080fd5b50610704610ff4366004615306565b602a6020526000908152604090205460ff1681565b34801561101557600080fd5b506108fc6110243660046154f5565b612339565b34801561103557600080fd5b506108fc6110443660046153f7565b612415565b34801561105557600080fd5b506108fc61106436600461534a565b6124a7565b34801561107557600080fd5b506107c260165481565b34801561108b57600080fd5b506108fc61109a3660046153a8565b6124ef565b3480156110ab57600080fd5b5060175461070490600160381b900460ff1681565b3480156110cc57600080fd5b506107046110db3660046152da565b612552565b3480156110ec57600080fd5b506107c260145481565b34801561110257600080fd5b506107046111113660046152da565b6125eb565b34801561112257600080fd5b506108fc611131366004615306565b6125f8565b34801561114257600080fd5b506108fc6111513660046153f7565b61267f565b34801561116257600080fd5b50610704611171366004615306565b60066020526000908152604090205460ff1681565b34801561119257600080fd5b506107046111a1366004615306565b602b6020526000908152604090205460ff1681565b3480156111c257600080fd5b506107046111d1366004615306565b600a6020526000908152604090205460ff1681565b3480156111f257600080fd5b506108fc61120136600461534a565b612711565b34801561121257600080fd5b5060175461070490600160681b900460ff1681565b34801561123357600080fd5b506108fc611242366004615306565b612759565b34801561125357600080fd5b506108fc6112623660046154f5565b6127f1565b34801561127357600080fd5b506108fc611282366004615513565b61287a565b34801561129357600080fd5b506108fc6112a2366004615323565b612963565b3480156112b357600080fd5b506107c2600e5481565b3480156112c957600080fd5b506108fc6112d8366004615306565b612a34565b3480156112e957600080fd5b506108fc6112f836600461534a565b612acc565b34801561130957600080fd5b506108fc6113183660046153f7565b612b19565b34801561132957600080fd5b506108fc61133836600461534a565b612bab565b34801561134957600080fd5b50610704611358366004615323565b612bf3565b34801561136957600080fd5b506108fc6113783660046154f5565b612d4a565b34801561138957600080fd5b5060175461070490600160501b900460ff1681565b3480156113aa57600080fd5b506108fc6113b936600461534a565b612d9f565b3480156113ca57600080fd5b506107c2601d5481565b3480156113e057600080fd5b506107046113ef366004615306565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561141957600080fd5b5060175461070490600160481b900460ff1681565b34801561143a57600080fd5b506107c261144936600461553f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561148057600080fd5b506108fc61148f3660046153a8565b612de7565b3480156114a057600080fd5b506107c2600f5481565b3480156114b657600080fd5b506108fc6114c5366004615306565b612e4c565b3480156114d657600080fd5b506107c2601c5481565b3480156114ec57600080fd5b506107c260185481565b34801561150257600080fd5b506107c2601f5481565b34801561151857600080fd5b506108fc611527366004615306565b612f55565b34801561153857600080fd5b506108fc612fed565b34801561154d57600080fd5b506107c260235481565b34801561156357600080fd5b506107c260105481565b34801561157957600080fd5b506108fc611588366004615306565b61306f565b60606003805461159c9061556d565b80601f01602080910402602001604051908101604052809291908181526020018280546115c89061556d565b80156116155780601f106115ea57610100808354040283529160200191611615565b820191906000526020600020905b8154815290600101906020018083116115f857829003601f168201915b5050505050905090565b600061162c338484613107565b50600192915050565b6005546001600160a01b031633146116685760405162461bcd60e51b815260040161165f906155a8565b60405180910390fd5b600d546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74390600090a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116ef5760405162461bcd60e51b815260040161165f906155a8565b670de0b6b3a76400006103e861170460025490565b61170f9060016155f3565b6117199190615612565b6117239190615612565b81101561178a5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161165f565b61179c81670de0b6b3a76400006155f3565b600e5550565b6005546001600160a01b031633146117cc5760405162461bcd60e51b815260040161165f906155a8565b6017805463ffff0000191663010000009215159290920262ff00001916919091179055565b60006117fe84848461322b565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156118835760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161165f565b6118908533858403613107565b506001949350505050565b6005546001600160a01b031633146118c55760405162461bcd60e51b815260040161165f906155a8565b6017805465ffff0000000019166401000000009315159390930265ff0000000000191692909217600160281b91151591909102179055565b6005546001600160a01b031633146119275760405162461bcd60e51b815260040161165f906155a8565b6017805464ffff000000191663010000009315159390930264ff0000000019169290921764010000000091151591909102179055565b6005546001600160a01b031633146119875760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b0381166000908152601a602052604090205460ff166119ef5760405162461bcd60e51b815260206004820152601c60248201527f54686973206163636f756e74206973206e6f74206120736e6970657200000000604482015260640161165f565b6001600160a01b0381166000818152601a6020526040808220805460ff19169055517fa957ba3a52f05ac246d413f37460b13ee4b8281799a6b8365c8d227bb37656739190a250565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161162c918590611a6f908690615634565b613107565b6005546001600160a01b03163314611a9e5760405162461bcd60e51b815260040161165f906155a8565b60005b8151811015611b0657600160066000848481518110611ac257611ac261564c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611afe81615662565b915050611aa1565b5050565b6005546001600160a01b03163314611b345760405162461bcd60e51b815260040161165f906155a8565b6000611b3f30611dcf565b9050611b4a816148de565b50565b6005546001600160a01b03163314611b775760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b038116611bbc5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b604482015260640161165f565b6001600160a01b038116301415611c045760405162461bcd60e51b815260206004820152600c60248201526b2730ba34bb32902a37b5b2b760a11b604482015260640161165f565b6040516370a0823160e01b81523060048201526000906001600160a01b0383169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c79919061567d565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611cc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce89190615696565b905080611b065760405162461bcd60e51b815260206004820152601960248201527f4661696c757265204f6e20546f6b656e20576974686472617700000000000000604482015260640161165f565b6005546001600160a01b03163314611d615760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b0381166000908152600a602052604090205460ff16611d8657600080fd5b6001600160a01b0381166000818152600a6020526040808220805460ff19169055517f1f4cb6a9e9e81750c63263094a66650362c3047c5725a13aadfc3856e5860f899190a250565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314611e145760405162461bcd60e51b815260040161165f906155a8565b600580546001600160a01b0319169055611e2e6000614a9e565b565b6005546001600160a01b03163314611e5a5760405162461bcd60e51b815260040161165f906155a8565b610258831015611ec85760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b606482015260840161165f565b6103e88211158015611ed8575060015b611f3d5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b606482015260840161165f565b6013929092556011556012805460ff1916911515919091179055565b6005546001600160a01b03163314611f835760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611fd85760405162461bcd60e51b815260040161165f906155a8565b60005b8151811015611b0657600160086000848481518110611ffc57611ffc61564c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061203881615662565b915050611fdb565b6005546001600160a01b0316331461206a5760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b03811660009081526006602052604090205460ff1661208f57600080fd5b6001600160a01b038116600081815260066020526040808220805460ff19169055517f6866e503d38134a78fda39bc98d3b6b8fbc24d5904303f6017770e935f7c63649190a250565b6005546001600160a01b031633146121025760405162461bcd60e51b815260040161165f906155a8565b601e839055601f82905560208190558061211c8385615634565b6121269190615634565b601d8190556008101561217b5760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203825206f72206c65737300000000604482015260640161165f565b601e54601f546020805460408051948552918401929092528201527fef771cd1f65ae0d0bb1f243b74153b6559106206e6dbc387e6e219afd8a95cf4906060015b60405180910390a1505050565b6005546001600160a01b031633146121f35760405162461bcd60e51b815260040161165f906155a8565b601780544360185542601455601b929092556dff0000000000ffffffffffff00ff199091166d0100000000000000000000000001179055565b6005546001600160a01b031633146122565760405162461bcd60e51b815260040161165f906155a8565b600b805460ff60b01b1916600160b01b831515908102919091179091556040517f1fcb1eacdfd0e92860beaa24f9f4c0c351bc9d074be0c9d8407f5a111b9ca9b190600090a250565b6005546001600160a01b031633146122c95760405162461bcd60e51b815260040161165f906155a8565b6017805460ff1916911515919091179055565b6005546001600160a01b031633146123065760405162461bcd60e51b815260040161165f906155a8565b60178054911515600160481b0269ff00000000000000000019909216919091179055565b60606004805461159c9061556d565b6005546001600160a01b031633146123635760405162461bcd60e51b815260040161165f906155a8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141561240b5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161165f565b611b068282614af0565b6005546001600160a01b0316331461243f5760405162461bcd60e51b815260040161165f906155a8565b60005b8151811015611b06576001600960008484815181106124635761246361564c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061249f81615662565b915050612442565b6005546001600160a01b031633146124d15760405162461bcd60e51b815260040161165f906155a8565b60178054911515600160601b0260ff60601b19909216919091179055565b6005546001600160a01b031633146125195760405162461bcd60e51b815260040161165f906155a8565b6017805466ffff00000000001916600160281b9315159390930266ff000000000000191692909217600160301b91151591909102179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156125d45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161165f565b6125e13385858403613107565b5060019392505050565b600061162c33848461322b565b6005546001600160a01b031633146126225760405162461bcd60e51b815260040161165f906155a8565b600c546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146126a95760405162461bcd60e51b815260040161165f906155a8565b60005b8151811015611b06576001600760008484815181106126cd576126cd61564c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061270981615662565b9150506126ac565b6005546001600160a01b0316331461273b5760405162461bcd60e51b815260040161165f906155a8565b600b8054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b031633146127835760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b03811660009081526008602052604090205460ff166127a857600080fd5b6001600160a01b038116600081815260086020526040808220805460ff19169055517fadc11009a6ac1fa921e16ae93be742414c0a1aa0d7ab40607979525431a28f719190a250565b6005546001600160a01b0316331461281b5760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b038216600081815260286020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146128a45760405162461bcd60e51b815260040161165f906155a8565b602283905560238290556024819055806128be8385615634565b6128c89190615634565b60218190556008101561291d5760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203825206f72206c65737300000000604482015260640161165f565b602254602354602454604080519384526020840192909252908201527faaaabdccd2e271f505d88ba07f83d9f2d16e63dac9b7f725cfc8d9e05a33a6e6906060016121bc565b6005546001600160a01b0316331461298d5760405162461bcd60e51b815260040161165f906155a8565b670de0b6b3a76400006103e86129a260025490565b6129ad9060056155f3565b6129b79190615612565b6129c19190615612565b811015612a1c5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b606482015260840161165f565b612a2e81670de0b6b3a76400006155f3565b60105550565b6005546001600160a01b03163314612a5e5760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b03811660009081526007602052604090205460ff16612a8357600080fd5b6001600160a01b038116600081815260076020526040808220805460ff19169055517fb85c02cbf00e487c2dbdb1c51961f5580d56d7d3ef3de3734c5b6bdc1874e4029190a250565b6005546001600160a01b03163314612af65760405162461bcd60e51b815260040161165f906155a8565b60178054911515600160401b0268ff000000000000000019909216919091179055565b6005546001600160a01b03163314612b435760405162461bcd60e51b815260040161165f906155a8565b60005b8151811015611b06576001600a6000848481518110612b6757612b6761564c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580612ba381615662565b915050612b46565b6005546001600160a01b03163314612bd55760405162461bcd60e51b815260040161165f906155a8565b60178054911515600160501b0260ff60501b19909216919091179055565b6005546000906001600160a01b03163314612c205760405162461bcd60e51b815260040161165f906155a8565b620186a0612c2d60025490565b612c389060016155f3565b612c429190615612565b821015612caf5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161165f565b6103e8612cbb60025490565b612cc69060056155f3565b612cd09190615612565b821115612d3c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161165f565b50600f81905560015b919050565b6005546001600160a01b03163314612d745760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b03919091166000908152602a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314612dc95760405162461bcd60e51b815260040161165f906155a8565b60178054911515600160581b0260ff60581b19909216919091179055565b6005546001600160a01b03163314612e115760405162461bcd60e51b815260040161165f906155a8565b6017805467ffff0000000000001916600160301b9315159390930267ff00000000000000191692909217600160381b91151591909102179055565b6005546001600160a01b03163314612e765760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b038116612ebb5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b604482015260640161165f565b600b8054610100600160a81b0319166101006001600160a01b038416908102919091179091556000818152602860209081526040808320805460ff199081166001908117909255602984528285208054821683179055602a84529382902080549094161790925590519182527f2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a73910160405180910390a150565b6005546001600160a01b03163314612f7f5760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b038116612fe45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161165f565b611b4a81614a9e565b6005546001600160a01b031633146130175760405162461bcd60e51b815260040161165f906155a8565b600c546040516000916001600160a01b03169047908381818185875af1925050503d8060008114613064576040519150601f19603f3d011682016040523d82523d6000602084013e613069565b606091505b50505050565b6005546001600160a01b031633146130995760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b03811660009081526009602052604090205460ff166130be57600080fd5b6001600160a01b038116600081815260096020526040808220805460ff19169055517f189194b6a4291dcfae4bc5adb291a58f6b29f789ff244168c4f2ec0a3c516d649190a250565b6001600160a01b0383166131695760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161165f565b6001600160a01b0382166131ca5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161165f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166132515760405162461bcd60e51b815260040161165f906156b3565b6001600160a01b0382166132775760405162461bcd60e51b815260040161165f906156f8565b8061328d5761328883836000614b44565b505050565b60175462010000900460ff161561331e576001600160a01b03831660009081526028602052604090205460ff16806132dd57506001600160a01b03821660009081526028602052604090205460ff165b61331e5760405162461bcd60e51b815260206004820152601260248201527154726164696e67204e6f742041637469766560701b604482015260640161165f565b6017546301000000900460ff161561345f576001600160a01b03831660009081526006602052604090205460ff168061336f57506001600160a01b03821660009081526006602052604090205460ff165b8061339257506001600160a01b03831660009081526028602052604090205460ff165b806133b557506001600160a01b03821660009081526028602052604090205460ff165b6133d15760405162461bcd60e51b815260040161165f9061573b565b6001600160a01b0382166000908152602a602052604090205460ff1661342657601054816133fe84611dcf565b6134089190615634565b11156134265760405162461bcd60e51b815260040161165f90615765565b6001600160a01b03831660009081526006602052604090205460ff161561345f5760405162461bcd60e51b815260040161165f90615792565b601754640100000000900460ff16156135a1576001600160a01b03831660009081526007602052604090205460ff16806134b157506001600160a01b03821660009081526007602052604090205460ff165b806134d457506001600160a01b03831660009081526028602052604090205460ff165b806134f757506001600160a01b03821660009081526028602052604090205460ff165b6135135760405162461bcd60e51b815260040161165f9061573b565b6001600160a01b0382166000908152602a602052604090205460ff16613568576010548161354084611dcf565b61354a9190615634565b11156135685760405162461bcd60e51b815260040161165f90615765565b6001600160a01b03831660009081526007602052604090205460ff16156135a15760405162461bcd60e51b815260040161165f90615792565b601754600160281b900460ff16156136e2576001600160a01b03831660009081526008602052604090205460ff16806135f257506001600160a01b03821660009081526008602052604090205460ff165b8061361557506001600160a01b03831660009081526028602052604090205460ff165b8061363857506001600160a01b03821660009081526028602052604090205460ff165b6136545760405162461bcd60e51b815260040161165f9061573b565b6001600160a01b0382166000908152602a602052604090205460ff166136a9576010548161368184611dcf565b61368b9190615634565b11156136a95760405162461bcd60e51b815260040161165f90615765565b6001600160a01b03831660009081526008602052604090205460ff16156136e25760405162461bcd60e51b815260040161165f90615792565b601754600160301b900460ff161561382f576001600160a01b03831660009081526009602052604090205460ff168061373357506001600160a01b03821660009081526009602052604090205460ff165b8061375657506001600160a01b03831660009081526028602052604090205460ff165b8061377957506001600160a01b03821660009081526028602052604090205460ff165b6137955760405162461bcd60e51b815260040161165f9061573b565b6001600160a01b0382166000908152602a602052604090205460ff166137f65760026010546137c49190615612565b816137ce84611dcf565b6137d89190615634565b11156137f65760405162461bcd60e51b815260040161165f90615765565b6001600160a01b03831660009081526009602052604090205460ff161561382f5760405162461bcd60e51b815260040161165f90615792565b601754600160381b900460ff161561397c576001600160a01b0383166000908152600a602052604090205460ff168061388057506001600160a01b0382166000908152600a602052604090205460ff165b806138a357506001600160a01b03831660009081526028602052604090205460ff165b806138c657506001600160a01b03821660009081526028602052604090205460ff165b6138e25760405162461bcd60e51b815260040161165f9061573b565b6001600160a01b0382166000908152602a602052604090205460ff166139435760046010546139119190615612565b8161391b84611dcf565b6139259190615634565b11156139435760405162461bcd60e51b815260040161165f90615765565b6001600160a01b0383166000908152600a602052604090205460ff161561397c5760405162461bcd60e51b815260040161165f90615792565b6001600160a01b0382166000908152602a602052604090205460ff16613a1157601054816139a984611dcf565b6139b39190615634565b1115613a115760405162461bcd60e51b815260206004820152602760248201527f5472616e7366657220616d6f756e74206578636565647320746865204d6178206044820152662bb0b63632ba1760c91b606482015260840161165f565b601754610100900460ff1615613afe576001600160a01b0383166000908152601a602052604090205460ff1615613a7d5760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b604482015260640161165f565b601b54601854613a8d90436157bc565b1015613afe576001600160a01b0382166000908152601a60205260408120805460ff19166001179055601c805491613ac483615662565b90915550506040516001600160a01b038316907f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e590600090a25b6001600160a01b0383166000908152602b602052604090205460ff168015613b3f57506001600160a01b03821660009081526029602052604090205460ff16155b15613c7f57600e54811115613baa5760405162461bcd60e51b815260206004820152602b60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526a26b0bc1020b6b7bab73a1760a91b606482015260840161165f565b601754610100900460ff1615613c7a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415613c39576001600160a01b038216600090815260196020526040902054431415613c1957600080fd5b6001600160a01b0382166000908152601960205260409020439055613d2c565b6001600160a01b038316600090815260196020526040902054431415613c5e57600080fd5b6001600160a01b03831660009081526019602052604090204390555b613d2c565b6001600160a01b0382166000908152602b602052604090205460ff168015613cc057506001600160a01b03831660009081526029602052604090205460ff16155b15613d2c57600e54811115613d2c5760405162461bcd60e51b815260206004820152602c60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526b1026b0bc1020b6b7bab73a1760a11b606482015260840161165f565b6000613d3730611dcf565b600f5490915081108015908190613d50575060175460ff165b8015613d5f5750600b5460ff16155b8015613d755750600b54600160b01b900460ff16155b8015613d9a57506001600160a01b0385166000908152602b602052604090205460ff16155b8015613dbf57506001600160a01b03851660009081526028602052604090205460ff16155b8015613de457506001600160a01b03841660009081526028602052604090205460ff16155b15613df757600f549150613df782614c99565b808015613e06575060175460ff165b8015613e155750600b5460ff16155b8015613e2a5750600b54600160b01b900460ff165b8015613e4f57506001600160a01b0385166000908152602b602052604090205460ff16155b8015613e7457506001600160a01b03851660009081526028602052604090205460ff16155b8015613e9957506001600160a01b03841660009081526028602052604090205460ff16155b15613eac57600f549150613eac82614ea8565b600b5460ff16158015613ed757506001600160a01b0384166000908152602b602052604090205460ff165b8015613ee5575060125460ff165b8015613f005750601354601454613efc9190615634565b4210155b8015613f2557506001600160a01b03851660009081526028602052604090205460ff16155b15613f3457613f32614fc9565b505b600b546001600160a01b03861660009081526028602052604090205460ff91821615911680613f7b57506001600160a01b03851660009081526028602052604090205460ff165b15613f84575060005b600081156148ca576001600160a01b0386166000908152602b602052604090205460ff168015613fb657506000602154115b1561407457613fdb6064613fd56021548861515990919063ffffffff16565b9061516c565b905060215460235482613fee91906155f3565b613ff89190615612565b602660008282546140099190615634565b909155505060215460225461401e90836155f3565b6140289190615612565b602560008282546140399190615634565b909155505060215460245461404e90836155f3565b6140589190615612565b602760008282546140699190615634565b909155506141519050565b6001600160a01b0387166000908152602b602052604090205460ff16801561409e57506000601d54115b15614151576140bd6064613fd5601d548861515990919063ffffffff16565b9050601d54601f54826140d091906155f3565b6140da9190615612565b602660008282546140eb9190615634565b9091555050601d54601e5461410090836155f3565b61410a9190615612565b6025600082825461411b9190615634565b9091555050601d5460205461413090836155f3565b61413a9190615612565b6027600082825461414b9190615634565b90915550505b601754600160401b900460ff16801561418257506001600160a01b0386166000908152602b602052604090205460ff165b80156141a657506001600160a01b03871660009081526006602052604090205460ff165b1561421e576141bb6064613fd5876032615159565b905060326141ca8260196155f3565b6141d49190615612565b602660008282546141e59190615634565b90915550603290506141f88260196155f3565b6142029190615612565b602560008282546142139190615634565b909155506142c29050565b601754600160401b900460ff16801561424f57506001600160a01b03871660009081526006602052604090205460ff165b156142c2576142646064613fd5876032615159565b905060326142738260196155f3565b61427d9190615612565b6026600082825461428e9190615634565b90915550603290506142a18260196155f3565b6142ab9190615612565b602560008282546142bc9190615634565b90915550505b601754600160481b900460ff1680156142f357506001600160a01b0386166000908152602b602052604090205460ff165b801561431757506001600160a01b03871660009081526007602052604090205460ff165b1561438f5761432c6064613fd5876032615159565b9050603261433b8260196155f3565b6143459190615612565b602660008282546143569190615634565b90915550603290506143698260196155f3565b6143739190615612565b602560008282546143849190615634565b909155506144339050565b601754600160481b900460ff1680156143c057506001600160a01b03871660009081526007602052604090205460ff165b15614433576143d56064613fd5876032615159565b905060326143e48260196155f3565b6143ee9190615612565b602660008282546143ff9190615634565b90915550603290506144128260196155f3565b61441c9190615612565b6025600082825461442d9190615634565b90915550505b601754600160501b900460ff16801561446457506001600160a01b0386166000908152602b602052604090205460ff165b801561448857506001600160a01b03871660009081526008602052604090205460ff165b156145005761449d6064613fd5876032615159565b905060326144ac8260196155f3565b6144b69190615612565b602660008282546144c79190615634565b90915550603290506144da8260196155f3565b6144e49190615612565b602560008282546144f59190615634565b909155506145a49050565b601754600160501b900460ff16801561453157506001600160a01b03871660009081526008602052604090205460ff165b156145a4576145466064613fd5876032615159565b905060326145558260196155f3565b61455f9190615612565b602660008282546145709190615634565b90915550603290506145838260196155f3565b61458d9190615612565b6025600082825461459e9190615634565b90915550505b601754600160581b900460ff1680156145d557506001600160a01b0386166000908152602b602052604090205460ff165b80156145f957506001600160a01b03871660009081526009602052604090205460ff165b156146715761460e6064613fd5876032615159565b9050603261461d8260196155f3565b6146279190615612565b602660008282546146389190615634565b909155506032905061464b8260196155f3565b6146559190615612565b602560008282546146669190615634565b909155506147159050565b601754600160581b900460ff1680156146a257506001600160a01b03871660009081526009602052604090205460ff165b15614715576146b76064613fd5876032615159565b905060326146c68260196155f3565b6146d09190615612565b602660008282546146e19190615634565b90915550603290506146f48260196155f3565b6146fe9190615612565b6025600082825461470f9190615634565b90915550505b601754600160601b900460ff16801561474657506001600160a01b0386166000908152602b602052604090205460ff165b801561476a57506001600160a01b0387166000908152600a602052604090205460ff165b15614808576147896064613fd56021548861515990919063ffffffff16565b9050602154602354600461479d91906155f3565b6147a790836155f3565b6147b19190615612565b602660008282546147c29190615634565b90915550506021546022546147d89060046155f3565b6147e290836155f3565b6147ec9190615612565b602560008282546147fd9190615634565b909155506148ac9050565b601754600160601b900460ff16801561483957506001600160a01b0387166000908152600a602052604090205460ff165b156148ac5761484e6064613fd5876014615159565b9050601461485d82600a6155f3565b6148679190615612565b602660008282546148789190615634565b909155506014905061488b82600a6155f3565b6148959190615612565b602560008282546148a69190615634565b90915550505b80156148bd576148bd873083614b44565b6148c781866157bc565b94505b6148d5878787614b44565b50505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106149135761491361564c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149b591906157d3565b816001815181106149c8576149c861564c565b60200260200101906001600160a01b031690816001600160a01b031681525050614a13307f000000000000000000000000000000000000000000000000000000000000000084613107565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790614a689085906000908690309042906004016157f0565b600060405180830381600087803b158015614a8257600080fd5b505af1158015614a96573d6000803e3d6000fd5b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152602b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316614b6a5760405162461bcd60e51b815260040161165f906156b3565b6001600160a01b038216614b905760405162461bcd60e51b815260040161165f906156f8565b6001600160a01b03831660009081526020819052604090205481811015614c085760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161165f565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290614c3f908490615634565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051614c8b91815260200190565b60405180910390a350505050565b600b805460ff19166001179055602654602554600091614cb891615634565b90506000614cd582613fd56026548661515990919063ffffffff16565b90506000614ce38483615178565b90506000614cf283600261516c565b90506000614d008483615178565b905047614d0c836148de565b6000614d184783615178565b9050614d248382615184565b60408051858152602081018390529081018490527f9629756ff32486270ad51a664b5bf99945dac79a2c9e8f76087aa1273ce0c99b9060600160405180910390a147614d6f866148de565b6000614d7b4783615178565b90506000614d8a600283615612565b600c546040519192506000916001600160a01b039091169083908381818185875af1925050503d8060008114614ddc576040519150601f19603f3d011682016040523d82523d6000602084013e614de1565b606091505b5050600d549091506001600160a01b03166108fc614dff84866157bc565b6040518115909202916000818181858888f19350505050158015614e27573d6000803e3d6000fd5b506706f05b59d3b20000471115614e9057600c546040516001600160a01b03909116904790600081818185875af1925050503d8060008114614e85576040519150601f19603f3d011682016040523d82523d6000602084013e614e8a565b606091505b50909150505b5050600b805460ff1916905550505050505050505050565b600b5460405163a9059cbb60e01b81526101009091046001600160a01b03166004820152602481018290528190309063a9059cbb906044016020604051808303816000875af1158015614eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f239190615696565b50600b5461010090046001600160a01b03163014801590614f4d5750600b54600160a81b900460ff165b8015614f745750600f54600b54614f719061010090046001600160a01b0316611dcf565b10155b15611b0657600b60019054906101000a90046001600160a01b03166001600160a01b0316637fec8d386040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614a8257600080fd5b426014556040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166004820152600090819030906370a0823190602401602060405180830381865afa158015615036573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061505a919061567d565b90506000615079612710613fd56011548561515990919063ffffffff16565b905080156150ae576150ae7f000000000000000000000000000000000000000000000000000000000000000061dead83614b44565b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561510e57600080fd5b505af1158015615122573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b600061516582846155f3565b9392505050565b60006151658284615612565b600061516582846157bc565b6151af307f000000000000000000000000000000000000000000000000000000000000000084613107565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015615239573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061525e9190615861565b5050505050565b600060208083528351808285015260005b8181101561529257858101830151858201604001528201615276565b818111156152a4576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611b4a57600080fd5b8035612d45816152ba565b600080604083850312156152ed57600080fd5b82356152f8816152ba565b946020939093013593505050565b60006020828403121561531857600080fd5b8135615165816152ba565b60006020828403121561533557600080fd5b5035919050565b8015158114611b4a57600080fd5b60006020828403121561535c57600080fd5b81356151658161533c565b60008060006060848603121561537c57600080fd5b8335615387816152ba565b92506020840135615397816152ba565b929592945050506040919091013590565b600080604083850312156153bb57600080fd5b82356153c68161533c565b915060208301356153d68161533c565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561540a57600080fd5b823567ffffffffffffffff8082111561542257600080fd5b818501915085601f83011261543657600080fd5b813581811115615448576154486153e1565b8060051b604051601f19603f8301168101818110858211171561546d5761546d6153e1565b60405291825284820192508381018501918883111561548b57600080fd5b938501935b828510156154b0576154a1856152cf565b84529385019392850192615490565b98975050505050505050565b6000806000606084860312156154d157600080fd5b833592506020840135915060408401356154ea8161533c565b809150509250925092565b6000806040838503121561550857600080fd5b82356153c6816152ba565b60008060006060848603121561552857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561555257600080fd5b823561555d816152ba565b915060208301356153d6816152ba565b600181811c9082168061558157607f821691505b602082108114156155a257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561560d5761560d6155dd565b500290565b60008261562f57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115615647576156476155dd565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415615676576156766155dd565b5060010190565b60006020828403121561568f57600080fd5b5051919050565b6000602082840312156156a857600080fd5b81516151658161533c565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526010908201526f2932b21021b0b93832ba1027b7363c9760811b604082015260600190565b60208082526013908201527213585e081dd85b1b195d08195e18d959591959606a1b604082015260600190565b60208082526010908201526f2932b21021b0b93832ba1026b7b2329760811b604082015260600190565b6000828210156157ce576157ce6155dd565b500390565b6000602082840312156157e557600080fd5b8151615165816152ba565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156158405784516001600160a01b03168352938301939183019160010161581b565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561587657600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220878f4612f8bc462880bff77a768795a8ea34fc8f0d4ad5529e0fe25da316726e64736f6c634300080a00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720000000000000000000000006067f93e88c24d507177243d359d4a4167e353b1000000000000000000000000bf60050bc76419abfc5e1122c645c56f48de34c7

Deployed Bytecode

0x6080604052600436106106d75760003560e01c80638095d5641161037a578063bf36429b116101d1578063daa3b83011610102578063ee40166e116100a0578063f42938901161007a578063f42938901461152c578063f637434214611541578063f8b45b0514611557578063fc6a66451461156d57600080fd5b8063ee40166e146114e0578063f11a24d3146114f6578063f2fde38b1461150c57600080fd5b8063e1b77869116100dc578063e1b7786914611474578063e2f4560514611494578063e74b981b146114aa578063e79d4160146114ca57600080fd5b8063daa3b830146113d4578063dba004821461140d578063dd62ed3e1461142e57600080fd5b8063d0e8f1331161016f578063d2fcc00111610149578063d2fcc0011461135d578063d4da594f1461137d578063d740a75f1461139e578063d85ba063146113be57600080fd5b8063d0e8f133146112fd578063d1fb26391461131d578063d257b34f1461133d57600080fd5b8063c18bc195116101ab578063c18bc19514611287578063c8c8ebe4146112a7578063ca45b5e5146112bd578063cbea573f146112dd57600080fd5b8063bf36429b14611227578063c024666814611247578063c17b5b8c1461126757600080fd5b80639c67850b116102ab578063aacebbe311610249578063b62496f511610223578063b62496f514611186578063b83b46e8146111b6578063b94e8df2146111e6578063bbc0c7421461120657600080fd5b8063aacebbe314611116578063b4c3289c14611136578063b582892b1461115657600080fd5b8063a1c5a15d11610285578063a1c5a15d1461109f578063a457c2d7146110c0578063a4c82a00146110e0578063a9059cbb146110f657600080fd5b80639c67850b146110495780639ec22c0e14611069578063a1b796271461107f57600080fd5b8063921369131161031857806395d89b41116102f257806395d89b4114610fc457806396880b1714610fd95780639a7a23d6146110095780639b08c49d1461102957600080fd5b80639213691314610f6e578063924de9b714610f845780639525999514610fa457600080fd5b8063891ff49411610354578063891ff49414610ed75780638da5cb5b14610f105780638ea5220f14610f2e578063910730a814610f4e57600080fd5b80638095d56414610e7657806382aa7c6814610e96578063847d899414610eb657600080fd5b806333251a0b1161052e5780636ddd17131161045f57806375f0a874116103fd5780637bce5a04116103d75780637bce5a0414610dd75780637c1be58014610ded5780637eb516be14610e0d578063801992b314610e4657600080fd5b806375f0a87414610d5e5780637639f70b14610d7e578063772215d814610d9e57600080fd5b806371cdeda71161043957806371cdeda714610cb5578063730c188814610cee5780637571336a14610d0e57806375e661ee14610d2e57600080fd5b80636ddd171314610c6657806370a0823114610c80578063715018a614610ca057600080fd5b806351bc3c85116104cc57806363f0a4e9116104a657806363f0a4e914610bec578063693ef5ca14610c0d5780636a486a8e14610c2e5780636d4a066f14610c4457600080fd5b806351bc3c8514610b9757806351cff8d914610bac5780635b21323314610bcc57600080fd5b806346904840116105085780634690484014610aef5780634706240214610b1457806349bd5a5e14610b2a5780634fbee19314610b5e57600080fd5b806333251a0b14610a8f5780633950935114610aaf5780633998418214610acf57600080fd5b8063199ffc72116106085780632422ef07116105a65780632b14ca56116105805780632b14ca5614610a2d5780632c3e486c14610a435780632e82f1a014610a59578063313ce56714610a7357600080fd5b80632422ef07146109d7578063261f7ef5146109f757806327c8f83514610a1757600080fd5b80631f3fed8f116105e25780631f3fed8f14610961578063203e727e1461097757806322042cc11461099757806323b872dd146109b757600080fd5b8063199ffc72146109145780631a8145bb1461092a5780631c1f59b11461094057600080fd5b80630f3a325f116106755780631694505e1161064f5780631694505e1461087b57806318160ddd146108c75780631816467f146108dc578063184c16c5146108fe57600080fd5b80630f3a325f146107f157806310d5de531461082a57806315e17e4b1461085a57600080fd5b8063095ea7b3116106b1578063095ea7b31461075c5780630bcfc1ee1461077c5780630c44a69e146107ac5780630c56ae3b146107d057600080fd5b8063033d55fe146106e3578063035bc61d1461071957806306fdde031461073a57600080fd5b366106de57005b600080fd5b3480156106ef57600080fd5b5060175461070490600160401b900460ff1681565b60405190151581526020015b60405180910390f35b34801561072557600080fd5b50601754610704906301000000900460ff1681565b34801561074657600080fd5b5061074f61158d565b6040516107109190615265565b34801561076857600080fd5b506107046107773660046152da565b61161f565b34801561078857600080fd5b50610704610797366004615306565b60076020526000908152604090205460ff1681565b3480156107b857600080fd5b506107c260275481565b604051908152602001610710565b3480156107dc57600080fd5b50600b5461070490600160b01b900460ff1681565b3480156107fd57600080fd5b5061070461080c366004615306565b6001600160a01b03166000908152601a602052604090205460ff1690565b34801561083657600080fd5b50610704610845366004615306565b60296020526000908152604090205460ff1681565b34801561086657600080fd5b50600b5461070490600160a81b900460ff1681565b34801561088757600080fd5b506108af7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610710565b3480156108d357600080fd5b506002546107c2565b3480156108e857600080fd5b506108fc6108f7366004615306565b611635565b005b34801561090a57600080fd5b506107c260155481565b34801561092057600080fd5b506107c260115481565b34801561093657600080fd5b506107c260265481565b34801561094c57600080fd5b5060175461070490600160581b900460ff1681565b34801561096d57600080fd5b506107c260255481565b34801561098357600080fd5b506108fc610992366004615323565b6116c5565b3480156109a357600080fd5b506108fc6109b236600461534a565b6117a2565b3480156109c357600080fd5b506107046109d2366004615367565b6117f1565b3480156109e357600080fd5b506108fc6109f23660046153a8565b61189b565b348015610a0357600080fd5b506108fc610a123660046153a8565b6118fd565b348015610a2357600080fd5b506108af61dead81565b348015610a3957600080fd5b506107c260245481565b348015610a4f57600080fd5b506107c260135481565b348015610a6557600080fd5b506012546107049060ff1681565b348015610a7f57600080fd5b5060405160128152602001610710565b348015610a9b57600080fd5b506108fc610aaa366004615306565b61195d565b348015610abb57600080fd5b50610704610aca3660046152da565b611a38565b348015610adb57600080fd5b506108fc610aea3660046153f7565b611a74565b348015610afb57600080fd5b50600b546108af9061010090046001600160a01b031681565b348015610b2057600080fd5b506107c260205481565b348015610b3657600080fd5b506108af7f0000000000000000000000002cba5b7caf0baae62e72cbf484f3a6f60cc38e0d81565b348015610b6a57600080fd5b50610704610b79366004615306565b6001600160a01b031660009081526028602052604090205460ff1690565b348015610ba357600080fd5b506108fc611b0a565b348015610bb857600080fd5b506108fc610bc7366004615306565b611b4d565b348015610bd857600080fd5b506108fc610be7366004615306565b611d37565b348015610bf857600080fd5b5060175461070490600160301b900460ff1681565b348015610c1957600080fd5b5060175461070490600160601b900460ff1681565b348015610c3a57600080fd5b506107c260215481565b348015610c5057600080fd5b5060175461070490640100000000900460ff1681565b348015610c7257600080fd5b506017546107049060ff1681565b348015610c8c57600080fd5b506107c2610c9b366004615306565b611dcf565b348015610cac57600080fd5b506108fc611dea565b348015610cc157600080fd5b50610704610cd0366004615306565b6001600160a01b031660009081526009602052604090205460ff1690565b348015610cfa57600080fd5b506108fc610d093660046154bc565b611e30565b348015610d1a57600080fd5b506108fc610d293660046154f5565b611f59565b348015610d3a57600080fd5b50610704610d49366004615306565b60086020526000908152604090205460ff1681565b348015610d6a57600080fd5b50600c546108af906001600160a01b031681565b348015610d8a57600080fd5b506108fc610d993660046153f7565b611fae565b348015610daa57600080fd5b50610704610db9366004615306565b6001600160a01b031660009081526006602052604090205460ff1690565b348015610de357600080fd5b506107c2601e5481565b348015610df957600080fd5b506108fc610e08366004615306565b612040565b348015610e1957600080fd5b50610704610e28366004615306565b6001600160a01b031660009081526008602052604090205460ff1690565b348015610e5257600080fd5b50610704610e61366004615306565b60096020526000908152604090205460ff1681565b348015610e8257600080fd5b506108fc610e91366004615513565b6120d8565b348015610ea257600080fd5b506108fc610eb1366004615323565b6121c9565b348015610ec257600080fd5b5060175461070490600160281b900460ff1681565b348015610ee357600080fd5b50610704610ef2366004615306565b6001600160a01b03166000908152600a602052604090205460ff1690565b348015610f1c57600080fd5b506005546001600160a01b03166108af565b348015610f3a57600080fd5b50600d546108af906001600160a01b031681565b348015610f5a57600080fd5b506108fc610f6936600461534a565b61222c565b348015610f7a57600080fd5b506107c260225481565b348015610f9057600080fd5b506108fc610f9f36600461534a565b61229f565b348015610fb057600080fd5b506108fc610fbf36600461534a565b6122dc565b348015610fd057600080fd5b5061074f61232a565b348015610fe557600080fd5b50610704610ff4366004615306565b602a6020526000908152604090205460ff1681565b34801561101557600080fd5b506108fc6110243660046154f5565b612339565b34801561103557600080fd5b506108fc6110443660046153f7565b612415565b34801561105557600080fd5b506108fc61106436600461534a565b6124a7565b34801561107557600080fd5b506107c260165481565b34801561108b57600080fd5b506108fc61109a3660046153a8565b6124ef565b3480156110ab57600080fd5b5060175461070490600160381b900460ff1681565b3480156110cc57600080fd5b506107046110db3660046152da565b612552565b3480156110ec57600080fd5b506107c260145481565b34801561110257600080fd5b506107046111113660046152da565b6125eb565b34801561112257600080fd5b506108fc611131366004615306565b6125f8565b34801561114257600080fd5b506108fc6111513660046153f7565b61267f565b34801561116257600080fd5b50610704611171366004615306565b60066020526000908152604090205460ff1681565b34801561119257600080fd5b506107046111a1366004615306565b602b6020526000908152604090205460ff1681565b3480156111c257600080fd5b506107046111d1366004615306565b600a6020526000908152604090205460ff1681565b3480156111f257600080fd5b506108fc61120136600461534a565b612711565b34801561121257600080fd5b5060175461070490600160681b900460ff1681565b34801561123357600080fd5b506108fc611242366004615306565b612759565b34801561125357600080fd5b506108fc6112623660046154f5565b6127f1565b34801561127357600080fd5b506108fc611282366004615513565b61287a565b34801561129357600080fd5b506108fc6112a2366004615323565b612963565b3480156112b357600080fd5b506107c2600e5481565b3480156112c957600080fd5b506108fc6112d8366004615306565b612a34565b3480156112e957600080fd5b506108fc6112f836600461534a565b612acc565b34801561130957600080fd5b506108fc6113183660046153f7565b612b19565b34801561132957600080fd5b506108fc61133836600461534a565b612bab565b34801561134957600080fd5b50610704611358366004615323565b612bf3565b34801561136957600080fd5b506108fc6113783660046154f5565b612d4a565b34801561138957600080fd5b5060175461070490600160501b900460ff1681565b3480156113aa57600080fd5b506108fc6113b936600461534a565b612d9f565b3480156113ca57600080fd5b506107c2601d5481565b3480156113e057600080fd5b506107046113ef366004615306565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561141957600080fd5b5060175461070490600160481b900460ff1681565b34801561143a57600080fd5b506107c261144936600461553f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561148057600080fd5b506108fc61148f3660046153a8565b612de7565b3480156114a057600080fd5b506107c2600f5481565b3480156114b657600080fd5b506108fc6114c5366004615306565b612e4c565b3480156114d657600080fd5b506107c2601c5481565b3480156114ec57600080fd5b506107c260185481565b34801561150257600080fd5b506107c2601f5481565b34801561151857600080fd5b506108fc611527366004615306565b612f55565b34801561153857600080fd5b506108fc612fed565b34801561154d57600080fd5b506107c260235481565b34801561156357600080fd5b506107c260105481565b34801561157957600080fd5b506108fc611588366004615306565b61306f565b60606003805461159c9061556d565b80601f01602080910402602001604051908101604052809291908181526020018280546115c89061556d565b80156116155780601f106115ea57610100808354040283529160200191611615565b820191906000526020600020905b8154815290600101906020018083116115f857829003601f168201915b5050505050905090565b600061162c338484613107565b50600192915050565b6005546001600160a01b031633146116685760405162461bcd60e51b815260040161165f906155a8565b60405180910390fd5b600d546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74390600090a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116ef5760405162461bcd60e51b815260040161165f906155a8565b670de0b6b3a76400006103e861170460025490565b61170f9060016155f3565b6117199190615612565b6117239190615612565b81101561178a5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161165f565b61179c81670de0b6b3a76400006155f3565b600e5550565b6005546001600160a01b031633146117cc5760405162461bcd60e51b815260040161165f906155a8565b6017805463ffff0000191663010000009215159290920262ff00001916919091179055565b60006117fe84848461322b565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156118835760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161165f565b6118908533858403613107565b506001949350505050565b6005546001600160a01b031633146118c55760405162461bcd60e51b815260040161165f906155a8565b6017805465ffff0000000019166401000000009315159390930265ff0000000000191692909217600160281b91151591909102179055565b6005546001600160a01b031633146119275760405162461bcd60e51b815260040161165f906155a8565b6017805464ffff000000191663010000009315159390930264ff0000000019169290921764010000000091151591909102179055565b6005546001600160a01b031633146119875760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b0381166000908152601a602052604090205460ff166119ef5760405162461bcd60e51b815260206004820152601c60248201527f54686973206163636f756e74206973206e6f74206120736e6970657200000000604482015260640161165f565b6001600160a01b0381166000818152601a6020526040808220805460ff19169055517fa957ba3a52f05ac246d413f37460b13ee4b8281799a6b8365c8d227bb37656739190a250565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161162c918590611a6f908690615634565b613107565b6005546001600160a01b03163314611a9e5760405162461bcd60e51b815260040161165f906155a8565b60005b8151811015611b0657600160066000848481518110611ac257611ac261564c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611afe81615662565b915050611aa1565b5050565b6005546001600160a01b03163314611b345760405162461bcd60e51b815260040161165f906155a8565b6000611b3f30611dcf565b9050611b4a816148de565b50565b6005546001600160a01b03163314611b775760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b038116611bbc5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b604482015260640161165f565b6001600160a01b038116301415611c045760405162461bcd60e51b815260206004820152600c60248201526b2730ba34bb32902a37b5b2b760a11b604482015260640161165f565b6040516370a0823160e01b81523060048201526000906001600160a01b0383169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c79919061567d565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611cc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce89190615696565b905080611b065760405162461bcd60e51b815260206004820152601960248201527f4661696c757265204f6e20546f6b656e20576974686472617700000000000000604482015260640161165f565b6005546001600160a01b03163314611d615760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b0381166000908152600a602052604090205460ff16611d8657600080fd5b6001600160a01b0381166000818152600a6020526040808220805460ff19169055517f1f4cb6a9e9e81750c63263094a66650362c3047c5725a13aadfc3856e5860f899190a250565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314611e145760405162461bcd60e51b815260040161165f906155a8565b600580546001600160a01b0319169055611e2e6000614a9e565b565b6005546001600160a01b03163314611e5a5760405162461bcd60e51b815260040161165f906155a8565b610258831015611ec85760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b606482015260840161165f565b6103e88211158015611ed8575060015b611f3d5760405162461bcd60e51b815260206004820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b606482015260840161165f565b6013929092556011556012805460ff1916911515919091179055565b6005546001600160a01b03163314611f835760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314611fd85760405162461bcd60e51b815260040161165f906155a8565b60005b8151811015611b0657600160086000848481518110611ffc57611ffc61564c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061203881615662565b915050611fdb565b6005546001600160a01b0316331461206a5760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b03811660009081526006602052604090205460ff1661208f57600080fd5b6001600160a01b038116600081815260066020526040808220805460ff19169055517f6866e503d38134a78fda39bc98d3b6b8fbc24d5904303f6017770e935f7c63649190a250565b6005546001600160a01b031633146121025760405162461bcd60e51b815260040161165f906155a8565b601e839055601f82905560208190558061211c8385615634565b6121269190615634565b601d8190556008101561217b5760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203825206f72206c65737300000000604482015260640161165f565b601e54601f546020805460408051948552918401929092528201527fef771cd1f65ae0d0bb1f243b74153b6559106206e6dbc387e6e219afd8a95cf4906060015b60405180910390a1505050565b6005546001600160a01b031633146121f35760405162461bcd60e51b815260040161165f906155a8565b601780544360185542601455601b929092556dff0000000000ffffffffffff00ff199091166d0100000000000000000000000001179055565b6005546001600160a01b031633146122565760405162461bcd60e51b815260040161165f906155a8565b600b805460ff60b01b1916600160b01b831515908102919091179091556040517f1fcb1eacdfd0e92860beaa24f9f4c0c351bc9d074be0c9d8407f5a111b9ca9b190600090a250565b6005546001600160a01b031633146122c95760405162461bcd60e51b815260040161165f906155a8565b6017805460ff1916911515919091179055565b6005546001600160a01b031633146123065760405162461bcd60e51b815260040161165f906155a8565b60178054911515600160481b0269ff00000000000000000019909216919091179055565b60606004805461159c9061556d565b6005546001600160a01b031633146123635760405162461bcd60e51b815260040161165f906155a8565b7f0000000000000000000000002cba5b7caf0baae62e72cbf484f3a6f60cc38e0d6001600160a01b0316826001600160a01b0316141561240b5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161165f565b611b068282614af0565b6005546001600160a01b0316331461243f5760405162461bcd60e51b815260040161165f906155a8565b60005b8151811015611b06576001600960008484815181106124635761246361564c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061249f81615662565b915050612442565b6005546001600160a01b031633146124d15760405162461bcd60e51b815260040161165f906155a8565b60178054911515600160601b0260ff60601b19909216919091179055565b6005546001600160a01b031633146125195760405162461bcd60e51b815260040161165f906155a8565b6017805466ffff00000000001916600160281b9315159390930266ff000000000000191692909217600160301b91151591909102179055565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156125d45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161165f565b6125e13385858403613107565b5060019392505050565b600061162c33848461322b565b6005546001600160a01b031633146126225760405162461bcd60e51b815260040161165f906155a8565b600c546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146126a95760405162461bcd60e51b815260040161165f906155a8565b60005b8151811015611b06576001600760008484815181106126cd576126cd61564c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061270981615662565b9150506126ac565b6005546001600160a01b0316331461273b5760405162461bcd60e51b815260040161165f906155a8565b600b8054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b031633146127835760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b03811660009081526008602052604090205460ff166127a857600080fd5b6001600160a01b038116600081815260086020526040808220805460ff19169055517fadc11009a6ac1fa921e16ae93be742414c0a1aa0d7ab40607979525431a28f719190a250565b6005546001600160a01b0316331461281b5760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b038216600081815260286020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146128a45760405162461bcd60e51b815260040161165f906155a8565b602283905560238290556024819055806128be8385615634565b6128c89190615634565b60218190556008101561291d5760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203825206f72206c65737300000000604482015260640161165f565b602254602354602454604080519384526020840192909252908201527faaaabdccd2e271f505d88ba07f83d9f2d16e63dac9b7f725cfc8d9e05a33a6e6906060016121bc565b6005546001600160a01b0316331461298d5760405162461bcd60e51b815260040161165f906155a8565b670de0b6b3a76400006103e86129a260025490565b6129ad9060056155f3565b6129b79190615612565b6129c19190615612565b811015612a1c5760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b606482015260840161165f565b612a2e81670de0b6b3a76400006155f3565b60105550565b6005546001600160a01b03163314612a5e5760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b03811660009081526007602052604090205460ff16612a8357600080fd5b6001600160a01b038116600081815260076020526040808220805460ff19169055517fb85c02cbf00e487c2dbdb1c51961f5580d56d7d3ef3de3734c5b6bdc1874e4029190a250565b6005546001600160a01b03163314612af65760405162461bcd60e51b815260040161165f906155a8565b60178054911515600160401b0268ff000000000000000019909216919091179055565b6005546001600160a01b03163314612b435760405162461bcd60e51b815260040161165f906155a8565b60005b8151811015611b06576001600a6000848481518110612b6757612b6761564c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580612ba381615662565b915050612b46565b6005546001600160a01b03163314612bd55760405162461bcd60e51b815260040161165f906155a8565b60178054911515600160501b0260ff60501b19909216919091179055565b6005546000906001600160a01b03163314612c205760405162461bcd60e51b815260040161165f906155a8565b620186a0612c2d60025490565b612c389060016155f3565b612c429190615612565b821015612caf5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161165f565b6103e8612cbb60025490565b612cc69060056155f3565b612cd09190615612565b821115612d3c5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161165f565b50600f81905560015b919050565b6005546001600160a01b03163314612d745760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b03919091166000908152602a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314612dc95760405162461bcd60e51b815260040161165f906155a8565b60178054911515600160581b0260ff60581b19909216919091179055565b6005546001600160a01b03163314612e115760405162461bcd60e51b815260040161165f906155a8565b6017805467ffff0000000000001916600160301b9315159390930267ff00000000000000191692909217600160381b91151591909102179055565b6005546001600160a01b03163314612e765760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b038116612ebb5760405162461bcd60e51b815260206004820152600c60248201526b5a65726f204164647265737360a01b604482015260640161165f565b600b8054610100600160a81b0319166101006001600160a01b038416908102919091179091556000818152602860209081526040808320805460ff199081166001908117909255602984528285208054821683179055602a84529382902080549094161790925590519182527f2e979f80fe4d43055c584cf4a8467c55875ea36728fc37176c05acd784eb7a73910160405180910390a150565b6005546001600160a01b03163314612f7f5760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b038116612fe45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161165f565b611b4a81614a9e565b6005546001600160a01b031633146130175760405162461bcd60e51b815260040161165f906155a8565b600c546040516000916001600160a01b03169047908381818185875af1925050503d8060008114613064576040519150601f19603f3d011682016040523d82523d6000602084013e613069565b606091505b50505050565b6005546001600160a01b031633146130995760405162461bcd60e51b815260040161165f906155a8565b6001600160a01b03811660009081526009602052604090205460ff166130be57600080fd5b6001600160a01b038116600081815260096020526040808220805460ff19169055517f189194b6a4291dcfae4bc5adb291a58f6b29f789ff244168c4f2ec0a3c516d649190a250565b6001600160a01b0383166131695760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161165f565b6001600160a01b0382166131ca5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161165f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166132515760405162461bcd60e51b815260040161165f906156b3565b6001600160a01b0382166132775760405162461bcd60e51b815260040161165f906156f8565b8061328d5761328883836000614b44565b505050565b60175462010000900460ff161561331e576001600160a01b03831660009081526028602052604090205460ff16806132dd57506001600160a01b03821660009081526028602052604090205460ff165b61331e5760405162461bcd60e51b815260206004820152601260248201527154726164696e67204e6f742041637469766560701b604482015260640161165f565b6017546301000000900460ff161561345f576001600160a01b03831660009081526006602052604090205460ff168061336f57506001600160a01b03821660009081526006602052604090205460ff165b8061339257506001600160a01b03831660009081526028602052604090205460ff165b806133b557506001600160a01b03821660009081526028602052604090205460ff165b6133d15760405162461bcd60e51b815260040161165f9061573b565b6001600160a01b0382166000908152602a602052604090205460ff1661342657601054816133fe84611dcf565b6134089190615634565b11156134265760405162461bcd60e51b815260040161165f90615765565b6001600160a01b03831660009081526006602052604090205460ff161561345f5760405162461bcd60e51b815260040161165f90615792565b601754640100000000900460ff16156135a1576001600160a01b03831660009081526007602052604090205460ff16806134b157506001600160a01b03821660009081526007602052604090205460ff165b806134d457506001600160a01b03831660009081526028602052604090205460ff165b806134f757506001600160a01b03821660009081526028602052604090205460ff165b6135135760405162461bcd60e51b815260040161165f9061573b565b6001600160a01b0382166000908152602a602052604090205460ff16613568576010548161354084611dcf565b61354a9190615634565b11156135685760405162461bcd60e51b815260040161165f90615765565b6001600160a01b03831660009081526007602052604090205460ff16156135a15760405162461bcd60e51b815260040161165f90615792565b601754600160281b900460ff16156136e2576001600160a01b03831660009081526008602052604090205460ff16806135f257506001600160a01b03821660009081526008602052604090205460ff165b8061361557506001600160a01b03831660009081526028602052604090205460ff165b8061363857506001600160a01b03821660009081526028602052604090205460ff165b6136545760405162461bcd60e51b815260040161165f9061573b565b6001600160a01b0382166000908152602a602052604090205460ff166136a9576010548161368184611dcf565b61368b9190615634565b11156136a95760405162461bcd60e51b815260040161165f90615765565b6001600160a01b03831660009081526008602052604090205460ff16156136e25760405162461bcd60e51b815260040161165f90615792565b601754600160301b900460ff161561382f576001600160a01b03831660009081526009602052604090205460ff168061373357506001600160a01b03821660009081526009602052604090205460ff165b8061375657506001600160a01b03831660009081526028602052604090205460ff165b8061377957506001600160a01b03821660009081526028602052604090205460ff165b6137955760405162461bcd60e51b815260040161165f9061573b565b6001600160a01b0382166000908152602a602052604090205460ff166137f65760026010546137c49190615612565b816137ce84611dcf565b6137d89190615634565b11156137f65760405162461bcd60e51b815260040161165f90615765565b6001600160a01b03831660009081526009602052604090205460ff161561382f5760405162461bcd60e51b815260040161165f90615792565b601754600160381b900460ff161561397c576001600160a01b0383166000908152600a602052604090205460ff168061388057506001600160a01b0382166000908152600a602052604090205460ff165b806138a357506001600160a01b03831660009081526028602052604090205460ff165b806138c657506001600160a01b03821660009081526028602052604090205460ff165b6138e25760405162461bcd60e51b815260040161165f9061573b565b6001600160a01b0382166000908152602a602052604090205460ff166139435760046010546139119190615612565b8161391b84611dcf565b6139259190615634565b11156139435760405162461bcd60e51b815260040161165f90615765565b6001600160a01b0383166000908152600a602052604090205460ff161561397c5760405162461bcd60e51b815260040161165f90615792565b6001600160a01b0382166000908152602a602052604090205460ff16613a1157601054816139a984611dcf565b6139b39190615634565b1115613a115760405162461bcd60e51b815260206004820152602760248201527f5472616e7366657220616d6f756e74206578636565647320746865204d6178206044820152662bb0b63632ba1760c91b606482015260840161165f565b601754610100900460ff1615613afe576001600160a01b0383166000908152601a602052604090205460ff1615613a7d5760405162461bcd60e51b815260206004820152601060248201526f29b734b832b9103932b532b1ba32b21760811b604482015260640161165f565b601b54601854613a8d90436157bc565b1015613afe576001600160a01b0382166000908152601a60205260408120805460ff19166001179055601c805491613ac483615662565b90915550506040516001600160a01b038316907f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e590600090a25b6001600160a01b0383166000908152602b602052604090205460ff168015613b3f57506001600160a01b03821660009081526029602052604090205460ff16155b15613c7f57600e54811115613baa5760405162461bcd60e51b815260206004820152602b60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526a26b0bc1020b6b7bab73a1760a91b606482015260840161165f565b601754610100900460ff1615613c7a577f0000000000000000000000002cba5b7caf0baae62e72cbf484f3a6f60cc38e0d6001600160a01b0316836001600160a01b03161415613c39576001600160a01b038216600090815260196020526040902054431415613c1957600080fd5b6001600160a01b0382166000908152601960205260409020439055613d2c565b6001600160a01b038316600090815260196020526040902054431415613c5e57600080fd5b6001600160a01b03831660009081526019602052604090204390555b613d2c565b6001600160a01b0382166000908152602b602052604090205460ff168015613cc057506001600160a01b03831660009081526029602052604090205460ff16155b15613d2c57600e54811115613d2c5760405162461bcd60e51b815260206004820152602c60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526b1026b0bc1020b6b7bab73a1760a11b606482015260840161165f565b6000613d3730611dcf565b600f5490915081108015908190613d50575060175460ff165b8015613d5f5750600b5460ff16155b8015613d755750600b54600160b01b900460ff16155b8015613d9a57506001600160a01b0385166000908152602b602052604090205460ff16155b8015613dbf57506001600160a01b03851660009081526028602052604090205460ff16155b8015613de457506001600160a01b03841660009081526028602052604090205460ff16155b15613df757600f549150613df782614c99565b808015613e06575060175460ff165b8015613e155750600b5460ff16155b8015613e2a5750600b54600160b01b900460ff165b8015613e4f57506001600160a01b0385166000908152602b602052604090205460ff16155b8015613e7457506001600160a01b03851660009081526028602052604090205460ff16155b8015613e9957506001600160a01b03841660009081526028602052604090205460ff16155b15613eac57600f549150613eac82614ea8565b600b5460ff16158015613ed757506001600160a01b0384166000908152602b602052604090205460ff165b8015613ee5575060125460ff165b8015613f005750601354601454613efc9190615634565b4210155b8015613f2557506001600160a01b03851660009081526028602052604090205460ff16155b15613f3457613f32614fc9565b505b600b546001600160a01b03861660009081526028602052604090205460ff91821615911680613f7b57506001600160a01b03851660009081526028602052604090205460ff165b15613f84575060005b600081156148ca576001600160a01b0386166000908152602b602052604090205460ff168015613fb657506000602154115b1561407457613fdb6064613fd56021548861515990919063ffffffff16565b9061516c565b905060215460235482613fee91906155f3565b613ff89190615612565b602660008282546140099190615634565b909155505060215460225461401e90836155f3565b6140289190615612565b602560008282546140399190615634565b909155505060215460245461404e90836155f3565b6140589190615612565b602760008282546140699190615634565b909155506141519050565b6001600160a01b0387166000908152602b602052604090205460ff16801561409e57506000601d54115b15614151576140bd6064613fd5601d548861515990919063ffffffff16565b9050601d54601f54826140d091906155f3565b6140da9190615612565b602660008282546140eb9190615634565b9091555050601d54601e5461410090836155f3565b61410a9190615612565b6025600082825461411b9190615634565b9091555050601d5460205461413090836155f3565b61413a9190615612565b6027600082825461414b9190615634565b90915550505b601754600160401b900460ff16801561418257506001600160a01b0386166000908152602b602052604090205460ff165b80156141a657506001600160a01b03871660009081526006602052604090205460ff165b1561421e576141bb6064613fd5876032615159565b905060326141ca8260196155f3565b6141d49190615612565b602660008282546141e59190615634565b90915550603290506141f88260196155f3565b6142029190615612565b602560008282546142139190615634565b909155506142c29050565b601754600160401b900460ff16801561424f57506001600160a01b03871660009081526006602052604090205460ff165b156142c2576142646064613fd5876032615159565b905060326142738260196155f3565b61427d9190615612565b6026600082825461428e9190615634565b90915550603290506142a18260196155f3565b6142ab9190615612565b602560008282546142bc9190615634565b90915550505b601754600160481b900460ff1680156142f357506001600160a01b0386166000908152602b602052604090205460ff165b801561431757506001600160a01b03871660009081526007602052604090205460ff165b1561438f5761432c6064613fd5876032615159565b9050603261433b8260196155f3565b6143459190615612565b602660008282546143569190615634565b90915550603290506143698260196155f3565b6143739190615612565b602560008282546143849190615634565b909155506144339050565b601754600160481b900460ff1680156143c057506001600160a01b03871660009081526007602052604090205460ff165b15614433576143d56064613fd5876032615159565b905060326143e48260196155f3565b6143ee9190615612565b602660008282546143ff9190615634565b90915550603290506144128260196155f3565b61441c9190615612565b6025600082825461442d9190615634565b90915550505b601754600160501b900460ff16801561446457506001600160a01b0386166000908152602b602052604090205460ff165b801561448857506001600160a01b03871660009081526008602052604090205460ff165b156145005761449d6064613fd5876032615159565b905060326144ac8260196155f3565b6144b69190615612565b602660008282546144c79190615634565b90915550603290506144da8260196155f3565b6144e49190615612565b602560008282546144f59190615634565b909155506145a49050565b601754600160501b900460ff16801561453157506001600160a01b03871660009081526008602052604090205460ff165b156145a4576145466064613fd5876032615159565b905060326145558260196155f3565b61455f9190615612565b602660008282546145709190615634565b90915550603290506145838260196155f3565b61458d9190615612565b6025600082825461459e9190615634565b90915550505b601754600160581b900460ff1680156145d557506001600160a01b0386166000908152602b602052604090205460ff165b80156145f957506001600160a01b03871660009081526009602052604090205460ff165b156146715761460e6064613fd5876032615159565b9050603261461d8260196155f3565b6146279190615612565b602660008282546146389190615634565b909155506032905061464b8260196155f3565b6146559190615612565b602560008282546146669190615634565b909155506147159050565b601754600160581b900460ff1680156146a257506001600160a01b03871660009081526009602052604090205460ff165b15614715576146b76064613fd5876032615159565b905060326146c68260196155f3565b6146d09190615612565b602660008282546146e19190615634565b90915550603290506146f48260196155f3565b6146fe9190615612565b6025600082825461470f9190615634565b90915550505b601754600160601b900460ff16801561474657506001600160a01b0386166000908152602b602052604090205460ff165b801561476a57506001600160a01b0387166000908152600a602052604090205460ff165b15614808576147896064613fd56021548861515990919063ffffffff16565b9050602154602354600461479d91906155f3565b6147a790836155f3565b6147b19190615612565b602660008282546147c29190615634565b90915550506021546022546147d89060046155f3565b6147e290836155f3565b6147ec9190615612565b602560008282546147fd9190615634565b909155506148ac9050565b601754600160601b900460ff16801561483957506001600160a01b0387166000908152600a602052604090205460ff165b156148ac5761484e6064613fd5876014615159565b9050601461485d82600a6155f3565b6148679190615612565b602660008282546148789190615634565b909155506014905061488b82600a6155f3565b6148959190615612565b602560008282546148a69190615634565b90915550505b80156148bd576148bd873083614b44565b6148c781866157bc565b94505b6148d5878787614b44565b50505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106149135761491361564c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149b591906157d3565b816001815181106149c8576149c861564c565b60200260200101906001600160a01b031690816001600160a01b031681525050614a13307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84613107565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790614a689085906000908690309042906004016157f0565b600060405180830381600087803b158015614a8257600080fd5b505af1158015614a96573d6000803e3d6000fd5b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152602b6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316614b6a5760405162461bcd60e51b815260040161165f906156b3565b6001600160a01b038216614b905760405162461bcd60e51b815260040161165f906156f8565b6001600160a01b03831660009081526020819052604090205481811015614c085760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161165f565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290614c3f908490615634565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051614c8b91815260200190565b60405180910390a350505050565b600b805460ff19166001179055602654602554600091614cb891615634565b90506000614cd582613fd56026548661515990919063ffffffff16565b90506000614ce38483615178565b90506000614cf283600261516c565b90506000614d008483615178565b905047614d0c836148de565b6000614d184783615178565b9050614d248382615184565b60408051858152602081018390529081018490527f9629756ff32486270ad51a664b5bf99945dac79a2c9e8f76087aa1273ce0c99b9060600160405180910390a147614d6f866148de565b6000614d7b4783615178565b90506000614d8a600283615612565b600c546040519192506000916001600160a01b039091169083908381818185875af1925050503d8060008114614ddc576040519150601f19603f3d011682016040523d82523d6000602084013e614de1565b606091505b5050600d549091506001600160a01b03166108fc614dff84866157bc565b6040518115909202916000818181858888f19350505050158015614e27573d6000803e3d6000fd5b506706f05b59d3b20000471115614e9057600c546040516001600160a01b03909116904790600081818185875af1925050503d8060008114614e85576040519150601f19603f3d011682016040523d82523d6000602084013e614e8a565b606091505b50909150505b5050600b805460ff1916905550505050505050505050565b600b5460405163a9059cbb60e01b81526101009091046001600160a01b03166004820152602481018290528190309063a9059cbb906044016020604051808303816000875af1158015614eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f239190615696565b50600b5461010090046001600160a01b03163014801590614f4d5750600b54600160a81b900460ff165b8015614f745750600f54600b54614f719061010090046001600160a01b0316611dcf565b10155b15611b0657600b60019054906101000a90046001600160a01b03166001600160a01b0316637fec8d386040518163ffffffff1660e01b8152600401600060405180830381600087803b158015614a8257600080fd5b426014556040516370a0823160e01b81526001600160a01b037f0000000000000000000000002cba5b7caf0baae62e72cbf484f3a6f60cc38e0d166004820152600090819030906370a0823190602401602060405180830381865afa158015615036573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061505a919061567d565b90506000615079612710613fd56011548561515990919063ffffffff16565b905080156150ae576150ae7f0000000000000000000000002cba5b7caf0baae62e72cbf484f3a6f60cc38e0d61dead83614b44565b60007f0000000000000000000000002cba5b7caf0baae62e72cbf484f3a6f60cc38e0d9050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561510e57600080fd5b505af1158015615122573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b600061516582846155f3565b9392505050565b60006151658284615612565b600061516582846157bc565b6151af307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84613107565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015615239573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061525e9190615861565b5050505050565b600060208083528351808285015260005b8181101561529257858101830151858201604001528201615276565b818111156152a4576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611b4a57600080fd5b8035612d45816152ba565b600080604083850312156152ed57600080fd5b82356152f8816152ba565b946020939093013593505050565b60006020828403121561531857600080fd5b8135615165816152ba565b60006020828403121561533557600080fd5b5035919050565b8015158114611b4a57600080fd5b60006020828403121561535c57600080fd5b81356151658161533c565b60008060006060848603121561537c57600080fd5b8335615387816152ba565b92506020840135615397816152ba565b929592945050506040919091013590565b600080604083850312156153bb57600080fd5b82356153c68161533c565b915060208301356153d68161533c565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561540a57600080fd5b823567ffffffffffffffff8082111561542257600080fd5b818501915085601f83011261543657600080fd5b813581811115615448576154486153e1565b8060051b604051601f19603f8301168101818110858211171561546d5761546d6153e1565b60405291825284820192508381018501918883111561548b57600080fd5b938501935b828510156154b0576154a1856152cf565b84529385019392850192615490565b98975050505050505050565b6000806000606084860312156154d157600080fd5b833592506020840135915060408401356154ea8161533c565b809150509250925092565b6000806040838503121561550857600080fd5b82356153c6816152ba565b60008060006060848603121561552857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561555257600080fd5b823561555d816152ba565b915060208301356153d6816152ba565b600181811c9082168061558157607f821691505b602082108114156155a257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561560d5761560d6155dd565b500290565b60008261562f57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115615647576156476155dd565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600019821415615676576156766155dd565b5060010190565b60006020828403121561568f57600080fd5b5051919050565b6000602082840312156156a857600080fd5b81516151658161533c565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526010908201526f2932b21021b0b93832ba1027b7363c9760811b604082015260600190565b60208082526013908201527213585e081dd85b1b195d08195e18d959591959606a1b604082015260600190565b60208082526010908201526f2932b21021b0b93832ba1026b7b2329760811b604082015260600190565b6000828210156157ce576157ce6155dd565b500390565b6000602082840312156157e557600080fd5b8151615165816152ba565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156158405784516001600160a01b03168352938301939183019160010161581b565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561587657600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220878f4612f8bc462880bff77a768795a8ea34fc8f0d4ad5529e0fe25da316726e64736f6c634300080a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000006067f93e88c24d507177243d359d4a4167e353b1000000000000000000000000bf60050bc76419abfc5e1122c645c56f48de34c7

-----Decoded View---------------
Arg [0] : marketWallet_ (address): 0x6067F93E88C24D507177243D359d4A4167E353B1
Arg [1] : devwallet_ (address): 0xBf60050bc76419abfc5e1122C645c56f48de34c7

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000006067f93e88c24d507177243d359d4a4167e353b1
Arg [1] : 000000000000000000000000bf60050bc76419abfc5e1122c645c56f48de34c7


Deployed Bytecode Sourcemap

15814:32392:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17383:36;;;;;;;;;;-1:-1:-1;17383:36:0;;;;-1:-1:-1;;;17383:36:0;;;;;;;;;179:14:1;;172:22;154:41;;142:2;127:18;17383:36:0;;;;;;;;17168;;;;;;;;;;-1:-1:-1;17168:36:0;;;;;;;;;;;3136:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4050:169::-;;;;;;;;;;-1:-1:-1;4050:169:0;;;;;:::i;:::-;;:::i;16115:55::-;;;;;;;;;;-1:-1:-1;16115:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18285:27;;;;;;;;;;;;;;;;;;;1801:25:1;;;1789:2;1774:18;18285:27:0;1655:177:1;16527:31:0;;;;;;;;;;-1:-1:-1;16527:31:0;;;;-1:-1:-1;;;16527:31:0;;;;;;42217:108;;;;;;;;;;-1:-1:-1;42217:108:0;;;;;:::i;:::-;-1:-1:-1;;;;;42298:18:0;42273:4;42298:18;;;:9;:18;;;;;;;;;42217:108;18461:63;;;;;;;;;;-1:-1:-1;18461:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16484:36;;;;;;;;;;-1:-1:-1;16484:36:0;;;;-1:-1:-1;;;16484:36:0;;;;;;15890:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2028:32:1;;;2010:51;;1998:2;1983:18;15890:51:0;1837:230:1;3457:108:0;;;;;;;;;;-1:-1:-1;3545:12:0;;3457:108;;26145:197;;;;;;;;;;-1:-1:-1;26145:197:0;;;;;:::i;:::-;;:::i;:::-;;16954:47;;;;;;;;;;;;;;;;16768:36;;;;;;;;;;;;;;;;18245:33;;;;;;;;;;;;;;;;17512:36;;;;;;;;;;-1:-1:-1;17512:36:0;;;;-1:-1:-1;;;17512:36:0;;;;;;18205:33;;;;;;;;;;;;;;;;23167:275;;;;;;;;;;-1:-1:-1;23167:275:0;;;;;:::i;:::-;;:::i;44265:118::-;;;;;;;;;;-1:-1:-1;44265:118:0;;;;;:::i;:::-;;:::i;4227:492::-;;;;;;;;;;-1:-1:-1;4227:492:0;;;;;:::i;:::-;;:::i;46223:172::-;;;;;;;;;;-1:-1:-1;46223:172:0;;;;;:::i;:::-;;:::i;45728:170::-;;;;;;;;;;-1:-1:-1;45728:170:0;;;;;:::i;:::-;;:::i;15993:53::-;;;;;;;;;;;;16039:6;15993:53;;18174:22;;;;;;;;;;;;;;;;16864:45;;;;;;;;;;;;;;;;16824:33;;;;;;;;;;-1:-1:-1;16824:33:0;;;;;;;;3356:93;;;;;;;;;;-1:-1:-1;3356:93:0;;3439:2;4078:36:1;;4066:2;4051:18;3356:93:0;3936:184:1;42330:190:0;;;;;;;;;;-1:-1:-1;42330:190:0;;;;;:::i;:::-;;:::i;4727:215::-;;;;;;;;;;-1:-1:-1;4727:215:0;;;;;:::i;:::-;;:::i;44391:194::-;;;;;;;;;;-1:-1:-1;44391:194:0;;;;;:::i;:::-;;:::i;16450:27::-;;;;;;;;;;-1:-1:-1;16450:27:0;;;;;;;-1:-1:-1;;;;;16450:27:0;;;18033:21;;;;;;;;;;;;;;;;15948:38;;;;;;;;;;;;;;;26352:126;;;;;;;;;;-1:-1:-1;26352:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;26442:28:0;26418:4;26442:28;;;:19;:28;;;;;;;;;26352:126;41533:154;;;;;;;;;;;;;:::i;41892:317::-;;;;;;;;;;-1:-1:-1;41892:317:0;;;;;:::i;:::-;;:::i;47395:213::-;;;;;;;;;;-1:-1:-1;47395:213:0;;;;;:::i;:::-;;:::i;17297:36::-;;;;;;;;;;-1:-1:-1;17297:36:0;;;;-1:-1:-1;;;17297:36:0;;;;;;17555;;;;;;;;;;-1:-1:-1;17555:36:0;;;;-1:-1:-1;;;17555:36:0;;;;;;18063:28;;;;;;;;;;;;;;;;17211:36;;;;;;;;;;-1:-1:-1;17211:36:0;;;;;;;;;;;17052:30;;;;;;;;;;-1:-1:-1;17052:30:0;;;;;;;;3573:127;;;;;;;;;;-1:-1:-1;3573:127:0;;;;;:::i;:::-;;:::i;1241:135::-;;;;;;;;;;;;;:::i;42910:118::-;;;;;;;;;;-1:-1:-1;42910:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;42988:31:0;42963:4;42988:31;;;:22;:31;;;;;;;;;42910:118;40056:555;;;;;;;;;;-1:-1:-1;40056:555:0;;;;;:::i;:::-;;:::i;23714:167::-;;;;;;;;;;-1:-1:-1;23714:167:0;;;;;:::i;:::-;;:::i;16177:55::-;;;;;;;;;;-1:-1:-1;16177:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16567:38;;;;;;;;;;-1:-1:-1;16567:38:0;;;;-1:-1:-1;;;;;16567:38:0;;;44795:194;;;;;;;;;;-1:-1:-1;44795:194:0;;;;;:::i;:::-;;:::i;42529:118::-;;;;;;;;;;-1:-1:-1;42529:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;42607:31:0;42582:4;42607:31;;;:22;:31;;;;;;;;;42529:118;17959:30;;;;;;;;;;;;;;;;45407:213;;;;;;;;;;-1:-1:-1;45407:213:0;;;;;:::i;:::-;;:::i;42783:118::-;;;;;;;;;;-1:-1:-1;42783:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;42861:31:0;42836:4;42861:31;;;:22;:31;;;;;;;;;42783:118;16239:55;;;;;;;;;;-1:-1:-1;16239:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24250:460;;;;;;;;;;-1:-1:-1;24250:460:0;;;;;:::i;:::-;;:::i;43792:465::-;;;;;;;;;;-1:-1:-1;43792:465:0;;;;;:::i;:::-;;:::i;17254:36::-;;;;;;;;;;-1:-1:-1;17254:36:0;;;;-1:-1:-1;;;17254:36:0;;;;;;43036:118;;;;;;;;;;-1:-1:-1;43036:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;43114:31:0;43089:4;43114:31;;;:22;:31;;;;;;;;;43036:118;1016:87;;;;;;;;;;-1:-1:-1;1089:6:0;;-1:-1:-1;;;;;1089:6:0;1016:87;;16612:32;;;;;;;;;;-1:-1:-1;16612:32:0;;;;-1:-1:-1;;;;;16612:32:0;;;48075:126;;;;;;;;;;-1:-1:-1;48075:126:0;;;;;:::i;:::-;;:::i;18098:31::-;;;;;;;;;;;;;;;;24142:100;;;;;;;;;;-1:-1:-1;24142:100:0;;;;;:::i;:::-;;:::i;43280:108::-;;;;;;;;;;-1:-1:-1;43280:108:0;;;;;:::i;:::-;;:::i;3244:104::-;;;;;;;;;;;;;:::i;18531:58::-;;;;;;;;;;-1:-1:-1;18531:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25390:304;;;;;;;;;;-1:-1:-1;25390:304:0;;;;;:::i;:::-;;:::i;44997:194::-;;;;;;;;;;-1:-1:-1;44997:194:0;;;;;:::i;:::-;;:::i;43628:108::-;;;;;;;;;;-1:-1:-1;43628:108:0;;;;;:::i;:::-;;:::i;17008:35::-;;;;;;;;;;;;;;;;46718:171;;;;;;;;;;-1:-1:-1;46718:171:0;;;;;:::i;:::-;;:::i;17340:36::-;;;;;;;;;;-1:-1:-1;17340:36:0;;;;-1:-1:-1;;;17340:36:0;;;;;;4950:413;;;;;;;;;;-1:-1:-1;4950:413:0;;;;;:::i;:::-;;:::i;16916:29::-;;;;;;;;;;;;;;;;3708:175;;;;;;;;;;-1:-1:-1;3708:175:0;;;;;:::i;:::-;;:::i;25898:239::-;;;;;;;;;;-1:-1:-1;25898:239:0;;;;;:::i;:::-;;:::i;44593:194::-;;;;;;;;;;-1:-1:-1;44593:194:0;;;;;:::i;:::-;;:::i;16053:55::-;;;;;;;;;;-1:-1:-1;16053:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18747:57;;;;;;;;;;-1:-1:-1;18747:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16301:55;;;;;;;;;;-1:-1:-1;16301:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;41415:110;;;;;;;;;;-1:-1:-1;41415:110:0;;;;;:::i;:::-;;:::i;17598:33::-;;;;;;;;;;-1:-1:-1;17598:33:0;;;;-1:-1:-1;;;17598:33:0;;;;;;46403:213;;;;;;;;;;-1:-1:-1;46403:213:0;;;;;:::i;:::-;;:::i;25200:182::-;;;;;;;;;;-1:-1:-1;25200:182:0;;;;;:::i;:::-;;:::i;24718:474::-;;;;;;;;;;-1:-1:-1;24718:474:0;;;;;:::i;:::-;;:::i;23450:256::-;;;;;;;;;;-1:-1:-1;23450:256:0;;;;;:::i;:::-;;:::i;16653:35::-;;;;;;;;;;;;;;;;45906:213;;;;;;;;;;-1:-1:-1;45906:213:0;;;;;:::i;:::-;;:::i;43164:108::-;;;;;;;;;;-1:-1:-1;43164:108:0;;;;;:::i;:::-;;:::i;45199:194::-;;;;;;;;;;-1:-1:-1;45199:194:0;;;;;:::i;:::-;;:::i;43396:108::-;;;;;;;;;;-1:-1:-1;43396:108:0;;;;;:::i;:::-;;:::i;22662:497::-;;;;;;;;;;-1:-1:-1;22662:497:0;;;;;:::i;:::-;;:::i;23889:157::-;;;;;;;;;;-1:-1:-1;23889:157:0;;;;;:::i;:::-;;:::i;17469:36::-;;;;;;;;;;-1:-1:-1;17469:36:0;;;;-1:-1:-1;;;17469:36:0;;;;;;43512:108;;;;;;;;;;-1:-1:-1;43512:108:0;;;;;:::i;:::-;;:::i;17925:27::-;;;;;;;;;;;;;;;;42656:118;;;;;;;;;;-1:-1:-1;42656:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;42734:31:0;42709:4;42734:31;;;:22;:31;;;;;;;;;42656:118;17426:36;;;;;;;;;;-1:-1:-1;17426:36:0;;;;-1:-1:-1;;;17426:36:0;;;;;;3891:151;;;;;;;;;;-1:-1:-1;3891:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4007:18:0;;;3980:7;4007:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3891:151;47216:171;;;;;;;;;;-1:-1:-1;47216:171:0;;;;;:::i;:::-;;:::i;16695:33::-;;;;;;;;;;;;;;;;47696:371;;;;;;;;;;-1:-1:-1;47696:371:0;;;;;:::i;:::-;;:::i;17883:32::-;;;;;;;;;;;;;;;;17638:37;;;;;;;;;;;;;;;;17996:30;;;;;;;;;;;;;;;;1387:201;;;;;;;;;;-1:-1:-1;1387:201:0;;;;;:::i;:::-;;:::i;41725:159::-;;;;;;;;;;;;;:::i;18136:31::-;;;;;;;;;;;;;;;;16735:24;;;;;;;;;;;;;;;;46897:213;;;;;;;;;;-1:-1:-1;46897:213:0;;;;;:::i;:::-;;:::i;3136:100::-;3190:13;3223:5;3216:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3136:100;:::o;4050:169::-;4133:4;4150:39;642:10;4173:7;4182:6;4150:8;:39::i;:::-;-1:-1:-1;4207:4:0;4050:169;;;;:::o;26145:197::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;;;;;;;;;26289:9:::1;::::0;26258:41:::1;::::0;-1:-1:-1;;;;;26289:9:0;;::::1;::::0;26258:41;::::1;::::0;::::1;::::0;26289:9:::1;::::0;26258:41:::1;26310:9;:24:::0;;-1:-1:-1;;;;;;26310:24:0::1;-1:-1:-1::0;;;;;26310:24:0;;;::::1;::::0;;;::::1;::::0;;26145:197::o;23167:275::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;23304:4:::1;23296;23275:13;3545:12:::0;;;3457:108;23275:13:::1;:17;::::0;23291:1:::1;23275:17;:::i;:::-;23274:26;;;;:::i;:::-;23273:35;;;;:::i;:::-;23263:6;:45;;23241:142;;;::::0;-1:-1:-1;;;23241:142:0;;8565:2:1;23241:142:0::1;::::0;::::1;8547:21:1::0;8604:2;8584:18;;;8577:30;8643:34;8623:18;;;8616:62;-1:-1:-1;;;8694:18:1;;;8687:45;8749:19;;23241:142:0::1;8363:411:1::0;23241:142:0::1;23417:17;:6:::0;23427::::1;23417:17;:::i;:::-;23394:20;:40:::0;-1:-1:-1;23167:275:0:o;44265:118::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;44324:16:::1;:22:::0;;-1:-1:-1;;44358:17:0;44324:22;;::::1;;::::0;;;::::1;-1:-1:-1::0;;44358:17:0;;;;;;;44265:118::o;4227:492::-;4367:4;4384:36;4394:6;4402:9;4413:6;4384:9;:36::i;:::-;-1:-1:-1;;;;;4460:19:0;;4433:24;4460:19;;;:11;:19;;;;;;;;642:10;4460:33;;;;;;;;4512:26;;;;4504:79;;;;-1:-1:-1;;;4504:79:0;;8981:2:1;4504:79:0;;;8963:21:1;9020:2;9000:18;;;8993:30;9059:34;9039:18;;;9032:62;-1:-1:-1;;;9110:18:1;;;9103:38;9158:19;;4504:79:0;8779:404:1;4504:79:0;4619:57;4628:6;642:10;4669:6;4650:16;:25;4619:8;:57::i;:::-;-1:-1:-1;4707:4:0;;4227:492;-1:-1:-1;;;;4227:492:0:o;46223:172::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;46332:16:::1;:22:::0;;-1:-1:-1;;46365:22:0;46332;;::::1;;::::0;;;::::1;-1:-1:-1::0;;46365:22:0;;;;;-1:-1:-1;;;46365:22:0;::::1;;::::0;;;::::1;;::::0;;46223:172::o;45728:170::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;45835:16:::1;:22:::0;;-1:-1:-1;;45868:22:0;45835;;::::1;;::::0;;;::::1;-1:-1:-1::0;;45868:22:0;;;;;;;::::1;;::::0;;;::::1;;::::0;;45728:170::o;42330:190::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;42401:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;;::::1;;42393:59;;;::::0;-1:-1:-1;;;42393:59:0;;9390:2:1;42393:59:0::1;::::0;::::1;9372:21:1::0;9429:2;9409:18;;;9402:30;9468;9448:18;;;9441:58;9516:18;;42393:59:0::1;9188:352:1::0;42393:59:0::1;-1:-1:-1::0;;;;;42457:18:0;::::1;42478:5;42457:18:::0;;;:9:::1;:18;::::0;;;;;:26;;-1:-1:-1;;42457:26:0::1;::::0;;42493:22;::::1;::::0;42478:5;42493:22:::1;42330:190:::0;:::o;4727:215::-;642:10;4815:4;4864:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4864:34:0;;;;;;;;;;4815:4;;4832:80;;4855:7;;4864:47;;4901:10;;4864:47;:::i;:::-;4832:8;:80::i;44391:194::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;44479:9:::1;44474:104;44498:3;:10;44494:1;:14;44474:104;;;44563:4;44530:22;:30;44553:3;44557:1;44553:6;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;44530:30:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;44530:30:0;:37;;-1:-1:-1;;44530:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;44510:3;::::1;::::0;::::1;:::i;:::-;;;;44474:104;;;;44391:194:::0;:::o;41533:154::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;41585:23:::1;41611:24;41629:4;41611:9;:24::i;:::-;41585:50;;41646:33;41663:15;41646:16;:33::i;:::-;41574:113;41533:154::o:0;41892:317::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;41963:19:0;::::1;41955:44;;;::::0;-1:-1:-1;;;41955:44:0;;10152:2:1;41955:44:0::1;::::0;::::1;10134:21:1::0;10191:2;10171:18;;;10164:30;-1:-1:-1;;;10210:18:1;;;10203:42;10262:18;;41955:44:0::1;9950:336:1::0;41955:44:0::1;-1:-1:-1::0;;;;;42018:22:0;::::1;42035:4;42018:22;;42010:47;;;::::0;-1:-1:-1;;;42010:47:0;;10493:2:1;42010:47:0::1;::::0;::::1;10475:21:1::0;10532:2;10512:18;;;10505:30;-1:-1:-1;;;10551:18:1;;;10544:42;10603:18;;42010:47:0::1;10291:336:1::0;42010:47:0::1;42112:38;::::0;-1:-1:-1;;;42112:38:0;;42144:4:::1;42112:38;::::0;::::1;2010:51:1::0;42068:6:0::1;::::0;-1:-1:-1;;;;;42077:22:0;::::1;::::0;::::1;::::0;42100:10:::1;::::0;42077:22;;42112:23:::1;::::0;1983:18:1;;42112:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42077:74;::::0;-1:-1:-1;;;;;;42077:74:0::1;::::0;;;;;;-1:-1:-1;;;;;11013:32:1;;;42077:74:0::1;::::0;::::1;10995:51:1::0;11062:18;;;11055:34;10968:18;;42077:74:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42068:83;;42170:1;42162:39;;;::::0;-1:-1:-1;;;42162:39:0;;11552:2:1;42162:39:0::1;::::0;::::1;11534:21:1::0;11591:2;11571:18;;;11564:30;11630:27;11610:18;;;11603:55;11675:18;;42162:39:0::1;11350:349:1::0;47395:213:0;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;47483:31:0;::::1;;::::0;;;:22:::1;:31;::::0;;;;;::::1;;47475:40;;;::::0;::::1;;-1:-1:-1::0;;;;;47526:31:0;::::1;47560:5;47526:31:::0;;;:22:::1;:31;::::0;;;;;:39;;-1:-1:-1;;47526:39:0::1;::::0;;47581:19;::::1;::::0;47560:5;47581:19:::1;47395:213:::0;:::o;3573:127::-;-1:-1:-1;;;;;3674:18:0;3647:7;3674:18;;;;;;;;;;;;3573:127::o;1241:135::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;1306:6:::1;:20:::0;;-1:-1:-1;;;;;;1306:20:0::1;::::0;;1338:30:::1;1324:1;1338:18;:30::i;:::-;1241:135::o:0;40056:555::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;40258:3:::1;40235:19;:26;;40213:127;;;::::0;-1:-1:-1;;;40213:127:0;;11906:2:1;40213:127:0::1;::::0;::::1;11888:21:1::0;11945:2;11925:18;;;11918:30;11984:34;11964:18;;;11957:62;-1:-1:-1;;;12035:18:1;;;12028:49;12094:19;;40213:127:0::1;11704:415:1::0;40213:127:0::1;40385:4;40373:8;:16;;:33;;;;-1:-1:-1::0;40393:13:0;40373:33:::1;40351:131;;;::::0;-1:-1:-1;;;40351:131:0;;12326:2:1;40351:131:0::1;::::0;::::1;12308:21:1::0;12365:2;12345:18;;;12338:30;12404:34;12384:18;;;12377:62;-1:-1:-1;;;12455:18:1;;;12448:46;12511:19;;40351:131:0::1;12124:412:1::0;40351:131:0::1;40493:15;:37:::0;;;;40541:16:::1;:27:::0;40579:13:::1;:24:::0;;-1:-1:-1;;40579:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;40056:555::o;23714:167::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23827:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;23827:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23714:167::o;44795:194::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;44883:9:::1;44878:104;44902:3;:10;44898:1;:14;44878:104;;;44967:4;44934:22;:30;44957:3;44961:1;44957:6;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;44934:30:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;44934:30:0;:37;;-1:-1:-1;;44934:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;44914:3;::::1;::::0;::::1;:::i;:::-;;;;44878:104;;45407:213:::0;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;45495:31:0;::::1;;::::0;;;:22:::1;:31;::::0;;;;;::::1;;45487:40;;;::::0;::::1;;-1:-1:-1::0;;;;;45538:31:0;::::1;45572:5;45538:31:::0;;;:22:::1;:31;::::0;;;;;:39;;-1:-1:-1;;45538:39:0::1;::::0;;45593:19;::::1;::::0;45572:5;45593:19:::1;45407:213:::0;:::o;24250:460::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;24397:15:::1;:31:::0;;;24439:15:::1;:31:::0;;;24481:6:::1;:13:::0;;;24490:4;24520:33:::1;24457:13:::0;24415;24520:33:::1;:::i;:::-;:42;;;;:::i;:::-;24505:12;:57:::0;;;24597:1:::1;-1:-1:-1::0;24581:17:0::1;24573:58;;;::::0;-1:-1:-1;;;24573:58:0;;12743:2:1;24573:58:0::1;::::0;::::1;12725:21:1::0;12782:2;12762:18;;;12755:30;12821;12801:18;;;12794:58;12869:18;;24573:58:0::1;12541:352:1::0;24573:58:0::1;24661:15;::::0;24678::::1;::::0;24695:6:::1;::::0;;24647:55:::1;::::0;;13100:25:1;;;13141:18;;;13134:34;;;;13184:18;;13177:34;24647:55:0::1;::::0;13088:2:1;13073:18;24647:55:0::1;;;;;;;;24250:460:::0;;;:::o;43792:465::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;43869:11:::1;:18:::0;;43950:12:::1;43929:18;:33:::0;43990:15:::1;43973:14;:32:::0;44016:13:::1;:30:::0;;;;-1:-1:-1;;44225:24:0;;;43898:20;44225:24;;;43792:465::o;48075:126::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;48137:11:::1;:19:::0;;-1:-1:-1;;;;48137:19:0::1;-1:-1:-1::0;;;48137:19:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;48172:21:::1;::::0;::::1;::::0;-1:-1:-1;;48172:21:0::1;48075:126:::0;:::o;24142:100::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;24213:11:::1;:21:::0;;-1:-1:-1;;24213:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24142:100::o;43280:108::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;43353:17:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;43353:27:0::1;-1:-1:-1::0;;43353:27:0;;::::1;::::0;;;::::1;::::0;;43280:108::o;3244:104::-;3300:13;3333:7;3326:14;;;;;:::i;25390:304::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;25534:13:::1;-1:-1:-1::0;;;;;25526:21:0::1;:4;-1:-1:-1::0;;;;;25526:21:0::1;;;25504:128;;;::::0;-1:-1:-1;;;25504:128:0;;13424:2:1;25504:128:0::1;::::0;::::1;13406:21:1::0;13463:2;13443:18;;;13436:30;13502:34;13482:18;;;13475:62;13573:27;13553:18;;;13546:55;13618:19;;25504:128:0::1;13222:421:1::0;25504:128:0::1;25645:41;25674:4;25680:5;25645:28;:41::i;44997:194::-:0;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;45085:9:::1;45080:104;45104:3;:10;45100:1;:14;45080:104;;;45169:4;45136:22;:30;45159:3;45163:1;45159:6;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;45136:30:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;45136:30:0;:37;;-1:-1:-1;;45136:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;45116:3;::::1;::::0;::::1;:::i;:::-;;;;45080:104;;43628:108:::0;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;43701:17:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;43701:27:0::1;-1:-1:-1::0;;;;43701:27:0;;::::1;::::0;;;::::1;::::0;;43628:108::o;46718:171::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;46826:16:::1;:22:::0;;-1:-1:-1;;46859:22:0;-1:-1:-1;;;46826:22:0;::::1;;::::0;;;::::1;-1:-1:-1::0;;46859:22:0;;;;;-1:-1:-1;;;46859:22:0;::::1;;::::0;;;::::1;;::::0;;46718:171::o;4950:413::-;642:10;5043:4;5087:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5087:34:0;;;;;;;;;;5140:35;;;;5132:85;;;;-1:-1:-1;;;5132:85:0;;13850:2:1;5132:85:0;;;13832:21:1;13889:2;13869:18;;;13862:30;13928:34;13908:18;;;13901:62;-1:-1:-1;;;13979:18:1;;;13972:35;14024:19;;5132:85:0;13648:401:1;5132:85:0;5253:67;642:10;5276:7;5304:15;5285:16;:34;5253:8;:67::i;:::-;-1:-1:-1;5351:4:0;;4950:413;-1:-1:-1;;;4950:413:0:o;3708:175::-;3794:4;3811:42;642:10;3835:9;3846:6;3811:9;:42::i;25898:239::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;26066:15:::1;::::0;26023:59:::1;::::0;-1:-1:-1;;;;;26066:15:0;;::::1;::::0;26023:59;::::1;::::0;::::1;::::0;26066:15:::1;::::0;26023:59:::1;26093:15;:36:::0;;-1:-1:-1;;;;;;26093:36:0::1;-1:-1:-1::0;;;;;26093:36:0;;;::::1;::::0;;;::::1;::::0;;25898:239::o;44593:194::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;44681:9:::1;44676:104;44700:3;:10;44696:1;:14;44676:104;;;44765:4;44732:22;:30;44755:3;44759:1;44755:6;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;44732:30:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;44732:30:0;:37;;-1:-1:-1;;44732:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;44712:3;::::1;::::0;::::1;:::i;:::-;;;;44676:104;;41415:110:::0;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;41487:16:::1;:30:::0;;;::::1;;-1:-1:-1::0;;;41487:30:0::1;-1:-1:-1::0;;;;41487:30:0;;::::1;::::0;;;::::1;::::0;;41415:110::o;46403:213::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;46491:31:0;::::1;;::::0;;;:22:::1;:31;::::0;;;;;::::1;;46483:40;;;::::0;::::1;;-1:-1:-1::0;;;;;46534:31:0;::::1;46568:5;46534:31:::0;;;:22:::1;:31;::::0;;;;;:39;;-1:-1:-1;;46534:39:0::1;::::0;;46589:19;::::1;::::0;46568:5;46589:19:::1;46403:213:::0;:::o;25200:182::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25285:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;25285:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;25340:34;;154:41:1;;;25340:34:0::1;::::0;127:18:1;25340:34:0::1;;;;;;;25200:182:::0;;:::o;24718:474::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;24867:16:::1;:32:::0;;;24910:16:::1;:32:::0;;;24953:7:::1;:14:::0;;;24963:4;24994:35:::1;24929:13:::0;24886;24994:35:::1;:::i;:::-;:45;;;;:::i;:::-;24978:13;:61:::0;;;25075:1:::1;-1:-1:-1::0;25058:18:0::1;25050:59;;;::::0;-1:-1:-1;;;25050:59:0;;12743:2:1;25050:59:0::1;::::0;::::1;12725:21:1::0;12782:2;12762:18;;;12755:30;12821;12801:18;;;12794:58;12869:18;;25050:59:0::1;12541:352:1::0;25050:59:0::1;25140:16;::::0;25158::::1;::::0;25176:7:::1;::::0;25125:59:::1;::::0;;13100:25:1;;;13156:2;13141:18;;13134:34;;;;13184:18;;;13177:34;25125:59:0::1;::::0;13088:2:1;13073:18;25125:59:0::1;12898:319:1::0;23450:256:0;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;23590:4:::1;23582;23561:13;3545:12:::0;;;3457:108;23561:13:::1;:17;::::0;23577:1:::1;23561:17;:::i;:::-;23560:26;;;;:::i;:::-;23559:35;;;;:::i;:::-;23549:6;:45;;23527:131;;;::::0;-1:-1:-1;;;23527:131:0;;14256:2:1;23527:131:0::1;::::0;::::1;14238:21:1::0;14295:2;14275:18;;;14268:30;14334:34;14314:18;;;14307:62;-1:-1:-1;;;14385:18:1;;;14378:34;14429:19;;23527:131:0::1;14054:400:1::0;23527:131:0::1;23681:17;:6:::0;23691::::1;23681:17;:::i;:::-;23669:9;:29:::0;-1:-1:-1;23450:256:0:o;45906:213::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;45994:31:0;::::1;;::::0;;;:22:::1;:31;::::0;;;;;::::1;;45986:40;;;::::0;::::1;;-1:-1:-1::0;;;;;46037:31:0;::::1;46071:5;46037:31:::0;;;:22:::1;:31;::::0;;;;;:39;;-1:-1:-1;;46037:39:0::1;::::0;;46092:19;::::1;::::0;46071:5;46092:19:::1;45906:213:::0;:::o;43164:108::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;43237:17:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;43237:27:0::1;-1:-1:-1::0;;43237:27:0;;::::1;::::0;;;::::1;::::0;;43164:108::o;45199:194::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;45287:9:::1;45282:104;45306:3;:10;45302:1;:14;45282:104;;;45371:4;45338:22;:30;45361:3;45365:1;45361:6;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;45338:30:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;45338:30:0;:37;;-1:-1:-1;;45338:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;45318:3;::::1;::::0;::::1;:::i;:::-;;;;45282:104;;43396:108:::0;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;43469:17:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;43469:27:0::1;-1:-1:-1::0;;;;43469:27:0;;::::1;::::0;;;::::1;::::0;;43396:108::o;22662:497::-;1089:6;;22770:4;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;22849:6:::1;22828:13;3545:12:::0;;;3457:108;22828:13:::1;:17;::::0;22844:1:::1;22828:17;:::i;:::-;22827:28;;;;:::i;:::-;22814:9;:41;;22792:144;;;::::0;-1:-1:-1;;;22792:144:0;;14661:2:1;22792:144:0::1;::::0;::::1;14643:21:1::0;14700:2;14680:18;;;14673:30;14739:34;14719:18;;;14712:62;-1:-1:-1;;;14790:18:1;;;14783:51;14851:19;;22792:144:0::1;14459:417:1::0;22792:144:0::1;23004:4;22983:13;3545:12:::0;;;3457:108;22983:13:::1;:17;::::0;22999:1:::1;22983:17;:::i;:::-;22982:26;;;;:::i;:::-;22969:9;:39;;22947:141;;;::::0;-1:-1:-1;;;22947:141:0;;15083:2:1;22947:141:0::1;::::0;::::1;15065:21:1::0;15122:2;15102:18;;;15095:30;15161:34;15141:18;;;15134:62;-1:-1:-1;;;15212:18:1;;;15205:50;15272:19;;22947:141:0::1;14881:416:1::0;22947:141:0::1;-1:-1:-1::0;23099:18:0::1;:30:::0;;;23147:4:::1;1222:1;22662:497:::0;;;:::o;23889:157::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23997:34:0;;;::::1;;::::0;;;:26:::1;:34;::::0;;;;:41;;-1:-1:-1;;23997:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23889:157::o;43512:108::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;43585:17:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;43585:27:0::1;-1:-1:-1::0;;;;43585:27:0;;::::1;::::0;;;::::1;::::0;;43512:108::o;47216:171::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;47324:16:::1;:22:::0;;-1:-1:-1;;47357:22:0;-1:-1:-1;;;47324:22:0;::::1;;::::0;;;::::1;-1:-1:-1::0;;47357:22:0;;;;;-1:-1:-1;;;47357:22:0;::::1;;::::0;;;::::1;;::::0;;47216:171::o;47696:371::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;47778:23:0;::::1;47770:48;;;::::0;-1:-1:-1;;;47770:48:0;;10152:2:1;47770:48:0::1;::::0;::::1;10134:21:1::0;10191:2;10171:18;;;10164:30;-1:-1:-1;;;10210:18:1;;;10203:42;10262:18;;47770:48:0::1;9950:336:1::0;47770:48:0::1;47829:12;:24:::0;;-1:-1:-1;;;;;;47829:24:0::1;;-1:-1:-1::0;;;;;47829:24:0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;47864:30:0;;;:19:::1;:30;::::0;;;;;;;:38;;-1:-1:-1;;47864:38:0;;::::1;-1:-1:-1::0;47864:38:0;;::::1;::::0;;;47913:31:::1;:42:::0;;;;;:49;;;::::1;::::0;::::1;::::0;;47973:26:::1;:37:::0;;;;;;:44;;;;::::1;;::::0;;;48033:26;;2010:51:1;;;48033:26:0::1;::::0;1983:18:1;48033:26:0::1;;;;;;;47696:371:::0;:::o;1387:201::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1476:22:0;::::1;1468:73;;;::::0;-1:-1:-1;;;1468:73:0;;15504:2:1;1468:73:0::1;::::0;::::1;15486:21:1::0;15543:2;15523:18;;;15516:30;15582:34;15562:18;;;15555:62;-1:-1:-1;;;15633:18:1;;;15626:36;15679:19;;1468:73:0::1;15302:402:1::0;1468:73:0::1;1552:28;1571:8;1552:18;:28::i;41725:159::-:0;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;41821:15:::1;::::0;41813:63:::1;::::0;41777:12:::1;::::0;-1:-1:-1;;;;;41821:15:0::1;::::0;41850:21:::1;::::0;41777:12;41813:63;41777:12;41813:63;41850:21;41821:15;41813:63:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;41725:159:0:o;46897:213::-;1089:6;;-1:-1:-1;;;;;1089:6:0;642:10;1151:23;1143:68;;;;-1:-1:-1;;;1143:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;46985:31:0;::::1;;::::0;;;:22:::1;:31;::::0;;;;;::::1;;46977:40;;;::::0;::::1;;-1:-1:-1::0;;;;;47028:31:0;::::1;47062:5;47028:31:::0;;;:22:::1;:31;::::0;;;;;:39;;-1:-1:-1;;47028:39:0::1;::::0;;47083:19;::::1;::::0;47062:5;47083:19:::1;46897:213:::0;:::o;7119:380::-;-1:-1:-1;;;;;7255:19:0;;7247:68;;;;-1:-1:-1;;;7247:68:0;;16121:2:1;7247:68:0;;;16103:21:1;16160:2;16140:18;;;16133:30;16199:34;16179:18;;;16172:62;-1:-1:-1;;;16250:18:1;;;16243:34;16294:19;;7247:68:0;15919:400:1;7247:68:0;-1:-1:-1;;;;;7334:21:0;;7326:68;;;;-1:-1:-1;;;7326:68:0;;16526:2:1;7326:68:0;;;16508:21:1;16565:2;16545:18;;;16538:30;16604:34;16584:18;;;16577:62;-1:-1:-1;;;16655:18:1;;;16648:32;16697:19;;7326:68:0;16324:398:1;7326:68:0;-1:-1:-1;;;;;7407:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7459:32;;1801:25:1;;;7459:32:0;;1774:18:1;7459:32:0;;;;;;;7119:380;;;:::o;26486:10775::-;-1:-1:-1;;;;;26618:18:0;;26610:68;;;;-1:-1:-1;;;26610:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26697:16:0;;26689:64;;;;-1:-1:-1;;;26689:64:0;;;;;;;:::i;:::-;26770:11;26766:93;;26798:28;26814:4;26820:2;26824:1;26798:15;:28::i;:::-;26486:10775;;;:::o;26766:93::-;26880:9;;;;;;;26877:140;;;-1:-1:-1;;;;;26922:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;26951:23:0;;;;;;:19;:23;;;;;;;;26922:52;26914:83;;;;-1:-1:-1;;;26914:83:0;;17739:2:1;26914:83:0;;;17721:21:1;17778:2;17758:18;;;17751:30;-1:-1:-1;;;17797:18:1;;;17790:48;17855:18;;26914:83:0;17537:342:1;26914:83:0;27057:16;;;;;;;27053:622;;;-1:-1:-1;;;;;27133:28:0;;;;;;:22;:28;;;;;;;;;:58;;-1:-1:-1;;;;;;27165:26:0;;;;;;:22;:26;;;;;;;;27133:58;:114;;;-1:-1:-1;;;;;;27222:25:0;;;;;;:19;:25;;;;;;;;27133:114;:141;;;-1:-1:-1;;;;;;27251:23:0;;;;;;:19;:23;;;;;;;;27133:141;27098:196;;;;-1:-1:-1;;;27098:196:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27329:30:0;;;;;;:26;:30;;;;;;;;27325:166;;27426:9;;27416:6;27400:13;27410:2;27400:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;27392:67;;;;-1:-1:-1;;;27392:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27518:28:0;;;;;;:22;:28;;;;;;;;27514:88;;;27550:27;;-1:-1:-1;;;27550:27:0;;;;;;;:::i;27514:88::-;27700:16;;;;;;;27696:585;;;-1:-1:-1;;;;;27776:28:0;;;;;;:22;:28;;;;;;;;;:58;;-1:-1:-1;;;;;;27808:26:0;;;;;;:22;:26;;;;;;;;27776:58;:114;;;-1:-1:-1;;;;;;27865:25:0;;;;;;:19;:25;;;;;;;;27776:114;:141;;;-1:-1:-1;;;;;;27894:23:0;;;;;;:19;:23;;;;;;;;27776:141;27741:196;;;;-1:-1:-1;;;27741:196:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27972:30:0;;;;;;:26;:30;;;;;;;;27968:166;;28069:9;;28059:6;28043:13;28053:2;28043:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;28035:67;;;;-1:-1:-1;;;28035:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28161:28:0;;;;;;:22;:28;;;;;;;;28157:89;;;28193:27;;-1:-1:-1;;;28193:27:0;;;;;;;:::i;28157:89::-;28305:16;;-1:-1:-1;;;28305:16:0;;;;28301:585;;;-1:-1:-1;;;;;28381:28:0;;;;;;:22;:28;;;;;;;;;:58;;-1:-1:-1;;;;;;28413:26:0;;;;;;:22;:26;;;;;;;;28381:58;:114;;;-1:-1:-1;;;;;;28470:25:0;;;;;;:19;:25;;;;;;;;28381:114;:141;;;-1:-1:-1;;;;;;28499:23:0;;;;;;:19;:23;;;;;;;;28381:141;28346:196;;;;-1:-1:-1;;;28346:196:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28577:30:0;;;;;;:26;:30;;;;;;;;28573:166;;28674:9;;28664:6;28648:13;28658:2;28648:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;28640:67;;;;-1:-1:-1;;;28640:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28766:28:0;;;;;;:22;:28;;;;;;;;28762:89;;;28798:27;;-1:-1:-1;;;28798:27:0;;;;;;;:::i;28762:89::-;28912:16;;-1:-1:-1;;;28912:16:0;;;;28908:591;;;-1:-1:-1;;;;;28988:28:0;;;;;;:22;:28;;;;;;;;;:58;;-1:-1:-1;;;;;;29020:26:0;;;;;;:22;:26;;;;;;;;28988:58;:114;;;-1:-1:-1;;;;;;29077:25:0;;;;;;:19;:25;;;;;;;;28988:114;:141;;;-1:-1:-1;;;;;;29106:23:0;;;;;;:19;:23;;;;;;;;28988:141;28953:196;;;;-1:-1:-1;;;28953:196:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29184:30:0;;;;;;:26;:30;;;;;;;;29180:172;;29294:1;29282:9;;:13;;;;:::i;:::-;29271:6;29255:13;29265:2;29255:9;:13::i;:::-;:22;;;;:::i;:::-;:41;;29247:73;;;;-1:-1:-1;;;29247:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29379:28:0;;;;;;:22;:28;;;;;;;;29375:89;;;29411:27;;-1:-1:-1;;;29411:27:0;;;;;;;:::i;29375:89::-;29525:16;;-1:-1:-1;;;29525:16:0;;;;29521:591;;;-1:-1:-1;;;;;29601:28:0;;;;;;:22;:28;;;;;;;;;:58;;-1:-1:-1;;;;;;29633:26:0;;;;;;:22;:26;;;;;;;;29601:58;:114;;;-1:-1:-1;;;;;;29690:25:0;;;;;;:19;:25;;;;;;;;29601:114;:141;;;-1:-1:-1;;;;;;29719:23:0;;;;;;:19;:23;;;;;;;;29601:141;29566:196;;;;-1:-1:-1;;;29566:196:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29797:30:0;;;;;;:26;:30;;;;;;;;29793:172;;29907:1;29895:9;;:13;;;;:::i;:::-;29884:6;29868:13;29878:2;29868:9;:13::i;:::-;:22;;;;:::i;:::-;:41;;29860:73;;;;-1:-1:-1;;;29860:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29992:28:0;;;;;;:22;:28;;;;;;;;29988:89;;;30024:27;;-1:-1:-1;;;30024:27:0;;;;;;;:::i;29988:89::-;-1:-1:-1;;;;;30153:30:0;;;;;;:26;:30;;;;;;;;30149:170;;30242:9;;30232:6;30216:13;30226:2;30216:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;30208:87;;;;-1:-1:-1;;;30208:87:0;;19124:2:1;30208:87:0;;;19106:21:1;19163:2;19143:18;;;19136:30;19202:34;19182:18;;;19175:62;-1:-1:-1;;;19253:18:1;;;19246:37;19300:19;;30208:87:0;18922:403:1;30208:87:0;30343:15;;;;;;;30339:484;;;-1:-1:-1;;;;;30465:15:0;;;;;;:9;:15;;;;;;;;30461:100;;;30510:26;;-1:-1:-1;;;30510:26:0;;19532:2:1;30510:26:0;;;19514:21:1;19571:2;19551:18;;;19544:30;-1:-1:-1;;;19590:18:1;;;19583:46;19646:18;;30510:26:0;19330:340:1;30461:100:0;30632:13;;30611:18;;30596:33;;:12;:33;:::i;:::-;:49;30593:211;;;-1:-1:-1;;;;;30669:13:0;;;;;;:9;:13;;;;;:20;;-1:-1:-1;;30669:20:0;30685:4;30669:20;;;30716:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;30764:16:0;;-1:-1:-1;;;;;30764:16:0;;;;;;;;30593:211;-1:-1:-1;;;;;30897:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;30954:35:0;;;;;;:31;:35;;;;;;;;30953:36;30897:92;30871:1178;;;31076:20;;31066:6;:30;;31032:159;;;;-1:-1:-1;;;31032:159:0;;20007:2:1;31032:159:0;;;19989:21:1;20046:2;20026:18;;;20019:30;20085:34;20065:18;;;20058:62;-1:-1:-1;;;20136:18:1;;;20129:41;20187:19;;31032:159:0;19805:407:1;31032:159:0;31217:15;;;;;;;31213:424;;;31277:13;-1:-1:-1;;;;;31269:21:0;:4;-1:-1:-1;;;;;31269:21:0;;31265:345;;;-1:-1:-1;;;;;31326:13:0;;;;;;:9;:13;;;;;;31343:12;31326:29;;31318:38;;;;;;-1:-1:-1;;;;;31383:13:0;;;;;;:9;:13;;;;;31399:12;31383:28;;30871:1178;;31265:345;-1:-1:-1;;;;;31485:15:0;;;;;;:9;:15;;;;;;31504:12;31485:31;;31477:40;;;;;;-1:-1:-1;;;;;31548:15:0;;;;;;:9;:15;;;;;31566:12;31548:30;;31265:345;30871:1178;;;-1:-1:-1;;;;;31734:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;31789:37:0;;;;;;:31;:37;;;;;;;;31788:38;31734:92;31708:341;;;31913:20;;31903:6;:30;;31869:160;;;;-1:-1:-1;;;31869:160:0;;20419:2:1;31869:160:0;;;20401:21:1;20458:2;20438:18;;;20431:30;20497:34;20477:18;;;20470:62;-1:-1:-1;;;20548:18:1;;;20541:42;20600:19;;31869:160:0;20217:408:1;31869:160:0;32062:28;32093:24;32111:4;32093:9;:24::i;:::-;32169:18;;32062:55;;-1:-1:-1;32145:42:0;;;;;;;32218:35;;-1:-1:-1;32242:11:0;;;;32218:35;:61;;;;-1:-1:-1;32271:8:0;;;;32270:9;32218:61;:90;;;;-1:-1:-1;32297:11:0;;-1:-1:-1;;;32297:11:0;;;;32296:12;32218:90;:139;;;;-1:-1:-1;;;;;;32326:31:0;;;;;;:25;:31;;;;;;;;32325:32;32218:139;:182;;;;-1:-1:-1;;;;;;32375:25:0;;;;;;:19;:25;;;;;;;;32374:26;32218:182;:223;;;;-1:-1:-1;;;;;;32418:23:0;;;;;;:19;:23;;;;;;;;32417:24;32218:223;32200:368;;;32491:18;;32468:41;;32524:30;32533:20;32524:8;:30::i;:::-;32597:7;:35;;;;-1:-1:-1;32621:11:0;;;;32597:35;:61;;;;-1:-1:-1;32650:8:0;;;;32649:9;32597:61;:89;;;;-1:-1:-1;32675:11:0;;-1:-1:-1;;;32675:11:0;;;;32597:89;:138;;;;-1:-1:-1;;;;;;32704:31:0;;;;;;:25;:31;;;;;;;;32703:32;32597:138;:181;;;;-1:-1:-1;;;;;;32753:25:0;;;;;;:19;:25;;;;;;;;32752:26;32597:181;:222;;;;-1:-1:-1;;;;;;32796:23:0;;;;;;:19;:23;;;;;;;;32795:24;32597:222;32580:364;;;32869:18;;32846:41;;32902:28;32909:20;32902:6;:28::i;:::-;32975:8;;;;32974:9;:55;;;;-1:-1:-1;;;;;;33000:29:0;;;;;;:25;:29;;;;;;;;32974:55;:85;;;;-1:-1:-1;33046:13:0;;;;32974:85;:153;;;;;33112:15;;33095:14;;:32;;;;:::i;:::-;33076:15;:51;;32974:153;:196;;;;-1:-1:-1;;;;;;33145:25:0;;;;;;:19;:25;;;;;;;;33144:26;32974:196;32956:282;;;33197:29;:27;:29::i;:::-;;32956:282;33266:8;;-1:-1:-1;;;;;33376:25:0;;33250:12;33376:25;;;:19;:25;;;;;;33266:8;;;;33265:9;;33376:25;;:52;;-1:-1:-1;;;;;;33405:23:0;;;;;;:19;:23;;;;;;;;33376:52;33372:100;;;-1:-1:-1;33455:5:0;33372:100;33484:12;33556:7;33552:3656;;;-1:-1:-1;;;;;33608:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;33657:1;33641:13;;:17;33608:50;33604:761;;;33686:34;33716:3;33686:25;33697:13;;33686:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;33679:41;;33789:13;;33769:16;;33762:4;:23;;;;:::i;:::-;33761:41;;;;:::i;:::-;33739:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;33871:13:0;;33851:16;;33844:23;;:4;:23;:::i;:::-;33843:41;;;;:::i;:::-;33821:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;33938:13:0;;33927:7;;33920:14;;:4;:14;:::i;:::-;33919:32;;;;:::i;:::-;33903:12;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;33604:761:0;;-1:-1:-1;33604:761:0;;-1:-1:-1;;;;;34013:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;34063:1;34048:12;;:16;34013:51;34009:356;;;34091:33;34120:3;34091:24;34102:12;;34091:6;:10;;:24;;;;:::i;:33::-;34084:40;;34192:12;;34173:15;;34166:4;:22;;;;:::i;:::-;34165:39;;;;:::i;:::-;34143:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;34272:12:0;;34253:15;;34246:22;;:4;:22;:::i;:::-;34245:39;;;;:::i;:::-;34223:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;34337:12:0;;34327:6;;34320:13;;:4;:13;:::i;:::-;34319:30;;;;:::i;:::-;34303:12;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;34009:356:0;34385:17;;-1:-1:-1;;;34385:17:0;;;;:50;;;;-1:-1:-1;;;;;;34406:29:0;;;;;;:25;:29;;;;;;;;34385:50;:82;;;;-1:-1:-1;;;;;;34439:28:0;;;;;;:22;:28;;;;;;;;34385:82;34381:507;;;34495:23;34514:3;34495:14;:6;34506:2;34495:10;:14::i;:23::-;34488:30;-1:-1:-1;34573:2:0;34560:9;34488:30;34567:2;34560:9;:::i;:::-;34559:16;;;;:::i;:::-;34537:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;34630:2:0;;-1:-1:-1;34617:9:0;:4;34624:2;34617:9;:::i;:::-;34616:16;;;;:::i;:::-;34594:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;34381:507:0;;-1:-1:-1;34381:507:0;;34658:17;;-1:-1:-1;;;34658:17:0;;;;:49;;;;-1:-1:-1;;;;;;34679:28:0;;;;;;:22;:28;;;;;;;;34658:49;34654:234;;;34735:23;34754:3;34735:14;:6;34746:2;34735:10;:14::i;:23::-;34728:30;-1:-1:-1;34813:2:0;34800:9;34728:30;34807:2;34800:9;:::i;:::-;34799:16;;;;:::i;:::-;34777:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;34870:2:0;;-1:-1:-1;34857:9:0;:4;34864:2;34857:9;:::i;:::-;34856:16;;;;:::i;:::-;34834:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;34654:234:0;34908:17;;-1:-1:-1;;;34908:17:0;;;;:50;;;;-1:-1:-1;;;;;;34929:29:0;;;;;;:25;:29;;;;;;;;34908:50;:82;;;;-1:-1:-1;;;;;;34962:28:0;;;;;;:22;:28;;;;;;;;34908:82;34904:507;;;35018:23;35037:3;35018:14;:6;35029:2;35018:10;:14::i;:23::-;35011:30;-1:-1:-1;35096:2:0;35083:9;35011:30;35090:2;35083:9;:::i;:::-;35082:16;;;;:::i;:::-;35060:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;35153:2:0;;-1:-1:-1;35140:9:0;:4;35147:2;35140:9;:::i;:::-;35139:16;;;;:::i;:::-;35117:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;34904:507:0;;-1:-1:-1;34904:507:0;;35181:17;;-1:-1:-1;;;35181:17:0;;;;:49;;;;-1:-1:-1;;;;;;35202:28:0;;;;;;:22;:28;;;;;;;;35181:49;35177:234;;;35258:23;35277:3;35258:14;:6;35269:2;35258:10;:14::i;:23::-;35251:30;-1:-1:-1;35336:2:0;35323:9;35251:30;35330:2;35323:9;:::i;:::-;35322:16;;;;:::i;:::-;35300:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;35393:2:0;;-1:-1:-1;35380:9:0;:4;35387:2;35380:9;:::i;:::-;35379:16;;;;:::i;:::-;35357:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;35177:234:0;35431:17;;-1:-1:-1;;;35431:17:0;;;;:50;;;;-1:-1:-1;;;;;;35452:29:0;;;;;;:25;:29;;;;;;;;35431:50;:82;;;;-1:-1:-1;;;;;;35485:28:0;;;;;;:22;:28;;;;;;;;35431:82;35427:507;;;35541:23;35560:3;35541:14;:6;35552:2;35541:10;:14::i;:23::-;35534:30;-1:-1:-1;35619:2:0;35606:9;35534:30;35613:2;35606:9;:::i;:::-;35605:16;;;;:::i;:::-;35583:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;35676:2:0;;-1:-1:-1;35663:9:0;:4;35670:2;35663:9;:::i;:::-;35662:16;;;;:::i;:::-;35640:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;35427:507:0;;-1:-1:-1;35427:507:0;;35704:17;;-1:-1:-1;;;35704:17:0;;;;:49;;;;-1:-1:-1;;;;;;35725:28:0;;;;;;:22;:28;;;;;;;;35704:49;35700:234;;;35781:23;35800:3;35781:14;:6;35792:2;35781:10;:14::i;:23::-;35774:30;-1:-1:-1;35859:2:0;35846:9;35774:30;35853:2;35846:9;:::i;:::-;35845:16;;;;:::i;:::-;35823:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;35916:2:0;;-1:-1:-1;35903:9:0;:4;35910:2;35903:9;:::i;:::-;35902:16;;;;:::i;:::-;35880:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;35700:234:0;35954:17;;-1:-1:-1;;;35954:17:0;;;;:50;;;;-1:-1:-1;;;;;;35975:29:0;;;;;;:25;:29;;;;;;;;35954:50;:82;;;;-1:-1:-1;;;;;;36008:28:0;;;;;;:22;:28;;;;;;;;35954:82;35950:507;;;36064:23;36083:3;36064:14;:6;36075:2;36064:10;:14::i;:23::-;36057:30;-1:-1:-1;36142:2:0;36129:9;36057:30;36136:2;36129:9;:::i;:::-;36128:16;;;;:::i;:::-;36106:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;36199:2:0;;-1:-1:-1;36186:9:0;:4;36193:2;36186:9;:::i;:::-;36185:16;;;;:::i;:::-;36163:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;35950:507:0;;-1:-1:-1;35950:507:0;;36227:17;;-1:-1:-1;;;36227:17:0;;;;:49;;;;-1:-1:-1;;;;;;36248:28:0;;;;;;:22;:28;;;;;;;;36227:49;36223:234;;;36304:23;36323:3;36304:14;:6;36315:2;36304:10;:14::i;:23::-;36297:30;-1:-1:-1;36382:2:0;36369:9;36297:30;36376:2;36369:9;:::i;:::-;36368:16;;;;:::i;:::-;36346:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;36439:2:0;;-1:-1:-1;36426:9:0;:4;36433:2;36426:9;:::i;:::-;36425:16;;;;:::i;:::-;36403:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;36223:234:0;36477:17;;-1:-1:-1;;;36477:17:0;;;;:50;;;;-1:-1:-1;;;;;;36498:29:0;;;;;;:25;:29;;;;;;;;36477:50;:82;;;;-1:-1:-1;;;;;;36531:28:0;;;;;;:22;:28;;;;;;;;36477:82;36473:580;;;36587:34;36617:3;36587:25;36598:13;;36587:6;:10;;:25;;;;:::i;:34::-;36580:41;;36696:13;;36672:16;;36691:1;36672:20;;;;:::i;:::-;36662:31;;36663:4;36662:31;:::i;:::-;:47;;;;:::i;:::-;36640:18;;:69;;;;;;;:::i;:::-;;;;-1:-1:-1;;36784:13:0;;36760:16;;:20;;36779:1;36760:20;:::i;:::-;36750:31;;36751:4;36750:31;:::i;:::-;:47;;;;:::i;:::-;36728:18;;:69;;;;;;;:::i;:::-;;;;-1:-1:-1;36473:580:0;;-1:-1:-1;36473:580:0;;36823:17;;-1:-1:-1;;;36823:17:0;;;;:49;;;;-1:-1:-1;;;;;;36844:28:0;;;;;;:22;:28;;;;;;;;36823:49;36819:234;;;36900:23;36919:3;36900:14;:6;36911:2;36900:10;:14::i;:23::-;36893:30;-1:-1:-1;36978:2:0;36965:9;36893:30;36972:2;36965:9;:::i;:::-;36964:16;;;;:::i;:::-;36942:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;37035:2:0;;-1:-1:-1;37022:9:0;:4;37029:2;37022:9;:::i;:::-;37021:16;;;;:::i;:::-;36999:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;36819:234:0;37075:8;;37071:95;;37104:42;37120:4;37134;37141;37104:15;:42::i;:::-;37182:14;37192:4;37182:14;;:::i;:::-;;;33552:3656;37220:33;37236:4;37242:2;37246:6;37220:15;:33::i;:::-;26599:10662;;;;26486:10775;;;:::o;37269:589::-;37419:16;;;37433:1;37419:16;;;;;;;;37395:21;;37419:16;;;;;;;;;;-1:-1:-1;37419:16:0;37395:40;;37464:4;37446;37451:1;37446:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;37446:23:0;;;-1:-1:-1;;;;;37446:23:0;;;;;37490:15;-1:-1:-1;;;;;37490:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37480:4;37485:1;37480:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;37480:32:0;;;-1:-1:-1;;;;;37480:32:0;;;;;37525:62;37542:4;37557:15;37575:11;37525:8;:62::i;:::-;37626:224;;-1:-1:-1;;;37626:224:0;;-1:-1:-1;;;;;37626:15:0;:66;;;;:224;;37707:11;;37733:1;;37777:4;;37804;;37824:15;;37626:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37324:534;37269:589;:::o;1598:191::-;1691:6;;;-1:-1:-1;;;;;1708:17:0;;;-1:-1:-1;;;;;;1708:17:0;;;;;;;1741:40;;1691:6;;;1708:17;1691:6;;1741:40;;1672:16;;1741:40;1661:128;1598:191;:::o;25702:188::-;-1:-1:-1;;;;;25785:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;25785:39:0;;;;;;;;;;25842:40;;25785:39;;:31;25842:40;;;25702:188;;:::o;5371:733::-;-1:-1:-1;;;;;5511:20:0;;5503:70;;;;-1:-1:-1;;;5503:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5592:23:0;;5584:71;;;;-1:-1:-1;;;5584:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5752:17:0;;5728:21;5752:17;;;;;;;;;;;5788:23;;;;5780:74;;;;-1:-1:-1;;;5780:74:0;;22073:2:1;5780:74:0;;;22055:21:1;22112:2;22092:18;;;22085:30;22151:34;22131:18;;;22124:62;-1:-1:-1;;;22202:18:1;;;22195:36;22248:19;;5780:74:0;21871:402:1;5780:74:0;-1:-1:-1;;;;;5890:17:0;;;:9;:17;;;;;;;;;;;5910:22;;;5890:42;;5954:20;;;;;;;;:30;;5926:6;;5890:9;5954:30;;5926:6;;5954:30;:::i;:::-;;;;;;;;6019:9;-1:-1:-1;;;;;6002:35:0;6011:6;-1:-1:-1;;;;;6002:35:0;;6030:6;6002:35;;;;1801:25:1;;1789:2;1774:18;;1655:177;6002:35:0;;;;;;;;5492:612;5371:733;;;:::o;38791:1253::-;20016:8;:15;;-1:-1:-1;;20016:15:0;20027:4;20016:15;;;38921:18:::1;::::0;38900::::1;::::0;20016:8;;38900:39:::1;::::0;::::1;:::i;:::-;38872:67;;38952:23;38978:67;39027:17;38978:44;39003:18;;38978:20;:24;;:44;;;;:::i;:67::-;38952:93:::0;-1:-1:-1;39056:23:0::1;39082:41;:20:::0;38952:93;39082:24:::1;:41::i;:::-;39056:67:::0;-1:-1:-1;39136:12:0::1;39151:22;:15:::0;39171:1:::1;39151:19;:22::i;:::-;39136:37:::0;-1:-1:-1;39184:17:0::1;39204:25;:15:::0;39136:37;39204:19:::1;:25::i;:::-;39184:45:::0;-1:-1:-1;39272:21:0::1;39304:22;39321:4:::0;39304:16:::1;:22::i;:::-;39340:18;39361:44;:21;39387:17:::0;39361:25:::1;:44::i;:::-;39340:65;;39416:35;39429:9;39440:10;39416:12;:35::i;:::-;39467:37;::::0;;13100:25:1;;;13156:2;13141:18;;13134:34;;;13184:18;;;13177:34;;;39467:37:0::1;::::0;13088:2:1;13073:18;39467:37:0::1;;;;;;;39543:21;39575:33;39592:15:::0;39575:16:::1;:33::i;:::-;39619:26;39648:42;:21;39674:15:::0;39648:25:::1;:42::i;:::-;39619:71:::0;-1:-1:-1;39701:9:0::1;39713:22;39734:1;39619:71:::0;39713:22:::1;:::i;:::-;39776:15;::::0;39768:46:::1;::::0;39701:34;;-1:-1:-1;39751:12:0::1;::::0;-1:-1:-1;;;;;39776:15:0;;::::1;::::0;39701:34;;39751:12;39768:46;39751:12;39768:46;39701:34;39776:15;39768:46:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;39825:9:0::1;::::0;39750:64;;-1:-1:-1;;;;;;39825:9:0::1;:45;39844:25;39865:4:::0;39844:18;:25:::1;:::i;:::-;39825:45;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;39910:10;39886:21;:34;39883:152;;;39954:15;::::0;39946:87:::1;::::0;-1:-1:-1;;;;;39954:15:0;;::::1;::::0;39997:21:::1;::::0;39946:87:::1;::::0;;;39997:21;39954:15;39946:87:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;39932:101:0;;-1:-1:-1;;39883:152:0::1;-1:-1:-1::0;;20054:8:0;:16;;-1:-1:-1;;20054:16:0;;;-1:-1:-1;;;;;;;;;;38791:1253:0:o;37866:386::-;38024:12;;37993:63;;-1:-1:-1;;;37993:63:0;;38024:12;;;;-1:-1:-1;;;;;38024:12:0;37993:63;;;10995:51:1;11062:18;;;11055:34;;;;;38008:4:0;;37993:30;;10968:18:1;;37993:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;38077:12:0;;;;;-1:-1:-1;;;;;38077:12:0;38101:4;38077:29;;;;:49;;-1:-1:-1;38110:16:0;;-1:-1:-1;;;38110:16:0;;;;38077:49;:98;;;;-1:-1:-1;38157:18:0;;38140:12;;38130:23;;38140:12;;;-1:-1:-1;;;;;38140:12:0;38130:9;:23::i;:::-;:45;;38077:98;38073:172;;;38206:12;;;;;;;;;-1:-1:-1;;;;;38206:12:0;-1:-1:-1;;;;;38196:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40619:788;40710:15;40693:14;:32;40811:29;;-1:-1:-1;;;40811:29:0;;-1:-1:-1;;;;;40826:13:0;2028:32:1;40811:29:0;;;2010:51:1;40676:4:0;;;;40811;;:14;;1983:18:1;;40811:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40780:60;;40890:20;40913:77;40974:5;40913:42;40938:16;;40913:20;:24;;:42;;;;:::i;:77::-;40890:100;-1:-1:-1;41095:16:0;;41091:110;;41128:61;41144:13;41167:6;41176:12;41128:15;:61::i;:::-;41276:19;41313:13;41276:51;;41338:4;-1:-1:-1;;;;;41338:9:0;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;41365:12:0;;;;-1:-1:-1;41365:12:0;;-1:-1:-1;41365:12:0;41395:4;41388:11;;;;;40619:788;:::o;9499:98::-;9557:7;9584:5;9588:1;9584;:5;:::i;:::-;9577:12;9499:98;-1:-1:-1;;;9499:98:0:o;9605:::-;9663:7;9690:5;9694:1;9690;:5;:::i;9393:98::-;9451:7;9478:5;9482:1;9478;:5;:::i;38260:517::-;38408:62;38425:4;38440:15;38458:11;38408:8;:62::i;:::-;38513:256;;-1:-1:-1;;;38513:256:0;;38585:4;38513:256;;;22619:34:1;22669:18;;;22662:34;;;38631:1:0;22712:18:1;;;22705:34;;;22755:18;;;22748:34;16039:6:0;22798:19:1;;;22791:44;38743:15:0;22851:19:1;;;22844:35;38513:15:0;-1:-1:-1;;;;;38513:31:0;;;;38552:9;;22553:19:1;;38513:256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;38260:517;;:::o;206:597:1:-;318:4;347:2;376;365:9;358:21;408:6;402:13;451:6;446:2;435:9;431:18;424:34;476:1;486:140;500:6;497:1;494:13;486:140;;;595:14;;;591:23;;585:30;561:17;;;580:2;557:26;550:66;515:10;;486:140;;;644:6;641:1;638:13;635:91;;;714:1;709:2;700:6;689:9;685:22;681:31;674:42;635:91;-1:-1:-1;787:2:1;766:15;-1:-1:-1;;762:29:1;747:45;;;;794:2;743:54;;206:597;-1:-1:-1;;;206:597:1:o;808:131::-;-1:-1:-1;;;;;883:31:1;;873:42;;863:70;;929:1;926;919:12;944:134;1012:20;;1041:31;1012:20;1041:31;:::i;1083:315::-;1151:6;1159;1212:2;1200:9;1191:7;1187:23;1183:32;1180:52;;;1228:1;1225;1218:12;1180:52;1267:9;1254:23;1286:31;1311:5;1286:31;:::i;:::-;1336:5;1388:2;1373:18;;;;1360:32;;-1:-1:-1;;;1083:315:1:o;1403:247::-;1462:6;1515:2;1503:9;1494:7;1490:23;1486:32;1483:52;;;1531:1;1528;1521:12;1483:52;1570:9;1557:23;1589:31;1614:5;1589:31;:::i;2332:180::-;2391:6;2444:2;2432:9;2423:7;2419:23;2415:32;2412:52;;;2460:1;2457;2450:12;2412:52;-1:-1:-1;2483:23:1;;2332:180;-1:-1:-1;2332:180:1:o;2517:118::-;2603:5;2596:13;2589:21;2582:5;2579:32;2569:60;;2625:1;2622;2615:12;2640:241;2696:6;2749:2;2737:9;2728:7;2724:23;2720:32;2717:52;;;2765:1;2762;2755:12;2717:52;2804:9;2791:23;2823:28;2845:5;2823:28;:::i;2886:456::-;2963:6;2971;2979;3032:2;3020:9;3011:7;3007:23;3003:32;3000:52;;;3048:1;3045;3038:12;3000:52;3087:9;3074:23;3106:31;3131:5;3106:31;:::i;:::-;3156:5;-1:-1:-1;3213:2:1;3198:18;;3185:32;3226:33;3185:32;3226:33;:::i;:::-;2886:456;;3278:7;;-1:-1:-1;;;3332:2:1;3317:18;;;;3304:32;;2886:456::o;3347:376::-;3409:6;3417;3470:2;3458:9;3449:7;3445:23;3441:32;3438:52;;;3486:1;3483;3476:12;3438:52;3525:9;3512:23;3544:28;3566:5;3544:28;:::i;:::-;3591:5;-1:-1:-1;3648:2:1;3633:18;;3620:32;3661:30;3620:32;3661:30;:::i;:::-;3710:7;3700:17;;;3347:376;;;;;:::o;4125:127::-;4186:10;4181:3;4177:20;4174:1;4167:31;4217:4;4214:1;4207:15;4241:4;4238:1;4231:15;4257:1121;4341:6;4372:2;4415;4403:9;4394:7;4390:23;4386:32;4383:52;;;4431:1;4428;4421:12;4383:52;4471:9;4458:23;4500:18;4541:2;4533:6;4530:14;4527:34;;;4557:1;4554;4547:12;4527:34;4595:6;4584:9;4580:22;4570:32;;4640:7;4633:4;4629:2;4625:13;4621:27;4611:55;;4662:1;4659;4652:12;4611:55;4698:2;4685:16;4720:2;4716;4713:10;4710:36;;;4726:18;;:::i;:::-;4772:2;4769:1;4765:10;4804:2;4798:9;4867:2;4863:7;4858:2;4854;4850:11;4846:25;4838:6;4834:38;4922:6;4910:10;4907:22;4902:2;4890:10;4887:18;4884:46;4881:72;;;4933:18;;:::i;:::-;4969:2;4962:22;5019:18;;;5053:15;;;;-1:-1:-1;5095:11:1;;;5091:20;;;5123:19;;;5120:39;;;5155:1;5152;5145:12;5120:39;5179:11;;;;5199:148;5215:6;5210:3;5207:15;5199:148;;;5281:23;5300:3;5281:23;:::i;:::-;5269:36;;5232:12;;;;5325;;;;5199:148;;;5366:6;4257:1121;-1:-1:-1;;;;;;;;4257:1121:1:o;5383:377::-;5457:6;5465;5473;5526:2;5514:9;5505:7;5501:23;5497:32;5494:52;;;5542:1;5539;5532:12;5494:52;5578:9;5565:23;5555:33;;5635:2;5624:9;5620:18;5607:32;5597:42;;5689:2;5678:9;5674:18;5661:32;5702:28;5724:5;5702:28;:::i;:::-;5749:5;5739:15;;;5383:377;;;;;:::o;5765:382::-;5830:6;5838;5891:2;5879:9;5870:7;5866:23;5862:32;5859:52;;;5907:1;5904;5897:12;5859:52;5946:9;5933:23;5965:31;5990:5;5965:31;:::i;6376:316::-;6453:6;6461;6469;6522:2;6510:9;6501:7;6497:23;6493:32;6490:52;;;6538:1;6535;6528:12;6490:52;-1:-1:-1;;6561:23:1;;;6631:2;6616:18;;6603:32;;-1:-1:-1;6682:2:1;6667:18;;;6654:32;;6376:316;-1:-1:-1;6376:316:1:o;6697:388::-;6765:6;6773;6826:2;6814:9;6805:7;6801:23;6797:32;6794:52;;;6842:1;6839;6832:12;6794:52;6881:9;6868:23;6900:31;6925:5;6900:31;:::i;:::-;6950:5;-1:-1:-1;7007:2:1;6992:18;;6979:32;7020:33;6979:32;7020:33;:::i;7090:380::-;7169:1;7165:12;;;;7212;;;7233:61;;7287:4;7279:6;7275:17;7265:27;;7233:61;7340:2;7332:6;7329:14;7309:18;7306:38;7303:161;;;7386:10;7381:3;7377:20;7374:1;7367:31;7421:4;7418:1;7411:15;7449:4;7446:1;7439:15;7303:161;;7090:380;;;:::o;7475:356::-;7677:2;7659:21;;;7696:18;;;7689:30;7755:34;7750:2;7735:18;;7728:62;7822:2;7807:18;;7475:356::o;7836:127::-;7897:10;7892:3;7888:20;7885:1;7878:31;7928:4;7925:1;7918:15;7952:4;7949:1;7942:15;7968:168;8008:7;8074:1;8070;8066:6;8062:14;8059:1;8056:21;8051:1;8044:9;8037:17;8033:45;8030:71;;;8081:18;;:::i;:::-;-1:-1:-1;8121:9:1;;7968:168::o;8141:217::-;8181:1;8207;8197:132;;8251:10;8246:3;8242:20;8239:1;8232:31;8286:4;8283:1;8276:15;8314:4;8311:1;8304:15;8197:132;-1:-1:-1;8343:9:1;;8141:217::o;9545:128::-;9585:3;9616:1;9612:6;9609:1;9606:13;9603:39;;;9622:18;;:::i;:::-;-1:-1:-1;9658:9:1;;9545:128::o;9678:127::-;9739:10;9734:3;9730:20;9727:1;9720:31;9770:4;9767:1;9760:15;9794:4;9791:1;9784:15;9810:135;9849:3;-1:-1:-1;;9870:17:1;;9867:43;;;9890:18;;:::i;:::-;-1:-1:-1;9937:1:1;9926:13;;9810:135::o;10632:184::-;10702:6;10755:2;10743:9;10734:7;10730:23;10726:32;10723:52;;;10771:1;10768;10761:12;10723:52;-1:-1:-1;10794:16:1;;10632:184;-1:-1:-1;10632:184:1:o;11100:245::-;11167:6;11220:2;11208:9;11199:7;11195:23;11191:32;11188:52;;;11236:1;11233;11226:12;11188:52;11268:9;11262:16;11287:28;11309:5;11287:28;:::i;16727:401::-;16929:2;16911:21;;;16968:2;16948:18;;;16941:30;17007:34;17002:2;16987:18;;16980:62;-1:-1:-1;;;17073:2:1;17058:18;;17051:35;17118:3;17103:19;;16727:401::o;17133:399::-;17335:2;17317:21;;;17374:2;17354:18;;;17347:30;17413:34;17408:2;17393:18;;17386:62;-1:-1:-1;;;17479:2:1;17464:18;;17457:33;17522:3;17507:19;;17133:399::o;17884:340::-;18086:2;18068:21;;;18125:2;18105:18;;;18098:30;-1:-1:-1;;;18159:2:1;18144:18;;18137:46;18215:2;18200:18;;17884:340::o;18229:343::-;18431:2;18413:21;;;18470:2;18450:18;;;18443:30;-1:-1:-1;;;18504:2:1;18489:18;;18482:49;18563:2;18548:18;;18229:343::o;18577:340::-;18779:2;18761:21;;;18818:2;18798:18;;;18791:30;-1:-1:-1;;;18852:2:1;18837:18;;18830:46;18908:2;18893:18;;18577:340::o;19675:125::-;19715:4;19743:1;19740;19737:8;19734:34;;;19748:18;;:::i;:::-;-1:-1:-1;19785:9:1;;19675:125::o;20630:251::-;20700:6;20753:2;20741:9;20732:7;20728:23;20724:32;20721:52;;;20769:1;20766;20759:12;20721:52;20801:9;20795:16;20820:31;20845:5;20820:31;:::i;20886:980::-;21148:4;21196:3;21185:9;21181:19;21227:6;21216:9;21209:25;21253:2;21291:6;21286:2;21275:9;21271:18;21264:34;21334:3;21329:2;21318:9;21314:18;21307:31;21358:6;21393;21387:13;21424:6;21416;21409:22;21462:3;21451:9;21447:19;21440:26;;21501:2;21493:6;21489:15;21475:29;;21522:1;21532:195;21546:6;21543:1;21540:13;21532:195;;;21611:13;;-1:-1:-1;;;;;21607:39:1;21595:52;;21702:15;;;;21667:12;;;;21643:1;21561:9;21532:195;;;-1:-1:-1;;;;;;;21783:32:1;;;;21778:2;21763:18;;21756:60;-1:-1:-1;;;21847:3:1;21832:19;21825:35;21744:3;20886:980;-1:-1:-1;;;20886:980:1:o;22890:306::-;22978:6;22986;22994;23047:2;23035:9;23026:7;23022:23;23018:32;23015:52;;;23063:1;23060;23053:12;23015:52;23092:9;23086:16;23076:26;;23142:2;23131:9;23127:18;23121:25;23111:35;;23186:2;23175:9;23171:18;23165:25;23155:35;;22890:306;;;;;:::o

Swarm Source

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