ETH Price: $3,457.54 (+1.73%)

Token

OctopusWallet (OCW)
 

Overview

Max Total Supply

100,000,000 OCW

Holders

1,821

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
6,257.351700070285670971 OCW

Value
$0.00
0xc15182DD33A1C3A04aBF24a10c7d0e15bf877194
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:
OctopusWallet

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-11
*/

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

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);
}

interface Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
}

contract OctopusWallet is IERC20 {
    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 _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
   
    uint256 constant private startingSupply = 100_000_000;
    string constant private _name = "OctopusWallet";
    string constant private _symbol = "OCW";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

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

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

    Ratios public _ratios = Ratios({
        buyback: 1,
        marketing: 2,
        development: 2,
        totalSwap: 5
    });

    uint256 constant public maxBuyTaxes = 1000;
    uint256 constant public maxSellTaxes = 1000;
    uint256 constant public maxTransferTaxes = 1000;
    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 buyback;
    }

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

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);

    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

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

        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // 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;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    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 {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

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

    receive() external payable {}
    function totalSupply() external pure 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 approveContractContingency() external onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

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

        return _transfer(sender, recipient, amount);
    }

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

    function setInitializer(address init) public onlyOwner {
        require(!tradingEnabled);
        require(init != address(this), "Can't be self.");
        initializer = Initializer(init);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true; 
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }

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

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

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

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

    function isExcludedFromProtection(address account) external view returns (bool) {
        return _isExcludedFromProtection[account];
    }

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

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

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

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

    function lockTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }

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

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

    function setWallets(address payable marketing, address payable development, address payable buyback) external onlyOwner {
        require(marketing != address(0) && development != address(0) && buyback != address(0), "Cannot be zero address.");
        _taxWallets.marketing = payable(marketing);
        _taxWallets.development = payable(development);
        _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 _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)
            && from != address(initializer)
            && to != address(initializer);
    }

    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");
        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) {
                if (!other) {
                    revert("Trading not yet enabled!");
                } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
                    revert("Tokens cannot be moved until trading is live.");
                }
            }
            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;
        }

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 buybackBalance = (amtBalance * ratios.buyback) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - (developmentBalance + buybackBalance);
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.development > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 55000}("");
        }
        if (ratios.buyback > 0) {
            (success,) = _taxWallets.buyback.call{value: buybackBalance, gas: 55000}("");
        }
    }

    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;
            if (address(initializer) == address(0)){
                initializer = Initializer(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(initializer) == address(0)){
            initializer = Initializer(address(this));
        }
        try initializer.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try initializer.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        tradingEnabled = true;
        launchStamp = block.timestamp;
    }

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

    function sweepExternalTokens(address token) external onlyOwner {
        if (_hasLiqBeenAdded) {
            require(token != address(this), "Cannot sweep native tokens.");
        }
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens.");
            finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, true);
        }
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try initializer.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (address(initializer) == address(this)
            && block.chainid != 97) { currentFee = 4500; }
        if (currentFee == 0) { return amount; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"buyback","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","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":"buyback","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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":"account","type":"address"}],"name":"removeSniper","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":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyback","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","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":"buyback","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","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":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600060028181556101f4608081905260a05260c0919091526008805465ffffffffffff19166301f401f4179055600160e052610100819052610120526005610140526009805466050002000200016001600160401b03199091161790556101c060405273fef3d3a2d76f7894250761265b212237de2122096101608190526101808190526101a0819052600c80546001600160a01b03199081168317909155600d8054821683179055600e80549091169091179055600f805461ff0019169055600a601381905561271090620000d8906012906200041a565b620000e8906305f5e10062000432565b620000f590604b62000432565b6200010191906200044c565b601455612710620001156012600a6200041a565b62000125906305f5e10062000432565b6200013290604b62000432565b6200013e91906200044c565b6015556016805461ffff19169055601880546001600160a01b031916331790556200016c6012600a6200041a565b6200017c906305f5e10062000432565b601880546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001d06012600a6200041a565b620001e0906305f5e10062000432565b60405190815260200160405180910390a3601880546001600160a01b0390811660009081526006602081815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055965490951684526004825283208054861685179055527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf980549092161790556200046f565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200035c57816000190482111562000340576200034062000305565b808516156200034e57918102915b93841c939080029062000320565b509250929050565b600082620003755750600162000414565b81620003845750600062000414565b81600181146200039d5760028114620003a857620003c8565b600191505062000414565b60ff841115620003bc57620003bc62000305565b50506001821b62000414565b5060208310610133831016604e8410600b8410161715620003ed575081810a62000414565b620003f983836200031b565b806000190482111562000410576200041062000305565b0290505b92915050565b60006200042b60ff84168362000364565b9392505050565b808202811582820484141762000414576200041462000305565b6000826200046a57634e487b7160e01b600052601260045260246000fd5b500490565b613b5f806200047f6000396000f3fe6080604052600436106103855760003560e01c806350a8e016116101d157806395d89b4111610102578063bfc2fc35116100a0578063f94aa1b41161006f578063f94aa1b414610ab5578063fb78680d14610b0c578063fdb78c0e14610b2c578063feadde9c14610b4b57600080fd5b8063bfc2fc35146109d2578063cf847706146109f2578063dd62ed3e14610a5a578063ee5d9c2d14610aa057600080fd5b8063ab558e4d116100dc578063ab558e4d14610998578063b1b08f71146105fc578063b3d514fb146105fc578063b7df8b36146109b857600080fd5b806395d89b411461092c578063a9059cbb14610958578063aa22b1721461097857600080fd5b8063715018a61161016f57806380c581d11161014957806380c581d1146108c4578063893d20e8146108e45780638a63bd9b146109025780638a8c523c1461091757600080fd5b8063715018a61461087a57806375cb1bd11461088f57806378648edf146108af57600080fd5b80635c24b074116101ab5780635c24b074146107ec5780635cce86cd1461080c5780636ebd00781461084557806370a082311461085a57600080fd5b806350a8e01614610797578063590ffdce146107b65780635a6f0918146107d657600080fd5b806328577751116102b657806336fddb04116102545780634bbb93eb116102235780634bbb93eb146106fe5780634e718e481461071e5780634fb2e45d1461073e5780634fbee1931461075e57600080fd5b806336fddb04146106845780633f3cf56c146106a4578063452ed4f1146106c45780634ada218b146106e457600080fd5b80632e8fa821116102905780632e8fa82114610612578063313ce5671461062857806332cde6641461064457806333251a0b1461066457600080fd5b806328577751146105d15780632b112e49146105e75780632b28fc7a146105fc57600080fd5b8063095ea7b31161032357806318160ddd116102fd57806318160ddd1461055c57806323b872dd1461057157806326003957146105915780632610eaca146105b157600080fd5b8063095ea7b3146104ee5780630dcbcf1c1461050e5780630fa604e41461054757600080fd5b8063069d955f1161035f578063069d955f1461040a57806306fdde03146104605780630758d9241461049f57806307dd79e0146104c457600080fd5b806303fd2a45146103915780630445b667146103c4578063044df726146103e857600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a761dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103d057600080fd5b506103da60105481565b6040519081526020016103bb565b3480156103f457600080fd5b5061040861040336600461335f565b610b6b565b005b34801561041657600080fd5b5060085461043b9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103bb565b34801561046c57600080fd5b5060408051808201909152600d81526c13d8dd1bdc1d5cd5d85b1b195d609a1b60208201525b6040516103bb9190613398565b3480156104ab57600080fd5b50600a546103a79061010090046001600160a01b031681565b3480156104d057600080fd5b50600a546104de9060ff1681565b60405190151581526020016103bb565b3480156104fa57600080fd5b506104de6105093660046133fb565b610c0f565b34801561051a57600080fd5b506104de610529366004613427565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561055357600080fd5b506103da610c26565b34801561056857600080fd5b506103da610c46565b34801561057d57600080fd5b506104de61058c366004613444565b610c62565b34801561059d57600080fd5b506104086105ac366004613485565b610cda565b3480156105bd57600080fd5b506104086105cc36600461357d565b610df8565b3480156105dd57600080fd5b506103da60135481565b3480156105f357600080fd5b506103da610f75565b34801561060857600080fd5b506103da6103e881565b34801561061e57600080fd5b506103da60115481565b34801561063457600080fd5b50604051601281526020016103bb565b34801561065057600080fd5b5061040861065f366004613656565b610fba565b34801561067057600080fd5b5061040861067f366004613427565b6110e4565b34801561069057600080fd5b5061040861069f366004613699565b611177565b3480156106b057600080fd5b506104086106bf366004613485565b6111cc565b3480156106d057600080fd5b50600b546103a7906001600160a01b031681565b3480156106f057600080fd5b506016546104de9060ff1681565b34801561070a57600080fd5b506103da6107193660046136b7565b611303565b34801561072a57600080fd5b506104086107393660046136b7565b611335565b34801561074a57600080fd5b50610408610759366004613427565b6113ae565b34801561076a57600080fd5b506104de610779366004613427565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107a357600080fd5b506016546104de90610100900460ff1681565b3480156107c257600080fd5b506104086107d1366004613699565b6114d7565b3480156107e257600080fd5b506103da60175481565b3480156107f857600080fd5b50610408610807366004613427565b61152c565b34801561081857600080fd5b506104de610827366004613427565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561085157600080fd5b506103da6116d0565b34801561086657600080fd5b506103da610875366004613427565b6116eb565b34801561088657600080fd5b50610408611706565b34801561089b57600080fd5b506104086108aa3660046136d0565b6117ff565b3480156108bb57600080fd5b506104086118e8565b3480156108d057600080fd5b506104086108df366004613699565b611921565b3480156108f057600080fd5b506018546001600160a01b03166103a7565b34801561090e57600080fd5b506104de611ace565b34801561092357600080fd5b50610408611b20565b34801561093857600080fd5b506040805180820190915260038152624f435760e81b6020820152610492565b34801561096457600080fd5b506104de6109733660046133fb565b611d4a565b34801561098457600080fd5b50610408610993366004613656565b611d61565b3480156109a457600080fd5b506104086109b3366004613427565b611e88565b3480156109c457600080fd5b506012546104de9060ff1681565b3480156109de57600080fd5b506104086109ed36600461335f565b612004565b3480156109fe57600080fd5b50600954610a2c9061ffff808216916201000081048216916401000000008204811691600160301b90041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103bb565b348015610a6657600080fd5b506103da610a7536600461371b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610aac57600080fd5b5061040861208d565b348015610ac157600080fd5b50600c54600d54600e54610ae2926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103bb565b348015610b1857600080fd5b50610408610b27366004613749565b612148565b348015610b3857600080fd5b50600f546104de90610100900460ff1681565b348015610b5757600080fd5b50610408610b66366004613699565b612352565b6018546001600160a01b03163314610b9e5760405162461bcd60e51b8152600401610b959061377b565b60405180910390fd5b60165460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610bf357600080fd5b505af1158015610c07573d6000803e3d6000fd5b505050505050565b6000610c1c3384846123a7565b5060015b92915050565b6000610c346012600a6138a0565b601554610c4191906138af565b905090565b6000610c546012600a6138a0565b610c41906305f5e1006138d1565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610cc7576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610cc19084906138e8565b90915550505b610cd28484846124a0565b949350505050565b6018546001600160a01b03163314610d045760405162461bcd60e51b8152600401610b959061377b565b6064610d126012600a6138a0565b610d20906305f5e1006138d1565b610d2a91906138af565b8183610d386012600a6138a0565b610d46906305f5e1006138d1565b610d5091906138d1565b610d5a91906138af565b1015610dc15760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610b95565b8082610dcf6012600a6138a0565b610ddd906305f5e1006138d1565b610de791906138d1565b610df191906138af565b6015555050565b6018546001600160a01b03163314610e225760405162461bcd60e51b8152600401610b959061377b565b8051825114610e6b5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610b95565b60005b82518161ffff161015610f7057610e876012600a6138a0565b828261ffff1681518110610e9d57610e9d6138fb565b6020026020010151610eaf91906138d1565b610eb8336116eb565b1015610efb5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610b95565b610f5d33848361ffff1681518110610f1557610f156138fb565b60200260200101516012600a610f2b91906138a0565b858561ffff1681518110610f4157610f416138fb565b6020026020010151610f5391906138d1565b6000806001612950565b5080610f6881613911565b915050610e6e565b505050565b6000610f8160006116eb565b610f8c61dead6116eb565b610f969190613932565b610fa26012600a6138a0565b610fb0906305f5e1006138d1565b610c4191906138e8565b6018546001600160a01b03163314610fe45760405162461bcd60e51b8152600401610b959061377b565b600a5460ff161561102b5760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610b95565b6103e88361ffff161115801561104757506103e88261ffff1611155b801561105957506103e88161ffff1611155b6110a55760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b95565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6018546001600160a01b0316331461110e5760405162461bcd60e51b8152600401610b959061377b565b6016546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561115c57600080fd5b505af1158015611170573d6000803e3d6000fd5b5050505050565b6018546001600160a01b031633146111a15760405162461bcd60e51b8152600401610b959061377b565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6018546001600160a01b031633146111f65760405162461bcd60e51b8152600401610b959061377b565b6103e86112056012600a6138a0565b611213906305f5e1006138d1565b61121e9060056138d1565b61122891906138af565b81836112366012600a6138a0565b611244906305f5e1006138d1565b61124e91906138d1565b61125891906138af565b10156112cc5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b95565b80826112da6012600a6138a0565b6112e8906305f5e1006138d1565b6112f291906138d1565b6112fc91906138af565b6014555050565b600b54600090612710908390611321906001600160a01b03166116eb565b61132b91906138d1565b610c2091906138af565b6018546001600160a01b0316331461135f5760405162461bcd60e51b8152600401610b959061377b565b60968111156113a95760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610b95565b601355565b6018546001600160a01b031633146113d85760405162461bcd60e51b8152600401610b959061377b565b6001600160a01b0381166113fe5760405162461bcd60e51b8152600401610b9590613945565b61deac196001600160a01b038216016114295760405162461bcd60e51b8152600401610b9590613945565b601854611440906001600160a01b031660006114d7565b61144b8160016114d7565b601854600090611463906001600160a01b03166116eb565b111561148557601854611483906001600160a01b031682610f53826116eb565b505b601880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6018546001600160a01b031633146115015760405162461bcd60e51b8152600401610b959061377b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6018546001600160a01b031633146115565760405162461bcd60e51b8152600401610b959061377b565b60165460ff161561156657600080fd5b306001600160a01b038216036115af5760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610b95565b6016805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611635575060408051601f3d908101601f19168201909252611632918101906139a2565b60015b61163e57600080fd5b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560185492546116ae93831692919004166000196123a7565b600a54610f7090309061010090046001600160a01b03166000196123a7565b50565b60006116de6012600a6138a0565b601454610c4191906138af565b6001600160a01b031660009081526020819052604090205490565b6018546001600160a01b031633146117305760405162461bcd60e51b8152600401610b959061377b565b60165460ff1661179a5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610b95565b6018546117b1906001600160a01b031660006114d7565b601880546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6018546001600160a01b031633146118295760405162461bcd60e51b8152600401610b959061377b565b6001600160a01b0383161580159061184957506001600160a01b03821615155b801561185d57506001600160a01b03811615155b6118a95760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b95565b600c80546001600160a01b039485166001600160a01b031991821617909155600d805493851693821693909317909255600e8054919093169116179055565b6018546001600160a01b031633146119125760405162461bcd60e51b8152600401610b959061377b565b600a805460ff19166001179055565b6018546001600160a01b0316331461194b5760405162461bcd60e51b8152600401610b959061377b565b806119a9576001600160a01b03828116600081815260016020526040808220805460ff1916905560165490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610bd9565b60025415611a02576203f480600254426119c391906138e8565b11611a025760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610b95565b6001600160a01b03821660009081526001602052604090205460ff1615611a6b5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b95565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560165491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610bd9565b5050565b6018546000906001600160a01b03163314611afb5760405162461bcd60e51b8152600401610b959061377b565b600a54611b1a90309061010090046001600160a01b03166000196123a7565b50600190565b6018546001600160a01b03163314611b4a5760405162461bcd60e51b8152600401610b959061377b565b60165460ff1615611b9d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b95565b601654610100900460ff16611bf45760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b95565b6016546201000090046001600160a01b0316611c24576016805462010000600160b01b0319163062010000021790555b601654600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c9657600080fd5b505af1925050508015611ca7575060015b50601654600b546001600160a01b03620100009092048216916325a71cae91611cd091166116eb565b6040518263ffffffff1660e01b8152600401611cee91815260200190565b60408051808303816000875af1925050508015611d28575060408051601f3d908101601f19168201909252611d25918101906139d1565b60015b15611d37576010919091556011555b6016805460ff1916600117905542601755565b6000611d573384846124a0565b5060019392505050565b6018546001600160a01b03163314611d8b5760405162461bcd60e51b8152600401610b959061377b565b6009805461ffff848116620100000263ffff0000198583166401000000000265ffff0000ffff1990941692881692909217929092171617905582611dcf83836139f5565b611dd991906139f5565b6009805467ffff0000000000001916600160301b61ffff93841602179055600854600091611e1091620100008104821691166139f5565b60095461ffff9182169250600160301b900416811015611e825760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b95565b50505050565b6018546001600160a01b03163314611eb25760405162461bcd60e51b8152600401610b959061377b565b601654610100900460ff1615611f1a57306001600160a01b03821603611f1a5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b95565b6018546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f959190613a17565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611fe0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f709190613a30565b6018546001600160a01b0316331461202e5760405162461bcd60e51b8152600401610b959061377b565b600f805461ff001916610100841515908102919091179091556012805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6018546001600160a01b031633146120b75760405162461bcd60e51b8152600401610b959061377b565b601654610100900460ff161561210f5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b95565b6018546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156116cd573d6000803e3d6000fd5b6018546001600160a01b031633146121725760405162461bcd60e51b8152600401610b959061377b565b82846121806012600a6138a0565b61218e906305f5e1006138d1565b61219891906138d1565b6121a291906138af565b60105580826121b36012600a6138a0565b6121c1906305f5e1006138d1565b6121cb91906138d1565b6121d591906138af565b601181905560105411156122355760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b95565b600b546127109061224e906001600160a01b03166116eb565b6122599060966138d1565b61226391906138af565b60115411156122c05760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b95565b620f42406122d06012600a6138a0565b6122de906305f5e1006138d1565b6122e891906138af565b60115410156123095760405162461bcd60e51b8152600401610b9590613a4d565b620f42406123196012600a6138a0565b612327906305f5e1006138d1565b61233191906138af565b6010541015611e825760405162461bcd60e51b8152600401610b9590613a4d565b6018546001600160a01b0316331461237c5760405162461bcd60e51b8152600401610b959061377b565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166123f35760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b95565b6001600160a01b03821661243f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b95565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166125065760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b95565b6001600160a01b0383166125685760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b95565b600082116125ca5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b95565b6001600160a01b0384166000908152600160205260408120548190819060ff16156125f85760019250612626565b6001600160a01b03861660009081526001602052604090205460ff16156126225760019150612626565b5060015b6126308787612c03565b156128a75760165460ff16612731578061268c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b95565b6001600160a01b03871660009081526005602052604090205460ff161580156126ce57506001600160a01b03861660009081526005602052604090205460ff16155b156127315760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b95565b828061273a5750815b156127e9576001600160a01b03871660009081526007602052604090205460ff1615801561278157506001600160a01b03861660009081526007602052604090205460ff16155b156127e9576014548511156127e95760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b95565b600a546001600160a01b03878116610100909204161480159061280a575081155b156128a7576001600160a01b03861660009081526007602052604090205460ff166128a7576015548561283c886116eb565b6128469190613932565b11156128a75760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610b95565b811561293757600f5460ff1661293757600f54610100900460ff16156129375760006128d2306116eb565b905060105481106129355760115460125460ff161561291f57601354600b546127109190612908906001600160a01b03166116eb565b61291291906138d1565b61291c91906138af565b90505b80821061292a578091505b61293382612d1a565b505b505b612945878787868686612950565b979650505050505050565b600061295c8787612c03565b156129f65760165460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156129df575060408051601f3d908101601f191682019092526129dc91810190613a30565b60015b6129e857600080fd5b9050806129f457600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612a3857506001600160a01b03871660009081526006602052604090205460ff165b15612a41575060005b6001600160a01b03881660009081526020819052604081208054889290612a699084906138e8565b909155506000905081612a7c5786612a88565b612a8889888888613105565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612abe9190613932565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b0a91815260200190565b60405180910390a3601654610100900460ff16612bf457612b2b8989613211565b601654610100900460ff16158015612b485750612b488989612c03565b8015612b6d57506001600160a01b03891660009081526005602052604090205460ff16155b8015612b9257506001600160a01b03881660009081526005602052604090205460ff16155b8015612b9c575083155b15612bf45760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b95565b50600198975050505050505050565b6018546000906001600160a01b03848116911614801590612c3257506018546001600160a01b03838116911614155b8015612c4957506018546001600160a01b03163214155b8015612c6e57506001600160a01b03821660009081526004602052604090205460ff16155b8015612c9357506001600160a01b03831660009081526004602052604090205460ff16155b8015612caa57506001600160a01b03821661dead14155b8015612cbe57506001600160a01b03821615155b8015612cd357506001600160a01b0383163014155b8015612cf357506016546001600160a01b03848116620100009092041614155b8015612d1357506016546001600160a01b03838116620100009092041614155b9392505050565b600f805460ff191660011790556040805160808101825260095461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b900490911660608201819052600003612d7857506130f8565b306000908152600360209081526040808320600a5461010090046001600160a01b0316845290915290205460001914612ddb57306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e1057612e106138fb565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea79190613a9b565b81600181518110612eba57612eba6138fb565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac94790612f07908690600090869030904290600401613ab8565b600060405180830381600087803b158015612f2157600080fd5b505af1925050508015612f32575060015b612f3d5750506130f8565b6000479050600080846060015161ffff16856040015161ffff1684612f6291906138d1565b612f6c91906138af565b90506000856060015161ffff16866000015161ffff1685612f8d91906138d1565b612f9791906138af565b90506000612fa58284613932565b612faf90866138e8565b602088015190915061ffff161561301d57600c546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114613012576040519150601f19603f3d011682016040523d82523d6000602084013e613017565b606091505b50909450505b604087015161ffff161561308857600d546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d806000811461307d576040519150601f19603f3d011682016040523d82523d6000602084013e613082565b606091505b50909450505b865161ffff16156130f057600e546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d80600081146130e5576040519150601f19603f3d011682016040523d82523d6000602084013e6130ea565b606091505b50909450505b505050505050505b50600f805460ff19169055565b600080831561311b575060085461ffff16613145565b8215613134575060085462010000900461ffff16613145565b50600854640100000000900461ffff165b6016546201000090046001600160a01b031630148015613166575046606114155b1561317057506111945b806000036131815784915050610cd2565b600061271061319083886138d1565b61319a91906138af565b905080156132075730600090815260208190526040812080548392906131c1908490613932565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61294581876138e8565b601654610100900460ff16156132755760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b95565b61327f8282612c03565b1580156132995750600b546001600160a01b038281169116145b15611aca576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556016805461ff001916610100179081905562010000900416613311576016805462010000600160b01b0319163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612081565b80151581146116cd57600080fd5b6000806040838503121561337257600080fd5b823561337d81613351565b9150602083013561338d81613351565b809150509250929050565b600060208083528351808285015260005b818110156133c5578581018301518582016040015282016133a9565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116cd57600080fd5b6000806040838503121561340e57600080fd5b8235613419816133e6565b946020939093013593505050565b60006020828403121561343957600080fd5b8135612d13816133e6565b60008060006060848603121561345957600080fd5b8335613464816133e6565b92506020840135613474816133e6565b929592945050506040919091013590565b6000806040838503121561349857600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156134e6576134e66134a7565b604052919050565b600067ffffffffffffffff821115613508576135086134a7565b5060051b60200190565b600082601f83011261352357600080fd5b81356020613538613533836134ee565b6134bd565b82815260059290921b8401810191818101908684111561355757600080fd5b8286015b84811015613572578035835291830191830161355b565b509695505050505050565b6000806040838503121561359057600080fd5b823567ffffffffffffffff808211156135a857600080fd5b818501915085601f8301126135bc57600080fd5b813560206135cc613533836134ee565b82815260059290921b840181019181810190898411156135eb57600080fd5b948201945b83861015613612578535613603816133e6565b825294820194908201906135f0565b9650508601359250508082111561362857600080fd5b5061363585828601613512565b9150509250929050565b803561ffff8116811461365157600080fd5b919050565b60008060006060848603121561366b57600080fd5b6136748461363f565b92506136826020850161363f565b91506136906040850161363f565b90509250925092565b600080604083850312156136ac57600080fd5b823561337d816133e6565b6000602082840312156136c957600080fd5b5035919050565b6000806000606084860312156136e557600080fd5b83356136f0816133e6565b92506020840135613700816133e6565b91506040840135613710816133e6565b809150509250925092565b6000806040838503121561372e57600080fd5b8235613739816133e6565b9150602083013561338d816133e6565b6000806000806080858703121561375f57600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156137f75781600019048211156137dd576137dd6137a6565b808516156137ea57918102915b93841c93908002906137c1565b509250929050565b60008261380e57506001610c20565b8161381b57506000610c20565b8160018114613831576002811461383b57613857565b6001915050610c20565b60ff84111561384c5761384c6137a6565b50506001821b610c20565b5060208310610133831016604e8410600b841016171561387a575081810a610c20565b61388483836137bc565b8060001904821115613898576138986137a6565b029392505050565b6000612d1360ff8416836137ff565b6000826138cc57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610c2057610c206137a6565b81810381811115610c2057610c206137a6565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613928576139286137a6565b6001019392505050565b80820180821115610c2057610c206137a6565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600080604083850312156139b557600080fd5b82516139c0816133e6565b602084015190925061338d816133e6565b600080604083850312156139e457600080fd5b505080516020909101519092909150565b61ffff818116838216019080821115613a1057613a106137a6565b5092915050565b600060208284031215613a2957600080fd5b5051919050565b600060208284031215613a4257600080fd5b8151612d1381613351565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b600060208284031215613aad57600080fd5b8151612d13816133e6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613b085784516001600160a01b031683529383019391830191600101613ae3565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220d6daa9b9bce85083c828dc82f78c91152385eece93ce85925307dfde27b1b75064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103855760003560e01c806350a8e016116101d157806395d89b4111610102578063bfc2fc35116100a0578063f94aa1b41161006f578063f94aa1b414610ab5578063fb78680d14610b0c578063fdb78c0e14610b2c578063feadde9c14610b4b57600080fd5b8063bfc2fc35146109d2578063cf847706146109f2578063dd62ed3e14610a5a578063ee5d9c2d14610aa057600080fd5b8063ab558e4d116100dc578063ab558e4d14610998578063b1b08f71146105fc578063b3d514fb146105fc578063b7df8b36146109b857600080fd5b806395d89b411461092c578063a9059cbb14610958578063aa22b1721461097857600080fd5b8063715018a61161016f57806380c581d11161014957806380c581d1146108c4578063893d20e8146108e45780638a63bd9b146109025780638a8c523c1461091757600080fd5b8063715018a61461087a57806375cb1bd11461088f57806378648edf146108af57600080fd5b80635c24b074116101ab5780635c24b074146107ec5780635cce86cd1461080c5780636ebd00781461084557806370a082311461085a57600080fd5b806350a8e01614610797578063590ffdce146107b65780635a6f0918146107d657600080fd5b806328577751116102b657806336fddb04116102545780634bbb93eb116102235780634bbb93eb146106fe5780634e718e481461071e5780634fb2e45d1461073e5780634fbee1931461075e57600080fd5b806336fddb04146106845780633f3cf56c146106a4578063452ed4f1146106c45780634ada218b146106e457600080fd5b80632e8fa821116102905780632e8fa82114610612578063313ce5671461062857806332cde6641461064457806333251a0b1461066457600080fd5b806328577751146105d15780632b112e49146105e75780632b28fc7a146105fc57600080fd5b8063095ea7b31161032357806318160ddd116102fd57806318160ddd1461055c57806323b872dd1461057157806326003957146105915780632610eaca146105b157600080fd5b8063095ea7b3146104ee5780630dcbcf1c1461050e5780630fa604e41461054757600080fd5b8063069d955f1161035f578063069d955f1461040a57806306fdde03146104605780630758d9241461049f57806307dd79e0146104c457600080fd5b806303fd2a45146103915780630445b667146103c4578063044df726146103e857600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a761dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103d057600080fd5b506103da60105481565b6040519081526020016103bb565b3480156103f457600080fd5b5061040861040336600461335f565b610b6b565b005b34801561041657600080fd5b5060085461043b9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103bb565b34801561046c57600080fd5b5060408051808201909152600d81526c13d8dd1bdc1d5cd5d85b1b195d609a1b60208201525b6040516103bb9190613398565b3480156104ab57600080fd5b50600a546103a79061010090046001600160a01b031681565b3480156104d057600080fd5b50600a546104de9060ff1681565b60405190151581526020016103bb565b3480156104fa57600080fd5b506104de6105093660046133fb565b610c0f565b34801561051a57600080fd5b506104de610529366004613427565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561055357600080fd5b506103da610c26565b34801561056857600080fd5b506103da610c46565b34801561057d57600080fd5b506104de61058c366004613444565b610c62565b34801561059d57600080fd5b506104086105ac366004613485565b610cda565b3480156105bd57600080fd5b506104086105cc36600461357d565b610df8565b3480156105dd57600080fd5b506103da60135481565b3480156105f357600080fd5b506103da610f75565b34801561060857600080fd5b506103da6103e881565b34801561061e57600080fd5b506103da60115481565b34801561063457600080fd5b50604051601281526020016103bb565b34801561065057600080fd5b5061040861065f366004613656565b610fba565b34801561067057600080fd5b5061040861067f366004613427565b6110e4565b34801561069057600080fd5b5061040861069f366004613699565b611177565b3480156106b057600080fd5b506104086106bf366004613485565b6111cc565b3480156106d057600080fd5b50600b546103a7906001600160a01b031681565b3480156106f057600080fd5b506016546104de9060ff1681565b34801561070a57600080fd5b506103da6107193660046136b7565b611303565b34801561072a57600080fd5b506104086107393660046136b7565b611335565b34801561074a57600080fd5b50610408610759366004613427565b6113ae565b34801561076a57600080fd5b506104de610779366004613427565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107a357600080fd5b506016546104de90610100900460ff1681565b3480156107c257600080fd5b506104086107d1366004613699565b6114d7565b3480156107e257600080fd5b506103da60175481565b3480156107f857600080fd5b50610408610807366004613427565b61152c565b34801561081857600080fd5b506104de610827366004613427565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561085157600080fd5b506103da6116d0565b34801561086657600080fd5b506103da610875366004613427565b6116eb565b34801561088657600080fd5b50610408611706565b34801561089b57600080fd5b506104086108aa3660046136d0565b6117ff565b3480156108bb57600080fd5b506104086118e8565b3480156108d057600080fd5b506104086108df366004613699565b611921565b3480156108f057600080fd5b506018546001600160a01b03166103a7565b34801561090e57600080fd5b506104de611ace565b34801561092357600080fd5b50610408611b20565b34801561093857600080fd5b506040805180820190915260038152624f435760e81b6020820152610492565b34801561096457600080fd5b506104de6109733660046133fb565b611d4a565b34801561098457600080fd5b50610408610993366004613656565b611d61565b3480156109a457600080fd5b506104086109b3366004613427565b611e88565b3480156109c457600080fd5b506012546104de9060ff1681565b3480156109de57600080fd5b506104086109ed36600461335f565b612004565b3480156109fe57600080fd5b50600954610a2c9061ffff808216916201000081048216916401000000008204811691600160301b90041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103bb565b348015610a6657600080fd5b506103da610a7536600461371b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610aac57600080fd5b5061040861208d565b348015610ac157600080fd5b50600c54600d54600e54610ae2926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103bb565b348015610b1857600080fd5b50610408610b27366004613749565b612148565b348015610b3857600080fd5b50600f546104de90610100900460ff1681565b348015610b5757600080fd5b50610408610b66366004613699565b612352565b6018546001600160a01b03163314610b9e5760405162461bcd60e51b8152600401610b959061377b565b60405180910390fd5b60165460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610bf357600080fd5b505af1158015610c07573d6000803e3d6000fd5b505050505050565b6000610c1c3384846123a7565b5060015b92915050565b6000610c346012600a6138a0565b601554610c4191906138af565b905090565b6000610c546012600a6138a0565b610c41906305f5e1006138d1565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610cc7576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610cc19084906138e8565b90915550505b610cd28484846124a0565b949350505050565b6018546001600160a01b03163314610d045760405162461bcd60e51b8152600401610b959061377b565b6064610d126012600a6138a0565b610d20906305f5e1006138d1565b610d2a91906138af565b8183610d386012600a6138a0565b610d46906305f5e1006138d1565b610d5091906138d1565b610d5a91906138af565b1015610dc15760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610b95565b8082610dcf6012600a6138a0565b610ddd906305f5e1006138d1565b610de791906138d1565b610df191906138af565b6015555050565b6018546001600160a01b03163314610e225760405162461bcd60e51b8152600401610b959061377b565b8051825114610e6b5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610b95565b60005b82518161ffff161015610f7057610e876012600a6138a0565b828261ffff1681518110610e9d57610e9d6138fb565b6020026020010151610eaf91906138d1565b610eb8336116eb565b1015610efb5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610b95565b610f5d33848361ffff1681518110610f1557610f156138fb565b60200260200101516012600a610f2b91906138a0565b858561ffff1681518110610f4157610f416138fb565b6020026020010151610f5391906138d1565b6000806001612950565b5080610f6881613911565b915050610e6e565b505050565b6000610f8160006116eb565b610f8c61dead6116eb565b610f969190613932565b610fa26012600a6138a0565b610fb0906305f5e1006138d1565b610c4191906138e8565b6018546001600160a01b03163314610fe45760405162461bcd60e51b8152600401610b959061377b565b600a5460ff161561102b5760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610b95565b6103e88361ffff161115801561104757506103e88261ffff1611155b801561105957506103e88161ffff1611155b6110a55760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b95565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6018546001600160a01b0316331461110e5760405162461bcd60e51b8152600401610b959061377b565b6016546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561115c57600080fd5b505af1158015611170573d6000803e3d6000fd5b5050505050565b6018546001600160a01b031633146111a15760405162461bcd60e51b8152600401610b959061377b565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6018546001600160a01b031633146111f65760405162461bcd60e51b8152600401610b959061377b565b6103e86112056012600a6138a0565b611213906305f5e1006138d1565b61121e9060056138d1565b61122891906138af565b81836112366012600a6138a0565b611244906305f5e1006138d1565b61124e91906138d1565b61125891906138af565b10156112cc5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b95565b80826112da6012600a6138a0565b6112e8906305f5e1006138d1565b6112f291906138d1565b6112fc91906138af565b6014555050565b600b54600090612710908390611321906001600160a01b03166116eb565b61132b91906138d1565b610c2091906138af565b6018546001600160a01b0316331461135f5760405162461bcd60e51b8152600401610b959061377b565b60968111156113a95760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610b95565b601355565b6018546001600160a01b031633146113d85760405162461bcd60e51b8152600401610b959061377b565b6001600160a01b0381166113fe5760405162461bcd60e51b8152600401610b9590613945565b61deac196001600160a01b038216016114295760405162461bcd60e51b8152600401610b9590613945565b601854611440906001600160a01b031660006114d7565b61144b8160016114d7565b601854600090611463906001600160a01b03166116eb565b111561148557601854611483906001600160a01b031682610f53826116eb565b505b601880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6018546001600160a01b031633146115015760405162461bcd60e51b8152600401610b959061377b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6018546001600160a01b031633146115565760405162461bcd60e51b8152600401610b959061377b565b60165460ff161561156657600080fd5b306001600160a01b038216036115af5760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610b95565b6016805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611635575060408051601f3d908101601f19168201909252611632918101906139a2565b60015b61163e57600080fd5b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560185492546116ae93831692919004166000196123a7565b600a54610f7090309061010090046001600160a01b03166000196123a7565b50565b60006116de6012600a6138a0565b601454610c4191906138af565b6001600160a01b031660009081526020819052604090205490565b6018546001600160a01b031633146117305760405162461bcd60e51b8152600401610b959061377b565b60165460ff1661179a5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610b95565b6018546117b1906001600160a01b031660006114d7565b601880546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6018546001600160a01b031633146118295760405162461bcd60e51b8152600401610b959061377b565b6001600160a01b0383161580159061184957506001600160a01b03821615155b801561185d57506001600160a01b03811615155b6118a95760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b95565b600c80546001600160a01b039485166001600160a01b031991821617909155600d805493851693821693909317909255600e8054919093169116179055565b6018546001600160a01b031633146119125760405162461bcd60e51b8152600401610b959061377b565b600a805460ff19166001179055565b6018546001600160a01b0316331461194b5760405162461bcd60e51b8152600401610b959061377b565b806119a9576001600160a01b03828116600081815260016020526040808220805460ff1916905560165490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610bd9565b60025415611a02576203f480600254426119c391906138e8565b11611a025760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610b95565b6001600160a01b03821660009081526001602052604090205460ff1615611a6b5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b95565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560165491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610bd9565b5050565b6018546000906001600160a01b03163314611afb5760405162461bcd60e51b8152600401610b959061377b565b600a54611b1a90309061010090046001600160a01b03166000196123a7565b50600190565b6018546001600160a01b03163314611b4a5760405162461bcd60e51b8152600401610b959061377b565b60165460ff1615611b9d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b95565b601654610100900460ff16611bf45760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b95565b6016546201000090046001600160a01b0316611c24576016805462010000600160b01b0319163062010000021790555b601654600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c9657600080fd5b505af1925050508015611ca7575060015b50601654600b546001600160a01b03620100009092048216916325a71cae91611cd091166116eb565b6040518263ffffffff1660e01b8152600401611cee91815260200190565b60408051808303816000875af1925050508015611d28575060408051601f3d908101601f19168201909252611d25918101906139d1565b60015b15611d37576010919091556011555b6016805460ff1916600117905542601755565b6000611d573384846124a0565b5060019392505050565b6018546001600160a01b03163314611d8b5760405162461bcd60e51b8152600401610b959061377b565b6009805461ffff848116620100000263ffff0000198583166401000000000265ffff0000ffff1990941692881692909217929092171617905582611dcf83836139f5565b611dd991906139f5565b6009805467ffff0000000000001916600160301b61ffff93841602179055600854600091611e1091620100008104821691166139f5565b60095461ffff9182169250600160301b900416811015611e825760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b95565b50505050565b6018546001600160a01b03163314611eb25760405162461bcd60e51b8152600401610b959061377b565b601654610100900460ff1615611f1a57306001600160a01b03821603611f1a5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b95565b6018546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f959190613a17565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611fe0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f709190613a30565b6018546001600160a01b0316331461202e5760405162461bcd60e51b8152600401610b959061377b565b600f805461ff001916610100841515908102919091179091556012805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6018546001600160a01b031633146120b75760405162461bcd60e51b8152600401610b959061377b565b601654610100900460ff161561210f5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b95565b6018546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156116cd573d6000803e3d6000fd5b6018546001600160a01b031633146121725760405162461bcd60e51b8152600401610b959061377b565b82846121806012600a6138a0565b61218e906305f5e1006138d1565b61219891906138d1565b6121a291906138af565b60105580826121b36012600a6138a0565b6121c1906305f5e1006138d1565b6121cb91906138d1565b6121d591906138af565b601181905560105411156122355760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b95565b600b546127109061224e906001600160a01b03166116eb565b6122599060966138d1565b61226391906138af565b60115411156122c05760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b95565b620f42406122d06012600a6138a0565b6122de906305f5e1006138d1565b6122e891906138af565b60115410156123095760405162461bcd60e51b8152600401610b9590613a4d565b620f42406123196012600a6138a0565b612327906305f5e1006138d1565b61233191906138af565b6010541015611e825760405162461bcd60e51b8152600401610b9590613a4d565b6018546001600160a01b0316331461237c5760405162461bcd60e51b8152600401610b959061377b565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166123f35760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b95565b6001600160a01b03821661243f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b95565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166125065760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b95565b6001600160a01b0383166125685760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b95565b600082116125ca5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b95565b6001600160a01b0384166000908152600160205260408120548190819060ff16156125f85760019250612626565b6001600160a01b03861660009081526001602052604090205460ff16156126225760019150612626565b5060015b6126308787612c03565b156128a75760165460ff16612731578061268c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b95565b6001600160a01b03871660009081526005602052604090205460ff161580156126ce57506001600160a01b03861660009081526005602052604090205460ff16155b156127315760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b95565b828061273a5750815b156127e9576001600160a01b03871660009081526007602052604090205460ff1615801561278157506001600160a01b03861660009081526007602052604090205460ff16155b156127e9576014548511156127e95760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b95565b600a546001600160a01b03878116610100909204161480159061280a575081155b156128a7576001600160a01b03861660009081526007602052604090205460ff166128a7576015548561283c886116eb565b6128469190613932565b11156128a75760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610b95565b811561293757600f5460ff1661293757600f54610100900460ff16156129375760006128d2306116eb565b905060105481106129355760115460125460ff161561291f57601354600b546127109190612908906001600160a01b03166116eb565b61291291906138d1565b61291c91906138af565b90505b80821061292a578091505b61293382612d1a565b505b505b612945878787868686612950565b979650505050505050565b600061295c8787612c03565b156129f65760165460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156129df575060408051601f3d908101601f191682019092526129dc91810190613a30565b60015b6129e857600080fd5b9050806129f457600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612a3857506001600160a01b03871660009081526006602052604090205460ff165b15612a41575060005b6001600160a01b03881660009081526020819052604081208054889290612a699084906138e8565b909155506000905081612a7c5786612a88565b612a8889888888613105565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612abe9190613932565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b0a91815260200190565b60405180910390a3601654610100900460ff16612bf457612b2b8989613211565b601654610100900460ff16158015612b485750612b488989612c03565b8015612b6d57506001600160a01b03891660009081526005602052604090205460ff16155b8015612b9257506001600160a01b03881660009081526005602052604090205460ff16155b8015612b9c575083155b15612bf45760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b95565b50600198975050505050505050565b6018546000906001600160a01b03848116911614801590612c3257506018546001600160a01b03838116911614155b8015612c4957506018546001600160a01b03163214155b8015612c6e57506001600160a01b03821660009081526004602052604090205460ff16155b8015612c9357506001600160a01b03831660009081526004602052604090205460ff16155b8015612caa57506001600160a01b03821661dead14155b8015612cbe57506001600160a01b03821615155b8015612cd357506001600160a01b0383163014155b8015612cf357506016546001600160a01b03848116620100009092041614155b8015612d1357506016546001600160a01b03838116620100009092041614155b9392505050565b600f805460ff191660011790556040805160808101825260095461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b900490911660608201819052600003612d7857506130f8565b306000908152600360209081526040808320600a5461010090046001600160a01b0316845290915290205460001914612ddb57306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e1057612e106138fb565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea79190613a9b565b81600181518110612eba57612eba6138fb565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac94790612f07908690600090869030904290600401613ab8565b600060405180830381600087803b158015612f2157600080fd5b505af1925050508015612f32575060015b612f3d5750506130f8565b6000479050600080846060015161ffff16856040015161ffff1684612f6291906138d1565b612f6c91906138af565b90506000856060015161ffff16866000015161ffff1685612f8d91906138d1565b612f9791906138af565b90506000612fa58284613932565b612faf90866138e8565b602088015190915061ffff161561301d57600c546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114613012576040519150601f19603f3d011682016040523d82523d6000602084013e613017565b606091505b50909450505b604087015161ffff161561308857600d546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d806000811461307d576040519150601f19603f3d011682016040523d82523d6000602084013e613082565b606091505b50909450505b865161ffff16156130f057600e546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d80600081146130e5576040519150601f19603f3d011682016040523d82523d6000602084013e6130ea565b606091505b50909450505b505050505050505b50600f805460ff19169055565b600080831561311b575060085461ffff16613145565b8215613134575060085462010000900461ffff16613145565b50600854640100000000900461ffff165b6016546201000090046001600160a01b031630148015613166575046606114155b1561317057506111945b806000036131815784915050610cd2565b600061271061319083886138d1565b61319a91906138af565b905080156132075730600090815260208190526040812080548392906131c1908490613932565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61294581876138e8565b601654610100900460ff16156132755760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b95565b61327f8282612c03565b1580156132995750600b546001600160a01b038281169116145b15611aca576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556016805461ff001916610100179081905562010000900416613311576016805462010000600160b01b0319163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612081565b80151581146116cd57600080fd5b6000806040838503121561337257600080fd5b823561337d81613351565b9150602083013561338d81613351565b809150509250929050565b600060208083528351808285015260005b818110156133c5578581018301518582016040015282016133a9565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116cd57600080fd5b6000806040838503121561340e57600080fd5b8235613419816133e6565b946020939093013593505050565b60006020828403121561343957600080fd5b8135612d13816133e6565b60008060006060848603121561345957600080fd5b8335613464816133e6565b92506020840135613474816133e6565b929592945050506040919091013590565b6000806040838503121561349857600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156134e6576134e66134a7565b604052919050565b600067ffffffffffffffff821115613508576135086134a7565b5060051b60200190565b600082601f83011261352357600080fd5b81356020613538613533836134ee565b6134bd565b82815260059290921b8401810191818101908684111561355757600080fd5b8286015b84811015613572578035835291830191830161355b565b509695505050505050565b6000806040838503121561359057600080fd5b823567ffffffffffffffff808211156135a857600080fd5b818501915085601f8301126135bc57600080fd5b813560206135cc613533836134ee565b82815260059290921b840181019181810190898411156135eb57600080fd5b948201945b83861015613612578535613603816133e6565b825294820194908201906135f0565b9650508601359250508082111561362857600080fd5b5061363585828601613512565b9150509250929050565b803561ffff8116811461365157600080fd5b919050565b60008060006060848603121561366b57600080fd5b6136748461363f565b92506136826020850161363f565b91506136906040850161363f565b90509250925092565b600080604083850312156136ac57600080fd5b823561337d816133e6565b6000602082840312156136c957600080fd5b5035919050565b6000806000606084860312156136e557600080fd5b83356136f0816133e6565b92506020840135613700816133e6565b91506040840135613710816133e6565b809150509250925092565b6000806040838503121561372e57600080fd5b8235613739816133e6565b9150602083013561338d816133e6565b6000806000806080858703121561375f57600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156137f75781600019048211156137dd576137dd6137a6565b808516156137ea57918102915b93841c93908002906137c1565b509250929050565b60008261380e57506001610c20565b8161381b57506000610c20565b8160018114613831576002811461383b57613857565b6001915050610c20565b60ff84111561384c5761384c6137a6565b50506001821b610c20565b5060208310610133831016604e8410600b841016171561387a575081810a610c20565b61388483836137bc565b8060001904821115613898576138986137a6565b029392505050565b6000612d1360ff8416836137ff565b6000826138cc57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610c2057610c206137a6565b81810381811115610c2057610c206137a6565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613928576139286137a6565b6001019392505050565b80820180821115610c2057610c206137a6565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600080604083850312156139b557600080fd5b82516139c0816133e6565b602084015190925061338d816133e6565b600080604083850312156139e457600080fd5b505080516020909101519092909150565b61ffff818116838216019080821115613a1057613a106137a6565b5092915050565b600060208284031215613a2957600080fd5b5051919050565b600060208284031215613a4257600080fd5b8151612d1381613351565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b600060208284031215613aad57600080fd5b8151612d13816133e6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613b085784516001600160a01b031683529383019391830191600101613ae3565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220d6daa9b9bce85083c828dc82f78c91152385eece93ce85925307dfde27b1b75064736f6c63430008130033

Deployed Bytecode Sourcemap

4090:21796:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5667:73;;;;;;;;;;;;5698:42;5667:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5667:73:0;;;;;;;;6238:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;6238:28:0;222:177:1;13796:153:0;;;;;;;;;;-1:-1:-1;13796:153:0;;;;;:::i;:::-;;:::i;:::-;;5114:107;;;;;;;;;;-1:-1:-1;5114:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;1114:6:1;1147:15;;;1129:34;;1199:15;;;1194:2;1179:18;;1172:43;1251:15;;1231:18;;;1224:43;;;;1092:2;1077:18;5114:107:0;908:365:1;9931:80:0;;;;;;;;;;-1:-1:-1;10003:5:0;;;;;;;;;;;;-1:-1:-1;;;10003:5:0;;;;9931:80;;;;;;;:::i;5606:26::-;;;;;;;;;;-1:-1:-1;5606:26:0;;;;;;;-1:-1:-1;;;;;5606:26:0;;;5573;;;;;;;;;;-1:-1:-1;5573:26:0;;;;;;;;;;;2221:14:1;;2214:22;2196:41;;2184:2;2169:18;5573:26:0;2056:187:1;10539:161:0;;;;;;;;;;-1:-1:-1;10539:161:0;;;;;:::i;:::-;;:::i;13225:140::-;;;;;;;;;;-1:-1:-1;13225:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;13323:34:0;13299:4;13323:34;;;:25;:34;;;;;;;;;13225:140;16140:114;;;;;;;;;;;;;:::i;9666:83::-;;;;;;;;;;;;;:::i;11209:306::-;;;;;;;;;;-1:-1:-1;11209:306:0;;;;;:::i;:::-;;:::i;15752:264::-;;;;;;;;;;-1:-1:-1;15752:264:0;;;;;:::i;:::-;;:::i;23598:447::-;;;;;;;;;;-1:-1:-1;23598:447:0;;;;;:::i;:::-;;:::i;6346:33::-;;;;;;;;;;;;;;;;13529:141;;;;;;;;;;;;;:::i;5370:42::-;;;;;;;;;;;;5408:4;5370:42;;6273:25;;;;;;;;;;;;;;;;9755:80;;;;;;;;;;-1:-1:-1;9755:80:0;;4787:2;6299:36:1;;6287:2;6272:18;9755:80:0;6157:184:1;14147:453:0;;;;;;;;;;-1:-1:-1;14147:453:0;;;;;:::i;:::-;;:::i;13678:110::-;;;;;;;;;;-1:-1:-1;13678:110:0;;;;;:::i;:::-;;:::i;12800:140::-;;;;;;;;;;-1:-1:-1;12800:140:0;;;;;:::i;:::-;;:::i;15471:273::-;;;;;;;;;;-1:-1:-1;15471:273:0;;;;;:::i;:::-;;:::i;5639:21::-;;;;;;;;;;-1:-1:-1;5639:21:0;;;;-1:-1:-1;;;;;5639:21:0;;;6516:34;;;;;;;;;;-1:-1:-1;6516:34:0;;;;;;;;16262:189;;;;;;;;;;-1:-1:-1;16262:189:0;;;;;:::i;:::-;;:::i;17166:217::-;;;;;;;;;;-1:-1:-1;17166:217:0;;;;;:::i;:::-;;:::i;8304:654::-;;;;;;;;;;-1:-1:-1;8304:654:0;;;;;:::i;:::-;;:::i;12948:127::-;;;;;;;;;;-1:-1:-1;12948:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13039:28:0;13015:4;13039:28;;;:19;:28;;;;;;;;;12948:127;6557:36;;;;;;;;;;-1:-1:-1;6557:36:0;;;;;;;;;;;13083:134;;;;;;;;;;-1:-1:-1;13083:134:0;;;;;:::i;:::-;;:::i;6630:26::-;;;;;;;;;;;;;;;;12095:557;;;;;;;;;;-1:-1:-1;12095:557:0;;;;;:::i;:::-;;:::i;12660:132::-;;;;;;;;;;-1:-1:-1;12660:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;12754:30:0;12730:4;12754:30;;;:21;:30;;;;;;;;;12660:132;16024:108;;;;;;;;;;;;;:::i;10241:117::-;;;;;;;;;;-1:-1:-1;10241:117:0;;;;;:::i;:::-;;:::i;8966:310::-;;;;;;;;;;;;;:::i;15052:411::-;;;;;;;;;;-1:-1:-1;15052:411:0;;;;;:::i;:::-;;:::i;13957:182::-;;;;;;;;;;;;;:::i;11523:564::-;;;;;;;;;;-1:-1:-1;11523:564:0;;;;;:::i;:::-;;:::i;10017:79::-;;;;;;;;;;-1:-1:-1;10087:6:0;;-1:-1:-1;;;;;10087:6:0;10017:79;;11026:175;;;;;;;;;;;;;:::i;22401:695::-;;;;;;;;;;;;;:::i;9841:84::-;;;;;;;;;;-1:-1:-1;9915:7:0;;;;;;;;;;;;-1:-1:-1;;;9915:7:0;;;;9841:84;;10366:165;;;;;;;;;;-1:-1:-1;10366:165:0;;;;;:::i;:::-;;:::i;14608:436::-;;;;;;;;;;-1:-1:-1;14608:436:0;;;;;:::i;:::-;;:::i;23294:296::-;;;;;;;;;;-1:-1:-1;23294:296:0;;;;;:::i;:::-;;:::i;6305:34::-;;;;;;;;;;-1:-1:-1;6305:34:0;;;;;;;;17391:263;;;;;;;;;;-1:-1:-1;17391:263:0;;;;;:::i;:::-;;:::i;5230:131::-;;;;;;;;;;-1:-1:-1;5230:131:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5230:131:0;;;;;;;;;8206:6:1;8239:15;;;8221:34;;8291:15;;;8286:2;8271:18;;8264:43;8343:15;;;8323:18;;;8316:43;;;;8395:15;;;8390:2;8375:18;;8368:43;8183:3;8168:19;5230:131:0;7973:444:1;10102:133:0;;;;;;;;;;-1:-1:-1;10102:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10204:19:0;;;10186:7;10204:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10102:133;23104:182;;;;;;;;;;;;;:::i;5891:270::-;;;;;;;;;;-1:-1:-1;5891:270:0;;;;;;;;-1:-1:-1;;;;;5891:270:0;;;;;;;;;;;;;;-1:-1:-1;;;;;9121:15:1;;;9103:34;;9173:15;;;9168:2;9153:18;;9146:43;9225:15;;9205:18;;;9198:43;;;;9053:2;9038:18;5891:270:0;8815:432:1;16459:699:0;;;;;;;;;;-1:-1:-1;16459:699:0;;;;;:::i;:::-;;:::i;6192:39::-;;;;;;;;;;-1:-1:-1;6192:39:0;;;;;;;;;;;13373:148;;;;;;;;;;-1:-1:-1;13373:148:0;;;;;:::i;:::-;;:::i;13796:153::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;;;;;;;;;13891:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;13891:50:0;;10175:14:1;;10168:22;13891:50:0::1;::::0;::::1;10150:41:1::0;10234:14;;10227:22;10207:18;;;10200:50;13891:11:0;;;::::1;-1:-1:-1::0;;;;;13891:11:0::1;::::0;:26:::1;::::0;10123:18:1;;13891:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13796:153:::0;;:::o;10539:161::-;10616:4;10633:37;10642:10;10654:7;10663:6;10633:8;:37::i;:::-;-1:-1:-1;10688:4:0;10539:161;;;;;:::o;16140:114::-;16187:7;16232:13;4787:2;16232;:13;:::i;:::-;16214:14;;:32;;;;:::i;:::-;16207:39;;16140:114;:::o;9666:83::-;9721:7;4848:13;4787:2;4848;:13;:::i;:::-;4831:30;;4634:11;4831:30;:::i;11209:306::-;-1:-1:-1;;;;;11330:19:0;;11309:4;11330:19;;;:11;:19;;;;;;;;11350:10;11330:31;;;;;;;;-1:-1:-1;;11330:52:0;11326:126;;-1:-1:-1;;;;;11399:19:0;;;;;;:11;:19;;;;;;;;11419:10;11399:31;;;;;;;:41;;11434:6;;11399:19;:41;;11434:6;;11399:41;:::i;:::-;;;;-1:-1:-1;;11326:126:0;11471:36;11481:6;11489:9;11500:6;11471:9;:36::i;:::-;11464:43;11209:306;-1:-1:-1;;;;11209:306:0:o;15752:264::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;15894:3:::1;4848:13;4787:2;4848;:13;:::i;:::-;4831:30;::::0;4634:11:::1;4831:30;:::i;:::-;15884:13;;;;:::i;:::-;15872:7:::0;15861;4848:13:::1;4787:2;4848;:13;:::i;:::-;4831:30;::::0;4634:11:::1;4831:30;:::i;:::-;15851:17;;;;:::i;:::-;15850:29;;;;:::i;:::-;:48;;15842:109;;;::::0;-1:-1:-1;;;15842:109:0;;12506:2:1;15842:109:0::1;::::0;::::1;12488:21:1::0;12545:2;12525:18;;;12518:30;12584:34;12564:18;;;12557:62;-1:-1:-1;;;12635:18:1;;;12628:46;12691:19;;15842:109:0::1;12304:412:1::0;15842:109:0::1;16001:7:::0;15990;4848:13:::1;4787:2;4848;:13;:::i;:::-;4831:30;::::0;4634:11:::1;4831:30;:::i;:::-;15980:17;;;;:::i;:::-;15979:29;;;;:::i;:::-;15962:14;:46:::0;-1:-1:-1;;15752:264:0:o;23598:447::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;23733:7:::1;:14;23714:8;:15;:33;23706:67;;;::::0;-1:-1:-1;;;23706:67:0;;12923:2:1;23706:67:0::1;::::0;::::1;12905:21:1::0;12962:2;12942:18;;;12935:30;-1:-1:-1;;;12981:18:1;;;12974:51;13042:18;;23706:67:0::1;12721:345:1::0;23706:67:0::1;23789:8;23784:254;23807:8;:15;23803:1;:19;;;23784:254;;;23888:13;4787:2;23888;:13;:::i;:::-;23877:7;23885:1;23877:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23852:21;23862:10;23852:9;:21::i;:::-;:49;;23844:80;;;::::0;-1:-1:-1;;;23844:80:0;;13405:2:1;23844:80:0::1;::::0;::::1;13387:21:1::0;13444:2;13424:18;;;13417:30;-1:-1:-1;;;13463:18:1;;;13456:48;13521:18;;23844:80:0::1;13203:342:1::0;23844:80:0::1;23939:87;23956:10;23968:8;23977:1;23968:11;;;;;;;;;;:::i;:::-;;;;;;;4787:2;23992;:13;;;;:::i;:::-;23981:7;23989:1;23981:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24007:5;24014::::0;24021:4:::1;23939:16;:87::i;:::-;-1:-1:-1::0;23824:3:0;::::1;::::0;::::1;:::i;:::-;;;;23784:254;;;;23598:447:::0;;:::o;13529:141::-;13582:7;13639:21;13657:1;13639:9;:21::i;:::-;13621:15;5698:42;13621:9;:15::i;:::-;:39;;;;:::i;:::-;4848:13;4787:2;4848;:13;:::i;:::-;4831:30;;4634:11;4831:30;:::i;:::-;13610:51;;;;:::i;14147:453::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;14255:14:::1;::::0;::::1;;14254:15;14246:45;;;::::0;-1:-1:-1;;;14246:45:0;;14084:2:1;14246:45:0::1;::::0;::::1;14066:21:1::0;14123:2;14103:18;;;14096:30;-1:-1:-1;;;14142:18:1;;;14135:47;14199:18;;14246:45:0::1;13882:341:1::0;14246:45:0::1;5408:4;14310:6;:21;;;;:65;;;;;5458:4;14352:7;:23;;;;14310:65;:117;;;;;5512:4;14396:11;:31;;;;14310:117;14302:170;;;::::0;-1:-1:-1;;;14302:170:0;;14430:2:1;14302:170:0::1;::::0;::::1;14412:21:1::0;14469:2;14449:18;;;14442:30;14508:25;14488:18;;;14481:53;14551:18;;14302:170:0::1;14228:347:1::0;14302:170:0::1;14483:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;14519:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;14557:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;14147:453::o;13678:110::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;13747:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;13747:33:0;;-1:-1:-1;;;;;178:32:1;;;13747:33:0::1;::::0;::::1;160:51:1::0;13747:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;13747:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13678:110:::0;:::o;12800:140::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12892:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;12892:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12800:140::o;15471:273::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;15616:4:::1;4848:13;4787:2;4848;:13;:::i;:::-;4831:30;::::0;4634:11:::1;4831:30;:::i;:::-;15602:11;::::0;15612:1:::1;15602:11;:::i;:::-;:18;;;;:::i;:::-;15590:7:::0;15579;4848:13:::1;4787:2;4848;:13;:::i;:::-;4831:30;::::0;4634:11:::1;4831:30;:::i;:::-;15569:17;;;;:::i;:::-;15568:29;;;;:::i;:::-;:53;;15560:121;;;::::0;-1:-1:-1;;;15560:121:0;;14782:2:1;15560:121:0::1;::::0;::::1;14764:21:1::0;14821:2;14801:18;;;14794:30;14860:34;14840:18;;;14833:62;14931:25;14911:18;;;14904:53;14974:19;;15560:121:0::1;14580:419:1::0;15560:121:0::1;15729:7:::0;15718;4848:13:::1;4787:2;4848;:13;:::i;:::-;4831:30;::::0;4634:11:::1;4831:30;:::i;:::-;15708:17;;;;:::i;:::-;15707:29;;;;:::i;:::-;15692:12;:44:::0;-1:-1:-1;;15471:273:0:o;16262:189::-;16391:6;;16353:7;;5559:5;;16401:21;;16381:17;;-1:-1:-1;;;;;16391:6:0;16381:9;:17::i;:::-;:41;;;;:::i;:::-;16380:62;;;;:::i;17166:217::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;17296:3:::1;17270:22;:29;;17262:64;;;::::0;-1:-1:-1;;;17262:64:0;;15206:2:1;17262:64:0::1;::::0;::::1;15188:21:1::0;15245:2;15225:18;;;15218:30;-1:-1:-1;;;15264:18:1;;;15257:52;15326:18;;17262:64:0::1;15004:346:1::0;17262:64:0::1;17337:13;:38:::0;17166:217::o;8304:654::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8383:22:0;::::1;8375:96;;;;-1:-1:-1::0;;;8375:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;8490:16:0;::::1;::::0;8482:90:::1;;;;-1:-1:-1::0;;;8482:90:0::1;;;;;;;:::i;:::-;8603:6;::::0;8583:34:::1;::::0;-1:-1:-1;;;;;8603:6:0::1;;8583:19;:34::i;:::-;8628:35;8648:8;8658:4;8628:19;:35::i;:::-;8698:6;::::0;8708:1:::1;::::0;8688:17:::1;::::0;-1:-1:-1;;;;;8698:6:0::1;8688:9;:17::i;:::-;:21;8684:127;;;8743:6;::::0;8726:73:::1;::::0;-1:-1:-1;;;;;8743:6:0::1;8751:8:::0;8761:17:::1;8743:6:::0;8761:9:::1;:17::i;8726:73::-;;8684:127;8850:6;::::0;;-1:-1:-1;;;;;8867:17:0;;::::1;-1:-1:-1::0;;;;;;8867:17:0;::::1;::::0;::::1;::::0;;;8900:40:::1;::::0;8850:6;::::1;::::0;8867:17;8850:6;;8900:40:::1;::::0;8831:16:::1;::::0;8900:40:::1;8364:594;8304:654:::0;:::o;13083:134::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13171:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13171:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13083:134::o;12095:557::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;12170:14:::1;::::0;::::1;;12169:15;12161:24;;;::::0;::::1;;12220:4;-1:-1:-1::0;;;;;12204:21:0;::::1;::::0;12196:48:::1;;;::::0;-1:-1:-1;;;12196:48:0;;15987:2:1;12196:48:0::1;::::0;::::1;15969:21:1::0;16026:2;16006:18;;;15999:30;-1:-1:-1;;;16045:18:1;;;16038:44;16099:18;;12196:48:0::1;15785:338:1::0;12196:48:0::1;12255:11;:31:::0;;-1:-1:-1;;;;;;12255:31:0::1;::::0;-1:-1:-1;;;;;12255:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12301:23:::1;::::0;;-1:-1:-1;;;12301:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;12301:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;12301:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;12301:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;12297:348;;12634:8;::::0;::::1;12297:348;12388:9;:29:::0;;-1:-1:-1;;;;;;12388:29:0::1;;-1:-1:-1::0;;;;;12388:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12419:6:::1;:22:::0;;-1:-1:-1;;;;;;12419:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12443:15:0;;;-1:-1:-1;12443:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12443:22:0::1;::::0;;::::1;::::0;;12490:6:::1;::::0;12506:9;;12481:55:::1;::::0;12490:6;::::1;::::0;12506:9;;::::1;;-1:-1:-1::0;;12481:8:0::1;:55::i;:::-;12583:9;::::0;12551:62:::1;::::0;12568:4:::1;::::0;12583:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12583:9:0::1;-1:-1:-1::0;;12551:8:0::1;:62::i;12297:348::-;12095:557:::0;:::o;16024:108::-;16067:7;16110:13;4787:2;16110;:13;:::i;:::-;16094:12;;:30;;;;:::i;10241:117::-;-1:-1:-1;;;;;10334:16:0;10307:7;10334:16;;;;;;;;;;;;10241:117::o;8966:310::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;9033:14:::1;::::0;::::1;;9025:74;;;::::0;-1:-1:-1;;;9025:74:0;;16720:2:1;9025:74:0::1;::::0;::::1;16702:21:1::0;16759:2;16739:18;;;16732:30;16798:34;16778:18;;;16771:62;-1:-1:-1;;;16849:18:1;;;16842:45;16904:19;;9025:74:0::1;16518:411:1::0;9025:74:0::1;9130:6;::::0;9110:34:::1;::::0;-1:-1:-1;;;;;9130:6:0::1;;9110:19;:34::i;:::-;9174:6;::::0;;-1:-1:-1;;;;;;9191:19:0;::::1;::::0;;;9226:42:::1;::::0;-1:-1:-1;;;;;9174:6:0;;::::1;::::0;9155:16:::1;::::0;9174:6;;9226:42:::1;::::0;9155:16;;9226:42:::1;9014:262;8966:310::o:0;15052:411::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15191:23:0;::::1;::::0;;::::1;::::0;:52:::1;;-1:-1:-1::0;;;;;;15218:25:0;::::1;::::0;::::1;15191:52;:77;;;;-1:-1:-1::0;;;;;;15247:21:0;::::1;::::0;::::1;15191:77;15183:113;;;::::0;-1:-1:-1;;;15183:113:0;;17136:2:1;15183:113:0::1;::::0;::::1;17118:21:1::0;17175:2;17155:18;;;17148:30;17214:25;17194:18;;;17187:53;17257:18;;15183:113:0::1;16934:347:1::0;15183:113:0::1;15307:11;:42:::0;;-1:-1:-1;;;;;15307:42:0;;::::1;-1:-1:-1::0;;;;;;15307:42:0;;::::1;;::::0;;;15360:23;:46;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;15417:19;:38;;;;;::::1;::::0;::::1;;::::0;;15052:411::o;13957:182::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;14110:14:::1;:21:::0;;-1:-1:-1;;14110:21:0::1;14127:4;14110:21;::::0;;13957:182::o;11523:564::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;11605:7:::1;11600:480;;-1:-1:-1::0;;;;;11629:13:0;;::::1;11645:5;11629:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;11629:21:0::1;::::0;;11665:11:::1;::::0;:34;;-1:-1:-1;;;11665:34:0;;::::1;::::0;::::1;17454:51:1::0;;;;17521:18;;;17514:50;;;;11665:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;17427:18:1;;11665:34:0::1;17286:284:1::0;11600:480:0::1;11736:17;::::0;:22;11732:135:::1;;11825:6;11805:17;;11787:15;:35;;;;:::i;:::-;:44;11779:72;;;::::0;-1:-1:-1;;;11779:72:0;;17777:2:1;11779:72:0::1;::::0;::::1;17759:21:1::0;17816:2;17796:18;;;17789:30;-1:-1:-1;;;17835:18:1;;;17828:45;17890:18;;11779:72:0::1;17575:339:1::0;11779:72:0::1;-1:-1:-1::0;;;;;11890:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;11889:14;11881:54;;;::::0;-1:-1:-1;;;11881:54:0;;18121:2:1;11881:54:0::1;::::0;::::1;18103:21:1::0;18160:2;18140:18;;;18133:30;18199:29;18179:18;;;18172:57;18246:18;;11881:54:0::1;17919:351:1::0;11881:54:0::1;-1:-1:-1::0;;;;;11950:13:0;;::::1;;::::0;;;11966:4:::1;11950:13;::::0;;;;;;;;:20;;-1:-1:-1;;11950:20:0::1;::::0;::::1;::::0;;12005:15:::1;11985:17;:35:::0;12035:11:::1;::::0;:33;;-1:-1:-1;;;12035:33:0;;::::1;::::0;::::1;17454:51:1::0;;;;17521:18;;;17514:50;12035:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;17427:18:1;;12035:33:0::1;17286:284:1::0;11600:480:0::1;11523:564:::0;;:::o;11026:175::-;8158:6;;11092:4;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;11141:9:::1;::::0;11109:62:::1;::::0;11126:4:::1;::::0;11141:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11141:9:0::1;-1:-1:-1::0;;11109:8:0::1;:62::i;:::-;-1:-1:-1::0;11189:4:0::1;11026:175:::0;:::o;22401:695::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;22463:14:::1;::::0;::::1;;22462:15;22454:52;;;::::0;-1:-1:-1;;;22454:52:0;;18477:2:1;22454:52:0::1;::::0;::::1;18459:21:1::0;18516:2;18496:18;;;18489:30;18555:26;18535:18;;;18528:54;18599:18;;22454:52:0::1;18275:348:1::0;22454:52:0::1;22525:16;::::0;::::1;::::0;::::1;;;22517:53;;;::::0;-1:-1:-1;;;22517:53:0;;18830:2:1;22517:53:0::1;::::0;::::1;18812:21:1::0;18869:2;18849:18;;;18842:30;18908:26;18888:18;;;18881:54;18952:18;;22517:53:0::1;18628:348:1::0;22517:53:0::1;22593:11;::::0;;;::::1;-1:-1:-1::0;;;;;22593:11:0::1;22581:106;;22635:11;:40:::0;;-1:-1:-1;;;;;;22635:40:0::1;22669:4;22635:40:::0;::::1;;::::0;;22581:106:::1;22701:11;::::0;22723:6:::1;::::0;22701:87:::1;::::0;-1:-1:-1;;;22701:87:0;;-1:-1:-1;;;;;22723:6:0;;::::1;22701:87;::::0;::::1;19204:51:1::0;19303:10;22738:12:0::1;19291:23:1::0;19271:18;;;19264:51;19363:18;22760:15:0::1;19351:31:1::0;19331:18;;;19324:59;4787:2:0::1;19399:18:1::0;;;19392:45;22701:11:0;;;::::1;;::::0;:21:::1;::::0;19176:19:1;;22701:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;22697:103:::0;22814:11:::1;::::0;22845:6:::1;::::0;-1:-1:-1;;;;;22814:11:0;;;::::1;::::0;::::1;::::0;:20:::1;::::0;22835:17:::1;::::0;22845:6:::1;22835:9;:17::i;:::-;22814:39;;;;;;;;;;;;;368:25:1::0;;356:2;341:18;;222:177;22814:39:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;22814:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;22814:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;22810:207:::0;::::1;;22925:13;:29:::0;;;;22969:10:::1;:27:::0;22810:207:::1;23027:14;:21:::0;;-1:-1:-1;;23027:21:0::1;23044:4;23027:21;::::0;;23073:15:::1;23059:11;:29:::0;22401:695::o;10366:165::-;10444:4;10461:40;10471:10;10483:9;10494:6;10461:9;:40::i;:::-;-1:-1:-1;10519:4:0;;10366:165;-1:-1:-1;;;10366:165:0:o;14608:436::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;14711:7:::1;:25:::0;;::::1;14791:29:::0;;::::1;::::0;::::1;-1:-1:-1::0;;14747:33:0;;::::1;::::0;::::1;-1:-1:-1::0;;14747:33:0;;;14711:25;;::::1;14747:33:::0;;;;;;;::::1;14791:29;;::::0;;14729:7;14851:23:::1;14811:9:::0;14769:11;14851:23:::1;:::i;:::-;:33;;;;:::i;:::-;14831:7;:53:::0;;-1:-1:-1;;14831:53:0::1;-1:-1:-1::0;;;14831:53:0::1;::::0;;::::1;;;::::0;;14930:9:::1;:17:::0;-1:-1:-1;;14911:36:0::1;::::0;14930:17;;::::1;::::0;::::1;::::0;14911:16:::1;:36;:::i;:::-;14966:7;:17:::0;14895:52:::1;::::0;;::::1;::::0;-1:-1:-1;;;;14966:17:0;::::1;;:26:::0;-1:-1:-1;14966:26:0::1;14958:78;;;::::0;-1:-1:-1;;;14958:78:0;;20073:2:1;14958:78:0::1;::::0;::::1;20055:21:1::0;20112:2;20092:18;;;20085:30;20151:34;20131:18;;;20124:62;-1:-1:-1;;;20202:18:1;;;20195:37;20249:19;;14958:78:0::1;19871:403:1::0;14958:78:0::1;14700:344;14608:436:::0;;;:::o;23294:296::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;23372:16:::1;::::0;::::1;::::0;::::1;;;23368:111;;;23430:4;-1:-1:-1::0;;;;;23413:22:0;::::1;::::0;23405:62:::1;;;::::0;-1:-1:-1;;;23405:62:0;;20481:2:1;23405:62:0::1;::::0;::::1;20463:21:1::0;20520:2;20500:18;;;20493:30;20559:29;20539:18;;;20532:57;20606:18;;23405:62:0::1;20279:351:1::0;23405:62:0::1;23543:6;::::0;23551:30:::1;::::0;-1:-1:-1;;;23551:30:0;;23575:4:::1;23551:30;::::0;::::1;160:51:1::0;23511:5:0;;-1:-1:-1;;;;;23528:14:0;;::::1;::::0;::::1;::::0;23543:6;;;::::1;::::0;23528:14;;23551:15:::1;::::0;133:18:1;;23551:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23528:54;::::0;-1:-1:-1;;;;;;23528:54:0::1;::::0;;;;;;-1:-1:-1;;;;;21016:32:1;;;23528:54:0::1;::::0;::::1;20998:51:1::0;21065:18;;;21058:34;20971:18;;23528:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17391:263::-:0;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;17500:19:::1;:33:::0;;-1:-1:-1;;17500:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;17544:22:::1;:47:::0;;-1:-1:-1;;17544:47:0::1;::::0;::::1;;;::::0;;17607:39:::1;::::0;2196:41:1;;;17607:39:0::1;::::0;2184:2:1;2169:18;17607:39:0::1;;;;;;;;17391:263:::0;;:::o;23104:182::-;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;23171:16:::1;::::0;::::1;::::0;::::1;;;23170:17;23162:58;;;::::0;-1:-1:-1;;;23162:58:0;;21555:2:1;23162:58:0::1;::::0;::::1;21537:21:1::0;21594:2;21574:18;;;21567:30;21633;21613:18;;;21606:58;21681:18;;23162:58:0::1;21353:352:1::0;23162:58:0::1;23239:6;::::0;23231:47:::1;::::0;-1:-1:-1;;;;;23239:6:0;;::::1;::::0;23256:21:::1;23231:47:::0;::::1;;;::::0;23239:6:::1;23231:47:::0;23239:6;23231:47;23256:21;23239:6;23231:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;16459:699:::0;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;16659:16;16639;4848:13:::1;4787:2;4848;:13;:::i;:::-;4831:30;::::0;4634:11:::1;4831:30;:::i;:::-;16629:26;;;;:::i;:::-;16628:47;;;;:::i;:::-;16612:13;:63:::0;16727:13;16710;4848::::1;4787:2;4848;:13;:::i;:::-;4831:30;::::0;4634:11:::1;4831:30;:::i;:::-;16700:23;;;;:::i;:::-;16699:41;;;;:::i;:::-;16686:10;:54:::0;;;16759:13:::1;::::0;:27:::1;;16751:73;;;::::0;-1:-1:-1;;;16751:73:0;;21912:2:1;16751:73:0::1;::::0;::::1;21894:21:1::0;21951:2;21931:18;;;21924:30;21990:34;21970:18;;;21963:62;-1:-1:-1;;;22041:18:1;;;22034:31;22082:19;;16751:73:0::1;21710:397:1::0;16751:73:0::1;16868:6;::::0;5559:5:::1;::::0;16858:17:::1;::::0;-1:-1:-1;;;;;16868:6:0::1;16858:9;:17::i;:::-;:23;::::0;16878:3:::1;16858:23;:::i;:::-;16857:44;;;;:::i;:::-;16843:10;;:58;;16835:106;;;::::0;-1:-1:-1;;;16835:106:0;;22314:2:1;16835:106:0::1;::::0;::::1;22296:21:1::0;22353:2;22333:18;;;22326:30;22392:34;22372:18;;;22365:62;-1:-1:-1;;;22443:18:1;;;22436:33;22486:19;;16835:106:0::1;22112:399:1::0;16835:106:0::1;16984:9;4848:13;4787:2;4848;:13;:::i;:::-;4831:30;::::0;4634:11:::1;4831:30;:::i;:::-;16974:19;;;;:::i;:::-;16960:10;;:33;;16952:92;;;;-1:-1:-1::0;;;16952:92:0::1;;;;;;;:::i;:::-;17090:9;4848:13;4787:2;4848;:13;:::i;:::-;4831:30;::::0;4634:11:::1;4831:30;:::i;:::-;17080:19;;;;:::i;:::-;17063:13;;:36;;17055:95;;;;-1:-1:-1::0;;;17055:95:0::1;;;;;;;:::i;13373:148::-:0;8158:6;;-1:-1:-1;;;;;8158:6:0;8168:10;8158:20;8150:50;;;;-1:-1:-1;;;8150:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13469:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;13469:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13373:148::o;10708:310::-;-1:-1:-1;;;;;10803:20:0;;10795:52;;;;-1:-1:-1;;;10795:52:0;;23133:2:1;10795:52:0;;;23115:21:1;23172:2;23152:18;;;23145:30;-1:-1:-1;;;23191:18:1;;;23184:49;23250:18;;10795:52:0;22931:343:1;10795:52:0;-1:-1:-1;;;;;10866:21:0;;10858:53;;;;-1:-1:-1;;;10858:53:0;;23133:2:1;10858:53:0;;;23115:21:1;23172:2;23152:18;;;23145:30;-1:-1:-1;;;23191:18:1;;;23184:49;23250:18;;10858:53:0;22931:343:1;10858:53:0;-1:-1:-1;;;;;10924:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10977:33;;368:25:1;;;10977:33:0;;341:18:1;10977:33:0;;;;;;;10708:310;;;:::o;18116:2176::-;18195:4;-1:-1:-1;;;;;18220:18:0;;18212:68;;;;-1:-1:-1;;;18212:68:0;;23481:2:1;18212:68:0;;;23463:21:1;23520:2;23500:18;;;23493:30;23559:34;23539:18;;;23532:62;-1:-1:-1;;;23610:18:1;;;23603:35;23655:19;;18212:68:0;23279:401:1;18212:68:0;-1:-1:-1;;;;;18299:16:0;;18291:64;;;;-1:-1:-1;;;18291:64:0;;23887:2:1;18291:64:0;;;23869:21:1;23926:2;23906:18;;;23899:30;23965:34;23945:18;;;23938:62;-1:-1:-1;;;24016:18:1;;;24009:33;24059:19;;18291:64:0;23685:399:1;18291:64:0;18383:1;18374:6;:10;18366:64;;;;-1:-1:-1;;;18366:64:0;;24291:2:1;18366:64:0;;;24273:21:1;24330:2;24310:18;;;24303:30;24369:34;24349:18;;;24342:62;-1:-1:-1;;;24420:18:1;;;24413:39;24469:19;;18366:64:0;24089:405:1;18366:64:0;-1:-1:-1;;;;;18529:13:0;;18441:8;18529:13;;;:7;:13;;;;;;18441:8;;;;18529:13;;18525:162;;;18565:4;18559:10;;18525:162;;;-1:-1:-1;;;;;18591:11:0;;;;;;:7;:11;;;;;;;;18587:100;;;18626:4;18619:11;;18587:100;;;-1:-1:-1;18671:4:0;18587:100;18701:20;18712:4;18718:2;18701:10;:20::i;:::-;18697:874;;;18742:14;;;;18738:319;;18782:5;18777:265;;18812:34;;-1:-1:-1;;;18812:34:0;;24701:2:1;18812:34:0;;;24683:21:1;24740:2;24720:18;;;24713:30;24779:26;24759:18;;;24752:54;24823:18;;18812:34:0;24499:348:1;18777:265:0;-1:-1:-1;;;;;18877:31:0;;;;;;:25;:31;;;;;;;;18876:32;:66;;;;-1:-1:-1;;;;;;18913:29:0;;;;;;:25;:29;;;;;;;;18912:30;18876:66;18872:170;;;18967:55;;-1:-1:-1;;;18967:55:0;;25054:2:1;18967:55:0;;;25036:21:1;25093:2;25073:18;;;25066:30;25132:34;25112:18;;;25105:62;-1:-1:-1;;;25183:18:1;;;25176:43;25236:19;;18967:55:0;24852:409:1;18872:170:0;19075:3;:11;;;;19082:4;19075:11;19071:232;;;-1:-1:-1;;;;;19111:27:0;;;;;;:21;:27;;;;;;;;19110:28;:58;;;;-1:-1:-1;;;;;;19143:25:0;;;;;;:21;:25;;;;;;;;19142:26;19110:58;19106:182;;;19211:12;;19201:6;:22;;19193:75;;;;-1:-1:-1;;;19193:75:0;;25468:2:1;19193:75:0;;;25450:21:1;25507:2;25487:18;;;25480:30;25546:34;25526:18;;;25519:62;-1:-1:-1;;;25597:18:1;;;25590:38;25645:19;;19193:75:0;25266:404:1;19193:75:0;19335:9;;-1:-1:-1;;;;;19321:24:0;;;19335:9;;;;;19321:24;;;;:33;;;19350:4;19349:5;19321:33;19317:243;;;-1:-1:-1;;;;;19380:25:0;;;;;;:21;:25;;;;;;;;19375:170;;19464:14;;19454:6;19438:13;19448:2;19438:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;19430:95;;;;-1:-1:-1;;;19430:95:0;;25877:2:1;19430:95:0;;;25859:21:1;25916:2;25896:18;;;25889:30;25955:34;25935:18;;;25928:62;-1:-1:-1;;;26006:18:1;;;25999:40;26056:19;;19430:95:0;25675:406:1;19430:95:0;19587:4;19583:632;;;19613:6;;;;19608:596;;19644:19;;;;;;;19640:549;;;19688:28;19719:24;19737:4;19719:9;:24::i;:::-;19688:55;;19794:13;;19770:20;:37;19766:404;;19854:10;;19895:22;;;;19891:97;;;19952:13;;19942:6;;5559:5;;19952:13;19932:17;;-1:-1:-1;;;;;19942:6:0;19932:9;:17::i;:::-;:33;;;;:::i;:::-;19931:54;;;;:::i;:::-;19921:64;;19891:97;20042:7;20018:20;:31;20014:72;;20076:7;20053:30;;20014:72;20112:34;20125:20;20112:12;:34::i;:::-;19809:361;19766:404;19665:524;19640:549;20232:52;20249:4;20255:2;20259:6;20267:3;20272:4;20278:5;20232:16;:52::i;:::-;20225:59;18116:2176;-1:-1:-1;;;;;;;18116:2176:0:o;24053:1055::-;24172:4;24193:20;24204:4;24210:2;24193:10;:20::i;:::-;24189:228;;;24248:11;;:39;;-1:-1:-1;;;24248:39:0;;-1:-1:-1;;;;;26344:15:1;;;24248:39:0;;;26326:34:1;26396:15;;;26376:18;;;26369:43;26428:18;;;26421:34;;;24217:12:0;;24248:11;;;;;:21;;26261:18:1;;24248:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;24248:39:0;;;;;;;;-1:-1:-1;;24248:39:0;;;;;;;;;;;;:::i;:::-;;;24244:122;;24355:8;;;24244:122;24338:5;-1:-1:-1;24384:7:0;24380:26;;24395:8;;;24380:26;24215:202;24189:228;-1:-1:-1;;;;;24461:25:0;;24427:12;24461:25;;;:19;:25;;;;;;24442:4;;24461:25;;;:52;;-1:-1:-1;;;;;;24490:23:0;;;;;;:19;:23;;;;;;;;24461:52;24457:99;;;-1:-1:-1;24539:5:0;24457:99;-1:-1:-1;;;;;24566:13:0;;:7;:13;;;;;;;;;;:23;;24583:6;;24566:7;:23;;24583:6;;24566:23;:::i;:::-;;;;-1:-1:-1;24600:22:0;;-1:-1:-1;24626:7:0;24625:55;;24674:6;24625:55;;;24637:34;24647:4;24653:6;24661:3;24666:4;24637:9;:34::i;:::-;24600:80;;24706:14;24691:7;:11;24699:2;-1:-1:-1;;;;;24691:11:0;-1:-1:-1;;;;;24691:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;24751:2;-1:-1:-1;;;;;24736:34:0;24745:4;-1:-1:-1;;;;;24736:34:0;;24755:14;24736:34;;;;368:25:1;;356:2;341:18;;222:177;24736:34:0;;;;;;;;24786:16;;;;;;;24781:298;;24819:28;24838:4;24844:2;24819:18;:28::i;:::-;24867:16;;;;;;;24866:17;:41;;;;;24887:20;24898:4;24904:2;24887:10;:20::i;:::-;24866:77;;;;-1:-1:-1;;;;;;24912:31:0;;;;;;:25;:31;;;;;;;;24911:32;24866:77;:111;;;;-1:-1:-1;;;;;;24948:29:0;;;;;;:25;:29;;;;;;;;24947:30;24866:111;:121;;;;;24982:5;24981:6;24866:121;24862:206;;;25008:44;;-1:-1:-1;;;25008:44:0;;26668:2:1;25008:44:0;;;26650:21:1;26707:2;26687:18;;;26680:30;26746:34;26726:18;;;26719:62;-1:-1:-1;;;26797:18:1;;;26790:32;26839:19;;25008:44:0;26466:398:1;24862:206:0;-1:-1:-1;25096:4:0;;24053:1055;-1:-1:-1;;;;;;;;24053:1055:0:o;17662:446::-;17763:6;;17731:4;;-1:-1:-1;;;;;17755:14:0;;;17763:6;;17755:14;;;;:43;;-1:-1:-1;17792:6:0;;-1:-1:-1;;;;;17786:12:0;;;17792:6;;17786:12;;17755:43;:79;;;;-1:-1:-1;17828:6:0;;-1:-1:-1;;;;;17828:6:0;17815:9;:19;;17755:79;:118;;;;-1:-1:-1;;;;;;17852:21:0;;;;;;:17;:21;;;;;;;;17851:22;17755:118;:159;;;;-1:-1:-1;;;;;;17891:23:0;;;;;;:17;:23;;;;;;;;17890:24;17755:159;:186;;;;-1:-1:-1;;;;;;17931:10:0;;5698:42;17931:10;;17755:186;:219;;;;-1:-1:-1;;;;;;17958:16:0;;;;17755:219;:257;;;;-1:-1:-1;;;;;;17991:21:0;;18007:4;17991:21;;17755:257;:302;;;;-1:-1:-1;18045:11:0;;-1:-1:-1;;;;;18029:28:0;;;18045:11;;;;;18029:28;;17755:302;:345;;;;-1:-1:-1;18088:11:0;;-1:-1:-1;;;;;18074:26:0;;;18088:11;;;;;18074:26;;17755:345;17748:352;17662:446;-1:-1:-1;;;17662:446:0:o;20300:1522::-;6821:6;:13;;-1:-1:-1;;6821:13:0;6830:4;6821:13;;;20383:30:::1;::::0;;::::1;::::0;::::1;::::0;;20406:7:::1;20383:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;20383:30:0;::::1;::::0;;::::1;::::0;;;;;;6821:6;20428:21;20424:60:::1;;20466:7;;;20424:60;20520:4;20500:26;::::0;;;:11:::1;:26;::::0;;;;;;;20535:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;20535:9:0::1;20500:46:::0;;;;;;;;-1:-1:-1;;20500:67:0::1;20496:166;;20604:4;20584:26;::::0;;;:11:::1;:26;::::0;;;;;;;20619:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;20619:9:0::1;20584:46:::0;;;;;;;-1:-1:-1;;20584:66:0;;20496:166:::1;20698:16;::::0;;20712:1:::1;20698:16:::0;;;;;::::1;::::0;;20674:21:::1;::::0;20698:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20698:16:0::1;20674:40;;20743:4;20725;20730:1;20725:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;20725:23:0::1;;;-1:-1:-1::0;;;;;20725:23:0::1;;;::::0;::::1;20769:9;;;;;;;;;-1:-1:-1::0;;;;;20769:9:0::1;-1:-1:-1::0;;;;;20769:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20759:4;20764:1;20759:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20759:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;20802:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;20802:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;20877:20;;20912:1:::1;::::0;20928:4;;20955::::1;::::0;20975:15:::1;::::0;20802:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;20798:246;;21026:7;;;;20798:246;21056:18;21077:21;21056:42;;21109:12;21132:26:::0;21197:6:::1;:16;;;21161:52;;21175:6;:18;;;21162:31;;:10;:31;;;;:::i;:::-;21161:52;;;;:::i;:::-;21132:81;;21224:22;21281:6;:16;;;21249:48;;21263:6;:14;;;21250:27;;:10;:27;;;;:::i;:::-;21249:48;;;;:::i;:::-;21224:73:::0;-1:-1:-1;21308:24:0::1;21349:35;21224:73:::0;21349:18;:35:::1;:::i;:::-;21335:50;::::0;:10;:50:::1;:::i;:::-;21400:16;::::0;::::1;::::0;21308:77;;-1:-1:-1;21400:20:0::1;;::::0;21396:133:::1;;21450:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;21450:21:0;;::::1;::::0;21507:5:::1;::::0;21484:16;;21450:67:::1;::::0;;;21484:16;21450:21;21507:5;21450:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;21437:80:0;;-1:-1:-1;;21396:133:0::1;21543:18;::::0;::::1;::::0;:22:::1;;::::0;21539:139:::1;;21595:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;21595:23:0;;::::1;::::0;21656:5:::1;::::0;21631:18;;21595:71:::1;::::0;;;21631:18;21595:23;21656:5;21595:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;21582:84:0;;-1:-1:-1;;21539:139:0::1;21692:14:::0;;:18:::1;;::::0;21688:127:::1;;21740:19:::0;;:63:::1;::::0;-1:-1:-1;;;;;21740:19:0;;::::1;::::0;21793:5:::1;::::0;21772:14;;21740:63:::1;::::0;;;21772:14;21740:19;21793:5;21740:63:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;21727:76:0;;-1:-1:-1;;21688:127:0::1;20372:1450;;;;;;;6845:1;-1:-1:-1::0;6857:6:0;:14;;-1:-1:-1;;6857:14:0;;;20300:1522::o;25116:767::-;25204:7;25224:18;25257:3;25253:205;;;-1:-1:-1;25290:9:0;:16;;;25253:205;;;25328:4;25324:134;;;-1:-1:-1;25362:9:0;:17;;;;;;25324:134;;;-1:-1:-1;25425:9:0;:21;;;;;;25324:134;25480:11;;;;;-1:-1:-1;;;;;25480:11:0;25504:4;25472:37;:73;;;;;25526:13;25543:2;25526:19;;25472:73;25468:101;;;-1:-1:-1;25562:4:0;25468:101;25583:10;25597:1;25583:15;25579:39;;25609:6;25602:13;;;;;25579:39;25628:17;5559:5;25648:19;25657:10;25648:6;:19;:::i;:::-;:38;;;;:::i;:::-;25628:58;-1:-1:-1;25701:13:0;;25697:141;;25747:4;25731:7;:22;;;;;;;;;;:35;;25757:9;;25731:7;:35;;25757:9;;25731:35;:::i;:::-;;;;-1:-1:-1;;25786:40:0;;368:25:1;;;25809:4:0;;-1:-1:-1;;;;;25786:40:0;;;;;356:2:1;341:18;25786:40:0;;;;;;;25697:141;25857:18;25866:9;25857:6;:18;:::i;21830:563::-;21913:16;;;;;;;21912:17;21904:65;;;;-1:-1:-1;;;21904:65:0;;28522:2:1;21904:65:0;;;28504:21:1;28561:2;28541:18;;;28534:30;28600:34;28580:18;;;28573:62;-1:-1:-1;;;28651:18:1;;;28644:33;28694:19;;21904:65:0;28320:399:1;21904:65:0;21985:20;21996:4;22002:2;21985:10;:20::i;:::-;21984:21;:37;;;;-1:-1:-1;22015:6:0;;-1:-1:-1;;;;;22009:12:0;;;22015:6;;22009:12;21984:37;21980:406;;;-1:-1:-1;;;;;22038:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;22038:30:0;;;22064:4;22038:30;;;;;;22083:19;:25;;;;;:32;;;;;;;;;;22130:16;:23;;-1:-1:-1;;22130:23:0;22038:30;22130:23;;;;;22180:11;;;;22168:114;;22226:11;:40;;-1:-1:-1;;;;;;22226:40:0;22260:4;22226:40;;;;;22168:114;22296:19;:26;;-1:-1:-1;;22296:26:0;;;;;22342:32;;-1:-1:-1;2196:41:1;;22342:32:0;;2184:2:1;2169:18;22342:32:0;2056:187:1;404:118;490:5;483:13;476:21;469:5;466:32;456:60;;512:1;509;502:12;527:376;589:6;597;650:2;638:9;629:7;625:23;621:32;618:52;;;666:1;663;656:12;618:52;705:9;692:23;724:28;746:5;724:28;:::i;:::-;771:5;-1:-1:-1;828:2:1;813:18;;800:32;841:30;800:32;841:30;:::i;:::-;890:7;880:17;;;527:376;;;;;:::o;1278:548::-;1390:4;1419:2;1448;1437:9;1430:21;1480:6;1474:13;1523:6;1518:2;1507:9;1503:18;1496:34;1548:1;1558:140;1572:6;1569:1;1566:13;1558:140;;;1667:14;;;1663:23;;1657:30;1633:17;;;1652:2;1629:26;1622:66;1587:10;;1558:140;;;1562:3;1747:1;1742:2;1733:6;1722:9;1718:22;1714:31;1707:42;1817:2;1810;1806:7;1801:2;1793:6;1789:15;1785:29;1774:9;1770:45;1766:54;1758:62;;;;1278:548;;;;:::o;2248:131::-;-1:-1:-1;;;;;2323:31:1;;2313:42;;2303:70;;2369:1;2366;2359:12;2384:315;2452:6;2460;2513:2;2501:9;2492:7;2488:23;2484:32;2481:52;;;2529:1;2526;2519:12;2481:52;2568:9;2555:23;2587:31;2612:5;2587:31;:::i;:::-;2637:5;2689:2;2674:18;;;;2661:32;;-1:-1:-1;;;2384:315:1:o;2704:247::-;2763:6;2816:2;2804:9;2795:7;2791:23;2787:32;2784:52;;;2832:1;2829;2822:12;2784:52;2871:9;2858:23;2890:31;2915:5;2890:31;:::i;2956:456::-;3033:6;3041;3049;3102:2;3090:9;3081:7;3077:23;3073:32;3070:52;;;3118:1;3115;3108:12;3070:52;3157:9;3144:23;3176:31;3201:5;3176:31;:::i;:::-;3226:5;-1:-1:-1;3283:2:1;3268:18;;3255:32;3296:33;3255:32;3296:33;:::i;:::-;2956:456;;3348:7;;-1:-1:-1;;;3402:2:1;3387:18;;;;3374:32;;2956:456::o;3417:248::-;3485:6;3493;3546:2;3534:9;3525:7;3521:23;3517:32;3514:52;;;3562:1;3559;3552:12;3514:52;-1:-1:-1;;3585:23:1;;;3655:2;3640:18;;;3627:32;;-1:-1:-1;3417:248:1:o;3670:127::-;3731:10;3726:3;3722:20;3719:1;3712:31;3762:4;3759:1;3752:15;3786:4;3783:1;3776:15;3802:275;3873:2;3867:9;3938:2;3919:13;;-1:-1:-1;;3915:27:1;3903:40;;3973:18;3958:34;;3994:22;;;3955:62;3952:88;;;4020:18;;:::i;:::-;4056:2;4049:22;3802:275;;-1:-1:-1;3802:275:1:o;4082:183::-;4142:4;4175:18;4167:6;4164:30;4161:56;;;4197:18;;:::i;:::-;-1:-1:-1;4242:1:1;4238:14;4254:4;4234:25;;4082:183::o;4270:662::-;4324:5;4377:3;4370:4;4362:6;4358:17;4354:27;4344:55;;4395:1;4392;4385:12;4344:55;4431:6;4418:20;4457:4;4481:60;4497:43;4537:2;4497:43;:::i;:::-;4481:60;:::i;:::-;4575:15;;;4661:1;4657:10;;;;4645:23;;4641:32;;;4606:12;;;;4685:15;;;4682:35;;;4713:1;4710;4703:12;4682:35;4749:2;4741:6;4737:15;4761:142;4777:6;4772:3;4769:15;4761:142;;;4843:17;;4831:30;;4881:12;;;;4794;;4761:142;;;-1:-1:-1;4921:5:1;4270:662;-1:-1:-1;;;;;;4270:662:1:o;4937:1215::-;5055:6;5063;5116:2;5104:9;5095:7;5091:23;5087:32;5084:52;;;5132:1;5129;5122:12;5084:52;5172:9;5159:23;5201:18;5242:2;5234:6;5231:14;5228:34;;;5258:1;5255;5248:12;5228:34;5296:6;5285:9;5281:22;5271:32;;5341:7;5334:4;5330:2;5326:13;5322:27;5312:55;;5363:1;5360;5353:12;5312:55;5399:2;5386:16;5421:4;5445:60;5461:43;5501:2;5461:43;:::i;5445:60::-;5539:15;;;5621:1;5617:10;;;;5609:19;;5605:28;;;5570:12;;;;5645:19;;;5642:39;;;5677:1;5674;5667:12;5642:39;5701:11;;;;5721:217;5737:6;5732:3;5729:15;5721:217;;;5817:3;5804:17;5834:31;5859:5;5834:31;:::i;:::-;5878:18;;5754:12;;;;5916;;;;5721:217;;;5957:5;-1:-1:-1;;6000:18:1;;5987:32;;-1:-1:-1;;6031:16:1;;;6028:36;;;6060:1;6057;6050:12;6028:36;;6083:63;6138:7;6127:8;6116:9;6112:24;6083:63;:::i;:::-;6073:73;;;4937:1215;;;;;:::o;6346:159::-;6413:20;;6473:6;6462:18;;6452:29;;6442:57;;6495:1;6492;6485:12;6442:57;6346:159;;;:::o;6510:328::-;6584:6;6592;6600;6653:2;6641:9;6632:7;6628:23;6624:32;6621:52;;;6669:1;6666;6659:12;6621:52;6692:28;6710:9;6692:28;:::i;:::-;6682:38;;6739:37;6772:2;6761:9;6757:18;6739:37;:::i;:::-;6729:47;;6795:37;6828:2;6817:9;6813:18;6795:37;:::i;:::-;6785:47;;6510:328;;;;;:::o;6843:382::-;6908:6;6916;6969:2;6957:9;6948:7;6944:23;6940:32;6937:52;;;6985:1;6982;6975:12;6937:52;7024:9;7011:23;7043:31;7068:5;7043:31;:::i;7230:180::-;7289:6;7342:2;7330:9;7321:7;7317:23;7313:32;7310:52;;;7358:1;7355;7348:12;7310:52;-1:-1:-1;7381:23:1;;7230:180;-1:-1:-1;7230:180:1:o;7415:553::-;7516:6;7524;7532;7585:2;7573:9;7564:7;7560:23;7556:32;7553:52;;;7601:1;7598;7591:12;7553:52;7640:9;7627:23;7659:31;7684:5;7659:31;:::i;:::-;7709:5;-1:-1:-1;7766:2:1;7751:18;;7738:32;7779:33;7738:32;7779:33;:::i;:::-;7831:7;-1:-1:-1;7890:2:1;7875:18;;7862:32;7903:33;7862:32;7903:33;:::i;:::-;7955:7;7945:17;;;7415:553;;;;;:::o;8422:388::-;8490:6;8498;8551:2;8539:9;8530:7;8526:23;8522:32;8519:52;;;8567:1;8564;8557:12;8519:52;8606:9;8593:23;8625:31;8650:5;8625:31;:::i;:::-;8675:5;-1:-1:-1;8732:2:1;8717:18;;8704:32;8745:33;8704:32;8745:33;:::i;9252:385::-;9338:6;9346;9354;9362;9415:3;9403:9;9394:7;9390:23;9386:33;9383:53;;;9432:1;9429;9422:12;9383:53;-1:-1:-1;;9455:23:1;;;9525:2;9510:18;;9497:32;;-1:-1:-1;9576:2:1;9561:18;;9548:32;;9627:2;9612:18;9599:32;;-1:-1:-1;9252:385:1;-1:-1:-1;9252:385:1:o;9642:341::-;9844:2;9826:21;;;9883:2;9863:18;;;9856:30;-1:-1:-1;;;9917:2:1;9902:18;;9895:47;9974:2;9959:18;;9642:341::o;10261:127::-;10322:10;10317:3;10313:20;10310:1;10303:31;10353:4;10350:1;10343:15;10377:4;10374:1;10367:15;10393:422;10482:1;10525:5;10482:1;10539:270;10560:7;10550:8;10547:21;10539:270;;;10619:4;10615:1;10611:6;10607:17;10601:4;10598:27;10595:53;;;10628:18;;:::i;:::-;10678:7;10668:8;10664:22;10661:55;;;10698:16;;;;10661:55;10777:22;;;;10737:15;;;;10539:270;;;10543:3;10393:422;;;;;:::o;10820:806::-;10869:5;10899:8;10889:80;;-1:-1:-1;10940:1:1;10954:5;;10889:80;10988:4;10978:76;;-1:-1:-1;11025:1:1;11039:5;;10978:76;11070:4;11088:1;11083:59;;;;11156:1;11151:130;;;;11063:218;;11083:59;11113:1;11104:10;;11127:5;;;11151:130;11188:3;11178:8;11175:17;11172:43;;;11195:18;;:::i;:::-;-1:-1:-1;;11251:1:1;11237:16;;11266:5;;11063:218;;11365:2;11355:8;11352:16;11346:3;11340:4;11337:13;11333:36;11327:2;11317:8;11314:16;11309:2;11303:4;11300:12;11296:35;11293:77;11290:159;;;-1:-1:-1;11402:19:1;;;11434:5;;11290:159;11481:34;11506:8;11500:4;11481:34;:::i;:::-;11551:6;11547:1;11543:6;11539:19;11530:7;11527:32;11524:58;;;11562:18;;:::i;:::-;11600:20;;10820:806;-1:-1:-1;;;10820:806:1:o;11631:140::-;11689:5;11718:47;11759:4;11749:8;11745:19;11739:4;11718:47;:::i;11776:217::-;11816:1;11842;11832:132;;11886:10;11881:3;11877:20;11874:1;11867:31;11921:4;11918:1;11911:15;11949:4;11946:1;11939:15;11832:132;-1:-1:-1;11978:9:1;;11776:217::o;11998:168::-;12071:9;;;12102;;12119:15;;;12113:22;;12099:37;12089:71;;12140:18;;:::i;12171:128::-;12238:9;;;12259:11;;;12256:37;;;12273:18;;:::i;13071:127::-;13132:10;13127:3;13123:20;13120:1;13113:31;13163:4;13160:1;13153:15;13187:4;13184:1;13177:15;13550:197;13588:3;13616:6;13657:2;13650:5;13646:14;13684:2;13675:7;13672:15;13669:41;;13690:18;;:::i;:::-;13739:1;13726:15;;13550:197;-1:-1:-1;;;13550:197:1:o;13752:125::-;13817:9;;;13838:10;;;13835:36;;;13851:18;;:::i;15355:425::-;15557:2;15539:21;;;15596:2;15576:18;;;15569:30;15635:34;15630:2;15615:18;;15608:62;15706:31;15701:2;15686:18;;15679:59;15770:3;15755:19;;15355:425::o;16128:385::-;16207:6;16215;16268:2;16256:9;16247:7;16243:23;16239:32;16236:52;;;16284:1;16281;16274:12;16236:52;16316:9;16310:16;16335:31;16360:5;16335:31;:::i;:::-;16435:2;16420:18;;16414:25;16385:5;;-1:-1:-1;16448:33:1;16414:25;16448:33;:::i;19448:245::-;19527:6;19535;19588:2;19576:9;19567:7;19563:23;19559:32;19556:52;;;19604:1;19601;19594:12;19556:52;-1:-1:-1;;19627:16:1;;19683:2;19668:18;;;19662:25;19627:16;;19662:25;;-1:-1:-1;19448:245:1:o;19698:168::-;19765:6;19791:10;;;19803;;;19787:27;;19826:11;;;19823:37;;;19840:18;;:::i;:::-;19823:37;19698:168;;;;:::o;20635:184::-;20705:6;20758:2;20746:9;20737:7;20733:23;20729:32;20726:52;;;20774:1;20771;20764:12;20726:52;-1:-1:-1;20797:16:1;;20635:184;-1:-1:-1;20635:184:1:o;21103:245::-;21170:6;21223:2;21211:9;21202:7;21198:23;21194:32;21191:52;;;21239:1;21236;21229:12;21191:52;21271:9;21265:16;21290:28;21312:5;21290:28;:::i;22516:410::-;22718:2;22700:21;;;22757:2;22737:18;;;22730:30;22796:34;22791:2;22776:18;;22769:62;-1:-1:-1;;;22862:2:1;22847:18;;22840:44;22916:3;22901:19;;22516:410::o;26869:251::-;26939:6;26992:2;26980:9;26971:7;26967:23;26963:32;26960:52;;;27008:1;27005;26998:12;26960:52;27040:9;27034:16;27059:31;27084:5;27059:31;:::i;27125:980::-;27387:4;27435:3;27424:9;27420:19;27466:6;27455:9;27448:25;27492:2;27530:6;27525:2;27514:9;27510:18;27503:34;27573:3;27568:2;27557:9;27553:18;27546:31;27597:6;27632;27626:13;27663:6;27655;27648:22;27701:3;27690:9;27686:19;27679:26;;27740:2;27732:6;27728:15;27714:29;;27761:1;27771:195;27785:6;27782:1;27779:13;27771:195;;;27850:13;;-1:-1:-1;;;;;27846:39:1;27834:52;;27941:15;;;;27906:12;;;;27882:1;27800:9;27771:195;;;-1:-1:-1;;;;;;;28022:32:1;;;;28017:2;28002:18;;27995:60;-1:-1:-1;;;28086:3:1;28071:19;28064:35;27983:3;27125:980;-1:-1:-1;;;27125:980:1:o

Swarm Source

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