ETH Price: $2,527.09 (+0.63%)

Token

PAWS (PAWS)
 

Overview

Max Total Supply

1,000,000,000,000 PAWS

Holders

163

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
351,702,201.174747013 PAWS

Value
$0.00
0x5faca3fe769199e2821dbacbdb6c8268e16f567c
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:
PAWS

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-22
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

/*


Help fight animal cruelty and earn rewards.

Telegram:    https://t.me/pawscrypto
Website:     https://www.pawscrypto.org
Twitter:     https://twitter.com/Paws_crypto


*/

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

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

interface IERC20 {
  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8);

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external view returns (string memory);

  /**
  * @dev Returns the token name.
  */
  function name() external view returns (string memory);

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

  /**
   * @dev Returns the amount of tokens owned by `account`.
   */
  function balanceOf(address account) external view returns (uint256);

  /**
   * @dev Moves `amount` tokens from the caller's account to `recipient`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Returns the remaining number of tokens that `spender` will be
   * allowed to spend on behalf of `owner` through {transferFrom}. This is
   * zero by default.
   *
   * This value changes when {approve} or {transferFrom} are called.
   */
  function allowance(address _owner, address spender) external view returns (uint256);

  /**
   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * IMPORTANT: Beware that changing an allowance with this method brings the risk
   * that someone may use both the old and the new allowance by unfortunate
   * transaction ordering. One possible solution to mitigate this race
   * condition is to first reduce the spender's allowance to 0 and set the
   * desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * Emits an {Approval} event.
   */
  function approve(address spender, uint256 amount) external returns (bool);

  /**
   * @dev Moves `amount` tokens from `sender` to `recipient` using the
   * allowance mechanism. `amount` is then deducted from the caller's
   * allowance.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Emitted when `value` tokens are moved from one account (`from`) to
   * another (`to`).
   *
   * Note that `value` may be zero.
   */
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface AntiSnipe {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ab, bool _algo) external;
    function removeSniper(address account) external;
    function getSniperAmt() external view returns (uint256);
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
}

contract PAWS is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private _liquidityHolders;

    uint256 constant private startingSupply = 1_000_000_000_000;
    string constant private _name = "PAWS";
    string constant private _symbol = "PAWS";
    uint8 constant private _decimals = 9;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    struct Ratios {
        uint16 liquidity;
        uint16 marketing;
        uint16 total;
    }

    Fees public _taxRates = Fees({
        buyFee: 1000,
        sellFee: 2500,
        transferFee: 1000
        });

    Ratios public _ratios = Ratios({
        liquidity: 1,
        marketing: 9,
        total: 10
        });

    uint256 constant public maxBuyTaxes = 2000;
    uint256 constant public maxSellTaxes = 2000;
    uint256 constant public maxTransferTaxes = 2000;
    uint256 constant masterTaxDivisor = 10000;

    IRouter02 public dexRouter;
    address public lpPair;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x484A811c640Cf7C7923415aDfa46469012B2Ce8C)
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public contractSwapTimer = 15 seconds;
    uint256 private lastSwap;
    uint256 public swapThreshold = (_tTotal * 5) / 10000;
    uint256 public swapAmount = (_tTotal * 2) / 1000;

    uint256 private _maxTxAmount = (_tTotal * 5) / 1000;
    uint256 private _maxWalletSize = (_tTotal * 1) / 100;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    AntiSnipe antiSnipe;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

        // Set the owner.
        _owner = msg.sender;

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3);
        } else if (block.chainid == 1 || block.chainid == 4) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        } else {
            revert();
        }

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(msg.sender, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[owner()] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

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

    function totalSupply() external pure override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

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

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

    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

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

    function approveContractContingency() public onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
            antiSnipe.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            antiSnipe.setLpPair(pair, true);
        }
    }

    function setInitializer(address initializer) external onlyOwner {
        require(!_hasLiqBeenAdded, "Liquidity is already in.");
        require(initializer != address(this), "Can't be self.");
        antiSnipe = AntiSnipe(initializer);
    }

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner {
        antiSnipe.setBlacklistEnabled(account, enabled);
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        antiSnipe.setBlacklistEnabledMultiple(accounts, enabled);
    }

    function removeBlacklisted(address account) external onlyOwner {
        antiSnipe.removeBlacklisted(account);
    }

    function isBlacklisted(address account) public view returns (bool) {
        return antiSnipe.isBlacklisted(account);
    }

    function getSniperAmt() public view returns (uint256) {
        return antiSnipe.getSniperAmt();
    }

    function removeSniper(address account) external onlyOwner {
        antiSnipe.removeSniper(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock, bool _algo) external onlyOwner {
        antiSnipe.setProtections(_antiSnipe, _antiBlock, _algo);
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setRatios(uint16 liquidity, uint16 marketing) external onlyOwner {
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.total = liquidity + marketing;
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply.");
        _maxTxAmount = (_tTotal * percent) / divisor;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Wallet amt must be above 0.1% of total supply.");
        _maxWalletSize = (_tTotal * percent) / divisor;
    }

    function setExcludedFromLimits(address account, bool enabled) external onlyOwner {
        _isExcludedFromLimits[account] = enabled;
    }

    function isExcludedFromLimits(address account) public view returns (bool) {
        return _isExcludedFromLimits[account];
    }

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

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function getMaxTX() public view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

    function getMaxWallet() public view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor, uint256 time) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        contractSwapTimer = time;
    }

    function setWallets(address payable marketing) external onlyOwner {
        _taxWallets.marketing = payable(marketing);
    }

    function setContractSwapEnabled(bool _enabled) public onlyOwner {
        contractSwapEnabled = _enabled;
        emit ContractSwapEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && tx.origin != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if(lpPairs[from] || lpPairs[to]){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if(to != address(dexRouter) && !lpPairs[to]) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

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

        if (lpPairs[to]) {
            if (!inSwap
                && contractSwapEnabled
            ) {
                if (lastSwap + contractSwapTimer < block.timestamp) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                        contractSwap(contractTokenBalance);
                        lastSwap = block.timestamp;
                    }
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function contractSwap(uint256 contractTokenBalance) private lockTheSwap {
        Ratios memory ratios = _ratios;
        if (ratios.total == 0) {
            return;
        }

        if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / ratios.total) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapAmt,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amtBalance = address(this).balance;
        uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt;

        if (toLiquify > 0) {
            dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                DEAD,
                block.timestamp
            );
            emit AutoLiquify(liquidityBalance, toLiquify);
        }

        amtBalance -= liquidityBalance;
        ratios.total -= ratios.liquidity;
        uint256 marketingBalance = amtBalance;
        if (ratios.marketing > 0) {
            _taxWallets.marketing.transfer(marketingBalance);
        }
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            if(address(antiSnipe) == address(0)){
                antiSnipe = AntiSnipe(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if(address(antiSnipe) == address(0)){
            antiSnipe = AntiSnipe(address(this));
        }
        try antiSnipe.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        tradingEnabled = true;
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(owner()).transfer(address(this).balance);
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint8 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]);
            _transfer(msg.sender, accounts[i], amounts[i]*10**_decimals);
        }
    }

    function multiSendPercents(address[] memory accounts, uint256[] memory percents, uint256[] memory divisors) external {
        require(accounts.length == percents.length && percents.length == divisors.length, "Lengths do not match.");
        for (uint8 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= (_tTotal * percents[i]) / divisors[i]);
            _transfer(msg.sender, accounts[i], (_tTotal * percents[i]) / divisors[i]);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        }

        if (_hasLimits(from, to)) {
            bool checked;
            try antiSnipe.checkUser(from, to, amount) returns (bool check) {
                checked = check;
            } catch {
                revert();
            }

            if(!checked) {
                revert();
            }
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount;
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (lpPairs[from]) {
            currentFee = _taxRates.buyFee;
        } else if (lpPairs[to]) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;

        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSniperAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"percents","type":"uint256[]"},{"internalType":"uint256[]","name":"divisors","type":"uint256[]"}],"name":"multiSendPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"},{"internalType":"bool","name":"_algo","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006003556103e860808190526109c460a05260c0526008805465ffffffffffff199081166503e809c403e817909155600160e0526009610100819052600a6101208190528154909216640a0009000117815561016060405273484a811c640cf7c7923415adfa46469012b2ce8c610140819052600c80546001600160a01b0319169091179055600d805461ff0019169055600f600e5561271091620000a69190620007b1565b620000b79064e8d4a51000620007c9565b620000c4906005620007c9565b620000d09190620007eb565b6010556103e8620000e46009600a620007b1565b620000f59064e8d4a51000620007c9565b62000102906002620007c9565b6200010e9190620007eb565b6011556103e8620001226009600a620007b1565b620001339064e8d4a51000620007c9565b62000140906005620007c9565b6200014c9190620007eb565b60125560646200015f6009600a620007b1565b620001709064e8d4a51000620007c9565b6200017d906001620007c9565b620001899190620007eb565b6013556014805461ffff19169055620001a56009600a620007b1565b620001b69064e8d4a51000620007c9565b3360008181526001602052604081209290925581546001600160a01b03191617905546603814156200020e57600a80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e1790556200028b565b46606114156200024457600a80546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c31790556200028b565b4660011480620002545750466004145b156200028657600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556200028b565b600080fd5b600a60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030591906200080e565b6001600160a01b031663c9c65396600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000367573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038d91906200080e565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620003da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040091906200080e565b600b80546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260409020805460ff19166001179055600a546200044c913391166000196200059b565b600a54620004689030906001600160a01b03166000196200059b565b600160056000620004816000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252812080548316600190811790915561dead82527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80549093168117909255600790620005096000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620005393390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620005736009600a620007b1565b620005849064e8d4a51000620007c9565b60405190815260200160405180910390a362000839565b6001600160a01b038316620005ed5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200063b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620005e4565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006f3578160001904821115620006d757620006d76200069c565b80851615620006e557918102915b93841c9390800290620006b7565b509250929050565b6000826200070c57506001620007ab565b816200071b57506000620007ab565b81600181146200073457600281146200073f576200075f565b6001915050620007ab565b60ff8411156200075357620007536200069c565b50506001821b620007ab565b5060208310610133831016604e8410600b841016171562000784575081810a620007ab565b620007908383620006b2565b8060001904821115620007a757620007a76200069c565b0290505b92915050565b6000620007c260ff841683620006fb565b9392505050565b6000816000190483118215151615620007e657620007e66200069c565b500290565b6000826200080957634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200082157600080fd5b81516001600160a01b0381168114620007c257600080fd5b61406380620008496000396000f3fe6080604052600436106103855760003560e01c80635cce86cd116101d1578063b6f8f8dc11610102578063e8a0e3f9116100a0578063eec2744e1161006f578063eec2744e14610a58578063f94aa1b414610a78578063fdb78c0e14610a98578063fe575a8714610ab757600080fd5b8063e8a0e3f9146109e3578063eafb5a3c14610a03578063eb50e70e14610a23578063ee5d9c2d14610a4357600080fd5b8063cab5ebea116100dc578063cab5ebea14610936578063cf84770614610956578063dd62ed3e14610987578063e4fcfd18146109cd57600080fd5b8063b6f8f8dc146108d6578063bcd96a25146108f6578063c6a276c21461091657600080fd5b80638a8c523c1161016f578063a457c2d711610149578063a457c2d714610896578063a9059cbb146108b6578063b1b08f7114610586578063b3d514fb1461058657600080fd5b80638a8c523c146108815780638da5cb5b1461084e57806395d89b411461046057600080fd5b8063715018a6116101ab578063715018a61461081957806380c581d11461082e578063893d20e81461084e5780638a63bd9b1461086c57600080fd5b80635cce86cd146107955780636ebd0078146107ce57806370a08231146107e357600080fd5b8063313ce567116102b6578063452ed4f11161025457806350a8e0161161022357806350a8e0161461072157806355dbc36914610740578063590ffdce146107555780635c24b0741461077557600080fd5b8063452ed4f11461068e5780634ada218b146106ae5780634fb2e45d146106c85780634fbee193146106e857600080fd5b806334cd82601161029057806334cd82601461060e57806336fddb041461062e578063395093511461064e5780633f3cf56c1461066e57600080fd5b8063313ce567146105b257806332cde664146105ce57806333251a0b146105ee57600080fd5b80630fa604e41161032357806326003957116102fd57806326003957146105465780632610eaca146105665780632b28fc7a146105865780632e8fa8211461059c57600080fd5b80630fa604e4146104fc57806318160ddd1461051157806323b872dd1461052657600080fd5b8063069d955f1161035f578063069d955f1461040a57806306fdde03146104605780630758d924146104ac578063095ea7b3146104cc57600080fd5b806303fd2a45146103915780630445b667146103c457806305bbedb6146103e857600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a761dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103d057600080fd5b506103da60105481565b6040519081526020016103bb565b3480156103f457600080fd5b5061040861040336600461389f565b610ad7565b005b34801561041657600080fd5b5060085461043b9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103bb565b34801561046c57600080fd5b50604080518082018252600481527f5041575300000000000000000000000000000000000000000000000000000000602082015290516103bb91906138f1565b3480156104b857600080fd5b50600a546103a7906001600160a01b031681565b3480156104d857600080fd5b506104ec6104e7366004613946565b610bb0565b60405190151581526020016103bb565b34801561050857600080fd5b506103da610bc7565b34801561051d57600080fd5b506103da610be7565b34801561053257600080fd5b506104ec610541366004613972565b610c28565b34801561055257600080fd5b506104086105613660046139b3565b610ca0565b34801561057257600080fd5b50610408610581366004613a30565b610df3565b34801561059257600080fd5b506103da6107d081565b3480156105a857600080fd5b506103da60115481565b3480156105be57600080fd5b50604051600981526020016103bb565b3480156105da57600080fd5b506104086105e9366004613aab565b610f0d565b3480156105fa57600080fd5b50610408610609366004613aee565b611048565b34801561061a57600080fd5b50610408610629366004613b0b565b611119565b34801561063a57600080fd5b50610408610649366004613b46565b6111d8565b34801561065a57600080fd5b506104ec610669366004613946565b611251565b34801561067a57600080fd5b506104086106893660046139b3565b61128d565b34801561069a57600080fd5b50600b546103a7906001600160a01b031681565b3480156106ba57600080fd5b506014546104ec9060ff1681565b3480156106d457600080fd5b506104086106e3366004613aee565b6113e0565b3480156106f457600080fd5b506104ec610703366004613aee565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561072d57600080fd5b506014546104ec90610100900460ff1681565b34801561074c57600080fd5b506103da6115f9565b34801561076157600080fd5b50610408610770366004613b46565b611672565b34801561078157600080fd5b50610408610790366004613aee565b6116eb565b3480156107a157600080fd5b506104ec6107b0366004613aee565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107da57600080fd5b506103da61182a565b3480156107ef57600080fd5b506103da6107fe366004613aee565b6001600160a01b031660009081526001602052604090205490565b34801561082557600080fd5b50610408611845565b34801561083a57600080fd5b50610408610849366004613b46565b611900565b34801561085a57600080fd5b506000546001600160a01b03166103a7565b34801561087857600080fd5b506104ec611aaa565b34801561088d57600080fd5b50610408611b19565b3480156108a257600080fd5b506104ec6108b1366004613946565b611d03565b3480156108c257600080fd5b506104ec6108d1366004613946565b611d3a565b3480156108e257600080fd5b506104086108f1366004613b74565b611d51565b34801561090257600080fd5b50610408610911366004613bbf565b611e31565b34801561092257600080fd5b50610408610931366004613aee565b611f03565b34801561094257600080fd5b50610408610951366004613bf2565b611fa3565b34801561096257600080fd5b5060095461043b9061ffff808216916201000081048216916401000000009091041683565b34801561099357600080fd5b506103da6109a2366004613c0f565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156109d957600080fd5b506103da600e5481565b3480156109ef57600080fd5b506104086109fe366004613c3d565b612045565b348015610a0f57600080fd5b50610408610a1e366004613aee565b6121dd565b348015610a2f57600080fd5b50610408610a3e366004613aee565b6125ad565b348015610a4f57600080fd5b50610408612635565b348015610a6457600080fd5b50610408610a73366004613b46565b612718565b348015610a8457600080fd5b50600c546103a7906001600160a01b031681565b348015610aa457600080fd5b50600d546104ec90610100900460ff1681565b348015610ac357600080fd5b506104ec610ad2366004613aee565b6127c0565b6000546001600160a01b03163314610b2a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6014546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610b7a9085908590600401613d09565b600060405180830381600087803b158015610b9457600080fd5b505af1158015610ba8573d6000803e3d6000fd5b505050505050565b6000610bbd33848461284e565b5060015b92915050565b6000610bd56009600a613e40565b601354610be29190613e4f565b905090565b6000610bf56009600a613e40565b610c049064e8d4a51000613e8a565b610c0d57600080fd5b610c196009600a613e40565b610be29064e8d4a51000613e8a565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610c8d576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610c87908490613ea9565b90915550505b610c9884848461295b565b949350505050565b6000546001600160a01b03163314610cee5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6103e8610cfd6009600a613e40565b610d0c9064e8d4a51000613e8a565b610d169190613e4f565b8183610d246009600a613e40565b610d339064e8d4a51000613e8a565b610d3d9190613e8a565b610d479190613e4f565b1015610dbb5760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610b21565b8082610dc96009600a613e40565b610dd89064e8d4a51000613e8a565b610de29190613e8a565b610dec9190613e4f565b6013555050565b8051825114610e445760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b21565b60005b82518160ff161015610f0857818160ff1681518110610e6857610e68613ec0565b6020026020010151610e8f336001600160a01b031660009081526001602052604090205490565b1015610e9a57600080fd5b610ef533848360ff1681518110610eb357610eb3613ec0565b60200260200101516009600a610ec99190613e40565b858560ff1681518110610ede57610ede613ec0565b6020026020010151610ef09190613e8a565b61295b565b5080610f0081613eef565b915050610e47565b505050565b6000546001600160a01b03163314610f5b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6107d08361ffff1611158015610f7757506107d08261ffff1611155b8015610f8957506107d08161ffff1611155b610fd55760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b21565b6008805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146110965760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6014546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b1580156110fe57600080fd5b505af1158015611112573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146111675760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b83856111756009600a613e40565b6111849064e8d4a51000613e8a565b61118e9190613e8a565b6111989190613e4f565b60105581836111a96009600a613e40565b6111b89064e8d4a51000613e8a565b6111c29190613e8a565b6111cc9190613e4f565b601155600e5550505050565b6000546001600160a01b031633146112265760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610bbd918590611288908690613f0f565b61284e565b6000546001600160a01b031633146112db5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6103e86112ea6009600a613e40565b6112f99064e8d4a51000613e8a565b6113039190613e4f565b81836113116009600a613e40565b6113209064e8d4a51000613e8a565b61132a9190613e8a565b6113349190613e4f565b10156113a85760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b21565b80826113b66009600a613e40565b6113c59064e8d4a51000613e8a565b6113cf9190613e8a565b6113d99190613e4f565b6012555050565b6000546001600160a01b0316331461142e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6001600160a01b0381166114aa5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b21565b6001600160a01b03811661dead141561152b5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b21565b60008054611544916001600160a01b0390911690611672565b61154f816001611672565b600080546001600160a01b03168152600160205260409020541561159657600080546001600160a01b031680825260016020526040909120546115949190839061295b565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000601460029054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be29190613f27565b6000546001600160a01b031633146116c05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117395760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b601454610100900460ff16156117915760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920697320616c726561647920696e2e00000000000000006044820152606401610b21565b6001600160a01b0381163014156117ea5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b21565b601480546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60006118386009600a613e40565b601254610be29190613e4f565b6000546001600160a01b031633146118935760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b600080546118ac916001600160a01b0390911690611672565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461194e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b806119c5576001600160a01b03828116600081815260026020526040808220805460ff1916905560145490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610b7a565b60035415611a2c576203f480600354426119df9190613ea9565b11611a2c5760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610b21565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560145491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610b7a565b5050565b600080546001600160a01b03163314611af95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b600a54611b139030906001600160a01b031660001961284e565b50600190565b6000546001600160a01b03163314611b675760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b60145460ff1615611bba5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b21565b601454610100900460ff16611c115760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b21565b6014546201000090046001600160a01b0316611c5757601480547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601454600b546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611ce257600080fd5b505af1925050508015611cf3575060015b506014805460ff19166001179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610bbd918590611288908690613ea9565b6000611d4733848461295b565b5060019392505050565b6000546001600160a01b03163314611d9f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6014546040517f6a34b758000000000000000000000000000000000000000000000000000000008152841515600482015283151560248201528215156044820152620100009091046001600160a01b031690636a34b75890606401600060405180830381600087803b158015611e1457600080fd5b505af1158015611e28573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b03163314611e7f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6009805461ffff83811662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090921690851617179055611ec38183613f40565b6009805461ffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff9092169190911790555050565b6000546001600160a01b03163314611f515760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6014546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c2906024016110e4565b6000546001600160a01b03163314611ff15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b600d80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579061203a90831515815260200190565b60405180910390a150565b81518351148015612057575080518251145b6120a35760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b21565b60005b83518160ff1610156121d757818160ff16815181106120c7576120c7613ec0565b6020026020010151838260ff16815181106120e4576120e4613ec0565b60200260200101516009600a6120fa9190613e40565b6121099064e8d4a51000613e8a565b6121139190613e8a565b61211d9190613e4f565b33600090815260016020526040902054101561213857600080fd5b6121c433858360ff168151811061215157612151613ec0565b6020026020010151848460ff168151811061216e5761216e613ec0565b6020026020010151868560ff168151811061218b5761218b613ec0565b60200260200101516009600a6121a19190613e40565b6121b09064e8d4a51000613e8a565b6121ba9190613e8a565b610ef09190613e4f565b50806121cf81613eef565b9150506120a6565b50505050565b6000546001600160a01b0316331461222b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612270573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122949190613f66565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123059190613f66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612368573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238c9190613f66565b90506001600160a01b03811661253557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123fe9190613f66565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561244b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246f9190613f66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156124d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f89190613f66565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055612569565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155610f0890309060001961284e565b6000546001600160a01b031633146125fb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000546001600160a01b031633146126835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b601454610100900460ff16156126db5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b21565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612715573d6000803e3d6000fd5b50565b6000546001600160a01b031633146127665760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6014546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610b7a565b6014546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa15801561282a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc19190613f83565b6001600160a01b0383166128a45760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b21565b6001600160a01b0382166128fa5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b21565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166129d95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b21565b6001600160a01b038316612a555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610b21565b60008211612acb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610b21565b612ad58484612e1a565b15612d2c5760145460ff16612b2c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b21565b6001600160a01b03841660009081526002602052604090205460ff1680612b6b57506001600160a01b03831660009081526002602052604090205460ff165b15612c2f576001600160a01b03841660009081526006602052604090205460ff16158015612bb257506001600160a01b03831660009081526006602052604090205460ff16155b15612c2f57601254821115612c2f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610b21565b600a546001600160a01b03848116911614801590612c6657506001600160a01b03831660009081526002602052604090205460ff16155b15612d2c576001600160a01b03831660009081526006602052604090205460ff16612d2c5760135482612cae856001600160a01b031660009081526001602052604090205490565b612cb89190613f0f565b1115612d2c5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610b21565b6001600160a01b03841660009081526005602052604090205460019060ff1680612d6e57506001600160a01b03841660009081526005602052604090205460ff165b15612d77575060005b6001600160a01b03841660009081526002602052604090205460ff1615612e0557600d5460ff16158015612db25750600d54610100900460ff165b15612e055742600e54600f54612dc89190613f0f565b1015612e0557306000908152600160205260409020546010548110612e03576011548110612df557506011545b612dfe81612eef565b42600f555b505b612e11858585846132df565b95945050505050565b600080546001600160a01b03848116911614801590612e4757506000546001600160a01b03838116911614155b8015612e5e57506000546001600160a01b03163214155b8015612e8357506001600160a01b03821660009081526007602052604090205460ff16155b8015612ea857506001600160a01b03831660009081526007602052604090205460ff16155b8015612ebf57506001600160a01b03821661dead14155b8015612ed357506001600160a01b03821615155b8015612ee857506001600160a01b0383163014155b9392505050565b600d805460ff191660011790556040805160608101825260095461ffff8082168352620100008204811660208401526401000000009091041691810182905290612f3957506132d2565b306000908152600460209081526040808320600a546001600160a01b0316845290915290205460001914612f9257306000908152600460209081526040808320600a546001600160a01b03168452909152902060001990555b60006002826040015161ffff16836000015161ffff1685612fb39190613e8a565b612fbd9190613e4f565b612fc79190613e4f565b90506000612fd58285613ea9565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061300f5761300f613ec0565b6001600160a01b03928316602091820292909201810191909152600a54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613081573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a59190613f66565b816001815181106130b8576130b8613ec0565b6001600160a01b039283166020918202929092010152600a546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613117908590600090869030904290600401613fa0565b600060405180830381600087803b15801561313157600080fd5b505af1158015613145573d6000803e3d6000fd5b504792506000915084905061315a8684613e8a565b6131649190613e4f565b9050841561325557600a546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156131f3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132189190613fdc565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b61325f8183613ea9565b9150856000015186604001818151613277919061400a565b61ffff908116909152602088015184925016156132ca57600c546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156132c8573d6000803e3d6000fd5b505b505050505050505b50600d805460ff19169055565b601454600090610100900460ff1661338b576132fb858561351b565b601454610100900460ff1615801561331857506133188585612e1a565b1561338b5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610b21565b6133958585612e1a565b15613448576014546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152868116602483015260448201869052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613431575060408051601f3d908101601f1916820190925261342e91810190613f83565b60015b61343a57600080fd5b90508061344657600080fd5b505b6001600160a01b03851660009081526001602052604081208054859290613470908490613ea9565b909155506000905082613483578361348e565b61348e868686613679565b6001600160a01b0386166000908152600160205260408120805492935083929091906134bb908490613f0f565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161350791815260200190565b60405180910390a350600195945050505050565b601454610100900460ff16156135995760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610b21565b6135a38282612e1a565b1580156135bd5750600b546001600160a01b038281169116145b15611aa6576001600160a01b038083166000908152600760205260409020805460ff191660011790556014805461ff00191661010017908190556201000090041661363257601480547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b600d805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b038316600090815260026020526040812054819060ff16156136a9575060085461ffff166136ee565b6001600160a01b03841660009081526002602052604090205460ff16156136dd575060085462010000900461ffff166136ee565b50600854640100000000900461ffff165b60006127106136fd8386613e8a565b6137079190613e4f565b3060009081526001602052604081208054929350839290919061372b908490613f0f565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361377a8185613ea9565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156137dc576137dc613784565b604052919050565b600067ffffffffffffffff8211156137fe576137fe613784565b5060051b60200190565b6001600160a01b038116811461271557600080fd5b600082601f83011261382e57600080fd5b8135602061384361383e836137e4565b6137b3565b82815260059290921b8401810191818101908684111561386257600080fd5b8286015b8481101561388657803561387981613808565b8352918301918301613866565b509695505050505050565b801515811461271557600080fd5b600080604083850312156138b257600080fd5b823567ffffffffffffffff8111156138c957600080fd5b6138d58582860161381d565b92505060208301356138e681613891565b809150509250929050565b600060208083528351808285015260005b8181101561391e57858101830151858201604001528201613902565b81811115613930576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561395957600080fd5b823561396481613808565b946020939093013593505050565b60008060006060848603121561398757600080fd5b833561399281613808565b925060208401356139a281613808565b929592945050506040919091013590565b600080604083850312156139c657600080fd5b50508035926020909101359150565b600082601f8301126139e657600080fd5b813560206139f661383e836137e4565b82815260059290921b84018101918181019086841115613a1557600080fd5b8286015b848110156138865780358352918301918301613a19565b60008060408385031215613a4357600080fd5b823567ffffffffffffffff80821115613a5b57600080fd5b613a678683870161381d565b93506020850135915080821115613a7d57600080fd5b50613a8a858286016139d5565b9150509250929050565b803561ffff81168114613aa657600080fd5b919050565b600080600060608486031215613ac057600080fd5b613ac984613a94565b9250613ad760208501613a94565b9150613ae560408501613a94565b90509250925092565b600060208284031215613b0057600080fd5b8135612ee881613808565b600080600080600060a08688031215613b2357600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215613b5957600080fd5b8235613b6481613808565b915060208301356138e681613891565b600080600060608486031215613b8957600080fd5b8335613b9481613891565b92506020840135613ba481613891565b91506040840135613bb481613891565b809150509250925092565b60008060408385031215613bd257600080fd5b613bdb83613a94565b9150613be960208401613a94565b90509250929050565b600060208284031215613c0457600080fd5b8135612ee881613891565b60008060408385031215613c2257600080fd5b8235613c2d81613808565b915060208301356138e681613808565b600080600060608486031215613c5257600080fd5b833567ffffffffffffffff80821115613c6a57600080fd5b613c768783880161381d565b94506020860135915080821115613c8c57600080fd5b613c98878388016139d5565b93506040860135915080821115613cae57600080fd5b50613cbb868287016139d5565b9150509250925092565b600081518084526020808501945080840160005b83811015613cfe5781516001600160a01b031687529582019590820190600101613cd9565b509495945050505050565b604081526000613d1c6040830185613cc5565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613d97578160001904821115613d7d57613d7d613d2d565b80851615613d8a57918102915b93841c9390800290613d61565b509250929050565b600082613dae57506001610bc1565b81613dbb57506000610bc1565b8160018114613dd15760028114613ddb57613df7565b6001915050610bc1565b60ff841115613dec57613dec613d2d565b50506001821b610bc1565b5060208310610133831016604e8410600b8410161715613e1a575081810a610bc1565b613e248383613d5c565b8060001904821115613e3857613e38613d2d565b029392505050565b6000612ee860ff841683613d9f565b600082613e85577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000816000190483118215151615613ea457613ea4613d2d565b500290565b600082821015613ebb57613ebb613d2d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff811415613f0657613f06613d2d565b60010192915050565b60008219821115613f2257613f22613d2d565b500190565b600060208284031215613f3957600080fd5b5051919050565b600061ffff808316818516808303821115613f5d57613f5d613d2d565b01949350505050565b600060208284031215613f7857600080fd5b8151612ee881613808565b600060208284031215613f9557600080fd5b8151612ee881613891565b85815284602082015260a060408201526000613fbf60a0830186613cc5565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215613ff157600080fd5b8351925060208401519150604084015190509250925092565b600061ffff8381169083168181101561402557614025613d2d565b03939250505056fea26469706673582212204026cbf770c1535246b94229603d6c8bfb6997fe149316ab7ea6b1a4c5d60cd264736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106103855760003560e01c80635cce86cd116101d1578063b6f8f8dc11610102578063e8a0e3f9116100a0578063eec2744e1161006f578063eec2744e14610a58578063f94aa1b414610a78578063fdb78c0e14610a98578063fe575a8714610ab757600080fd5b8063e8a0e3f9146109e3578063eafb5a3c14610a03578063eb50e70e14610a23578063ee5d9c2d14610a4357600080fd5b8063cab5ebea116100dc578063cab5ebea14610936578063cf84770614610956578063dd62ed3e14610987578063e4fcfd18146109cd57600080fd5b8063b6f8f8dc146108d6578063bcd96a25146108f6578063c6a276c21461091657600080fd5b80638a8c523c1161016f578063a457c2d711610149578063a457c2d714610896578063a9059cbb146108b6578063b1b08f7114610586578063b3d514fb1461058657600080fd5b80638a8c523c146108815780638da5cb5b1461084e57806395d89b411461046057600080fd5b8063715018a6116101ab578063715018a61461081957806380c581d11461082e578063893d20e81461084e5780638a63bd9b1461086c57600080fd5b80635cce86cd146107955780636ebd0078146107ce57806370a08231146107e357600080fd5b8063313ce567116102b6578063452ed4f11161025457806350a8e0161161022357806350a8e0161461072157806355dbc36914610740578063590ffdce146107555780635c24b0741461077557600080fd5b8063452ed4f11461068e5780634ada218b146106ae5780634fb2e45d146106c85780634fbee193146106e857600080fd5b806334cd82601161029057806334cd82601461060e57806336fddb041461062e578063395093511461064e5780633f3cf56c1461066e57600080fd5b8063313ce567146105b257806332cde664146105ce57806333251a0b146105ee57600080fd5b80630fa604e41161032357806326003957116102fd57806326003957146105465780632610eaca146105665780632b28fc7a146105865780632e8fa8211461059c57600080fd5b80630fa604e4146104fc57806318160ddd1461051157806323b872dd1461052657600080fd5b8063069d955f1161035f578063069d955f1461040a57806306fdde03146104605780630758d924146104ac578063095ea7b3146104cc57600080fd5b806303fd2a45146103915780630445b667146103c457806305bbedb6146103e857600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a761dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103d057600080fd5b506103da60105481565b6040519081526020016103bb565b3480156103f457600080fd5b5061040861040336600461389f565b610ad7565b005b34801561041657600080fd5b5060085461043b9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103bb565b34801561046c57600080fd5b50604080518082018252600481527f5041575300000000000000000000000000000000000000000000000000000000602082015290516103bb91906138f1565b3480156104b857600080fd5b50600a546103a7906001600160a01b031681565b3480156104d857600080fd5b506104ec6104e7366004613946565b610bb0565b60405190151581526020016103bb565b34801561050857600080fd5b506103da610bc7565b34801561051d57600080fd5b506103da610be7565b34801561053257600080fd5b506104ec610541366004613972565b610c28565b34801561055257600080fd5b506104086105613660046139b3565b610ca0565b34801561057257600080fd5b50610408610581366004613a30565b610df3565b34801561059257600080fd5b506103da6107d081565b3480156105a857600080fd5b506103da60115481565b3480156105be57600080fd5b50604051600981526020016103bb565b3480156105da57600080fd5b506104086105e9366004613aab565b610f0d565b3480156105fa57600080fd5b50610408610609366004613aee565b611048565b34801561061a57600080fd5b50610408610629366004613b0b565b611119565b34801561063a57600080fd5b50610408610649366004613b46565b6111d8565b34801561065a57600080fd5b506104ec610669366004613946565b611251565b34801561067a57600080fd5b506104086106893660046139b3565b61128d565b34801561069a57600080fd5b50600b546103a7906001600160a01b031681565b3480156106ba57600080fd5b506014546104ec9060ff1681565b3480156106d457600080fd5b506104086106e3366004613aee565b6113e0565b3480156106f457600080fd5b506104ec610703366004613aee565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561072d57600080fd5b506014546104ec90610100900460ff1681565b34801561074c57600080fd5b506103da6115f9565b34801561076157600080fd5b50610408610770366004613b46565b611672565b34801561078157600080fd5b50610408610790366004613aee565b6116eb565b3480156107a157600080fd5b506104ec6107b0366004613aee565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107da57600080fd5b506103da61182a565b3480156107ef57600080fd5b506103da6107fe366004613aee565b6001600160a01b031660009081526001602052604090205490565b34801561082557600080fd5b50610408611845565b34801561083a57600080fd5b50610408610849366004613b46565b611900565b34801561085a57600080fd5b506000546001600160a01b03166103a7565b34801561087857600080fd5b506104ec611aaa565b34801561088d57600080fd5b50610408611b19565b3480156108a257600080fd5b506104ec6108b1366004613946565b611d03565b3480156108c257600080fd5b506104ec6108d1366004613946565b611d3a565b3480156108e257600080fd5b506104086108f1366004613b74565b611d51565b34801561090257600080fd5b50610408610911366004613bbf565b611e31565b34801561092257600080fd5b50610408610931366004613aee565b611f03565b34801561094257600080fd5b50610408610951366004613bf2565b611fa3565b34801561096257600080fd5b5060095461043b9061ffff808216916201000081048216916401000000009091041683565b34801561099357600080fd5b506103da6109a2366004613c0f565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156109d957600080fd5b506103da600e5481565b3480156109ef57600080fd5b506104086109fe366004613c3d565b612045565b348015610a0f57600080fd5b50610408610a1e366004613aee565b6121dd565b348015610a2f57600080fd5b50610408610a3e366004613aee565b6125ad565b348015610a4f57600080fd5b50610408612635565b348015610a6457600080fd5b50610408610a73366004613b46565b612718565b348015610a8457600080fd5b50600c546103a7906001600160a01b031681565b348015610aa457600080fd5b50600d546104ec90610100900460ff1681565b348015610ac357600080fd5b506104ec610ad2366004613aee565b6127c0565b6000546001600160a01b03163314610b2a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6014546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610b7a9085908590600401613d09565b600060405180830381600087803b158015610b9457600080fd5b505af1158015610ba8573d6000803e3d6000fd5b505050505050565b6000610bbd33848461284e565b5060015b92915050565b6000610bd56009600a613e40565b601354610be29190613e4f565b905090565b6000610bf56009600a613e40565b610c049064e8d4a51000613e8a565b610c0d57600080fd5b610c196009600a613e40565b610be29064e8d4a51000613e8a565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610c8d576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610c87908490613ea9565b90915550505b610c9884848461295b565b949350505050565b6000546001600160a01b03163314610cee5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6103e8610cfd6009600a613e40565b610d0c9064e8d4a51000613e8a565b610d169190613e4f565b8183610d246009600a613e40565b610d339064e8d4a51000613e8a565b610d3d9190613e8a565b610d479190613e4f565b1015610dbb5760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610b21565b8082610dc96009600a613e40565b610dd89064e8d4a51000613e8a565b610de29190613e8a565b610dec9190613e4f565b6013555050565b8051825114610e445760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b21565b60005b82518160ff161015610f0857818160ff1681518110610e6857610e68613ec0565b6020026020010151610e8f336001600160a01b031660009081526001602052604090205490565b1015610e9a57600080fd5b610ef533848360ff1681518110610eb357610eb3613ec0565b60200260200101516009600a610ec99190613e40565b858560ff1681518110610ede57610ede613ec0565b6020026020010151610ef09190613e8a565b61295b565b5080610f0081613eef565b915050610e47565b505050565b6000546001600160a01b03163314610f5b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6107d08361ffff1611158015610f7757506107d08261ffff1611155b8015610f8957506107d08161ffff1611155b610fd55760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b21565b6008805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146110965760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6014546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b1580156110fe57600080fd5b505af1158015611112573d6000803e3d6000fd5b5050505050565b6000546001600160a01b031633146111675760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b83856111756009600a613e40565b6111849064e8d4a51000613e8a565b61118e9190613e8a565b6111989190613e4f565b60105581836111a96009600a613e40565b6111b89064e8d4a51000613e8a565b6111c29190613e8a565b6111cc9190613e4f565b601155600e5550505050565b6000546001600160a01b031633146112265760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610bbd918590611288908690613f0f565b61284e565b6000546001600160a01b031633146112db5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6103e86112ea6009600a613e40565b6112f99064e8d4a51000613e8a565b6113039190613e4f565b81836113116009600a613e40565b6113209064e8d4a51000613e8a565b61132a9190613e8a565b6113349190613e4f565b10156113a85760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b21565b80826113b66009600a613e40565b6113c59064e8d4a51000613e8a565b6113cf9190613e8a565b6113d99190613e4f565b6012555050565b6000546001600160a01b0316331461142e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6001600160a01b0381166114aa5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b21565b6001600160a01b03811661dead141561152b5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b21565b60008054611544916001600160a01b0390911690611672565b61154f816001611672565b600080546001600160a01b03168152600160205260409020541561159657600080546001600160a01b031680825260016020526040909120546115949190839061295b565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000601460029054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be29190613f27565b6000546001600160a01b031633146116c05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117395760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b601454610100900460ff16156117915760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920697320616c726561647920696e2e00000000000000006044820152606401610b21565b6001600160a01b0381163014156117ea5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b21565b601480546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60006118386009600a613e40565b601254610be29190613e4f565b6000546001600160a01b031633146118935760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b600080546118ac916001600160a01b0390911690611672565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b0316331461194e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b806119c5576001600160a01b03828116600081815260026020526040808220805460ff1916905560145490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610b7a565b60035415611a2c576203f480600354426119df9190613ea9565b11611a2c5760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610b21565b6001600160a01b0382811660008181526002602052604090819020805460ff191660019081179091554260035560145491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610b7a565b5050565b600080546001600160a01b03163314611af95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b600a54611b139030906001600160a01b031660001961284e565b50600190565b6000546001600160a01b03163314611b675760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b60145460ff1615611bba5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b21565b601454610100900460ff16611c115760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b21565b6014546201000090046001600160a01b0316611c5757601480547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601454600b546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611ce257600080fd5b505af1925050508015611cf3575060015b506014805460ff19166001179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610bbd918590611288908690613ea9565b6000611d4733848461295b565b5060019392505050565b6000546001600160a01b03163314611d9f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6014546040517f6a34b758000000000000000000000000000000000000000000000000000000008152841515600482015283151560248201528215156044820152620100009091046001600160a01b031690636a34b75890606401600060405180830381600087803b158015611e1457600080fd5b505af1158015611e28573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b03163314611e7f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6009805461ffff83811662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090921690851617179055611ec38183613f40565b6009805461ffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff9092169190911790555050565b6000546001600160a01b03163314611f515760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6014546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c2906024016110e4565b6000546001600160a01b03163314611ff15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b600d80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579061203a90831515815260200190565b60405180910390a150565b81518351148015612057575080518251145b6120a35760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b21565b60005b83518160ff1610156121d757818160ff16815181106120c7576120c7613ec0565b6020026020010151838260ff16815181106120e4576120e4613ec0565b60200260200101516009600a6120fa9190613e40565b6121099064e8d4a51000613e8a565b6121139190613e8a565b61211d9190613e4f565b33600090815260016020526040902054101561213857600080fd5b6121c433858360ff168151811061215157612151613ec0565b6020026020010151848460ff168151811061216e5761216e613ec0565b6020026020010151868560ff168151811061218b5761218b613ec0565b60200260200101516009600a6121a19190613e40565b6121b09064e8d4a51000613e8a565b6121ba9190613e8a565b610ef09190613e4f565b50806121cf81613eef565b9150506120a6565b50505050565b6000546001600160a01b0316331461222b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612270573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122949190613f66565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123059190613f66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612368573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238c9190613f66565b90506001600160a01b03811661253557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123fe9190613f66565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561244b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246f9190613f66565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156124d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f89190613f66565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055612569565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155610f0890309060001961284e565b6000546001600160a01b031633146125fb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000546001600160a01b031633146126835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b601454610100900460ff16156126db5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b21565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612715573d6000803e3d6000fd5b50565b6000546001600160a01b031633146127665760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610b21565b6014546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610b7a565b6014546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa15801561282a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc19190613f83565b6001600160a01b0383166128a45760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b21565b6001600160a01b0382166128fa5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610b21565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166129d95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610b21565b6001600160a01b038316612a555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610b21565b60008211612acb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610b21565b612ad58484612e1a565b15612d2c5760145460ff16612b2c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b21565b6001600160a01b03841660009081526002602052604090205460ff1680612b6b57506001600160a01b03831660009081526002602052604090205460ff165b15612c2f576001600160a01b03841660009081526006602052604090205460ff16158015612bb257506001600160a01b03831660009081526006602052604090205460ff16155b15612c2f57601254821115612c2f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610b21565b600a546001600160a01b03848116911614801590612c6657506001600160a01b03831660009081526002602052604090205460ff16155b15612d2c576001600160a01b03831660009081526006602052604090205460ff16612d2c5760135482612cae856001600160a01b031660009081526001602052604090205490565b612cb89190613f0f565b1115612d2c5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610b21565b6001600160a01b03841660009081526005602052604090205460019060ff1680612d6e57506001600160a01b03841660009081526005602052604090205460ff165b15612d77575060005b6001600160a01b03841660009081526002602052604090205460ff1615612e0557600d5460ff16158015612db25750600d54610100900460ff165b15612e055742600e54600f54612dc89190613f0f565b1015612e0557306000908152600160205260409020546010548110612e03576011548110612df557506011545b612dfe81612eef565b42600f555b505b612e11858585846132df565b95945050505050565b600080546001600160a01b03848116911614801590612e4757506000546001600160a01b03838116911614155b8015612e5e57506000546001600160a01b03163214155b8015612e8357506001600160a01b03821660009081526007602052604090205460ff16155b8015612ea857506001600160a01b03831660009081526007602052604090205460ff16155b8015612ebf57506001600160a01b03821661dead14155b8015612ed357506001600160a01b03821615155b8015612ee857506001600160a01b0383163014155b9392505050565b600d805460ff191660011790556040805160608101825260095461ffff8082168352620100008204811660208401526401000000009091041691810182905290612f3957506132d2565b306000908152600460209081526040808320600a546001600160a01b0316845290915290205460001914612f9257306000908152600460209081526040808320600a546001600160a01b03168452909152902060001990555b60006002826040015161ffff16836000015161ffff1685612fb39190613e8a565b612fbd9190613e4f565b612fc79190613e4f565b90506000612fd58285613ea9565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061300f5761300f613ec0565b6001600160a01b03928316602091820292909201810191909152600a54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613081573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a59190613f66565b816001815181106130b8576130b8613ec0565b6001600160a01b039283166020918202929092010152600a546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613117908590600090869030904290600401613fa0565b600060405180830381600087803b15801561313157600080fd5b505af1158015613145573d6000803e3d6000fd5b504792506000915084905061315a8684613e8a565b6131649190613e4f565b9050841561325557600a546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156131f3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132189190613fdc565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b61325f8183613ea9565b9150856000015186604001818151613277919061400a565b61ffff908116909152602088015184925016156132ca57600c546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156132c8573d6000803e3d6000fd5b505b505050505050505b50600d805460ff19169055565b601454600090610100900460ff1661338b576132fb858561351b565b601454610100900460ff1615801561331857506133188585612e1a565b1561338b5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610b21565b6133958585612e1a565b15613448576014546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152868116602483015260448201869052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613431575060408051601f3d908101601f1916820190925261342e91810190613f83565b60015b61343a57600080fd5b90508061344657600080fd5b505b6001600160a01b03851660009081526001602052604081208054859290613470908490613ea9565b909155506000905082613483578361348e565b61348e868686613679565b6001600160a01b0386166000908152600160205260408120805492935083929091906134bb908490613f0f565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161350791815260200190565b60405180910390a350600195945050505050565b601454610100900460ff16156135995760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610b21565b6135a38282612e1a565b1580156135bd5750600b546001600160a01b038281169116145b15611aa6576001600160a01b038083166000908152600760205260409020805460ff191660011790556014805461ff00191661010017908190556201000090041661363257601480547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b600d805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b6001600160a01b038316600090815260026020526040812054819060ff16156136a9575060085461ffff166136ee565b6001600160a01b03841660009081526002602052604090205460ff16156136dd575060085462010000900461ffff166136ee565b50600854640100000000900461ffff165b60006127106136fd8386613e8a565b6137079190613e4f565b3060009081526001602052604081208054929350839290919061372b908490613f0f565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361377a8185613ea9565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156137dc576137dc613784565b604052919050565b600067ffffffffffffffff8211156137fe576137fe613784565b5060051b60200190565b6001600160a01b038116811461271557600080fd5b600082601f83011261382e57600080fd5b8135602061384361383e836137e4565b6137b3565b82815260059290921b8401810191818101908684111561386257600080fd5b8286015b8481101561388657803561387981613808565b8352918301918301613866565b509695505050505050565b801515811461271557600080fd5b600080604083850312156138b257600080fd5b823567ffffffffffffffff8111156138c957600080fd5b6138d58582860161381d565b92505060208301356138e681613891565b809150509250929050565b600060208083528351808285015260005b8181101561391e57858101830151858201604001528201613902565b81811115613930576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561395957600080fd5b823561396481613808565b946020939093013593505050565b60008060006060848603121561398757600080fd5b833561399281613808565b925060208401356139a281613808565b929592945050506040919091013590565b600080604083850312156139c657600080fd5b50508035926020909101359150565b600082601f8301126139e657600080fd5b813560206139f661383e836137e4565b82815260059290921b84018101918181019086841115613a1557600080fd5b8286015b848110156138865780358352918301918301613a19565b60008060408385031215613a4357600080fd5b823567ffffffffffffffff80821115613a5b57600080fd5b613a678683870161381d565b93506020850135915080821115613a7d57600080fd5b50613a8a858286016139d5565b9150509250929050565b803561ffff81168114613aa657600080fd5b919050565b600080600060608486031215613ac057600080fd5b613ac984613a94565b9250613ad760208501613a94565b9150613ae560408501613a94565b90509250925092565b600060208284031215613b0057600080fd5b8135612ee881613808565b600080600080600060a08688031215613b2357600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215613b5957600080fd5b8235613b6481613808565b915060208301356138e681613891565b600080600060608486031215613b8957600080fd5b8335613b9481613891565b92506020840135613ba481613891565b91506040840135613bb481613891565b809150509250925092565b60008060408385031215613bd257600080fd5b613bdb83613a94565b9150613be960208401613a94565b90509250929050565b600060208284031215613c0457600080fd5b8135612ee881613891565b60008060408385031215613c2257600080fd5b8235613c2d81613808565b915060208301356138e681613808565b600080600060608486031215613c5257600080fd5b833567ffffffffffffffff80821115613c6a57600080fd5b613c768783880161381d565b94506020860135915080821115613c8c57600080fd5b613c98878388016139d5565b93506040860135915080821115613cae57600080fd5b50613cbb868287016139d5565b9150509250925092565b600081518084526020808501945080840160005b83811015613cfe5781516001600160a01b031687529582019590820190600101613cd9565b509495945050505050565b604081526000613d1c6040830185613cc5565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613d97578160001904821115613d7d57613d7d613d2d565b80851615613d8a57918102915b93841c9390800290613d61565b509250929050565b600082613dae57506001610bc1565b81613dbb57506000610bc1565b8160018114613dd15760028114613ddb57613df7565b6001915050610bc1565b60ff841115613dec57613dec613d2d565b50506001821b610bc1565b5060208310610133831016604e8410600b8410161715613e1a575081810a610bc1565b613e248383613d5c565b8060001904821115613e3857613e38613d2d565b029392505050565b6000612ee860ff841683613d9f565b600082613e85577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000816000190483118215151615613ea457613ea4613d2d565b500290565b600082821015613ebb57613ebb613d2d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff811415613f0657613f06613d2d565b60010192915050565b60008219821115613f2257613f22613d2d565b500190565b600060208284031215613f3957600080fd5b5051919050565b600061ffff808316818516808303821115613f5d57613f5d613d2d565b01949350505050565b600060208284031215613f7857600080fd5b8151612ee881613808565b600060208284031215613f9557600080fd5b8151612ee881613891565b85815284602082015260a060408201526000613fbf60a0830186613cc5565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215613ff157600080fd5b8351925060208401519150604084015190509250925092565b600061ffff8381169083168181101561402557614025613d2d565b03939250505056fea26469706673582212204026cbf770c1535246b94229603d6c8bfb6997fe149316ab7ea6b1a4c5d60cd264736f6c634300080b0033

Deployed Bytecode Sourcemap

6716:20206:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8239:73;;;;;;;;;;;;8270:42;8239:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;8239:73:0;;;;;;;;8679:52;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;8679:52:0;245:177:1;16187:172:0;;;;;;;;;;-1:-1:-1;16187:172:0;;;;;:::i;:::-;;:::i;:::-;;7730:116;;;;;;;;;;-1:-1:-1;7730:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;2855:6:1;2888:15;;;2870:34;;2940:15;;;2935:2;2920:18;;2913:43;2992:15;;2972:18;;;2965:43;;;;2833:2;2818:18;7730:116:0;2649:365:1;12670:80:0;;;;;;;;;;-1:-1:-1;12742:5:0;;;;;;;;;;;;;;;;12670:80;;;;12742:5;12670:80;:::i;8176:26::-;;;;;;;;;;-1:-1:-1;8176:26:0;;;;-1:-1:-1;;;;;8176:26:0;;;13283:161;;;;;;;;;;-1:-1:-1;13283:161:0;;;;;:::i;:::-;;:::i;:::-;;;4413:14:1;;4406:22;4388:41;;4376:2;4361:18;13283:161:0;4248:187:1;18882:112:0;;;;;;;;;;;;;:::i;12373:115::-;;;;;;;;;;;;;:::i;13950:306::-;;;;;;;;;;-1:-1:-1;13950:306:0;;;;;:::i;:::-;;:::i;17932:267::-;;;;;;;;;;-1:-1:-1;17932:267:0;;;;;:::i;:::-;;:::i;24565:373::-;;;;;;;;;;-1:-1:-1;24565:373:0;;;;;:::i;:::-;;:::i;7973:42::-;;;;;;;;;;;;8011:4;7973:42;;8738:48;;;;;;;;;;;;;;;;12494:80;;;;;;;;;;-1:-1:-1;12494:80:0;;7435:1;6563:36:1;;6551:2;6536:18;12494:80:0;6421:184:1;17032:397:0;;;;;;;;;;-1:-1:-1;17032:397:0;;;;;:::i;:::-;;:::i;16738:108::-;;;;;;;;;;-1:-1:-1;16738:108:0;;;;;:::i;:::-;;:::i;19002:338::-;;;;;;;;;;-1:-1:-1;19002:338:0;;;;;:::i;:::-;;:::i;18207:140::-;;;;;;;;;;-1:-1:-1;18207:140:0;;;;;:::i;:::-;;:::i;14264:215::-;;;;;;;;;;-1:-1:-1;14264:215:0;;;;;:::i;:::-;;:::i;17655:269::-;;;;;;;;;;-1:-1:-1;17655:269:0;;;;;:::i;:::-;;:::i;8209:21::-;;;;;;;;;;-1:-1:-1;8209:21:0;;;;-1:-1:-1;;;;;8209:21:0;;;8914:34;;;;;;;;;;-1:-1:-1;8914:34:0;;;;;;;;11227:590;;;;;;;;;;-1:-1:-1;11227:590:0;;;;;:::i;:::-;;:::i;18493:125::-;;;;;;;;;;-1:-1:-1;18493:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;18582:28:0;18558:4;18582:28;;;:19;:28;;;;;;;;;18493:125;8955:36;;;;;;;;;;-1:-1:-1;8955:36:0;;;;;;;;;;;16626:104;;;;;;;;;;;;;:::i;18626:134::-;;;;;;;;;;-1:-1:-1;18626:134:0;;;;;:::i;:::-;;:::i;15778:248::-;;;;;;;;;;-1:-1:-1;15778:248:0;;;;;:::i;:::-;;:::i;18355:130::-;;;;;;;;;;-1:-1:-1;18355:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;18447:30:0;18423:4;18447:30;;;:21;:30;;;;;;;;;18355:130;18768:106;;;;;;;;;;;;;:::i;12983:117::-;;;;;;;;;;-1:-1:-1;12983:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;13076:16:0;13049:7;13076:16;;;:7;:16;;;;;;;12983:117;11825:195;;;;;;;;;;;;;:::i;15270:500::-;;;;;;;;;;-1:-1:-1;15270:500:0;;;;;:::i;:::-;;:::i;12756:80::-;;;;;;;;;;-1:-1:-1;12808:7:0;11205:6;-1:-1:-1;;;;;11205:6:0;12756:80;18882:112;13769:173;;;;;;;;;;;;;:::i;23937:429::-;;;;;;;;;;;;;:::i;14487:225::-;;;;;;;;;;-1:-1:-1;14487:225:0;;;;;:::i;:::-;;:::i;13108:167::-;;;;;;;;;;-1:-1:-1;13108:167:0;;;;;:::i;:::-;;:::i;16854:170::-;;;;;;;;;;-1:-1:-1;16854:170:0;;;;;:::i;:::-;;:::i;17437:210::-;;;;;;;;;;-1:-1:-1;17437:210:0;;;;;:::i;:::-;;:::i;16367:118::-;;;;;;;;;;-1:-1:-1;16367:118:0;;;;;:::i;:::-;;:::i;19483:165::-;;;;;;;;;;-1:-1:-1;19483:165:0;;;;;:::i;:::-;;:::i;7855:109::-;;;;;;;;;;-1:-1:-1;7855:109:0;;;;;;;;;;;;;;;;;;;;;;12842:133;;;;;;;;;;-1:-1:-1;12842:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12944:19:0;;;12926:7;12944:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12842:133;8596:45;;;;;;;;;;;;;;;;24946:482;;;;;;;;;;-1:-1:-1;24946:482:0;;;;;:::i;:::-;;:::i;14720:542::-;;;;;;;;;;-1:-1:-1;14720:542:0;;;;;:::i;:::-;;:::i;19348:127::-;;;;;;;;;;-1:-1:-1;19348:127:0;;;;;:::i;:::-;;:::i;24374:183::-;;;;;;;;;;;;;:::i;16034:145::-;;;;;;;;;;-1:-1:-1;16034:145:0;;;;;:::i;:::-;;:::i;8391:128::-;;;;;;;;;;-1:-1:-1;8391:128:0;;;;-1:-1:-1;;;;;8391:128:0;;;8550:39;;;;;;;;;;-1:-1:-1;8550:39:0;;;;;;;;;;;16493:125;;;;;;;;;;-1:-1:-1;16493:125:0;;;;;:::i;:::-;;:::i;16187:172::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;;;;;;;;;16295:9:::1;::::0;:56:::1;::::0;;;;:9;;;::::1;-1:-1:-1::0;;;;;16295:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;16333:8;;16343:7;;16295:56:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16187:172:::0;;:::o;13283:161::-;13358:4;13375:39;379:10;13398:7;13407:6;13375:8;:39::i;:::-;-1:-1:-1;13432:4:0;13283:161;;;;;:::o;18882:112::-;18927:7;18972:13;7435:1;18972:2;:13;:::i;:::-;18954:14;;:32;;;;:::i;:::-;18947:39;;18882:112;:::o;12373:115::-;12428:7;7495:13;7435:1;7495:2;:13;:::i;:::-;7478:30;;7284:17;7478:30;:::i;:::-;12439:31;;12459:8;;;12439:31;7495:13;7435:1;7495:2;:13;:::i;:::-;7478:30;;7284:17;7478:30;:::i;13950:306::-;-1:-1:-1;;;;;14071:19:0;;14050:4;14071:19;;;:11;:19;;;;;;;;14091:10;14071:31;;;;;;;;-1:-1:-1;;14071:52:0;14067:126;;-1:-1:-1;;;;;14140:19:0;;;;;;:11;:19;;;;;;;;14160:10;14140:31;;;;;;;:41;;14175:6;;14140:19;:41;;14175:6;;14140:41;:::i;:::-;;;;-1:-1:-1;;14067:126:0;14212:36;14222:6;14230:9;14241:6;14212:9;:36::i;:::-;14205:43;13950:306;-1:-1:-1;;;;13950:306:0:o;17932:267::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;18074:4:::1;7495:13;7435:1;7495:2;:13;:::i;:::-;7478:30;::::0;7284:17:::1;7478:30;:::i;:::-;18064:14;;;;:::i;:::-;18052:7:::0;18041;7495:13:::1;7435:1;7495:2;:13;:::i;:::-;7478:30;::::0;7284:17:::1;7478:30;:::i;:::-;18031:17;;;;:::i;:::-;18030:29;;;;:::i;:::-;:49;;18022:112;;;::::0;-1:-1:-1;;;18022:112:0;;14672:2:1;18022:112:0::1;::::0;::::1;14654:21:1::0;14711:2;14691:18;;;14684:30;14750:34;14730:18;;;14723:62;14821:20;14801:18;;;14794:48;14859:19;;18022:112:0::1;14470:414:1::0;18022:112:0::1;18184:7:::0;18173;7495:13:::1;7435:1;7495:2;:13;:::i;:::-;7478:30;::::0;7284:17:::1;7478:30;:::i;:::-;18163:17;;;;:::i;:::-;18162:29;;;;:::i;:::-;18145:14;:46:::0;-1:-1:-1;;17932:267:0:o;24565:373::-;24690:7;:14;24671:8;:15;:33;24663:67;;;;-1:-1:-1;;;24663:67:0;;15091:2:1;24663:67:0;;;15073:21:1;15130:2;15110:18;;;15103:30;15169:23;15149:18;;;15142:51;15210:18;;24663:67:0;14889:345:1;24663:67:0;24746:7;24741:190;24763:8;:15;24759:1;:19;;;24741:190;;;24833:7;24841:1;24833:10;;;;;;;;;;:::i;:::-;;;;;;;24808:21;24818:10;-1:-1:-1;;;;;13076:16:0;13049:7;13076:16;;;:7;:16;;;;;;;12983:117;24808:21;:35;;24800:44;;;;;;24859:60;24869:10;24881:8;24890:1;24881:11;;;;;;;;;;:::i;:::-;;;;;;;7435:1;24905:2;:13;;;;:::i;:::-;24894:7;24902:1;24894:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24859:9;:60::i;:::-;-1:-1:-1;24780:3:0;;;;:::i;:::-;;;;24741:190;;;;24565:373;;:::o;17032:397::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;8011:4:::1;17139:6;:21;;;;:65;;;;;8061:4;17181:7;:23;;;;17139:65;:117;;;;;8115:4;17225:11;:31;;;;17139:117;17131:170;;;::::0;-1:-1:-1;;;17131:170:0;;15810:2:1;17131:170:0::1;::::0;::::1;15792:21:1::0;15849:2;15829:18;;;15822:30;15888:25;15868:18;;;15861:53;15931:18;;17131:170:0::1;15608:347:1::0;17131:170:0::1;17312:9;:25:::0;;::::1;::::0;;::::1;17348:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;17386:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;17032:397::o;16738:108::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;16807:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;16807:31:0::1;::::0;::::1;160:74:1::0;16807:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;16807:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16738:108:::0;:::o;19002:338::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;19216:16;19196;7495:13:::1;7435:1;7495:2;:13;:::i;:::-;7478:30;::::0;7284:17:::1;7478:30;:::i;:::-;19186:26;;;;:::i;:::-;19185:47;;;;:::i;:::-;19169:13;:63:::0;19284:13;19267;7495::::1;7435:1;7495:2;:13;:::i;:::-;7478:30;::::0;7284:17:::1;7478:30;:::i;:::-;19257:23;;;;:::i;:::-;19256:41;;;;:::i;:::-;19243:10;:54:::0;19308:17:::1;:24:::0;-1:-1:-1;;;;19002:338:0:o;18207:140::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;-1:-1:-1;;;;;18299:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;18299:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18207:140::o;14264:215::-;379:10;14352:4;14401:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14401:34:0;;;;;;;;;;14352:4;;14369:80;;14392:7;;14401:47;;14438:10;;14401:47;:::i;:::-;14369:8;:80::i;17655:269::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;17796:4:::1;7495:13;7435:1;7495:2;:13;:::i;:::-;7478:30;::::0;7284:17:::1;7478:30;:::i;:::-;17786:14;;;;:::i;:::-;17774:7:::0;17763;7495:13:::1;7435:1;7495:2;:13;:::i;:::-;7478:30;::::0;7284:17:::1;7478:30;:::i;:::-;17753:17;;;;:::i;:::-;17752:29;;;;:::i;:::-;:49;;17744:117;;;::::0;-1:-1:-1;;;17744:117:0;;16295:2:1;17744:117:0::1;::::0;::::1;16277:21:1::0;16334:2;16314:18;;;16307:30;16373:34;16353:18;;;16346:62;16444:25;16424:18;;;16417:53;16487:19;;17744:117:0::1;16093:419:1::0;17744:117:0::1;17909:7:::0;17898;7495:13:::1;7435:1;7495:2;:13;:::i;:::-;7478:30;::::0;7284:17:::1;7478:30;:::i;:::-;17888:17;;;;:::i;:::-;17887:29;;;;:::i;:::-;17872:12;:44:::0;-1:-1:-1;;17655:269:0:o;11227:590::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;-1:-1:-1;;;;;11308:22:0;::::1;11300:96;;;::::0;-1:-1:-1;;;11300:96:0;;16719:2:1;11300:96:0::1;::::0;::::1;16701:21:1::0;16758:2;16738:18;;;16731:30;16797:34;16777:18;;;16770:62;16868:31;16848:18;;;16841:59;16917:19;;11300:96:0::1;16517:425:1::0;11300:96:0::1;-1:-1:-1::0;;;;;11415:16:0;::::1;8270:42;11415:16;;11407:90;;;::::0;-1:-1:-1;;;11407:90:0;;16719:2:1;11407:90:0::1;::::0;::::1;16701:21:1::0;16758:2;16738:18;;;16731:30;16797:34;16777:18;;;16770:62;16868:31;16848:18;;;16841:59;16917:19;;11407:90:0::1;16517:425:1::0;11407:90:0::1;11528:6;::::0;;11508:34:::1;::::0;-1:-1:-1;;;;;11528:6:0;;::::1;::::0;11508:19:::1;:34::i;:::-;11553:35;11573:8;11583:4;11553:19;:35::i;:::-;11632:1;11622:6:::0;;-1:-1:-1;;;;;11622:6:0::1;13076:16:::0;;:7;:16;;;;;;11612:21;11609:99:::1;;11660:6;::::0;;-1:-1:-1;;;;;11660:6:0::1;13076:16:::0;;;:7;:16;;;;;;;11650:46:::1;::::0;11660:6;11668:8;;24859:9;:60::i;11650:46::-:1;;11609:99;11728:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;11728:17:0;::::1;::::0;;::::1;::::0;;11761:38:::1;::::0;11728:17;;;;11761:38:::1;::::0;11728:6;11761:38:::1;11227:590:::0;:::o;16626:104::-;16671:7;16698:9;;;;;;;;;-1:-1:-1;;;;;16698:9:0;-1:-1:-1;;;;;16698:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18626:134::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;-1:-1:-1;;;;;18714:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;18714:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18626:134::o;15778:248::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;15862:16:::1;::::0;::::1;::::0;::::1;;;15861:17;15853:54;;;::::0;-1:-1:-1;;;15853:54:0;;17338:2:1;15853:54:0::1;::::0;::::1;17320:21:1::0;17377:2;17357:18;;;17350:30;17416:26;17396:18;;;17389:54;17460:18;;15853:54:0::1;17136:348:1::0;15853:54:0::1;-1:-1:-1::0;;;;;15926:28:0;::::1;15949:4;15926:28;;15918:55;;;::::0;-1:-1:-1;;;15918:55:0;;17691:2:1;15918:55:0::1;::::0;::::1;17673:21:1::0;17730:2;17710:18;;;17703:30;17769:16;17749:18;;;17742:44;17803:18;;15918:55:0::1;17489:338:1::0;15918:55:0::1;15984:9;:34:::0;;-1:-1:-1;;;;;15984:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;15778:248::o;18768:106::-;18809:7;18852:13;7435:1;18852:2;:13;:::i;:::-;18836:12;;:30;;;;:::i;11825:195::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;11912:6:::1;::::0;;11892:34:::1;::::0;-1:-1:-1;;;;;11912:6:0;;::::1;::::0;11892:19:::1;:34::i;:::-;11954:1;11937:19:::0;;;::::1;::::0;;11972:40:::1;::::0;11954:1;;11972:40:::1;::::0;11954:1;;11972:40:::1;11825:195::o:0;15270:500::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;15351:16;15347:416:::1;;-1:-1:-1::0;;;;;15384:13:0;;::::1;15400:5;15384:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;15384:21:0::1;::::0;;15420:9:::1;::::0;:32;;;;;::::1;::::0;::::1;18000:74:1::0;;;;18090:18;;;18083:50;;;;15420:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;17973:18:1;;15420:32:0::1;17832:307:1::0;15347:416:0::1;15489:17;::::0;:22;15485:136:::1;;15578:6;15558:17;;15540:15;:35;;;;:::i;:::-;:44;15532:73;;;::::0;-1:-1:-1;;;15532:73:0;;18346:2:1;15532:73:0::1;::::0;::::1;18328:21:1::0;18385:2;18365:18;;;18358:30;18424:18;18404;;;18397:46;18460:18;;15532:73:0::1;18144:340:1::0;15532:73:0::1;-1:-1:-1::0;;;;;15635:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;15635:20:0::1;15651:4;15635:20:::0;;::::1;::::0;;;15690:15:::1;15670:17;:35:::0;15720:9:::1;::::0;:31;;;;;::::1;::::0;::::1;18000:74:1::0;;;;18090:18;;;18083:50;15720:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;17973:18:1;;15720:31:0::1;17832:307:1::0;15347:416:0::1;15270:500:::0;;:::o;13769:173::-;13833:4;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;13882:9:::1;::::0;13850:62:::1;::::0;13867:4:::1;::::0;-1:-1:-1;;;;;13882:9:0::1;-1:-1:-1::0;;13850:8:0::1;:62::i;:::-;-1:-1:-1::0;13930:4:0::1;13769:173:::0;:::o;23937:429::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;23999:14:::1;::::0;::::1;;23998:15;23990:52;;;::::0;-1:-1:-1;;;23990:52:0;;18691:2:1;23990:52:0::1;::::0;::::1;18673:21:1::0;18730:2;18710:18;;;18703:30;18769:26;18749:18;;;18742:54;18813:18;;23990:52:0::1;18489:348:1::0;23990:52:0::1;24061:16;::::0;::::1;::::0;::::1;;;24053:53;;;::::0;-1:-1:-1;;;24053:53:0;;19044:2:1;24053:53:0::1;::::0;::::1;19026:21:1::0;19083:2;19063:18;;;19056:30;19122:26;19102:18;;;19095:54;19166:18;;24053:53:0::1;18842:348:1::0;24053:53:0::1;24128:9;::::0;;;::::1;-1:-1:-1::0;;;;;24128:9:0::1;24117:99;;24168:9;:36:::0;;;::::1;24198:4;24168:36:::0;::::1;;::::0;;24117:99:::1;24230:9;::::0;24250:6:::1;::::0;24230:85:::1;::::0;;;;-1:-1:-1;;;;;24250:6:0;;::::1;24230:85;::::0;::::1;19418:74:1::0;19540:10;24265:12:0::1;19528:23:1::0;19508:18;;;19501:51;19600:18;24287:15:0::1;19588:31:1::0;19568:18;;;19561:59;7435:1:0::1;19636:18:1::0;;;19629:45;24230:9:0;;;::::1;;::::0;:19:::1;::::0;19390::1;;24230:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24226:101:::0;24337:14:::1;:21:::0;;-1:-1:-1;;24337:21:0::1;24354:4;24337:21;::::0;;23937:429::o;14487:225::-;379:10;14580:4;14629:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14629:34:0;;;;;;;;;;14580:4;;14597:85;;14620:7;;14629:52;;14666:15;;14629:52;:::i;13108:167::-;13186:4;13203:42;379:10;13227:9;13238:6;13203:9;:42::i;:::-;-1:-1:-1;13263:4:0;;13108:167;-1:-1:-1;;;13108:167:0:o;16854:170::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;16961:9:::1;::::0;:55:::1;::::0;;;;19894:14:1;;19887:22;16961:55:0::1;::::0;::::1;19869:41:1::0;19953:14;;19946:22;19926:18;;;19919:50;20012:14;;20005:22;19985:18;;;19978:50;16961:9:0;;;::::1;-1:-1:-1::0;;;;;16961:9:0::1;::::0;:24:::1;::::0;19842:18:1;;16961:55:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16854:170:::0;;;:::o;17437:210::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;17522:7:::1;:29:::0;;::::1;17562::::0;;::::1;::::0;::::1;::::0;;;;17522;;::::1;17562::::0;::::1;::::0;;17618:21:::1;17582:9:::0;17542;17618:21:::1;:::i;:::-;17602:7;:37:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;17437:210:0:o;16367:118::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;16441:9:::1;::::0;:36:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;16441:36:0::1;::::0;::::1;160:74:1::0;16441:9:0;;;::::1;::::0;;::::1;::::0;:27:::1;::::0;133:18:1;;16441:36:0::1;14:226:1::0;19483:165:0;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;19558:19:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;19558:30:0;;::::1;;::::0;;19604:36:::1;::::0;::::1;::::0;::::1;::::0;19580:8;4413:14:1;4406:22;4388:41;;4376:2;4361:18;;4248:187;19604:36:0::1;;;;;;;;19483:165:::0;:::o;24946:482::-;25101:8;:15;25082:8;:15;:34;:72;;;;;25139:8;:15;25120:8;:15;:34;25082:72;25074:106;;;;-1:-1:-1;;;25074:106:0;;15091:2:1;25074:106:0;;;15073:21:1;15130:2;15110:18;;;15103:30;15169:23;15149:18;;;15142:51;15210:18;;25074:106:0;14889:345:1;25074:106:0;25196:7;25191:230;25213:8;:15;25209:1;:19;;;25191:230;;;25309:8;25318:1;25309:11;;;;;;;;;;:::i;:::-;;;;;;;25294:8;25303:1;25294:11;;;;;;;;;;:::i;:::-;;;;;;;7435:1;7495:2;:13;;;;:::i;:::-;7478:30;;7284:17;7478:30;:::i;:::-;25284:21;;;;:::i;:::-;25283:37;;;;:::i;:::-;25268:10;13049:7;13076:16;;;:7;:16;;;;;;25258:62;;25250:71;;;;;;25336:73;25346:10;25358:8;25367:1;25358:11;;;;;;;;;;:::i;:::-;;;;;;;25397:8;25406:1;25397:11;;;;;;;;;;:::i;:::-;;;;;;;25382:8;25391:1;25382:11;;;;;;;;;;:::i;:::-;;;;;;;7435:1;7495:2;:13;;;;:::i;:::-;7478:30;;7284:17;7478:30;:::i;:::-;25372:21;;;;:::i;:::-;25371:37;;;;:::i;25336:73::-;-1:-1:-1;25230:3:0;;;;:::i;:::-;;;;25191:230;;;;24946:482;;;:::o;14720:542::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;14791:20:::1;14824:9;14791:43;;14845:16;14875:10;-1:-1:-1::0;;;;;14875:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14864:40:0::1;;14913:4;14920:10;-1:-1:-1::0;;;;;14920:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14864:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;20777:15:1;;;14864:74:0::1;::::0;::::1;20759:34:1::0;20829:15;;20809:18;;;20802:43;20671:18;;14864:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14845:93:::0;-1:-1:-1;;;;;;14953:22:0;::::1;14949:200;;15012:10;-1:-1:-1::0;;;;;15012:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15001:43:0::1;;15053:4;15060:10;-1:-1:-1::0;;;;;15060:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15001:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;20777:15:1;;;15001:77:0::1;::::0;::::1;20759:34:1::0;20829:15;;20809:18;;;20802:43;20671:18;;15001:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14992:6;:86:::0;;;::::1;-1:-1:-1::0;;;;;14992:86:0;;;::::1;::::0;;;::::1;::::0;;14949:200:::1;;;15120:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;15120:17:0;::::1;;::::0;;14949:200:::1;15159:9;:22:::0;;;::::1;-1:-1:-1::0;;;;;15159:22:0;::::1;::::0;;::::1;::::0;;;15192:62:::1;::::0;15209:4:::1;::::0;-1:-1:-1;;15192:8:0::1;:62::i;19348:127::-:0;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;19425:11:::1;:42:::0;;;::::1;-1:-1:-1::0;;;;;19425:42:0;;;::::1;::::0;;;::::1;::::0;;19348:127::o;24374:183::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;24441:16:::1;::::0;::::1;::::0;::::1;;;24440:17;24432:58;;;::::0;-1:-1:-1;;;24432:58:0;;21058:2:1;24432:58:0::1;::::0;::::1;21040:21:1::0;21097:2;21077:18;;;21070:30;21136;21116:18;;;21109:58;21184:18;;24432:58:0::1;20856:352:1::0;24432:58:0::1;11178:7:::0;11205:6;;24501:48:::1;::::0;-1:-1:-1;;;;;11205:6:0;;;;24527:21:::1;24501:48:::0;::::1;;;::::0;24527:21;;24501:48;11178:7;24501:48;24527:21;11205:6;24501:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24374:183::o:0;16034:145::-;9383:6;;-1:-1:-1;;;;;9383:6:0;379:10;9383:22;9375:52;;;;-1:-1:-1;;;9375:52:0;;11156:2:1;9375:52:0;;;11138:21:1;11195:2;11175:18;;;11168:30;-1:-1:-1;;;11214:18:1;;;11207:47;11271:18;;9375:52:0;10954:341:1;9375:52:0;16124:9:::1;::::0;:47:::1;::::0;;;;-1:-1:-1;;;;;18018:55:1;;;16124:47:0::1;::::0;::::1;18000:74:1::0;18117:14;;18110:22;18090:18;;;18083:50;16124:9:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;17973:18:1;;16124:47:0::1;17832:307:1::0;16493:125:0;16578:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;16578:32:0;;;160:74:1;16554:4:0;;16578:9;;;;;:23;;133:18:1;;16578:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13452:309::-;-1:-1:-1;;;;;13546:20:0;;13538:52;;;;-1:-1:-1;;;13538:52:0;;21665:2:1;13538:52:0;;;21647:21:1;21704:2;21684:18;;;21677:30;21743:21;21723:18;;;21716:49;21782:18;;13538:52:0;21463:343:1;13538:52:0;-1:-1:-1;;;;;13609:21:0;;13601:53;;;;-1:-1:-1;;;13601:53:0;;21665:2:1;13601:53:0;;;21647:21:1;21704:2;21684:18;;;21677:30;21743:21;21723:18;;;21716:49;21782:18;;13601:53:0;21463:343:1;13601:53:0;-1:-1:-1;;;;;13667:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13720:33;;391:25:1;;;13720:33:0;;364:18:1;13720:33:0;;;;;;;13452:309;;;:::o;20024:1818::-;20103:4;-1:-1:-1;;;;;20128:18:0;;20120:68;;;;-1:-1:-1;;;20120:68:0;;22013:2:1;20120:68:0;;;21995:21:1;22052:2;22032:18;;;22025:30;22091:34;22071:18;;;22064:62;22162:7;22142:18;;;22135:35;22187:19;;20120:68:0;21811:401:1;20120:68:0;-1:-1:-1;;;;;20207:16:0;;20199:64;;;;-1:-1:-1;;;20199:64:0;;22419:2:1;20199:64:0;;;22401:21:1;22458:2;22438:18;;;22431:30;22497:34;22477:18;;;22470:62;22568:5;22548:18;;;22541:33;22591:19;;20199:64:0;22217:399:1;20199:64:0;20291:1;20282:6;:10;20274:64;;;;-1:-1:-1;;;20274:64:0;;22823:2:1;20274:64:0;;;22805:21:1;22862:2;22842:18;;;22835:30;22901:34;22881:18;;;22874:62;22972:11;22952:18;;;22945:39;23001:19;;20274:64:0;22621:405:1;20274:64:0;20352:20;20363:4;20369:2;20352:10;:20::i;:::-;20349:665;;;20393:14;;;;20389:89;;20428:34;;-1:-1:-1;;;20428:34:0;;23233:2:1;20428:34:0;;;23215:21:1;23272:2;23252:18;;;23245:30;23311:26;23291:18;;;23284:54;23355:18;;20428:34:0;23031:348:1;20389:89:0;-1:-1:-1;;;;;20495:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;20512:11:0;;;;;;:7;:11;;;;;;;;20495:28;20492:248;;;-1:-1:-1;;;;;20548:27:0;;;;;;:21;:27;;;;;;;;20547:28;:58;;;;-1:-1:-1;;;;;;20580:25:0;;;;;;:21;:25;;;;;;;;20579:26;20547:58;20543:182;;;20648:12;;20638:6;:22;;20630:75;;;;-1:-1:-1;;;20630:75:0;;23586:2:1;20630:75:0;;;23568:21:1;23625:2;23605:18;;;23598:30;23664:34;23644:18;;;23637:62;23735:10;23715:18;;;23708:38;23763:19;;20630:75:0;23384:404:1;20630:75:0;20771:9;;-1:-1:-1;;;;;20757:24:0;;;20771:9;;20757:24;;;;:40;;-1:-1:-1;;;;;;20786:11:0;;;;;;:7;:11;;;;;;;;20785:12;20757:40;20754:249;;;-1:-1:-1;;;;;20823:25:0;;;;;;:21;:25;;;;;;;;20818:170;;20907:14;;20897:6;20881:13;20891:2;-1:-1:-1;;;;;13076:16:0;13049:7;13076:16;;;:7;:16;;;;;;;12983:117;20881:13;:22;;;;:::i;:::-;:40;;20873:95;;;;-1:-1:-1;;;20873:95:0;;23995:2:1;20873:95:0;;;23977:21:1;24034:2;24014:18;;;24007:30;24073:34;24053:18;;;24046:62;24144:12;24124:18;;;24117:40;24174:19;;20873:95:0;23793:406:1;20873:95:0;-1:-1:-1;;;;;21059:25:0;;21026:12;21059:25;;;:19;:25;;;;;;21041:4;;21059:25;;;:52;;-1:-1:-1;;;;;;21088:23:0;;;;;;:19;:23;;;;;;;;21059:52;21056:98;;;-1:-1:-1;21137:5:0;21056:98;-1:-1:-1;;;;;21170:11:0;;;;;;:7;:11;;;;;;;;21166:606;;;21203:6;;;;21202:7;:47;;;;-1:-1:-1;21230:19:0;;;;;;;21202:47;21198:557;;;21319:15;21299:17;;21288:8;;:28;;;;:::i;:::-;:46;21284:456;;;21408:4;21359:28;13076:16;;;:7;:16;;;;;;21465:13;;21441:37;;21437:284;;21534:10;;21510:20;:34;21507:77;;-1:-1:-1;21571:10:0;;21507:77;21610:34;21623:20;21610:12;:34::i;:::-;21682:15;21671:8;:26;21437:284;21336:404;21284:456;21790:44;21808:4;21814:2;21818:6;21826:7;21790:17;:44::i;:::-;21783:51;20024:1818;-1:-1:-1;;;;;20024:1818:0:o;19656:360::-;19724:4;11205:6;;-1:-1:-1;;;;;19748:15:0;;;11205:6;;19748:15;;;;:45;;-1:-1:-1;11178:7:0;11205:6;-1:-1:-1;;;;;19780:13:0;;;11205:6;;19780:13;;19748:45;:82;;;;-1:-1:-1;11178:7:0;11205:6;-1:-1:-1;;;;;11205:6:0;19810:9;:20;;19748:82;:121;;;;-1:-1:-1;;;;;;19848:21:0;;;;;;:17;:21;;;;;;;;19847:22;19748:121;:162;;;;-1:-1:-1;;;;;;19887:23:0;;;;;;:17;:23;;;;;;;;19886:24;19748:162;:189;;;;-1:-1:-1;;;;;;19927:10:0;;8270:42;19927:10;;19748:189;:222;;;;-1:-1:-1;;;;;;19954:16:0;;;;19748:222;:260;;;;-1:-1:-1;;;;;;19987:21:0;;20003:4;19987:21;;19748:260;19741:267;19656:360;-1:-1:-1;;;19656:360:0:o;21850:1563::-;9277:6;:13;;-1:-1:-1;;9277:13:0;9286:4;9277:13;;;21933:30:::1;::::0;;::::1;::::0;::::1;::::0;;21956:7:::1;21933:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;;::::1;;::::0;;;;;;;21974:56:::1;;22012:7;;;21974:56;22065:4;22045:26;::::0;;;:11:::1;:26;::::0;;;;;;;22080:9:::1;::::0;-1:-1:-1;;;;;22080:9:0::1;22045:46:::0;;;;;;;;-1:-1:-1;;22045:67:0::1;22042:165;;22149:4;22129:26;::::0;;;:11:::1;:26;::::0;;;;;;;22164:9:::1;::::0;-1:-1:-1;;;;;22164:9:0::1;22129:46:::0;;;;;;;-1:-1:-1;;22129:66:0;;22042:165:::1;22219:17;22300:1;22284:6;:12;;;22240:56;;22264:6;:16;;;22241:39;;:20;:39;;;;:::i;:::-;22240:56;;;;:::i;:::-;22239:62;;;;:::i;:::-;22219:82:::0;-1:-1:-1;22312:15:0::1;22330:32;22219:82:::0;22330:20;:32:::1;:::i;:::-;22407:16;::::0;;22421:1:::1;22407:16:::0;;;;;::::1;::::0;;22312:50;;-1:-1:-1;22383:21:0::1;::::0;22407:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22407:16:0::1;22383:40;;22452:4;22434;22439:1;22434:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22434:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;22478:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;22434:7;;22478:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22468:4;22473:1;22468:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22468:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;22507:9:::1;::::0;:186:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:186:::1;::::0;22582:7;;22507:9:::1;::::0;22620:4;;22647::::1;::::0;22667:15:::1;::::0;22507:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;22727:21:0::1;::::0;-1:-1:-1;22706:18:0::1;::::0;-1:-1:-1;22813:7:0;;-1:-1:-1;22787:22:0::1;22800:9:::0;22727:21;22787:22:::1;:::i;:::-;22786:34;;;;:::i;:::-;22759:61:::0;-1:-1:-1;22837:13:0;;22833:328:::1;;22867:9;::::0;:222:::1;::::0;;;;22944:4:::1;22867:222;::::0;::::1;25178:34:1::0;25228:18;;;25221:34;;;22867:9:0::1;25271:18:1::0;;;25264:34;;;25314:18;;;25307:34;8270:42:0::1;25357:19:1::0;;;25350:44;23059:15:0::1;25410:19:1::0;;;25403:35;-1:-1:-1;;;;;22867:9:0;;::::1;::::0;:25:::1;::::0;22900:16;;25089:19:1;;22867:222:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;23109:40:0::1;::::0;;25934:25:1;;;25990:2;25975:18;;25968:34;;;23109:40:0::1;::::0;-1:-1:-1;25907:18:1;23109:40:0::1;;;;;;;22833:328;23173:30;23187:16:::0;23173:30;::::1;:::i;:::-;;;23230:6;:16;;;23214:6;:12;;:32;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;23309:16:::1;::::0;::::1;::::0;23284:10;;-1:-1:-1;23309:20:0::1;::::0;23305:101:::1;;23346:11;:21:::0;:48:::1;::::0;-1:-1:-1;;;;;23346:21:0;;::::1;::::0;:48;::::1;;;::::0;23377:16;;23346:21:::1;:48:::0;:21;:48;23377:16;23346:21;:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23305:101;21922:1491;;;;;;;9301:1;-1:-1:-1::0;9313:6:0;:14;;-1:-1:-1;;9313:14:0;;;21850:1563::o;25436:905::-;25558:16;;25536:4;;25558:16;;;;;25553:221;;25591:28;25610:4;25616:2;25591:18;:28::i;:::-;25639:16;;;;;;;25638:17;:41;;;;;25659:20;25670:4;25676:2;25659:10;:20::i;:::-;25634:129;;;25700:47;;-1:-1:-1;;;25700:47:0;;26437:2:1;25700:47:0;;;26419:21:1;26476:2;26456:18;;;26449:30;26515:34;26495:18;;;26488:62;26586:7;26566:18;;;26559:35;26611:19;;25700:47:0;26235:401:1;25634:129:0;25790:20;25801:4;25807:2;25790:10;:20::i;:::-;25786:314;;;25858:9;;:37;;;;;-1:-1:-1;;;;;26922:15:1;;;25858:37:0;;;26904:34:1;26974:15;;;26954:18;;;26947:43;27006:18;;;26999:34;;;25827:12:0;;25858:9;;;;;:19;;26816:18:1;;25858:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;25858:37:0;;;;;;;;-1:-1:-1;;25858:37:0;;;;;;;;;;;;:::i;:::-;;;25854:163;;25993:8;;;25854:163;25946:5;-1:-1:-1;26037:7:0;26033:56;;26065:8;;;26033:56;25812:288;25786:314;-1:-1:-1;;;;;26112:13:0;;;;;;:7;:13;;;;;:23;;26129:6;;26112:13;:23;;26129:6;;26112:23;:::i;:::-;;;;-1:-1:-1;26146:22:0;;-1:-1:-1;26172:7:0;26171:48;;26213:6;26171:48;;;26183:27;26193:4;26199:2;26203:6;26183:9;:27::i;:::-;-1:-1:-1;;;;;26230:11:0;;;;;;:7;:11;;;;;:29;;26146:73;;-1:-1:-1;26146:73:0;;26230:11;;;:29;;26146:73;;26230:29;:::i;:::-;;;;;;;;26292:2;-1:-1:-1;;;;;26277:34:0;26286:4;-1:-1:-1;;;;;26277:34:0;;26296:14;26277:34;;;;391:25:1;;379:2;364:18;;245:177;26277:34:0;;;;;;;;-1:-1:-1;26329:4:0;;25436:905;-1:-1:-1;;;;;25436:905:0:o;23421:508::-;23503:16;;;;;;;23502:17;23494:65;;;;-1:-1:-1;;;23494:65:0;;27246:2:1;23494:65:0;;;27228:21:1;27285:2;27265:18;;;27258:30;27324:34;27304:18;;;27297:62;27395:5;27375:18;;;27368:33;27418:19;;23494:65:0;27044:399:1;23494:65:0;23575:20;23586:4;23592:2;23575:10;:20::i;:::-;23574:21;:37;;;;-1:-1:-1;23605:6:0;;-1:-1:-1;;;;;23599:12:0;;;23605:6;;23599:12;23574:37;23570:352;;;-1:-1:-1;;;;;23628:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;23628:30:0;23654:4;23628:30;;;23673:16;:23;;-1:-1:-1;;23673:23:0;23628:30;23673:23;;;;;23722:9;;;;23711:107;;23766:9;:36;;;;23796:4;23766:36;;;;;23711:107;23832:19;:26;;-1:-1:-1;;23832:26:0;;;;;23878:32;;-1:-1:-1;4388:41:1;;23878:32:0;;4376:2:1;4361:18;23878:32:0;;;;;;;23421:508;;:::o;26349:570::-;-1:-1:-1;;;;;26481:13:0;;26428:7;26481:13;;;:7;:13;;;;;;26428:7;;26481:13;;26477:222;;;-1:-1:-1;26524:9:0;:16;;;26477:222;;;-1:-1:-1;;;;;26562:11:0;;;;;;:7;:11;;;;;;;;26558:141;;;-1:-1:-1;26603:9:0;:17;;;;;;26558:141;;;-1:-1:-1;26666:9:0;:21;;;;;;26558:141;26711:17;8162:5;26731:19;26740:10;26731:6;:19;:::i;:::-;:38;;;;:::i;:::-;26798:4;26782:22;;;;:7;:22;;;;;:35;;26711:58;;-1:-1:-1;26711:58:0;;26782:22;;;:35;;26711:58;;26782:35;:::i;:::-;;;;-1:-1:-1;;26833:40:0;;391:25:1;;;26856:4:0;;-1:-1:-1;;;;;26833:40:0;;;;;379:2:1;364:18;26833:40:0;;;;;;;26893:18;26902:9;26893:6;:18;:::i;:::-;26886:25;26349:570;-1:-1:-1;;;;;;26349:570:0:o;427:184:1:-;479:77;476:1;469:88;576:4;573:1;566:15;600:4;597:1;590:15;616:334;687:2;681:9;743:2;733:13;;-1:-1:-1;;729:86:1;717:99;;846:18;831:34;;867:22;;;828:62;825:88;;;893:18;;:::i;:::-;929:2;922:22;616:334;;-1:-1:-1;616:334:1:o;955:183::-;1015:4;1048:18;1040:6;1037:30;1034:56;;;1070:18;;:::i;:::-;-1:-1:-1;1115:1:1;1111:14;1127:4;1107:25;;955:183::o;1143:154::-;-1:-1:-1;;;;;1222:5:1;1218:54;1211:5;1208:65;1198:93;;1287:1;1284;1277:12;1302:737;1356:5;1409:3;1402:4;1394:6;1390:17;1386:27;1376:55;;1427:1;1424;1417:12;1376:55;1463:6;1450:20;1489:4;1513:60;1529:43;1569:2;1529:43;:::i;:::-;1513:60;:::i;:::-;1607:15;;;1693:1;1689:10;;;;1677:23;;1673:32;;;1638:12;;;;1717:15;;;1714:35;;;1745:1;1742;1735:12;1714:35;1781:2;1773:6;1769:15;1793:217;1809:6;1804:3;1801:15;1793:217;;;1889:3;1876:17;1906:31;1931:5;1906:31;:::i;:::-;1950:18;;1988:12;;;;1826;;1793:217;;;-1:-1:-1;2028:5:1;1302:737;-1:-1:-1;;;;;;1302:737:1:o;2044:118::-;2130:5;2123:13;2116:21;2109:5;2106:32;2096:60;;2152:1;2149;2142:12;2167:477;2257:6;2265;2318:2;2306:9;2297:7;2293:23;2289:32;2286:52;;;2334:1;2331;2324:12;2286:52;2374:9;2361:23;2407:18;2399:6;2396:30;2393:50;;;2439:1;2436;2429:12;2393:50;2462:61;2515:7;2506:6;2495:9;2491:22;2462:61;:::i;:::-;2452:71;;;2573:2;2562:9;2558:18;2545:32;2586:28;2608:5;2586:28;:::i;:::-;2633:5;2623:15;;;2167:477;;;;;:::o;3019:656::-;3131:4;3160:2;3189;3178:9;3171:21;3221:6;3215:13;3264:6;3259:2;3248:9;3244:18;3237:34;3289:1;3299:140;3313:6;3310:1;3307:13;3299:140;;;3408:14;;;3404:23;;3398:30;3374:17;;;3393:2;3370:26;3363:66;3328:10;;3299:140;;;3457:6;3454:1;3451:13;3448:91;;;3527:1;3522:2;3513:6;3502:9;3498:22;3494:31;3487:42;3448:91;-1:-1:-1;3591:2:1;3579:15;-1:-1:-1;;3575:88:1;3560:104;;;;3666:2;3556:113;;3019:656;-1:-1:-1;;;3019:656:1:o;3928:315::-;3996:6;4004;4057:2;4045:9;4036:7;4032:23;4028:32;4025:52;;;4073:1;4070;4063:12;4025:52;4112:9;4099:23;4131:31;4156:5;4131:31;:::i;:::-;4181:5;4233:2;4218:18;;;;4205:32;;-1:-1:-1;;;3928:315:1:o;4440:456::-;4517:6;4525;4533;4586:2;4574:9;4565:7;4561:23;4557:32;4554:52;;;4602:1;4599;4592:12;4554:52;4641:9;4628:23;4660:31;4685:5;4660:31;:::i;:::-;4710:5;-1:-1:-1;4767:2:1;4752:18;;4739:32;4780:33;4739:32;4780:33;:::i;:::-;4440:456;;4832:7;;-1:-1:-1;;;4886:2:1;4871:18;;;;4858:32;;4440:456::o;4901:248::-;4969:6;4977;5030:2;5018:9;5009:7;5005:23;5001:32;4998:52;;;5046:1;5043;5036:12;4998:52;-1:-1:-1;;5069:23:1;;;5139:2;5124:18;;;5111:32;;-1:-1:-1;4901:248:1:o;5154:662::-;5208:5;5261:3;5254:4;5246:6;5242:17;5238:27;5228:55;;5279:1;5276;5269:12;5228:55;5315:6;5302:20;5341:4;5365:60;5381:43;5421:2;5381:43;:::i;5365:60::-;5459:15;;;5545:1;5541:10;;;;5529:23;;5525:32;;;5490:12;;;;5569:15;;;5566:35;;;5597:1;5594;5587:12;5566:35;5633:2;5625:6;5621:15;5645:142;5661:6;5656:3;5653:15;5645:142;;;5727:17;;5715:30;;5765:12;;;;5678;;5645:142;;5821:595;5939:6;5947;6000:2;5988:9;5979:7;5975:23;5971:32;5968:52;;;6016:1;6013;6006:12;5968:52;6056:9;6043:23;6085:18;6126:2;6118:6;6115:14;6112:34;;;6142:1;6139;6132:12;6112:34;6165:61;6218:7;6209:6;6198:9;6194:22;6165:61;:::i;:::-;6155:71;;6279:2;6268:9;6264:18;6251:32;6235:48;;6308:2;6298:8;6295:16;6292:36;;;6324:1;6321;6314:12;6292:36;;6347:63;6402:7;6391:8;6380:9;6376:24;6347:63;:::i;:::-;6337:73;;;5821:595;;;;;:::o;6610:159::-;6677:20;;6737:6;6726:18;;6716:29;;6706:57;;6759:1;6756;6749:12;6706:57;6610:159;;;:::o;6774:328::-;6848:6;6856;6864;6917:2;6905:9;6896:7;6892:23;6888:32;6885:52;;;6933:1;6930;6923:12;6885:52;6956:28;6974:9;6956:28;:::i;:::-;6946:38;;7003:37;7036:2;7025:9;7021:18;7003:37;:::i;:::-;6993:47;;7059:37;7092:2;7081:9;7077:18;7059:37;:::i;:::-;7049:47;;6774:328;;;;;:::o;7107:247::-;7166:6;7219:2;7207:9;7198:7;7194:23;7190:32;7187:52;;;7235:1;7232;7225:12;7187:52;7274:9;7261:23;7293:31;7318:5;7293:31;:::i;7359:454::-;7454:6;7462;7470;7478;7486;7539:3;7527:9;7518:7;7514:23;7510:33;7507:53;;;7556:1;7553;7546:12;7507:53;-1:-1:-1;;7579:23:1;;;7649:2;7634:18;;7621:32;;-1:-1:-1;7700:2:1;7685:18;;7672:32;;7751:2;7736:18;;7723:32;;-1:-1:-1;7802:3:1;7787:19;7774:33;;-1:-1:-1;7359:454:1;-1:-1:-1;7359:454:1:o;7818:382::-;7883:6;7891;7944:2;7932:9;7923:7;7919:23;7915:32;7912:52;;;7960:1;7957;7950:12;7912:52;7999:9;7986:23;8018:31;8043:5;8018:31;:::i;:::-;8068:5;-1:-1:-1;8125:2:1;8110:18;;8097:32;8138:30;8097:32;8138:30;:::i;8205:511::-;8273:6;8281;8289;8342:2;8330:9;8321:7;8317:23;8313:32;8310:52;;;8358:1;8355;8348:12;8310:52;8397:9;8384:23;8416:28;8438:5;8416:28;:::i;:::-;8463:5;-1:-1:-1;8520:2:1;8505:18;;8492:32;8533:30;8492:32;8533:30;:::i;:::-;8582:7;-1:-1:-1;8641:2:1;8626:18;;8613:32;8654:30;8613:32;8654:30;:::i;:::-;8703:7;8693:17;;;8205:511;;;;;:::o;8721:256::-;8787:6;8795;8848:2;8836:9;8827:7;8823:23;8819:32;8816:52;;;8864:1;8861;8854:12;8816:52;8887:28;8905:9;8887:28;:::i;:::-;8877:38;;8934:37;8967:2;8956:9;8952:18;8934:37;:::i;:::-;8924:47;;8721:256;;;;;:::o;8982:241::-;9038:6;9091:2;9079:9;9070:7;9066:23;9062:32;9059:52;;;9107:1;9104;9097:12;9059:52;9146:9;9133:23;9165:28;9187:5;9165:28;:::i;9228:388::-;9296:6;9304;9357:2;9345:9;9336:7;9332:23;9328:32;9325:52;;;9373:1;9370;9363:12;9325:52;9412:9;9399:23;9431:31;9456:5;9431:31;:::i;:::-;9481:5;-1:-1:-1;9538:2:1;9523:18;;9510:32;9551:33;9510:32;9551:33;:::i;9621:821::-;9773:6;9781;9789;9842:2;9830:9;9821:7;9817:23;9813:32;9810:52;;;9858:1;9855;9848:12;9810:52;9898:9;9885:23;9927:18;9968:2;9960:6;9957:14;9954:34;;;9984:1;9981;9974:12;9954:34;10007:61;10060:7;10051:6;10040:9;10036:22;10007:61;:::i;:::-;9997:71;;10121:2;10110:9;10106:18;10093:32;10077:48;;10150:2;10140:8;10137:16;10134:36;;;10166:1;10163;10156:12;10134:36;10189:63;10244:7;10233:8;10222:9;10218:24;10189:63;:::i;:::-;10179:73;;10305:2;10294:9;10290:18;10277:32;10261:48;;10334:2;10324:8;10321:16;10318:36;;;10350:1;10347;10340:12;10318:36;;10373:63;10428:7;10417:8;10406:9;10402:24;10373:63;:::i;:::-;10363:73;;;9621:821;;;;;:::o;11300:484::-;11353:3;11391:5;11385:12;11418:6;11413:3;11406:19;11444:4;11473:2;11468:3;11464:12;11457:19;;11510:2;11503:5;11499:14;11531:1;11541:218;11555:6;11552:1;11549:13;11541:218;;;11620:13;;-1:-1:-1;;;;;11616:62:1;11604:75;;11699:12;;;;11734:15;;;;11577:1;11570:9;11541:218;;;-1:-1:-1;11775:3:1;;11300:484;-1:-1:-1;;;;;11300:484:1:o;11789:342::-;11990:2;11979:9;11972:21;11953:4;12010:56;12062:2;12051:9;12047:18;12039:6;12010:56;:::i;:::-;12002:64;;12116:6;12109:14;12102:22;12097:2;12086:9;12082:18;12075:50;11789:342;;;;;:::o;12136:184::-;12188:77;12185:1;12178:88;12285:4;12282:1;12275:15;12309:4;12306:1;12299:15;12325:482;12414:1;12457:5;12414:1;12471:330;12492:7;12482:8;12479:21;12471:330;;;12611:4;-1:-1:-1;;12539:77:1;12533:4;12530:87;12527:113;;;12620:18;;:::i;:::-;12670:7;12660:8;12656:22;12653:55;;;12690:16;;;;12653:55;12769:22;;;;12729:15;;;;12471:330;;;12475:3;12325:482;;;;;:::o;12812:866::-;12861:5;12891:8;12881:80;;-1:-1:-1;12932:1:1;12946:5;;12881:80;12980:4;12970:76;;-1:-1:-1;13017:1:1;13031:5;;12970:76;13062:4;13080:1;13075:59;;;;13148:1;13143:130;;;;13055:218;;13075:59;13105:1;13096:10;;13119:5;;;13143:130;13180:3;13170:8;13167:17;13164:43;;;13187:18;;:::i;:::-;-1:-1:-1;;13243:1:1;13229:16;;13258:5;;13055:218;;13357:2;13347:8;13344:16;13338:3;13332:4;13329:13;13325:36;13319:2;13309:8;13306:16;13301:2;13295:4;13292:12;13288:35;13285:77;13282:159;;;-1:-1:-1;13394:19:1;;;13426:5;;13282:159;13473:34;13498:8;13492:4;13473:34;:::i;:::-;13603:6;-1:-1:-1;;13531:79:1;13522:7;13519:92;13516:118;;;13614:18;;:::i;:::-;13652:20;;12812:866;-1:-1:-1;;;12812:866:1:o;13683:140::-;13741:5;13770:47;13811:4;13801:8;13797:19;13791:4;13770:47;:::i;13828:274::-;13868:1;13894;13884:189;;13929:77;13926:1;13919:88;14030:4;14027:1;14020:15;14058:4;14055:1;14048:15;13884:189;-1:-1:-1;14087:9:1;;13828:274::o;14107:228::-;14147:7;14273:1;-1:-1:-1;;14201:74:1;14198:1;14195:81;14190:1;14183:9;14176:17;14172:105;14169:131;;;14280:18;;:::i;:::-;-1:-1:-1;14320:9:1;;14107:228::o;14340:125::-;14380:4;14408:1;14405;14402:8;14399:34;;;14413:18;;:::i;:::-;-1:-1:-1;14450:9:1;;14340:125::o;15239:184::-;15291:77;15288:1;15281:88;15388:4;15385:1;15378:15;15412:4;15409:1;15402:15;15428:175;15465:3;15509:4;15502:5;15498:16;15538:4;15529:7;15526:17;15523:43;;;15546:18;;:::i;:::-;15595:1;15582:15;;15428:175;-1:-1:-1;;15428:175:1:o;15960:128::-;16000:3;16031:1;16027:6;16024:1;16021:13;16018:39;;;16037:18;;:::i;:::-;-1:-1:-1;16073:9:1;;15960:128::o;16947:184::-;17017:6;17070:2;17058:9;17049:7;17045:23;17041:32;17038:52;;;17086:1;17083;17076:12;17038:52;-1:-1:-1;17109:16:1;;16947:184;-1:-1:-1;16947:184:1:o;20039:224::-;20078:3;20106:6;20139:2;20136:1;20132:10;20169:2;20166:1;20162:10;20200:3;20196:2;20192:12;20187:3;20184:21;20181:47;;;20208:18;;:::i;:::-;20244:13;;20039:224;-1:-1:-1;;;;20039:224:1:o;20268:251::-;20338:6;20391:2;20379:9;20370:7;20366:23;20362:32;20359:52;;;20407:1;20404;20397:12;20359:52;20439:9;20433:16;20458:31;20483:5;20458:31;:::i;21213:245::-;21280:6;21333:2;21321:9;21312:7;21308:23;21304:32;21301:52;;;21349:1;21346;21339:12;21301:52;21381:9;21375:16;21400:28;21422:5;21400:28;:::i;24204:605::-;24503:6;24492:9;24485:25;24546:6;24541:2;24530:9;24526:18;24519:34;24589:3;24584:2;24573:9;24569:18;24562:31;24466:4;24610:57;24662:3;24651:9;24647:19;24639:6;24610:57;:::i;:::-;-1:-1:-1;;;;;24703:55:1;;;;24698:2;24683:18;;24676:83;-1:-1:-1;24790:3:1;24775:19;24768:35;24602:65;24204:605;-1:-1:-1;;;24204:605:1:o;25449:306::-;25537:6;25545;25553;25606:2;25594:9;25585:7;25581:23;25577:32;25574:52;;;25622:1;25619;25612:12;25574:52;25651:9;25645:16;25635:26;;25701:2;25690:9;25686:18;25680:25;25670:35;;25745:2;25734:9;25730:18;25724:25;25714:35;;25449:306;;;;;:::o;26013:217::-;26052:4;26081:6;26137:10;;;;26107;;26159:12;;;26156:38;;;26174:18;;:::i;:::-;26211:13;;26013:217;-1:-1:-1;;;26013:217:1:o

Swarm Source

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