ETH Price: $3,452.59 (-1.14%)
Gas: 12 Gwei

Token

Good Fucking Morning (GFM)
 

Overview

Max Total Supply

1,000,000 GFM

Holders

255

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
7.732802931 GFM

Value
$0.00
0x2a6bb6dd4d67983b33a4b995c04ef09987c2c5ee
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:
GFM

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

https://medium.com/@GFMeth/good-f-cking-morning-456e00445e91

*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface 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);
    function sync() external;
}

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 swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    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);
}

contract GFM is IERC20 {
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

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

   
    uint256 constant private startingSupply = 1_000_000;
    string constant private _name = "Good Fucking Morning";
    string constant private _symbol = "GFM";
    uint8 constant private _decimals = 9;

    uint256 private _tTotal = startingSupply * 10**_decimals;

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

    struct Ratios {
        uint16 liquidity;
        uint16 marketing;
        uint16 development;
        uint16 burn;
        uint16 buyback;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        liquidity: 400,
        marketing: 0,
        development: 600,
        burn: 0,
        buyback: 0,
        totalSwap: 1000
    });

    uint256 constant public maxBuyTaxes = 3000;
    uint256 constant public maxSellTaxes = 3000;
    uint256 constant public maxTransferTaxes = 3000;
    uint256 constant public maxRoundtripTax = 6000;
    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable development;
        address payable liquidity;
        address payable buyback;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x8AE4F8c98934e0592003486901bA6E409e671DE0), 
        development: payable(0x8AE4F8c98934e0592003486901bA6E409e671DE0),
        liquidity: payable(DEAD),
        buyback: payable(DEAD)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount = (_tTotal * 10) / 10000;
    uint256 private _maxWalletSize = (_tTotal * 10) / 10000;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;

    address public buyback = address(this);

    uint256 public _totalBuyback;
    uint256 public _totalBurned;

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "Caller =/= owner.");
        _;
    }

    constructor () payable {
        // Set the owner.
        _owner = _taxWallets.development;
        dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

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

        _approve(_owner, 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;
    }

    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.
    address private _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) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external view override returns (uint256) { 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(msg.sender, recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

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

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

    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 isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

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

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

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

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

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

    function setRatios(uint16 liquidity, uint16 marketing, uint16 development, uint16 burn, uint16 _buyBack) external onlyOwner {
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.development = development;
        _ratios.burn = burn;
        _ratios.buyback = _buyBack;
        _ratios.totalSwap = liquidity + marketing + development + _buyBack;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.totalSwap + _ratios.burn <= total, "Cannot exceed sum of buy and sell fees.");
    }

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

    function finalizeLaunch() external onlyOwner {
        _maxWalletSize = (_tTotal * 2) / 100;
        _maxTxAmount = (_tTotal * 2) / 100;
        _taxRates.buyFee = 500;
        _taxRates.sellFee = 500;
        _taxRates.transferFee = 0;
        _ratios.development = 0;
        _ratios.buyback = 600;

    }

    function setPurchaseDestinations(address payable _buyBack) external onlyOwner {
        _taxWallets.buyback = payable(_buyBack);
    }

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

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

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

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

    function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
    }

    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%.");
        piSwapPercent = priceImpactSwapPercent;
    }

    function setContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    function getTotalBoughtBack() external view returns (uint256 buybackBoughtTotal) {
        buybackBoughtTotal = _totalBuyback;
    }

    function getTotalTrueBurned() external view returns (uint256 burnedTotal) {
        burnedTotal = _totalBurned;
    }

    function _hasLimits(address from, address to) internal 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");
        require(!bots[from] && !bots[to]);

        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if (_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if (buy || sell){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if (to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 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.totalSwap) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapAmt,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

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

        if (toLiquify > 0) {
            try dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                _taxWallets.liquidity,
                block.timestamp
            ) {
                emit AutoLiquify(liquidityBalance, toLiquify);
            } catch {
                return;
            }
        }

        amtBalance -= liquidityBalance;
        ratios.totalSwap -= ratios.liquidity;
        bool success;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 buybackBalance = (buyback != address(0)) ? (amtBalance * ratios.buyback) / ratios.totalSwap : 0;
        uint256 marketingBalance = amtBalance - (developmentBalance + buybackBalance);
        if (marketingBalance > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 35000}("");
        }
        if (developmentBalance > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 35000}("");
        }
        if (buybackBalance > 0) {
            path[0] = dexRouter.WETH();
            path[1] = buyback;
            buyTokens(path, buybackBalance, _taxWallets.buyback);
        }
    }

    function buyTokens(address[] memory path, uint256 amount, address payable destination) internal {
        try dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}
        (
            0,
            path,
            destination,
            block.timestamp
        ) {
            if (path[1] ==  buyback) {
                _totalBuyback += amount;
            }
        } catch {
            return;
        }
    }

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

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        tradingEnabled = true;
        swapThreshold = (balanceOf(lpPair) * 10) / 10000;
        swapAmount = (balanceOf(lpPair) * 30) / 10000;
        _approve(address(this), address(dexRouter), type(uint256).max);

    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }

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

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

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

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        Ratios memory ratios = _ratios;
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        uint256 burnAmount = (feeAmount * ratios.burn) / (ratios.burn + ratios.totalSwap);
        uint256 swapAmt = feeAmount - burnAmount;
        if (swapAmt > 0) {
            _tOwned[address(this)] += swapAmt;
            emit Transfer(from, address(this), swapAmt);
        }
        if (burnAmount > 0) {
            _tTotal -= burnAmount;
            _totalBurned += burnAmount;
            emit Transfer(from, address(0), burnAmount);
        }
        
        

        return amount - feeAmount;
    }

    function blacklist (address _address) external onlyOwner {
        bots[_address] = true;
    }
    
    function removeFromBlacklist (address _address) external onlyOwner {
        bots[_address] = false;
    }
    
    function getIsBlacklistedStatus (address _address) external view returns (bool) {
        return bots[_address];
    }

}

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":"development","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"buyback","type":"uint16"},{"internalType":"uint16","name":"totalSwap","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"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"liquidity","type":"address"},{"internalType":"address payable","name":"buyback","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBuyback","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyback","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"finalizeLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getIsBlacklistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBoughtBack","outputs":[{"internalType":"uint256","name":"buybackBoughtTotal","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalTrueBurned","outputs":[{"internalType":"uint256","name":"burnedTotal","type":"uint256"}],"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":"maxRoundtripTax","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","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":"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":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_buyBack","type":"address"}],"name":"setPurchaseDestinations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"_buyBack","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"}],"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"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"liquidity","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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}]

60806040526000600355620000176009600a620006d6565b6200002690620f4240620006ee565b600981905560408051606080820183526107d0808352602080840182905292840152600a805465ffffffffffff19166507d007d007d0178155835160c08101855261019081526000818501819052610258828701528184018190526080808301919091526103e860a090920191909152600b80546001600160601b0319166b03e80000000002580000019017905584519081018552738ae4f8c98934e0592003486901ba6e409e671de080825293810184905261dead948101859052909101839052600e80546001600160a01b03199081168417909155600f80548216909317909255601080548316841790556011805490921690921790556012805461ff00191690556016819055612710916200013e91620006ee565b6200014a919062000710565b601755612710600954600a620001619190620006ee565b6200016d919062000710565b601855601980546001600160b01b031916306201000002179055600f54601c80546001600160a01b039283166001600160a01b031990911681178255600c8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d00179055600954600091825260016020908152604080842083905593549351918252929093169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600c60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027057600080fd5b505afa15801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000733565b6001600160a01b031663c9c65396600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030857600080fd5b505afa1580156200031d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000343919062000733565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156200038b57600080fd5b505af1158015620003a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c6919062000733565b600d80546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260409020805460ff19166001179055601c54600c546200041d929182169161010090910416600019620004c0565b600c546200043e90309061010090046001600160a01b0316600019620004c0565b601c80546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055955490941683526005909152902080549092161790556200075e565b6001600160a01b038316620005125760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620005605760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000509565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000618578160001904821115620005fc57620005fc620005c1565b808516156200060a57918102915b93841c9390800290620005dc565b509250929050565b6000826200063157506001620006d0565b816200064057506000620006d0565b8160018114620006595760028114620006645762000684565b6001915050620006d0565b60ff841115620006785762000678620005c1565b50506001821b620006d0565b5060208310610133831016604e8410600b8410161715620006a9575081810a620006d0565b620006b58383620005d7565b8060001904821115620006cc57620006cc620005c1565b0290505b92915050565b6000620006e760ff84168362000620565b9392505050565b60008160001904831182151516156200070b576200070b620005c1565b500290565b6000826200072e57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200074657600080fd5b81516001600160a01b0381168114620006e757600080fd5b6132af806200076e6000396000f3fe60806040526004361061037a5760003560e01c80634fb2e45d116101d157806395d89b4111610102578063dd62ed3e116100a0578063f9f92be41161006f578063f9f92be414610af4578063fb78680d14610b14578063fd01bd4c14610b34578063fdb78c0e14610b4a57600080fd5b8063dd62ed3e14610a02578063f08f43a214610a48578063f8ec691114610a68578063f94aa1b414610a8e57600080fd5b8063b3d514fb116100dc578063b3d514fb146105cc578063b7df8b361461093e578063bfc2fc3514610958578063cf8477061461097857600080fd5b806395d89b41146108f2578063a9059cbb1461091e578063b1b08f71146105cc57600080fd5b80636ebd00781161016f57806375cb1bd11161014957806375cb1bd11461088a5780637b3efe58146108aa578063893d20e8146108bf5780638a8c523c146108dd57600080fd5b80636ebd00781461084057806370a0823114610855578063715018a61461087557600080fd5b8063537df3b6116101ab578063537df3b6146107a7578063590ffdce146107c75780635cce86cd146107e75780636e1828091461082057600080fd5b80634fb2e45d1461072f5780634fbee1931461074f57806350a8e0161461078857600080fd5b80632b112e49116102ab578063452ed4f1116102495780634ada218b116102235780634ada218b146106bf5780634b3c109a146106d95780634bbb93eb146106ef5780634e718e481461070f57600080fd5b8063452ed4f11461067457806346ea7ac81461069457806348726021146106aa57600080fd5b8063313ce56711610285578063313ce567146105f857806332cde6641461061457806336fddb04146106345780633f3cf56c1461065457600080fd5b80632b112e49146105b75780632b28fc7a146105cc5780632e8fa821146105e257600080fd5b8063084e4f8a1161031857806318160ddd116102f257806318160ddd1461054c57806323b872dd14610561578063260039571461058157806328577751146105a157600080fd5b8063084e4f8a146104de578063095ea7b3146105175780630fa604e41461053757600080fd5b8063069d955f11610354578063069d955f146103f457806306fdde03146104495780630758d9241461048f57806307dd79e0146104b457600080fd5b806303fd2a4514610386578063043c17de146103b95780630445b667146103d057600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c557600080fd5b506103ce610b69565b005b3480156103dc57600080fd5b506103e660135481565b6040519081526020016103b0565b34801561040057600080fd5b50600a546104249061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103b0565b34801561045557600080fd5b50604080518082019091526014815273476f6f64204675636b696e67204d6f726e696e6760601b60208201525b6040516103b09190612bc3565b34801561049b57600080fd5b50600c5461039c9061010090046001600160a01b031681565b3480156104c057600080fd5b50600c546104ce9060ff1681565b60405190151581526020016103b0565b3480156104ea57600080fd5b506104ce6104f9366004612c30565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561052357600080fd5b506104ce610532366004612c4d565b610c10565b34801561054357600080fd5b506103e6610c27565b34801561055857600080fd5b506009546103e6565b34801561056d57600080fd5b506104ce61057c366004612c79565b610c47565b34801561058d57600080fd5b506103ce61059c366004612cba565b610cbf565b3480156105ad57600080fd5b506103e660165481565b3480156105c357600080fd5b506103e6610d98565b3480156105d857600080fd5b506103e6610bb881565b3480156105ee57600080fd5b506103e660145481565b34801561060457600080fd5b50604051600981526020016103b0565b34801561062057600080fd5b506103ce61062f366004612cf3565b610dc6565b34801561064057600080fd5b506103ce61064f366004612d46565b610f07565b34801561066057600080fd5b506103ce61066f366004612cba565b610f5c565b34801561068057600080fd5b50600d5461039c906001600160a01b031681565b3480156106a057600080fd5b506103e661177081565b3480156106b657600080fd5b50601a546103e6565b3480156106cb57600080fd5b506019546104ce9060ff1681565b3480156106e557600080fd5b506103e6601a5481565b3480156106fb57600080fd5b506103e661070a366004612d7b565b61104f565b34801561071b57600080fd5b506103ce61072a366004612d7b565b611081565b34801561073b57600080fd5b506103ce61074a366004612c30565b6110fa565b34801561075b57600080fd5b506104ce61076a366004612c30565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561079457600080fd5b506019546104ce90610100900460ff1681565b3480156107b357600080fd5b506103ce6107c2366004612c30565b61122d565b3480156107d357600080fd5b506103ce6107e2366004612d46565b611278565b3480156107f357600080fd5b506104ce610802366004612c30565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561082c57600080fd5b506103ce61083b366004612c30565b6112cd565b34801561084c57600080fd5b506103e6611319565b34801561086157600080fd5b506103e6610870366004612c30565b611334565b34801561088157600080fd5b506103ce61134f565b34801561089657600080fd5b506103ce6108a5366004612d94565b6113de565b3480156108b657600080fd5b50601b546103e6565b3480156108cb57600080fd5b50601c546001600160a01b031661039c565b3480156108e957600080fd5b506103ce611447565b3480156108fe57600080fd5b5060408051808201909152600381526247464d60e81b6020820152610482565b34801561092a57600080fd5b506104ce610939366004612c4d565b6115ab565b34801561094a57600080fd5b506015546104ce9060ff1681565b34801561096457600080fd5b506103ce610973366004612ddf565b6115c2565b34801561098457600080fd5b50600b546109c59061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0016103b0565b348015610a0e57600080fd5b506103e6610a1d366004612dfb565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a5457600080fd5b506103ce610a63366004612e34565b61164b565b348015610a7457600080fd5b5060195461039c906201000090046001600160a01b031681565b348015610a9a57600080fd5b50600e54600f54601054601154610ac1936001600160a01b03908116938116928116911684565b604080516001600160a01b03958616815293851660208501529184169183019190915290911660608201526080016103b0565b348015610b0057600080fd5b506103ce610b0f366004612c30565b6117c2565b348015610b2057600080fd5b506103ce610b2f366004612e99565b611810565b348015610b4057600080fd5b506103e6601b5481565b348015610b5657600080fd5b506012546104ce90610100900460ff1681565b601c546001600160a01b03163314610b9c5760405162461bcd60e51b8152600401610b9390612ecb565b60405180910390fd5b60646009546002610bad9190612f0c565b610bb79190612f2b565b601855600954606490610bcb906002612f0c565b610bd59190612f2b565b601755600a805465ffffffffffff19166301f401f4179055600b8054690258000000000000000069ffff0000ffff0000000019909116179055565b6000610c1d3384846119c5565b5060015b92915050565b6000610c356009600a613031565b601854610c429190612f2b565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610cac576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610ca6908490613040565b90915550505b610cb7848484611abe565b949350505050565b601c546001600160a01b03163314610ce95760405162461bcd60e51b8152600401610b9390612ecb565b6064600954610cf89190612f2b565b8183600954610d079190612f0c565b610d119190612f2b565b1015610d785760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610b93565b8082600954610d879190612f0c565b610d919190612f2b565b6018555050565b6000610da46000611334565b610daf61dead611334565b610db99190613057565b600954610c429190613040565b601c546001600160a01b03163314610df05760405162461bcd60e51b8152600401610b9390612ecb565b610bb88361ffff1611158015610e0c5750610bb88261ffff1611155b8015610e1e5750610bb88161ffff1611155b610e6a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b93565b611770610e77838561306f565b61ffff161115610ec95760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610b93565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b601c546001600160a01b03163314610f315760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c546001600160a01b03163314610f865760405162461bcd60e51b8152600401610b9390612ecb565b6103e86009546005610f989190612f0c565b610fa29190612f2b565b8183600954610fb19190612f0c565b610fbb9190612f2b565b101561102f5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b93565b808260095461103e9190612f0c565b6110489190612f2b565b6017555050565b600d5460009061271090839061106d906001600160a01b0316611334565b6110779190612f0c565b610c219190612f2b565b601c546001600160a01b031633146110ab5760405162461bcd60e51b8152600401610b9390612ecb565b60968111156110f55760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610b93565b601655565b601c546001600160a01b031633146111245760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03811661114a5760405162461bcd60e51b8152600401610b9390613095565b6001600160a01b03811661dead14156111755760405162461bcd60e51b8152600401610b9390613095565b601c5461118c906001600160a01b03166000611278565b611197816001611278565b601c546000906111af906001600160a01b0316611334565b11156111db57601c546111d9906001600160a01b0316826111cf82611334565b6000806001611f0f565b505b601c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601c546001600160a01b031633146112575760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03166000908152600860205260409020805460ff19169055565b601c546001600160a01b031633146112a25760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601c546001600160a01b031633146112f75760405162461bcd60e51b8152600401610b9390612ecb565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60006113276009600a613031565b601754610c429190612f2b565b6001600160a01b031660009081526001602052604090205490565b601c546001600160a01b031633146113795760405162461bcd60e51b8152600401610b9390612ecb565b601c54611390906001600160a01b03166000611278565b601c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c546001600160a01b031633146114085760405162461bcd60e51b8152600401610b9390612ecb565b600e80546001600160a01b039485166001600160a01b031991821617909155600f80549385169382169390931790925560108054919093169116179055565b601c546001600160a01b031633146114715760405162461bcd60e51b8152600401610b9390612ecb565b60195460ff16156114c45760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b93565b601954610100900460ff1661151b5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b93565b6019805460ff19166001179055600d5461271090611541906001600160a01b0316611334565b61154c90600a612f0c565b6115569190612f2b565b601355600d5461271090611572906001600160a01b0316611334565b61157d90601e612f0c565b6115879190612f2b565b601455600c546115a990309061010090046001600160a01b03166000196119c5565b565b60006115b8338484611abe565b5060019392505050565b601c546001600160a01b031633146115ec5760405162461bcd60e51b8152600401610b9390612ecb565b6012805461ff001916610100841515908102919091179091556015805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601c546001600160a01b031633146116755760405162461bcd60e51b8152600401610b9390612ecb565b600b805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff000000001916600160201b8683160267ffff000000000000191617600160301b858316021769ffff00000000000000001916600160401b9184169190910217905580836116e7868861306f565b6116f1919061306f565b6116fb919061306f565b600b805461ffff60501b1916600160501b61ffff93841602179055600a5460009161172f916201000081048216911661306f565b600b5461ffff9182169250829161175891600160301b8104821691600160501b9091041661306f565b61ffff1611156117ba5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b93565b505050505050565b601c546001600160a01b031633146117ec5760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b601c546001600160a01b0316331461183a5760405162461bcd60e51b8152600401610b9390612ecb565b82846009546118499190612f0c565b6118539190612f2b565b6013556009548190611866908490612f0c565b6118709190612f2b565b601481905560135411156118d05760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b93565b600d54612710906118e9906001600160a01b0316611334565b6118f4906096612f0c565b6118fe9190612f2b565b601454111561195b5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b93565b620f424060095461196c9190612f2b565b601454101561198d5760405162461bcd60e51b8152600401610b93906130f2565b620f424060095461199e9190612f2b565b60135410156119bf5760405162461bcd60e51b8152600401610b93906130f2565b50505050565b6001600160a01b038316611a115760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b93565b6001600160a01b038216611a5d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b93565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611b245760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b93565b6001600160a01b038316611b865760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b93565b60008211611be85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b93565b6001600160a01b03841660009081526008602052604090205460ff16158015611c2a57506001600160a01b03831660009081526008602052604090205460ff16155b611c3357600080fd5b6001600160a01b0384166000908152600260205260408120548190819060ff1615611c615760019250611c8f565b6001600160a01b03861660009081526002602052604090205460ff1615611c8b5760019150611c8f565b5060015b611c9987876120cc565b15611e665760195460ff16611cf05760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b93565b8280611cf95750815b15611da8576001600160a01b03871660009081526007602052604090205460ff16158015611d4057506001600160a01b03861660009081526007602052604090205460ff16155b15611da857601754851115611da85760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b93565b600c546001600160a01b038781166101009092041614801590611dc9575081155b15611e66576001600160a01b03861660009081526007602052604090205460ff16611e665760185485611dfb88611334565b611e059190613057565b1115611e665760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610b93565b8115611ef65760125460ff16611ef657601254610100900460ff1615611ef6576000611e9130611334565b90506013548110611ef45760145460155460ff1615611ede57601654600d546127109190611ec7906001600160a01b0316611334565b611ed19190612f0c565b611edb9190612f2b565b90505b808210611ee9578091505b611ef2826121a3565b505b505b611f04878787868686611f0f565b979650505050505050565b601954600090610100900460ff16611faa57611f2b87876127d9565b601954610100900460ff16158015611f485750611f4887876120cc565b8015611f52575081155b15611faa5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b93565b6001600160a01b03871660009081526006602052604090205460019060ff1680611fec57506001600160a01b03871660009081526006602052604090205460ff165b15611ff5575060005b6001600160a01b0388166000908152600160205260408120805488929061201d908490613040565b909155506000905081612030578661203c565b61203c8987878a6128f1565b6001600160a01b038916600090815260016020526040812080549293508392909190612069908490613057565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120b591815260200190565b60405180910390a350600198975050505050505050565b601c546000906001600160a01b038481169116148015906120fb5750601c546001600160a01b03838116911614155b80156121125750601c546001600160a01b03163214155b801561213757506001600160a01b03821660009081526005602052604090205460ff16155b801561215c57506001600160a01b03831660009081526005602052604090205460ff16155b801561217357506001600160a01b03821661dead14155b801561218757506001600160a01b03821615155b801561219c57506001600160a01b0383163014155b9392505050565b6012805460ff191660011790556040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a0820181905261221957506127cc565b306000908152600460209081526040808320600c5461010090046001600160a01b031684529091529020546000191461227c57306000908152600460209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836000015161ffff168561229d9190612f0c565b6122a79190612f2b565b6122b19190612f2b565b905060006122bf8285613040565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106122f9576122f9613140565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561236757600080fd5b505afa15801561237b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239f9190613156565b816001815181106123b2576123b2613140565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac947906123ff9085906000908690309042906004016131b7565b600060405180830381600087803b15801561241957600080fd5b505af192505050801561242a575060015b61243757505050506127cc565b476000836124458684612f0c565b61244f9190612f2b565b9050841561254457600c5460105460405163f305d71960e01b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c4016060604051808303818588803b1580156124c757600080fd5b505af1935050505080156124f8575060408051601f3d908101601f191682019092526124f5918101906131f3565b60015b612507575050505050506127cc565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b61254e8183613040565b915085600001518660a0018181516125669190613221565b61ffff90811690915260a088015160408901516000935083929182169161258e911686612f0c565b6125989190612f2b565b6019549091506000906201000090046001600160a01b03166125bb5760006125e2565b8860a0015161ffff16896080015161ffff16866125d89190612f0c565b6125e29190612f2b565b905060006125f08284613057565b6125fa9087613040565b9050801561265f57600e546040516001600160a01b03909116906188b89083906000818181858888f193505050503d8060008114612654576040519150601f19603f3d011682016040523d82523d6000602084013e612659565b606091505b50909450505b82156126c257600f546040516001600160a01b03909116906188b89085906000818181858888f193505050503d80600081146126b7576040519150601f19603f3d011682016040523d82523d6000602084013e6126bc565b606091505b50909450505b81156127c157600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561271657600080fd5b505afa15801561272a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274e9190613156565b8760008151811061276157612761613140565b6001600160a01b039283166020918202929092010152601954885162010000909104909116908890600190811061279a5761279a613140565b6001600160a01b0392831660209182029290920101526011546127c1918991859116612aec565b505050505050505050505b506012805460ff19169055565b601954610100900460ff161561283d5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b93565b61284782826120cc565b1580156128615750600d546001600160a01b038281169116145b156128ed576001600160a01b03821660009081526005602090815260408083208054600160ff1991821681179092556006845293829020805490941681179093556019805461010061ff00199182168117909255601280549091169091179055519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257910161163f565b5050565b6040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201526000908185156129655750600a5461ffff1661298e565b841561297e5750600a5462010000900461ffff1661298e565b50600a54600160201b900461ffff165b600061271061299d8387612f0c565b6129a79190612f2b565b905060008360a0015184606001516129bf919061306f565b61ffff16846060015161ffff16836129d79190612f0c565b6129e19190612f2b565b905060006129ef8284613040565b90508015612a5c573060009081526001602052604081208054839290612a16908490613057565b909155505060405181815230906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b8115612ad4578160096000828254612a749190613040565b9250508190555081601b6000828254612a8d9190613057565b90915550506040518281526000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612ade8388613040565b9a9950505050505050505050565b600c5460405163b6f9de9560e01b81526101009091046001600160a01b03169063b6f9de95908490612b2990600090889087904290600401613244565b6000604051808303818588803b158015612b4257600080fd5b505af193505050508015612b54575060015b612b5d57505050565b601960029054906101000a90046001600160a01b03166001600160a01b031683600181518110612b8f57612b8f613140565b60200260200101516001600160a01b03161415612bbe5781601a6000828254612bb89190613057565b90915550505b505050565b600060208083528351808285015260005b81811015612bf057858101830151858201604001528201612bd4565b81811115612c02576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612c2d57600080fd5b50565b600060208284031215612c4257600080fd5b813561219c81612c18565b60008060408385031215612c6057600080fd5b8235612c6b81612c18565b946020939093013593505050565b600080600060608486031215612c8e57600080fd5b8335612c9981612c18565b92506020840135612ca981612c18565b929592945050506040919091013590565b60008060408385031215612ccd57600080fd5b50508035926020909101359150565b803561ffff81168114612cee57600080fd5b919050565b600080600060608486031215612d0857600080fd5b612d1184612cdc565b9250612d1f60208501612cdc565b9150612d2d60408501612cdc565b90509250925092565b80358015158114612cee57600080fd5b60008060408385031215612d5957600080fd5b8235612d6481612c18565b9150612d7260208401612d36565b90509250929050565b600060208284031215612d8d57600080fd5b5035919050565b600080600060608486031215612da957600080fd5b8335612db481612c18565b92506020840135612dc481612c18565b91506040840135612dd481612c18565b809150509250925092565b60008060408385031215612df257600080fd5b612d6483612d36565b60008060408385031215612e0e57600080fd5b8235612e1981612c18565b91506020830135612e2981612c18565b809150509250929050565b600080600080600060a08688031215612e4c57600080fd5b612e5586612cdc565b9450612e6360208701612cdc565b9350612e7160408701612cdc565b9250612e7f60608701612cdc565b9150612e8d60808701612cdc565b90509295509295909350565b60008060008060808587031215612eaf57600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615612f2657612f26612ef6565b500290565b600082612f4857634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612f88578160001904821115612f6e57612f6e612ef6565b80851615612f7b57918102915b93841c9390800290612f52565b509250929050565b600082612f9f57506001610c21565b81612fac57506000610c21565b8160018114612fc25760028114612fcc57612fe8565b6001915050610c21565b60ff841115612fdd57612fdd612ef6565b50506001821b610c21565b5060208310610133831016604e8410600b841016171561300b575081810a610c21565b6130158383612f4d565b806000190482111561302957613029612ef6565b029392505050565b600061219c60ff841683612f90565b60008282101561305257613052612ef6565b500390565b6000821982111561306a5761306a612ef6565b500190565b600061ffff80831681851680830382111561308c5761308c612ef6565b01949350505050565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561316857600080fd5b815161219c81612c18565b600081518084526020808501945080840160005b838110156131ac5781516001600160a01b031687529582019590820190600101613187565b509495945050505050565b85815284602082015260a0604082015260006131d660a0830186613173565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561320857600080fd5b8351925060208401519150604084015190509250925092565b600061ffff8381169083168181101561323c5761323c612ef6565b039392505050565b84815260806020820152600061325d6080830186613173565b6001600160a01b0394909416604083015250606001529291505056fea2646970667358221220023bd26dd1c7539ca230c62b3744f58ce45905b431bc932a3bf02e65d9a660be64736f6c63430008090033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c80634fb2e45d116101d157806395d89b4111610102578063dd62ed3e116100a0578063f9f92be41161006f578063f9f92be414610af4578063fb78680d14610b14578063fd01bd4c14610b34578063fdb78c0e14610b4a57600080fd5b8063dd62ed3e14610a02578063f08f43a214610a48578063f8ec691114610a68578063f94aa1b414610a8e57600080fd5b8063b3d514fb116100dc578063b3d514fb146105cc578063b7df8b361461093e578063bfc2fc3514610958578063cf8477061461097857600080fd5b806395d89b41146108f2578063a9059cbb1461091e578063b1b08f71146105cc57600080fd5b80636ebd00781161016f57806375cb1bd11161014957806375cb1bd11461088a5780637b3efe58146108aa578063893d20e8146108bf5780638a8c523c146108dd57600080fd5b80636ebd00781461084057806370a0823114610855578063715018a61461087557600080fd5b8063537df3b6116101ab578063537df3b6146107a7578063590ffdce146107c75780635cce86cd146107e75780636e1828091461082057600080fd5b80634fb2e45d1461072f5780634fbee1931461074f57806350a8e0161461078857600080fd5b80632b112e49116102ab578063452ed4f1116102495780634ada218b116102235780634ada218b146106bf5780634b3c109a146106d95780634bbb93eb146106ef5780634e718e481461070f57600080fd5b8063452ed4f11461067457806346ea7ac81461069457806348726021146106aa57600080fd5b8063313ce56711610285578063313ce567146105f857806332cde6641461061457806336fddb04146106345780633f3cf56c1461065457600080fd5b80632b112e49146105b75780632b28fc7a146105cc5780632e8fa821146105e257600080fd5b8063084e4f8a1161031857806318160ddd116102f257806318160ddd1461054c57806323b872dd14610561578063260039571461058157806328577751146105a157600080fd5b8063084e4f8a146104de578063095ea7b3146105175780630fa604e41461053757600080fd5b8063069d955f11610354578063069d955f146103f457806306fdde03146104495780630758d9241461048f57806307dd79e0146104b457600080fd5b806303fd2a4514610386578063043c17de146103b95780630445b667146103d057600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c557600080fd5b506103ce610b69565b005b3480156103dc57600080fd5b506103e660135481565b6040519081526020016103b0565b34801561040057600080fd5b50600a546104249061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103b0565b34801561045557600080fd5b50604080518082019091526014815273476f6f64204675636b696e67204d6f726e696e6760601b60208201525b6040516103b09190612bc3565b34801561049b57600080fd5b50600c5461039c9061010090046001600160a01b031681565b3480156104c057600080fd5b50600c546104ce9060ff1681565b60405190151581526020016103b0565b3480156104ea57600080fd5b506104ce6104f9366004612c30565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561052357600080fd5b506104ce610532366004612c4d565b610c10565b34801561054357600080fd5b506103e6610c27565b34801561055857600080fd5b506009546103e6565b34801561056d57600080fd5b506104ce61057c366004612c79565b610c47565b34801561058d57600080fd5b506103ce61059c366004612cba565b610cbf565b3480156105ad57600080fd5b506103e660165481565b3480156105c357600080fd5b506103e6610d98565b3480156105d857600080fd5b506103e6610bb881565b3480156105ee57600080fd5b506103e660145481565b34801561060457600080fd5b50604051600981526020016103b0565b34801561062057600080fd5b506103ce61062f366004612cf3565b610dc6565b34801561064057600080fd5b506103ce61064f366004612d46565b610f07565b34801561066057600080fd5b506103ce61066f366004612cba565b610f5c565b34801561068057600080fd5b50600d5461039c906001600160a01b031681565b3480156106a057600080fd5b506103e661177081565b3480156106b657600080fd5b50601a546103e6565b3480156106cb57600080fd5b506019546104ce9060ff1681565b3480156106e557600080fd5b506103e6601a5481565b3480156106fb57600080fd5b506103e661070a366004612d7b565b61104f565b34801561071b57600080fd5b506103ce61072a366004612d7b565b611081565b34801561073b57600080fd5b506103ce61074a366004612c30565b6110fa565b34801561075b57600080fd5b506104ce61076a366004612c30565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561079457600080fd5b506019546104ce90610100900460ff1681565b3480156107b357600080fd5b506103ce6107c2366004612c30565b61122d565b3480156107d357600080fd5b506103ce6107e2366004612d46565b611278565b3480156107f357600080fd5b506104ce610802366004612c30565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561082c57600080fd5b506103ce61083b366004612c30565b6112cd565b34801561084c57600080fd5b506103e6611319565b34801561086157600080fd5b506103e6610870366004612c30565b611334565b34801561088157600080fd5b506103ce61134f565b34801561089657600080fd5b506103ce6108a5366004612d94565b6113de565b3480156108b657600080fd5b50601b546103e6565b3480156108cb57600080fd5b50601c546001600160a01b031661039c565b3480156108e957600080fd5b506103ce611447565b3480156108fe57600080fd5b5060408051808201909152600381526247464d60e81b6020820152610482565b34801561092a57600080fd5b506104ce610939366004612c4d565b6115ab565b34801561094a57600080fd5b506015546104ce9060ff1681565b34801561096457600080fd5b506103ce610973366004612ddf565b6115c2565b34801561098457600080fd5b50600b546109c59061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b90041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0016103b0565b348015610a0e57600080fd5b506103e6610a1d366004612dfb565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a5457600080fd5b506103ce610a63366004612e34565b61164b565b348015610a7457600080fd5b5060195461039c906201000090046001600160a01b031681565b348015610a9a57600080fd5b50600e54600f54601054601154610ac1936001600160a01b03908116938116928116911684565b604080516001600160a01b03958616815293851660208501529184169183019190915290911660608201526080016103b0565b348015610b0057600080fd5b506103ce610b0f366004612c30565b6117c2565b348015610b2057600080fd5b506103ce610b2f366004612e99565b611810565b348015610b4057600080fd5b506103e6601b5481565b348015610b5657600080fd5b506012546104ce90610100900460ff1681565b601c546001600160a01b03163314610b9c5760405162461bcd60e51b8152600401610b9390612ecb565b60405180910390fd5b60646009546002610bad9190612f0c565b610bb79190612f2b565b601855600954606490610bcb906002612f0c565b610bd59190612f2b565b601755600a805465ffffffffffff19166301f401f4179055600b8054690258000000000000000069ffff0000ffff0000000019909116179055565b6000610c1d3384846119c5565b5060015b92915050565b6000610c356009600a613031565b601854610c429190612f2b565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610cac576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610ca6908490613040565b90915550505b610cb7848484611abe565b949350505050565b601c546001600160a01b03163314610ce95760405162461bcd60e51b8152600401610b9390612ecb565b6064600954610cf89190612f2b565b8183600954610d079190612f0c565b610d119190612f2b565b1015610d785760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610b93565b8082600954610d879190612f0c565b610d919190612f2b565b6018555050565b6000610da46000611334565b610daf61dead611334565b610db99190613057565b600954610c429190613040565b601c546001600160a01b03163314610df05760405162461bcd60e51b8152600401610b9390612ecb565b610bb88361ffff1611158015610e0c5750610bb88261ffff1611155b8015610e1e5750610bb88161ffff1611155b610e6a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b93565b611770610e77838561306f565b61ffff161115610ec95760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610b93565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b601c546001600160a01b03163314610f315760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c546001600160a01b03163314610f865760405162461bcd60e51b8152600401610b9390612ecb565b6103e86009546005610f989190612f0c565b610fa29190612f2b565b8183600954610fb19190612f0c565b610fbb9190612f2b565b101561102f5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b93565b808260095461103e9190612f0c565b6110489190612f2b565b6017555050565b600d5460009061271090839061106d906001600160a01b0316611334565b6110779190612f0c565b610c219190612f2b565b601c546001600160a01b031633146110ab5760405162461bcd60e51b8152600401610b9390612ecb565b60968111156110f55760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610b93565b601655565b601c546001600160a01b031633146111245760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03811661114a5760405162461bcd60e51b8152600401610b9390613095565b6001600160a01b03811661dead14156111755760405162461bcd60e51b8152600401610b9390613095565b601c5461118c906001600160a01b03166000611278565b611197816001611278565b601c546000906111af906001600160a01b0316611334565b11156111db57601c546111d9906001600160a01b0316826111cf82611334565b6000806001611f0f565b505b601c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601c546001600160a01b031633146112575760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03166000908152600860205260409020805460ff19169055565b601c546001600160a01b031633146112a25760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601c546001600160a01b031633146112f75760405162461bcd60e51b8152600401610b9390612ecb565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60006113276009600a613031565b601754610c429190612f2b565b6001600160a01b031660009081526001602052604090205490565b601c546001600160a01b031633146113795760405162461bcd60e51b8152600401610b9390612ecb565b601c54611390906001600160a01b03166000611278565b601c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c546001600160a01b031633146114085760405162461bcd60e51b8152600401610b9390612ecb565b600e80546001600160a01b039485166001600160a01b031991821617909155600f80549385169382169390931790925560108054919093169116179055565b601c546001600160a01b031633146114715760405162461bcd60e51b8152600401610b9390612ecb565b60195460ff16156114c45760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b93565b601954610100900460ff1661151b5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b93565b6019805460ff19166001179055600d5461271090611541906001600160a01b0316611334565b61154c90600a612f0c565b6115569190612f2b565b601355600d5461271090611572906001600160a01b0316611334565b61157d90601e612f0c565b6115879190612f2b565b601455600c546115a990309061010090046001600160a01b03166000196119c5565b565b60006115b8338484611abe565b5060019392505050565b601c546001600160a01b031633146115ec5760405162461bcd60e51b8152600401610b9390612ecb565b6012805461ff001916610100841515908102919091179091556015805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601c546001600160a01b031633146116755760405162461bcd60e51b8152600401610b9390612ecb565b600b805461ffff87811663ffffffff199092169190911762010000878316021767ffffffff000000001916600160201b8683160267ffff000000000000191617600160301b858316021769ffff00000000000000001916600160401b9184169190910217905580836116e7868861306f565b6116f1919061306f565b6116fb919061306f565b600b805461ffff60501b1916600160501b61ffff93841602179055600a5460009161172f916201000081048216911661306f565b600b5461ffff9182169250829161175891600160301b8104821691600160501b9091041661306f565b61ffff1611156117ba5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b93565b505050505050565b601c546001600160a01b031633146117ec5760405162461bcd60e51b8152600401610b9390612ecb565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b601c546001600160a01b0316331461183a5760405162461bcd60e51b8152600401610b9390612ecb565b82846009546118499190612f0c565b6118539190612f2b565b6013556009548190611866908490612f0c565b6118709190612f2b565b601481905560135411156118d05760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b93565b600d54612710906118e9906001600160a01b0316611334565b6118f4906096612f0c565b6118fe9190612f2b565b601454111561195b5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b93565b620f424060095461196c9190612f2b565b601454101561198d5760405162461bcd60e51b8152600401610b93906130f2565b620f424060095461199e9190612f2b565b60135410156119bf5760405162461bcd60e51b8152600401610b93906130f2565b50505050565b6001600160a01b038316611a115760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b93565b6001600160a01b038216611a5d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b93565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611b245760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b93565b6001600160a01b038316611b865760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b93565b60008211611be85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b93565b6001600160a01b03841660009081526008602052604090205460ff16158015611c2a57506001600160a01b03831660009081526008602052604090205460ff16155b611c3357600080fd5b6001600160a01b0384166000908152600260205260408120548190819060ff1615611c615760019250611c8f565b6001600160a01b03861660009081526002602052604090205460ff1615611c8b5760019150611c8f565b5060015b611c9987876120cc565b15611e665760195460ff16611cf05760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b93565b8280611cf95750815b15611da8576001600160a01b03871660009081526007602052604090205460ff16158015611d4057506001600160a01b03861660009081526007602052604090205460ff16155b15611da857601754851115611da85760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b93565b600c546001600160a01b038781166101009092041614801590611dc9575081155b15611e66576001600160a01b03861660009081526007602052604090205460ff16611e665760185485611dfb88611334565b611e059190613057565b1115611e665760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610b93565b8115611ef65760125460ff16611ef657601254610100900460ff1615611ef6576000611e9130611334565b90506013548110611ef45760145460155460ff1615611ede57601654600d546127109190611ec7906001600160a01b0316611334565b611ed19190612f0c565b611edb9190612f2b565b90505b808210611ee9578091505b611ef2826121a3565b505b505b611f04878787868686611f0f565b979650505050505050565b601954600090610100900460ff16611faa57611f2b87876127d9565b601954610100900460ff16158015611f485750611f4887876120cc565b8015611f52575081155b15611faa5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b93565b6001600160a01b03871660009081526006602052604090205460019060ff1680611fec57506001600160a01b03871660009081526006602052604090205460ff165b15611ff5575060005b6001600160a01b0388166000908152600160205260408120805488929061201d908490613040565b909155506000905081612030578661203c565b61203c8987878a6128f1565b6001600160a01b038916600090815260016020526040812080549293508392909190612069908490613057565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120b591815260200190565b60405180910390a350600198975050505050505050565b601c546000906001600160a01b038481169116148015906120fb5750601c546001600160a01b03838116911614155b80156121125750601c546001600160a01b03163214155b801561213757506001600160a01b03821660009081526005602052604090205460ff16155b801561215c57506001600160a01b03831660009081526005602052604090205460ff16155b801561217357506001600160a01b03821661dead14155b801561218757506001600160a01b03821615155b801561219c57506001600160a01b0383163014155b9392505050565b6012805460ff191660011790556040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a0820181905261221957506127cc565b306000908152600460209081526040808320600c5461010090046001600160a01b031684529091529020546000191461227c57306000908152600460209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836000015161ffff168561229d9190612f0c565b6122a79190612f2b565b6122b19190612f2b565b905060006122bf8285613040565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106122f9576122f9613140565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561236757600080fd5b505afa15801561237b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239f9190613156565b816001815181106123b2576123b2613140565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac947906123ff9085906000908690309042906004016131b7565b600060405180830381600087803b15801561241957600080fd5b505af192505050801561242a575060015b61243757505050506127cc565b476000836124458684612f0c565b61244f9190612f2b565b9050841561254457600c5460105460405163f305d71960e01b81523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c4016060604051808303818588803b1580156124c757600080fd5b505af1935050505080156124f8575060408051601f3d908101601f191682019092526124f5918101906131f3565b60015b612507575050505050506127cc565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b61254e8183613040565b915085600001518660a0018181516125669190613221565b61ffff90811690915260a088015160408901516000935083929182169161258e911686612f0c565b6125989190612f2b565b6019549091506000906201000090046001600160a01b03166125bb5760006125e2565b8860a0015161ffff16896080015161ffff16866125d89190612f0c565b6125e29190612f2b565b905060006125f08284613057565b6125fa9087613040565b9050801561265f57600e546040516001600160a01b03909116906188b89083906000818181858888f193505050503d8060008114612654576040519150601f19603f3d011682016040523d82523d6000602084013e612659565b606091505b50909450505b82156126c257600f546040516001600160a01b03909116906188b89085906000818181858888f193505050503d80600081146126b7576040519150601f19603f3d011682016040523d82523d6000602084013e6126bc565b606091505b50909450505b81156127c157600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561271657600080fd5b505afa15801561272a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061274e9190613156565b8760008151811061276157612761613140565b6001600160a01b039283166020918202929092010152601954885162010000909104909116908890600190811061279a5761279a613140565b6001600160a01b0392831660209182029290920101526011546127c1918991859116612aec565b505050505050505050505b506012805460ff19169055565b601954610100900460ff161561283d5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b93565b61284782826120cc565b1580156128615750600d546001600160a01b038281169116145b156128ed576001600160a01b03821660009081526005602090815260408083208054600160ff1991821681179092556006845293829020805490941681179093556019805461010061ff00199182168117909255601280549091169091179055519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257910161163f565b5050565b6040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201526000908185156129655750600a5461ffff1661298e565b841561297e5750600a5462010000900461ffff1661298e565b50600a54600160201b900461ffff165b600061271061299d8387612f0c565b6129a79190612f2b565b905060008360a0015184606001516129bf919061306f565b61ffff16846060015161ffff16836129d79190612f0c565b6129e19190612f2b565b905060006129ef8284613040565b90508015612a5c573060009081526001602052604081208054839290612a16908490613057565b909155505060405181815230906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b8115612ad4578160096000828254612a749190613040565b9250508190555081601b6000828254612a8d9190613057565b90915550506040518281526000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612ade8388613040565b9a9950505050505050505050565b600c5460405163b6f9de9560e01b81526101009091046001600160a01b03169063b6f9de95908490612b2990600090889087904290600401613244565b6000604051808303818588803b158015612b4257600080fd5b505af193505050508015612b54575060015b612b5d57505050565b601960029054906101000a90046001600160a01b03166001600160a01b031683600181518110612b8f57612b8f613140565b60200260200101516001600160a01b03161415612bbe5781601a6000828254612bb89190613057565b90915550505b505050565b600060208083528351808285015260005b81811015612bf057858101830151858201604001528201612bd4565b81811115612c02576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114612c2d57600080fd5b50565b600060208284031215612c4257600080fd5b813561219c81612c18565b60008060408385031215612c6057600080fd5b8235612c6b81612c18565b946020939093013593505050565b600080600060608486031215612c8e57600080fd5b8335612c9981612c18565b92506020840135612ca981612c18565b929592945050506040919091013590565b60008060408385031215612ccd57600080fd5b50508035926020909101359150565b803561ffff81168114612cee57600080fd5b919050565b600080600060608486031215612d0857600080fd5b612d1184612cdc565b9250612d1f60208501612cdc565b9150612d2d60408501612cdc565b90509250925092565b80358015158114612cee57600080fd5b60008060408385031215612d5957600080fd5b8235612d6481612c18565b9150612d7260208401612d36565b90509250929050565b600060208284031215612d8d57600080fd5b5035919050565b600080600060608486031215612da957600080fd5b8335612db481612c18565b92506020840135612dc481612c18565b91506040840135612dd481612c18565b809150509250925092565b60008060408385031215612df257600080fd5b612d6483612d36565b60008060408385031215612e0e57600080fd5b8235612e1981612c18565b91506020830135612e2981612c18565b809150509250929050565b600080600080600060a08688031215612e4c57600080fd5b612e5586612cdc565b9450612e6360208701612cdc565b9350612e7160408701612cdc565b9250612e7f60608701612cdc565b9150612e8d60808701612cdc565b90509295509295909350565b60008060008060808587031215612eaf57600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615612f2657612f26612ef6565b500290565b600082612f4857634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612f88578160001904821115612f6e57612f6e612ef6565b80851615612f7b57918102915b93841c9390800290612f52565b509250929050565b600082612f9f57506001610c21565b81612fac57506000610c21565b8160018114612fc25760028114612fcc57612fe8565b6001915050610c21565b60ff841115612fdd57612fdd612ef6565b50506001821b610c21565b5060208310610133831016604e8410600b841016171561300b575081810a610c21565b6130158383612f4d565b806000190482111561302957613029612ef6565b029392505050565b600061219c60ff841683612f90565b60008282101561305257613052612ef6565b500390565b6000821982111561306a5761306a612ef6565b500190565b600061ffff80831681851680830382111561308c5761308c612ef6565b01949350505050565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561316857600080fd5b815161219c81612c18565b600081518084526020808501945080840160005b838110156131ac5781516001600160a01b031687529582019590820190600101613187565b509495945050505050565b85815284602082015260a0604082015260006131d660a0830186613173565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561320857600080fd5b8351925060208401519150604084015190509250925092565b600061ffff8381169083168181101561323c5761323c612ef6565b039392505050565b84815260806020820152600061325d6080830186613173565b6001600160a01b0394909416604083015250606001529291505056fea2646970667358221220023bd26dd1c7539ca230c62b3744f58ce45905b431bc932a3bf02e65d9a660be64736f6c63430008090033

Deployed Bytecode Sourcemap

3615:20679:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5368:73;;;;;;;;;;;;5399:42;5368:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5368:73:0;;;;;;;;13227:316;;;;;;;;;;;;;:::i;:::-;;5973:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;5973:28:0;222:177:1;4709:112:0;;;;;;;;;;-1:-1:-1;4709:112:0;;;;;;;;;;;;;;;-1:-1:-1;;;4709:112:0;;;;;;;;;;610:6:1;643:15;;;625:34;;695:15;;;690:2;675:18;;668:43;747:15;;727:18;;;720:43;;;;588:2;573:18;4709:112:0;404:365:1;9732:80:0;;;;;;;;;;-1:-1:-1;9804:5:0;;;;;;;;;;;;-1:-1:-1;;;9804:5:0;;;;9732:80;;;;;;;:::i;5307:26::-;;;;;;;;;;-1:-1:-1;5307:26:0;;;;;;;-1:-1:-1;;;;;5307:26:0;;;5274;;;;;;;;;;-1:-1:-1;5274:26:0;;;;;;;;;;;1766:14:1;;1759:22;1741:41;;1729:2;1714:18;5274:26:0;1601:187:1;24169:120:0;;;;;;;;;;-1:-1:-1;24169:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;24267:14:0;24243:4;24267:14;;;:4;:14;;;;;;;;;24169:120;10340:161;;;;;;;;;;-1:-1:-1;10340:161:0;;;;;:::i;:::-;;:::i;14364:114::-;;;;;;;;;;;;;:::i;9467:83::-;;;;;;;;;;-1:-1:-1;9540:7:0;;9467:83;;10827:306;;;;;;;;;;-1:-1:-1;10827:306:0;;;;;:::i;:::-;;:::i;13976:264::-;;;;;;;;;;-1:-1:-1;13976:264:0;;;;;:::i;:::-;;:::i;6081:33::-;;;;;;;;;;;;;;;;11706:141;;;;;;;;;;;;;:::i;5018:42::-;;;;;;;;;;;;5056:4;5018:42;;6008:25;;;;;;;;;;;;;;;;9556:80;;;;;;;;;;-1:-1:-1;9556:80:0;;4341:1;3357:36:1;;3345:2;3330:18;9556:80:0;3215:184:1;11855:488:0;;;;;;;;;;-1:-1:-1;11855:488:0;;;;;:::i;:::-;;:::i;11416:140::-;;;;;;;;;;-1:-1:-1;11416:140:0;;;;;:::i;:::-;;:::i;13695:273::-;;;;;;;;;;-1:-1:-1;13695:273:0;;;;;:::i;:::-;;:::i;5340:21::-;;;;;;;;;;-1:-1:-1;5340:21:0;;;;-1:-1:-1;;;;;5340:21:0;;;5171:46;;;;;;;;;;;;5213:4;5171:46;;15886:134;;;;;;;;;;-1:-1:-1;15999:13:0;;15886:134;;6251:34;;;;;;;;;;-1:-1:-1;6251:34:0;;;;;;;;6384:28;;;;;;;;;;;;;;;;14486:189;;;;;;;;;;-1:-1:-1;14486:189:0;;;;;:::i;:::-;;:::i;15390:217::-;;;;;;;;;;-1:-1:-1;15390:217:0;;;;;:::i;:::-;;:::i;8225:654::-;;;;;;;;;;-1:-1:-1;8225:654:0;;;;;:::i;:::-;;:::i;11281:127::-;;;;;;;;;;-1:-1:-1;11281:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;11372:28:0;11348:4;11372:28;;;:19;:28;;;;;;;;;11281:127;6292:36;;;;;;;;;;-1:-1:-1;6292:36:0;;;;;;;;;;;24049:108;;;;;;;;;;-1:-1:-1;24049:108:0;;;;;:::i;:::-;;:::i;11564:134::-;;;;;;;;;;-1:-1:-1;11564:134:0;;;;;:::i;:::-;;:::i;11141:132::-;;;;;;;;;;-1:-1:-1;11141:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;11235:30:0;11211:4;11235:30;;;:21;:30;;;;;;;;;11141:132;13551:136;;;;;;;;;;-1:-1:-1;13551:136:0;;;;;:::i;:::-;;:::i;14248:108::-;;;;;;;;;;;;;:::i;10042:117::-;;;;;;;;;;-1:-1:-1;10042:117:0;;;;;:::i;:::-;;:::i;8887:225::-;;;;;;;;;;;;;:::i;12926:293::-;;;;;;;;;;-1:-1:-1;12926:293:0;;;;;:::i;:::-;;:::i;16028:119::-;;;;;;;;;;-1:-1:-1;16127:12:0;;16028:119;;9818:79;;;;;;;;;;-1:-1:-1;9888:6:0;;-1:-1:-1;;;;;9888:6:0;9818:79;;21782:399;;;;;;;;;;;;;:::i;9642:84::-;;;;;;;;;;-1:-1:-1;9716:7:0;;;;;;;;;;;;-1:-1:-1;;;9716:7:0;;;;9642:84;;10167:165;;;;;;;;;;-1:-1:-1;10167:165:0;;;;;:::i;:::-;;:::i;6040:34::-;;;;;;;;;;-1:-1:-1;6040:34:0;;;;;;;;15615:263;;;;;;;;;;-1:-1:-1;15615:263:0;;;;;:::i;:::-;;:::i;4830:179::-;;;;;;;;;;-1:-1:-1;4830:179:0;;;;;;;;;;;;;;;-1:-1:-1;;;4830:179:0;;;;;-1:-1:-1;;;4830:179:0;;;;;-1:-1:-1;;;4830:179:0;;;;;-1:-1:-1;;;4830:179:0;;;;;;;;;5927:6:1;5960:15;;;5942:34;;6012:15;;;6007:2;5992:18;;5985:43;6064:15;;;6044:18;;;6037:43;;;;6116:15;;;6111:2;6096:18;;6089:43;6169:15;;6163:3;6148:19;;6141:44;6222:15;;;6216:3;6201:19;;6194:44;5904:3;5889:19;4830:179:0;5642:602:1;9903:133:0;;;;;;;;;;-1:-1:-1;9903:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10005:19:0;;;9987:7;10005:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9903:133;12351:567;;;;;;;;;;-1:-1:-1;12351:567:0;;;;;:::i;:::-;;:::i;6337:38::-;;;;;;;;;;-1:-1:-1;6337:38:0;;;;;;;-1:-1:-1;;;;;6337:38:0;;;5628:268;;;;;;;;;;-1:-1:-1;5628:268:0;;;;;;;;;;-1:-1:-1;;;;;5628:268:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7472:15:1;;;7454:34;;7524:15;;;7519:2;7504:18;;7497:43;7576:15;;;7556:18;;;7549:43;;;;7628:15;;;7623:2;7608:18;;7601:43;7403:3;7388:19;5628:268:0;7121:529:1;23940:97:0;;;;;;;;;;-1:-1:-1;23940:97:0;;;;;:::i;:::-;;:::i;14683:699::-;;;;;;;;;;-1:-1:-1;14683:699:0;;;;;:::i;:::-;;:::i;6419:27::-;;;;;;;;;;;;;;;;5927:39;;;;;;;;;;-1:-1:-1;5927:39:0;;;;;;;;;;;13227:316;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;;;;;;;;;13316:3:::1;13301:7;;13311:1;13301:11;;;;:::i;:::-;13300:19;;;;:::i;:::-;13283:14;:36:::0;13346:7:::1;::::0;13361:3:::1;::::0;13346:11:::1;::::0;13356:1:::1;13346:11;:::i;:::-;13345:19;;;;:::i;:::-;13330:12;:34:::0;13375:9:::1;:22:::0;;-1:-1:-1;;13442:25:0;13408:23;13442:25;;;13478:7:::1;:23:::0;;13512:21;-1:-1:-1;;13512:21:0;;;::::1;::::0;;13227:316::o;10340:161::-;10417:4;10434:37;10443:10;10455:7;10464:6;10434:8;:37::i;:::-;-1:-1:-1;10489:4:0;10340:161;;;;;:::o;14364:114::-;14411:7;14456:13;4341:1;14456:2;:13;:::i;:::-;14438:14;;:32;;;;:::i;:::-;14431:39;;14364:114;:::o;10827:306::-;-1:-1:-1;;;;;10948:19:0;;10927:4;10948:19;;;:11;:19;;;;;;;;10968:10;10948:31;;;;;;;;-1:-1:-1;;10948:52:0;10944:126;;-1:-1:-1;;;;;11017:19:0;;;;;;:11;:19;;;;;;;;11037:10;11017:31;;;;;;;:41;;11052:6;;11017:19;:41;;11052:6;;11017:41;:::i;:::-;;;;-1:-1:-1;;10944:126:0;11089:36;11099:6;11107:9;11118:6;11089:9;:36::i;:::-;11082:43;10827:306;-1:-1:-1;;;;10827:306:0:o;13976:264::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;14118:3:::1;14108:7;;:13;;;;:::i;:::-;14096:7;14085;14075;;:17;;;;:::i;:::-;14074:29;;;;:::i;:::-;:48;;14066:109;;;::::0;-1:-1:-1;;;14066:109:0;;10633:2:1;14066:109:0::1;::::0;::::1;10615:21:1::0;10672:2;10652:18;;;10645:30;10711:34;10691:18;;;10684:62;-1:-1:-1;;;10762:18:1;;;10755:46;10818:19;;14066:109:0::1;10431:412:1::0;14066:109:0::1;14225:7;14214;14204;;:17;;;;:::i;:::-;14203:29;;;;:::i;:::-;14186:14;:46:::0;-1:-1:-1;;13976:264:0:o;11706:141::-;11759:7;11816:21;11834:1;11816:9;:21::i;:::-;11798:15;5399:42;11798:9;:15::i;:::-;:39;;;;:::i;:::-;11787:7;;:51;;;;:::i;11855:488::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;5056:4:::1;11962:6;:21;;;;:65;;;;;5106:4;12004:7;:23;;;;11962:65;:117;;;;;5160:4;12048:11;:31;;;;11962:117;11954:170;;;::::0;-1:-1:-1;;;11954:170:0;;11183:2:1;11954:170:0::1;::::0;::::1;11165:21:1::0;11222:2;11202:18;;;11195:30;11261:25;11241:18;;;11234:53;11304:18;;11954:170:0::1;10981:347:1::0;11954:170:0::1;5213:4;12143:16;12152:7:::0;12143:6;:16:::1;:::i;:::-;:35;;;;12135:80;;;::::0;-1:-1:-1;;;12135:80:0;;11764:2:1;12135:80:0::1;::::0;::::1;11746:21:1::0;;;11783:18;;;11776:30;11842:34;11822:18;;;11815:62;11894:18;;12135:80:0::1;11562:356:1::0;12135:80:0::1;12226:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;12262:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;12300:35:0::1;-1:-1:-1::0;;;12300:35:0;;;::::1;;::::0;;;::::1;::::0;;11855:488::o;11416:140::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11508:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;11508:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11416:140::o;13695:273::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;13840:4:::1;13826:7;;13836:1;13826:11;;;;:::i;:::-;:18;;;;:::i;:::-;13814:7;13803;13793;;:17;;;;:::i;:::-;13792:29;;;;:::i;:::-;:53;;13784:121;;;::::0;-1:-1:-1;;;13784:121:0;;12125:2:1;13784:121:0::1;::::0;::::1;12107:21:1::0;12164:2;12144:18;;;12137:30;12203:34;12183:18;;;12176:62;12274:25;12254:18;;;12247:53;12317:19;;13784:121:0::1;11923:419:1::0;13784:121:0::1;13953:7;13942;13932;;:17;;;;:::i;:::-;13931:29;;;;:::i;:::-;13916:12;:44:::0;-1:-1:-1;;13695:273:0:o;14486:189::-;14615:6;;14577:7;;5260:5;;14625:21;;14605:17;;-1:-1:-1;;;;;14615:6:0;14605:9;:17::i;:::-;:41;;;;:::i;:::-;14604:62;;;;:::i;15390:217::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;15520:3:::1;15494:22;:29;;15486:64;;;::::0;-1:-1:-1;;;15486:64:0;;12549:2:1;15486:64:0::1;::::0;::::1;12531:21:1::0;12588:2;12568:18;;;12561:30;-1:-1:-1;;;12607:18:1;;;12600:52;12669:18;;15486:64:0::1;12347:346:1::0;15486:64:0::1;15561:13;:38:::0;15390:217::o;8225:654::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8304:22:0;::::1;8296:96;;;;-1:-1:-1::0;;;8296:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8411:16:0;::::1;5399:42;8411:16;;8403:90;;;;-1:-1:-1::0;;;8403:90:0::1;;;;;;;:::i;:::-;8524:6;::::0;8504:34:::1;::::0;-1:-1:-1;;;;;8524:6:0::1;;8504:19;:34::i;:::-;8549:35;8569:8;8579:4;8549:19;:35::i;:::-;8619:6;::::0;8629:1:::1;::::0;8609:17:::1;::::0;-1:-1:-1;;;;;8619:6:0::1;8609:9;:17::i;:::-;:21;8605:127;;;8664:6;::::0;8647:73:::1;::::0;-1:-1:-1;;;;;8664:6:0::1;8672:8:::0;8682:17:::1;8664:6:::0;8682:9:::1;:17::i;:::-;8701:5;8708::::0;8715:4:::1;8647:16;:73::i;:::-;;8605:127;8771:6;::::0;;-1:-1:-1;;;;;8788:17:0;;::::1;-1:-1:-1::0;;;;;;8788:17:0;::::1;::::0;::::1;::::0;;;8821:40:::1;::::0;8771:6;::::1;::::0;8788:17;8771:6;;8821:40:::1;::::0;8752:16:::1;::::0;8821:40:::1;8285:594;8225:654:::0;:::o;24049:108::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24127:14:0::1;24144:5;24127:14:::0;;;:4:::1;:14;::::0;;;;:22;;-1:-1:-1;;24127:22:0::1;::::0;;24049:108::o;11564:134::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11652:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;11652:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11564:134::o;13551:136::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;13640:19;:39;;-1:-1:-1;;;;;;13640:39:0::1;-1:-1:-1::0;;;;;13640:39:0;;;::::1;::::0;;;::::1;::::0;;13551:136::o;14248:108::-;14291:7;14334:13;4341:1;14334:2;:13;:::i;:::-;14318:12;;:30;;;;:::i;10042:117::-;-1:-1:-1;;;;;10135:16:0;10108:7;10135:16;;;:7;:16;;;;;;;10042:117::o;8887:225::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;8966:6:::1;::::0;8946:34:::1;::::0;-1:-1:-1;;;;;8966:6:0::1;;8946:19;:34::i;:::-;9010:6;::::0;;-1:-1:-1;;;;;;9027:19:0;::::1;::::0;;;9062:42:::1;::::0;-1:-1:-1;;;;;9010:6:0;;::::1;::::0;8991:16:::1;::::0;9010:6;;9062:42:::1;::::0;8991:16;;9062:42:::1;8935:177;8887:225::o:0;12926:293::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;13059:11:::1;:42:::0;;-1:-1:-1;;;;;13059:42:0;;::::1;-1:-1:-1::0;;;;;;13059:42:0;;::::1;;::::0;;;13112:23;:46;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;13169:21;:42;;;;;::::1;::::0;::::1;;::::0;;12926:293::o;21782:399::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;21844:14:::1;::::0;::::1;;21843:15;21835:52;;;::::0;-1:-1:-1;;;21835:52:0;;13330:2:1;21835:52:0::1;::::0;::::1;13312:21:1::0;13369:2;13349:18;;;13342:30;13408:26;13388:18;;;13381:54;13452:18;;21835:52:0::1;13128:348:1::0;21835:52:0::1;21906:16;::::0;::::1;::::0;::::1;;;21898:53;;;::::0;-1:-1:-1;;;21898:53:0;;13683:2:1;21898:53:0::1;::::0;::::1;13665:21:1::0;13722:2;13702:18;;;13695:30;13761:26;13741:18;;;13734:54;13805:18;;21898:53:0::1;13481:348:1::0;21898:53:0::1;21962:14;:21:::0;;-1:-1:-1;;21962:21:0::1;21979:4;21962:21;::::0;;22021:6:::1;::::0;22037:5:::1;::::0;22011:17:::1;::::0;-1:-1:-1;;;;;22021:6:0::1;22011:9;:17::i;:::-;:22;::::0;22031:2:::1;22011:22;:::i;:::-;22010:32;;;;:::i;:::-;21994:13;:48:::0;22077:6:::1;::::0;22093:5:::1;::::0;22067:17:::1;::::0;-1:-1:-1;;;;;22077:6:0::1;22067:9;:17::i;:::-;:22;::::0;22087:2:::1;22067:22;:::i;:::-;22066:32;;;;:::i;:::-;22053:10;:45:::0;22141:9:::1;::::0;22109:62:::1;::::0;22126:4:::1;::::0;22141:9:::1;::::0;::::1;-1:-1:-1::0;;;;;22141:9:0::1;-1:-1:-1::0;;22109:8:0::1;:62::i;:::-;21782:399::o:0;10167:165::-;10245:4;10262:40;10272:10;10284:9;10295:6;10262:9;:40::i;:::-;-1:-1:-1;10320:4:0;;10167:165;-1:-1:-1;;;10167:165:0:o;15615:263::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;15724:19:::1;:33:::0;;-1:-1:-1;;15724:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;15768:22:::1;:47:::0;;-1:-1:-1;;15768:47:0::1;::::0;::::1;;;::::0;;15831:39:::1;::::0;1741:41:1;;;15831:39:0::1;::::0;1729:2:1;1714:18;15831:39:0::1;;;;;;;;15615:263:::0;;:::o;12351:567::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;12486:7:::1;:29:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;12526:29:0;;;;;;;;;;::::1;;;-1:-1:-1::0;;12610:19:0;-1:-1:-1;;;12566:33:0;;::::1;;-1:-1:-1::0;;12610:19:0;;-1:-1:-1;;;12610:19:0;;::::1;;;-1:-1:-1::0;;12640:26:0::1;-1:-1:-1::0;;;12640:26:0;;::::1;::::0;;;::::1;;::::0;;;12566:33;12697:21:::1;12526:29:::0;12486;12697:21:::1;:::i;:::-;:35;;;;:::i;:::-;:46;;;;:::i;:::-;12677:7;:66:::0;;-1:-1:-1;;;;12677:66:0::1;-1:-1:-1::0;;;12677:66:0::1;::::0;;::::1;;;::::0;;:17:::1;12789::::0;-1:-1:-1;;12770:36:0::1;::::0;12789:17;;::::1;::::0;::::1;::::0;12770:16:::1;:36;:::i;:::-;12845:7;:12:::0;12754:52:::1;::::0;;::::1;::::0;-1:-1:-1;12754:52:0;;12825:32:::1;::::0;-1:-1:-1;;;12845:12:0;::::1;::::0;::::1;::::0;-1:-1:-1;;;12825:17:0;;::::1;;:32;:::i;:::-;:41;;;;12817:93;;;::::0;-1:-1:-1;;;12817:93:0;;14036:2:1;12817:93:0::1;::::0;::::1;14018:21:1::0;14075:2;14055:18;;;14048:30;14114:34;14094:18;;;14087:62;-1:-1:-1;;;14165:18:1;;;14158:37;14212:19;;12817:93:0::1;13834:403:1::0;12817:93:0::1;12475:443;12351:567:::0;;;;;:::o;23940:97::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24008:14:0::1;;::::0;;;:4:::1;:14;::::0;;;;:21;;-1:-1:-1;;24008:21:0::1;24025:4;24008:21;::::0;;23940:97::o;14683:699::-;6811:6;;-1:-1:-1;;;;;6811:6:0;6821:10;6811:20;6803:50;;;;-1:-1:-1;;;6803:50:0;;;;;;;:::i;:::-;14883:16:::1;14863;14853:7;;:26;;;;:::i;:::-;14852:47;;;;:::i;:::-;14836:13;:63:::0;14924:7:::1;::::0;14951:13;;14924:23:::1;::::0;14934:13;;14924:23:::1;:::i;:::-;14923:41;;;;:::i;:::-;14910:10;:54:::0;;;14983:13:::1;::::0;:27:::1;;14975:73;;;::::0;-1:-1:-1;;;14975:73:0;;14444:2:1;14975:73:0::1;::::0;::::1;14426:21:1::0;14483:2;14463:18;;;14456:30;14522:34;14502:18;;;14495:62;-1:-1:-1;;;14573:18:1;;;14566:31;14614:19;;14975:73:0::1;14242:397:1::0;14975:73:0::1;15092:6;::::0;5260:5:::1;::::0;15082:17:::1;::::0;-1:-1:-1;;;;;15092:6:0::1;15082:9;:17::i;:::-;:23;::::0;15102:3:::1;15082:23;:::i;:::-;15081:44;;;;:::i;:::-;15067:10;;:58;;15059:106;;;::::0;-1:-1:-1;;;15059:106:0;;14846:2:1;15059:106:0::1;::::0;::::1;14828:21:1::0;14885:2;14865:18;;;14858:30;14924:34;14904:18;;;14897:62;-1:-1:-1;;;14975:18:1;;;14968:33;15018:19;;15059:106:0::1;14644:399:1::0;15059:106:0::1;15208:9;15198:7;;:19;;;;:::i;:::-;15184:10;;:33;;15176:92;;;;-1:-1:-1::0;;;15176:92:0::1;;;;;;;:::i;:::-;15314:9;15304:7;;:19;;;;:::i;:::-;15287:13;;:36;;15279:95;;;;-1:-1:-1::0;;;15279:95:0::1;;;;;;;:::i;:::-;14683:699:::0;;;;:::o;10509:310::-;-1:-1:-1;;;;;10604:20:0;;10596:52;;;;-1:-1:-1;;;10596:52:0;;15665:2:1;10596:52:0;;;15647:21:1;15704:2;15684:18;;;15677:30;-1:-1:-1;;;15723:18:1;;;15716:49;15782:18;;10596:52:0;15463:343:1;10596:52:0;-1:-1:-1;;;;;10667:21:0;;10659:53;;;;-1:-1:-1;;;10659:53:0;;15665:2:1;10659:53:0;;;15647:21:1;15704:2;15684:18;;;15677:30;-1:-1:-1;;;15723:18:1;;;15716:49;15782:18;;10659:53:0;15463:343:1;10659:53:0;-1:-1:-1;;;;;10725:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10778:33;;368:25:1;;;10778:33:0;;341:18:1;10778:33:0;;;;;;;10509:310;;;:::o;16521:1992::-;16600:4;-1:-1:-1;;;;;16625:18:0;;16617:68;;;;-1:-1:-1;;;16617:68:0;;16013:2:1;16617:68:0;;;15995:21:1;16052:2;16032:18;;;16025:30;16091:34;16071:18;;;16064:62;-1:-1:-1;;;16142:18:1;;;16135:35;16187:19;;16617:68:0;15811:401:1;16617:68:0;-1:-1:-1;;;;;16704:16:0;;16696:64;;;;-1:-1:-1;;;16696:64:0;;16419:2:1;16696:64:0;;;16401:21:1;16458:2;16438:18;;;16431:30;16497:34;16477:18;;;16470:62;-1:-1:-1;;;16548:18:1;;;16541:33;16591:19;;16696:64:0;16217:399:1;16696:64:0;16788:1;16779:6;:10;16771:64;;;;-1:-1:-1;;;16771:64:0;;16823:2:1;16771:64:0;;;16805:21:1;16862:2;16842:18;;;16835:30;16901:34;16881:18;;;16874:62;-1:-1:-1;;;16952:18:1;;;16945:39;17001:19;;16771:64:0;16621:405:1;16771:64:0;-1:-1:-1;;;;;16855:10:0;;;;;;:4;:10;;;;;;;;16854:11;:24;;;;-1:-1:-1;;;;;;16870:8:0;;;;;;:4;:8;;;;;;;;16869:9;16854:24;16846:33;;;;;;-1:-1:-1;;;;;16980:13:0;;16892:8;16980:13;;;:7;:13;;;;;;16892:8;;;;16980:13;;16976:162;;;17016:4;17010:10;;16976:162;;;-1:-1:-1;;;;;17042:11:0;;;;;;:7;:11;;;;;;;;17038:100;;;17077:4;17070:11;;17038:100;;;-1:-1:-1;17122:4:0;17038:100;17152:20;17163:4;17169:2;17152:10;:20::i;:::-;17148:644;;;17193:14;;;;17189:89;;17228:34;;-1:-1:-1;;;17228:34:0;;17233:2:1;17228:34:0;;;17215:21:1;17272:2;17252:18;;;17245:30;17311:26;17291:18;;;17284:54;17355:18;;17228:34:0;17031:348:1;17189:89:0;17296:3;:11;;;;17303:4;17296:11;17292:232;;;-1:-1:-1;;;;;17332:27:0;;;;;;:21;:27;;;;;;;;17331:28;:58;;;;-1:-1:-1;;;;;;17364:25:0;;;;;;:21;:25;;;;;;;;17363:26;17331:58;17327:182;;;17432:12;;17422:6;:22;;17414:75;;;;-1:-1:-1;;;17414:75:0;;17586:2:1;17414:75:0;;;17568:21:1;17625:2;17605:18;;;17598:30;17664:34;17644:18;;;17637:62;-1:-1:-1;;;17715:18:1;;;17708:38;17763:19;;17414:75:0;17384:404:1;17414:75:0;17556:9;;-1:-1:-1;;;;;17542:24:0;;;17556:9;;;;;17542:24;;;;:33;;;17571:4;17570:5;17542:33;17538:243;;;-1:-1:-1;;;;;17601:25:0;;;;;;:21;:25;;;;;;;;17596:170;;17685:14;;17675:6;17659:13;17669:2;17659:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17651:95;;;;-1:-1:-1;;;17651:95:0;;17995:2:1;17651:95:0;;;17977:21:1;18034:2;18014:18;;;18007:30;18073:34;18053:18;;;18046:62;-1:-1:-1;;;18124:18:1;;;18117:40;18174:19;;17651:95:0;17793:406:1;17651:95:0;17808:4;17804:632;;;17834:6;;;;17829:596;;17865:19;;;;;;;17861:549;;;17909:28;17940:24;17958:4;17940:9;:24::i;:::-;17909:55;;18015:13;;17991:20;:37;17987:404;;18075:10;;18116:22;;;;18112:97;;;18173:13;;18163:6;;5260:5;;18173:13;18153:17;;-1:-1:-1;;;;;18163:6:0;18153:9;:17::i;:::-;:33;;;;:::i;:::-;18152:54;;;;:::i;:::-;18142:64;;18112:97;18263:7;18239:20;:31;18235:72;;18297:7;18274:30;;18235:72;18333:34;18346:20;18333:12;:34::i;:::-;18030:361;17987:404;17886:524;17861:549;18453:52;18470:4;18476:2;18480:6;18488:3;18493:4;18499:5;18453:16;:52::i;:::-;18446:59;16521:1992;-1:-1:-1;;;;;;;16521:1992:0:o;22189:753::-;22330:16;;22308:4;;22330:16;;;;;22325:228;;22363:28;22382:4;22388:2;22363:18;:28::i;:::-;22411:16;;;;;;;22410:17;:41;;;;;22431:20;22442:4;22448:2;22431:10;:20::i;:::-;22410:51;;;;;22456:5;22455:6;22410:51;22406:136;;;22482:44;;-1:-1:-1;;;22482:44:0;;18406:2:1;22482:44:0;;;18388:21:1;18445:2;18425:18;;;18418:30;18484:34;18464:18;;;18457:62;-1:-1:-1;;;18535:18:1;;;18528:32;18577:19;;22482:44:0;18204:398:1;22406:136:0;-1:-1:-1;;;;;22599:25:0;;22565:12;22599:25;;;:19;:25;;;;;;22580:4;;22599:25;;;:52;;-1:-1:-1;;;;;;22628:23:0;;;;;;:19;:23;;;;;;;;22599:52;22595:99;;;-1:-1:-1;22677:5:0;22595:99;-1:-1:-1;;;;;22706:13:0;;;;;;:7;:13;;;;;:23;;22723:6;;22706:13;:23;;22723:6;;22706:23;:::i;:::-;;;;-1:-1:-1;22740:22:0;;-1:-1:-1;22766:7:0;22765:55;;22814:6;22765:55;;;22777:34;22787:4;22793:3;22798:4;22804:6;22777:9;:34::i;:::-;-1:-1:-1;;;;;22831:11:0;;;;;;:7;:11;;;;;:29;;22740:80;;-1:-1:-1;22740:80:0;;22831:11;;;:29;;22740:80;;22831:29;:::i;:::-;;;;;;;;22893:2;-1:-1:-1;;;;;22878:34:0;22887:4;-1:-1:-1;;;;;22878:34:0;;22897:14;22878:34;;;;368:25:1;;356:2;341:18;;222:177;22878:34:0;;;;;;;;-1:-1:-1;22930:4:0;;22189:753;-1:-1:-1;;;;;;;;22189:753:0:o;16155:358::-;16256:6;;16224:4;;-1:-1:-1;;;;;16248:14:0;;;16256:6;;16248:14;;;;:43;;-1:-1:-1;16285:6:0;;-1:-1:-1;;;;;16279:12:0;;;16285:6;;16279:12;;16248:43;:79;;;;-1:-1:-1;16321:6:0;;-1:-1:-1;;;;;16321:6:0;16308:9;:19;;16248:79;:118;;;;-1:-1:-1;;;;;;16345:21:0;;;;;;:17;:21;;;;;;;;16344:22;16248:118;:159;;;;-1:-1:-1;;;;;;16384:23:0;;;;;;:17;:23;;;;;;;;16383:24;16248:159;:186;;;;-1:-1:-1;;;;;;16424:10:0;;5399:42;16424:10;;16248:186;:219;;;;-1:-1:-1;;;;;;16451:16:0;;;;16248:219;:257;;;;-1:-1:-1;;;;;;16484:21:0;;16500:4;16484:21;;16248:257;16241:264;16155:358;-1:-1:-1;;;16155:358:0:o;18521:2347::-;6705:6;:13;;-1:-1:-1;;6705:13:0;6714:4;6705:13;;;18604:30:::1;::::0;;::::1;::::0;::::1;::::0;;18627:7:::1;18604:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;-1:-1:-1;;;18604:30:0;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;18604:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;18604:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;18604:30:0;::::1;::::0;;::::1;::::0;;;;;;18645:60:::1;;18687:7;;;18645:60;18741:4;18721:26;::::0;;;:11:::1;:26;::::0;;;;;;;18756:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;18756:9:0::1;18721:46:::0;;;;;;;;-1:-1:-1;;18721:67:0::1;18717:166;;18825:4;18805:26;::::0;;;:11:::1;:26;::::0;;;;;;;18840:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;18840:9:0::1;18805:46:::0;;;;;;;-1:-1:-1;;18805:66:0;;18717:166:::1;18895:17;18980:1;18960:6;:16;;;18916:60;;18940:6;:16;;;18917:39;;:20;:39;;;;:::i;:::-;18916:60;;;;:::i;:::-;18915:66;;;;:::i;:::-;18895:86:::0;-1:-1:-1;18992:15:0::1;19010:32;18895:86:::0;19010:20;:32:::1;:::i;:::-;19087:16;::::0;;19101:1:::1;19087:16:::0;;;;;::::1;::::0;;18992:50;;-1:-1:-1;19063:21:0::1;::::0;19087:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19087:16:0::1;19063:40;;19132:4;19114;19119:1;19114:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;19114:23:0::1;;;-1:-1:-1::0;;;;;19114:23:0::1;;;::::0;::::1;19158:9;;;;;;;;;-1:-1:-1::0;;;;;19158:9:0::1;-1:-1:-1::0;;;;;19158:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19148:4;19153:1;19148:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19148:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19191:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;19191:186:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:186:::1;::::0;19266:7;;19288:1:::1;::::0;19304:4;;19331::::1;::::0;19351:15:::1;::::0;19191:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19187:233;;19402:7;;;;;;19187:233;19453:21;19432:18;19539:7:::0;19513:22:::1;19526:9:::0;19453:21;19513:22:::1;:::i;:::-;19512:34;;;;:::i;:::-;19485:61:::0;-1:-1:-1;19563:13:0;;19559:417:::1;;19597:9;::::0;19766:21;;19597:239:::1;::::0;-1:-1:-1;;;19597:239:0;;19674:4:::1;19597:239;::::0;::::1;20529:34:1::0;20579:18;;;20572:34;;;19726:1:0::1;20622:18:1::0;;;20615:34;;;20665:18;;;20658:34;-1:-1:-1;;;;;19766:21:0;;::::1;20708:19:1::0;;;20701:44;19806:15:0::1;20761:19:1::0;;;20754:35;19597:9:0::1;::::0;;::::1;;::::0;:25:::1;::::0;19630:16;;20463:19:1;;19597:239:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;-1:-1:-1::0;19597:239:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;19597:239:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;19593:372;;19943:7;;;;;;;;19593:372;-1:-1:-1::0;;19861:40:0::1;::::0;;21285:25:1;;;21341:2;21326:18;;21319:34;;;19861:40:0::1;::::0;-1:-1:-1;21258:18:1;19861:40:0::1;;;;;;;19593:372;19988:30;20002:16:::0;19988:30;::::1;:::i;:::-;;;20049:6;:16;;;20029:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;20164:16:::1;::::0;::::1;::::0;20142:18:::1;::::0;::::1;::::0;20076:12:::1;::::0;-1:-1:-1;20076:12:0;;20128:52;;::::1;::::0;20129:31:::1;::::0;::::1;:10:::0;:31:::1;:::i;:::-;20128:52;;;;:::i;:::-;20217:7;::::0;20099:81;;-1:-1:-1;20191:22:0::1;::::0;20217:7;;::::1;-1:-1:-1::0;;;;;20217:7:0::1;20216:78;;20293:1;20216:78;;;20274:6;:16;;;20242:48;;20256:6;:14;;;20243:27;;:10;:27;;;;:::i;:::-;20242:48;;;;:::i;:::-;20191:103:::0;-1:-1:-1;20305:24:0::1;20346:35;20191:103:::0;20346:18;:35:::1;:::i;:::-;20332:50;::::0;:10;:50:::1;:::i;:::-;20305:77:::0;-1:-1:-1;20397:20:0;;20393:133:::1;;20447:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;20447:21:0;;::::1;::::0;20504:5:::1;::::0;20481:16;;20447:67:::1;::::0;;;20481:16;20447:21;20504:5;20447:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20434:80:0;;-1:-1:-1;;20393:133:0::1;20540:22:::0;;20536:139:::1;;20592:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;20592:23:0;;::::1;::::0;20653:5:::1;::::0;20628:18;;20592:71:::1;::::0;;;20628:18;20592:23;20653:5;20592:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20579:84:0;;-1:-1:-1;;20536:139:0::1;20689:18:::0;;20685:176:::1;;20734:9;;;;;;;;;-1:-1:-1::0;;;;;20734:9:0::1;-1:-1:-1::0;;;;;20734:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20724:4;20729:1;20724:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20724:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;20775:7:::1;::::0;20765;;20775;;;::::1;::::0;;::::1;::::0;20765:4;;20770:1:::1;::::0;20765:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;20765:17:0;;::::1;:7;::::0;;::::1;::::0;;;;;:17;20829:19;;20797:52:::1;::::0;20807:4;;20813:14;;20829:19:::1;20797:9;:52::i;:::-;18593:2275;;;;;;;;;;6729:1;-1:-1:-1::0;6741:6:0;:14;;-1:-1:-1;;6741:14:0;;;18521:2347::o;21339:435::-;21422:16;;;;;;;21421:17;21413:65;;;;-1:-1:-1;;;21413:65:0;;21998:2:1;21413:65:0;;;21980:21:1;22037:2;22017:18;;;22010:30;22076:34;22056:18;;;22049:62;-1:-1:-1;;;22127:18:1;;;22120:33;22170:19;;21413:65:0;21796:399:1;21413:65:0;21494:20;21505:4;21511:2;21494:10;:20::i;:::-;21493:21;:37;;;;-1:-1:-1;21524:6:0;;-1:-1:-1;;;;;21518:12:0;;;21524:6;;21518:12;21493:37;21489:278;;;-1:-1:-1;;;;;21547:23:0;;;;;;:17;:23;;;;;;;;:30;;21573:4;-1:-1:-1;;21547:30:0;;;;;;;;21592:19;:25;;;;;;:32;;;;;;;;;;21639:16;:23;;21547:30;-1:-1:-1;;21639:23:0;;;;;;;;21677:19;:26;;;;;;;;;;21723:32;1741:41:1;;;21723:32:0;;1714:18:1;21723:32:0;1601:187:1;21489:278:0;21339:435;;:::o;22950:982::-;23058:30;;;;;;;;23081:7;23058:30;;;;;;;;;;;;;;;;-1:-1:-1;;;23058:30:0;;;;;;;;;;;-1:-1:-1;;;23058:30:0;;;;;;;;-1:-1:-1;;;23058:30:0;;;;;;;;-1:-1:-1;;;23058:30:0;;;;;;;;;23038:7;;;23128:205;;;;-1:-1:-1;23165:9:0;:16;;;23128:205;;;23203:4;23199:134;;;-1:-1:-1;23237:9:0;:17;;;;;;23199:134;;;-1:-1:-1;23300:9:0;:21;-1:-1:-1;;;23300:21:0;;;;23199:134;23343:17;5260:5;23363:19;23372:10;23363:6;:19;:::i;:::-;:38;;;;:::i;:::-;23343:58;;23412:18;23476:6;:16;;;23462:6;:11;;;:30;;;;:::i;:::-;23433:60;;23446:6;:11;;;23434:23;;:9;:23;;;;:::i;:::-;23433:60;;;;:::i;:::-;23412:81;-1:-1:-1;23504:15:0;23522:22;23412:81;23522:9;:22;:::i;:::-;23504:40;-1:-1:-1;23559:11:0;;23555:135;;23603:4;23587:22;;;;:7;:22;;;;;:33;;23613:7;;23587:22;:33;;23613:7;;23587:33;:::i;:::-;;;;-1:-1:-1;;23640:38:0;;368:25:1;;;23663:4:0;;-1:-1:-1;;;;;23640:38:0;;;;;356:2:1;341:18;23640:38:0;;;;;;;23555:135;23704:14;;23700:167;;23746:10;23735:7;;:21;;;;;;;:::i;:::-;;;;;;;;23787:10;23771:12;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;23817:38:0;;368:25:1;;;23840:1:0;;-1:-1:-1;;;;;23817:38:0;;;;;356:2:1;341:18;23817:38:0;;;;;;;23700:167;23906:18;23915:9;23906:6;:18;:::i;:::-;23899:25;22950:982;-1:-1:-1;;;;;;;;;;22950:982:0:o;20876:455::-;20987:9;;:187;;-1:-1:-1;;;20987:187:0;;:9;;;;-1:-1:-1;;;;;20987:9:0;;:60;;21055:6;;20987:187;;21087:1;;21103:4;;21122:11;;21148:15;;20987:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20983:341;;20876:455;;;:::o;20983:341::-;21206:7;;;;;;;;;-1:-1:-1;;;;;21206:7:0;-1:-1:-1;;;;;21194:19:0;:4;21199:1;21194:7;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;21194:19:0;;21190:83;;;21251:6;21234:13;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;21190:83:0;20876:455;;;:::o;774:597:1:-;886:4;915:2;944;933:9;926:21;976:6;970:13;1019:6;1014:2;1003:9;999:18;992:34;1044:1;1054:140;1068:6;1065:1;1062:13;1054:140;;;1163:14;;;1159:23;;1153:30;1129:17;;;1148:2;1125:26;1118:66;1083:10;;1054:140;;;1212:6;1209:1;1206:13;1203:91;;;1282:1;1277:2;1268:6;1257:9;1253:22;1249:31;1242:42;1203:91;-1:-1:-1;1355:2:1;1334:15;-1:-1:-1;;1330:29:1;1315:45;;;;1362:2;1311:54;;774:597;-1:-1:-1;;;774:597:1:o;1793:131::-;-1:-1:-1;;;;;1868:31:1;;1858:42;;1848:70;;1914:1;1911;1904:12;1848:70;1793:131;:::o;1929:247::-;1988:6;2041:2;2029:9;2020:7;2016:23;2012:32;2009:52;;;2057:1;2054;2047:12;2009:52;2096:9;2083:23;2115:31;2140:5;2115:31;:::i;2181:315::-;2249:6;2257;2310:2;2298:9;2289:7;2285:23;2281:32;2278:52;;;2326:1;2323;2316:12;2278:52;2365:9;2352:23;2384:31;2409:5;2384:31;:::i;:::-;2434:5;2486:2;2471:18;;;;2458:32;;-1:-1:-1;;;2181:315:1:o;2501:456::-;2578:6;2586;2594;2647:2;2635:9;2626:7;2622:23;2618:32;2615:52;;;2663:1;2660;2653:12;2615:52;2702:9;2689:23;2721:31;2746:5;2721:31;:::i;:::-;2771:5;-1:-1:-1;2828:2:1;2813:18;;2800:32;2841:33;2800:32;2841:33;:::i;:::-;2501:456;;2893:7;;-1:-1:-1;;;2947:2:1;2932:18;;;;2919:32;;2501:456::o;2962:248::-;3030:6;3038;3091:2;3079:9;3070:7;3066:23;3062:32;3059:52;;;3107:1;3104;3097:12;3059:52;-1:-1:-1;;3130:23:1;;;3200:2;3185:18;;;3172:32;;-1:-1:-1;2962:248:1:o;3404:159::-;3471:20;;3531:6;3520:18;;3510:29;;3500:57;;3553:1;3550;3543:12;3500:57;3404:159;;;:::o;3568:328::-;3642:6;3650;3658;3711:2;3699:9;3690:7;3686:23;3682:32;3679:52;;;3727:1;3724;3717:12;3679:52;3750:28;3768:9;3750:28;:::i;:::-;3740:38;;3797:37;3830:2;3819:9;3815:18;3797:37;:::i;:::-;3787:47;;3853:37;3886:2;3875:9;3871:18;3853:37;:::i;:::-;3843:47;;3568:328;;;;;:::o;3901:160::-;3966:20;;4022:13;;4015:21;4005:32;;3995:60;;4051:1;4048;4041:12;4066:315;4131:6;4139;4192:2;4180:9;4171:7;4167:23;4163:32;4160:52;;;4208:1;4205;4198:12;4160:52;4247:9;4234:23;4266:31;4291:5;4266:31;:::i;:::-;4316:5;-1:-1:-1;4340:35:1;4371:2;4356:18;;4340:35;:::i;:::-;4330:45;;4066:315;;;;;:::o;4386:180::-;4445:6;4498:2;4486:9;4477:7;4473:23;4469:32;4466:52;;;4514:1;4511;4504:12;4466:52;-1:-1:-1;4537:23:1;;4386:180;-1:-1:-1;4386:180:1:o;4831:553::-;4932:6;4940;4948;5001:2;4989:9;4980:7;4976:23;4972:32;4969:52;;;5017:1;5014;5007:12;4969:52;5056:9;5043:23;5075:31;5100:5;5075:31;:::i;:::-;5125:5;-1:-1:-1;5182:2:1;5167:18;;5154:32;5195:33;5154:32;5195:33;:::i;:::-;5247:7;-1:-1:-1;5306:2:1;5291:18;;5278:32;5319:33;5278:32;5319:33;:::i;:::-;5371:7;5361:17;;;4831:553;;;;;:::o;5389:248::-;5451:6;5459;5512:2;5500:9;5491:7;5487:23;5483:32;5480:52;;;5528:1;5525;5518:12;5480:52;5551:26;5567:9;5551:26;:::i;6249:388::-;6317:6;6325;6378:2;6366:9;6357:7;6353:23;6349:32;6346:52;;;6394:1;6391;6384:12;6346:52;6433:9;6420:23;6452:31;6477:5;6452:31;:::i;:::-;6502:5;-1:-1:-1;6559:2:1;6544:18;;6531:32;6572:33;6531:32;6572:33;:::i;:::-;6624:7;6614:17;;;6249:388;;;;;:::o;6642:474::-;6732:6;6740;6748;6756;6764;6817:3;6805:9;6796:7;6792:23;6788:33;6785:53;;;6834:1;6831;6824:12;6785:53;6857:28;6875:9;6857:28;:::i;:::-;6847:38;;6904:37;6937:2;6926:9;6922:18;6904:37;:::i;:::-;6894:47;;6960:37;6993:2;6982:9;6978:18;6960:37;:::i;:::-;6950:47;;7016:37;7049:2;7038:9;7034:18;7016:37;:::i;:::-;7006:47;;7072:38;7105:3;7094:9;7090:19;7072:38;:::i;:::-;7062:48;;6642:474;;;;;;;;:::o;7655:385::-;7741:6;7749;7757;7765;7818:3;7806:9;7797:7;7793:23;7789:33;7786:53;;;7835:1;7832;7825:12;7786:53;-1:-1:-1;;7858:23:1;;;7928:2;7913:18;;7900:32;;-1:-1:-1;7979:2:1;7964:18;;7951:32;;8030:2;8015:18;8002:32;;-1:-1:-1;7655:385:1;-1:-1:-1;7655:385:1:o;8045:341::-;8247:2;8229:21;;;8286:2;8266:18;;;8259:30;-1:-1:-1;;;8320:2:1;8305:18;;8298:47;8377:2;8362:18;;8045:341::o;8391:127::-;8452:10;8447:3;8443:20;8440:1;8433:31;8483:4;8480:1;8473:15;8507:4;8504:1;8497:15;8523:168;8563:7;8629:1;8625;8621:6;8617:14;8614:1;8611:21;8606:1;8599:9;8592:17;8588:45;8585:71;;;8636:18;;:::i;:::-;-1:-1:-1;8676:9:1;;8523:168::o;8696:217::-;8736:1;8762;8752:132;;8806:10;8801:3;8797:20;8794:1;8787:31;8841:4;8838:1;8831:15;8869:4;8866:1;8859:15;8752:132;-1:-1:-1;8898:9:1;;8696:217::o;8918:422::-;9007:1;9050:5;9007:1;9064:270;9085:7;9075:8;9072:21;9064:270;;;9144:4;9140:1;9136:6;9132:17;9126:4;9123:27;9120:53;;;9153:18;;:::i;:::-;9203:7;9193:8;9189:22;9186:55;;;9223:16;;;;9186:55;9302:22;;;;9262:15;;;;9064:270;;;9068:3;8918:422;;;;;:::o;9345:806::-;9394:5;9424:8;9414:80;;-1:-1:-1;9465:1:1;9479:5;;9414:80;9513:4;9503:76;;-1:-1:-1;9550:1:1;9564:5;;9503:76;9595:4;9613:1;9608:59;;;;9681:1;9676:130;;;;9588:218;;9608:59;9638:1;9629:10;;9652:5;;;9676:130;9713:3;9703:8;9700:17;9697:43;;;9720:18;;:::i;:::-;-1:-1:-1;;9776:1:1;9762:16;;9791:5;;9588:218;;9890:2;9880:8;9877:16;9871:3;9865:4;9862:13;9858:36;9852:2;9842:8;9839:16;9834:2;9828:4;9825:12;9821:35;9818:77;9815:159;;;-1:-1:-1;9927:19:1;;;9959:5;;9815:159;10006:34;10031:8;10025:4;10006:34;:::i;:::-;10076:6;10072:1;10068:6;10064:19;10055:7;10052:32;10049:58;;;10087:18;;:::i;:::-;10125:20;;9345:806;-1:-1:-1;;;9345:806:1:o;10156:140::-;10214:5;10243:47;10284:4;10274:8;10270:19;10264:4;10243:47;:::i;10301:125::-;10341:4;10369:1;10366;10363:8;10360:34;;;10374:18;;:::i;:::-;-1:-1:-1;10411:9:1;;10301:125::o;10848:128::-;10888:3;10919:1;10915:6;10912:1;10909:13;10906:39;;;10925:18;;:::i;:::-;-1:-1:-1;10961:9:1;;10848:128::o;11333:224::-;11372:3;11400:6;11433:2;11430:1;11426:10;11463:2;11460:1;11456:10;11494:3;11490:2;11486:12;11481:3;11478:21;11475:47;;;11502:18;;:::i;:::-;11538:13;;11333:224;-1:-1:-1;;;;11333:224:1:o;12698:425::-;12900:2;12882:21;;;12939:2;12919:18;;;12912:30;12978:34;12973:2;12958:18;;12951:62;13049:31;13044:2;13029:18;;13022:59;13113:3;13098:19;;12698:425::o;15048:410::-;15250:2;15232:21;;;15289:2;15269:18;;;15262:30;15328:34;15323:2;15308:18;;15301:62;-1:-1:-1;;;15394:2:1;15379:18;;15372:44;15448:3;15433:19;;15048:410::o;18739:127::-;18800:10;18795:3;18791:20;18788:1;18781:31;18831:4;18828:1;18821:15;18855:4;18852:1;18845:15;18871:251;18941:6;18994:2;18982:9;18973:7;18969:23;18965:32;18962:52;;;19010:1;19007;19000:12;18962:52;19042:9;19036:16;19061:31;19086:5;19061:31;:::i;19127:461::-;19180:3;19218:5;19212:12;19245:6;19240:3;19233:19;19271:4;19300:2;19295:3;19291:12;19284:19;;19337:2;19330:5;19326:14;19358:1;19368:195;19382:6;19379:1;19376:13;19368:195;;;19447:13;;-1:-1:-1;;;;;19443:39:1;19431:52;;19503:12;;;;19538:15;;;;19479:1;19397:9;19368:195;;;-1:-1:-1;19579:3:1;;19127:461;-1:-1:-1;;;;;19127:461:1:o;19593:582::-;19892:6;19881:9;19874:25;19935:6;19930:2;19919:9;19915:18;19908:34;19978:3;19973:2;19962:9;19958:18;19951:31;19855:4;19999:57;20051:3;20040:9;20036:19;20028:6;19999:57;:::i;:::-;-1:-1:-1;;;;;20092:32:1;;;;20087:2;20072:18;;20065:60;-1:-1:-1;20156:3:1;20141:19;20134:35;19991:65;19593:582;-1:-1:-1;;;19593:582:1:o;20800:306::-;20888:6;20896;20904;20957:2;20945:9;20936:7;20932:23;20928:32;20925:52;;;20973:1;20970;20963:12;20925:52;21002:9;20996:16;20986:26;;21052:2;21041:9;21037:18;21031:25;21021:35;;21096:2;21085:9;21081:18;21075:25;21065:35;;20800:306;;;;;:::o;21364:217::-;21403:4;21432:6;21488:10;;;;21458;;21510:12;;;21507:38;;;21525:18;;:::i;:::-;21562:13;;21364:217;-1:-1:-1;;;21364:217:1:o;22200:518::-;22479:6;22468:9;22461:25;22522:3;22517:2;22506:9;22502:18;22495:31;22442:4;22543:57;22595:3;22584:9;22580:19;22572:6;22543:57;:::i;:::-;-1:-1:-1;;;;;22636:32:1;;;;22631:2;22616:18;;22609:60;-1:-1:-1;22700:2:1;22685:18;22678:34;22535:65;22200:518;-1:-1:-1;;22200:518:1:o

Swarm Source

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