ETH Price: $3,345.13 (-1.03%)

Token

Eternal AI (MIND)
 

Overview

Max Total Supply

10,000,000 MIND

Holders

1,868 (0.00%)

Market

Price

$0.00 @ 0.000001 ETH (-0.19%)

Onchain Market Cap

$49,280.80

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
341.232597001857113124 MIND

Value
$1.68 ( ~0.00050222191301067 Eth) [0.0034%]
0x5c347c67595f90d0be944a7e9280c4e6bd3c29ce
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Eternal AI stands at the intersection where Technology meets Humanity. We are forging a New Digital Legacy where one's consciousness can continue to Exist, Interact, and Evolve within a digital universe.

Market

Volume (24H):$25.08
Market Capitalization:$0.00
Circulating Supply:0.00 MIND
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
EternalAI

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-28
*/

/**

ETERNAL AI - Immortality Starts Here.

Website: https://immortalitystartshere.io
Telegram: https://t.me/EternalAI
Linktree: https://linktr.ee/EternalAI

*/

// ██████  ███████ ██    ██  ██████  ██      ██    ██ ███████ ██  ██████  ███    ██                   
// ██   ██ ██      ██    ██ ██    ██ ██      ██    ██     ██  ██ ██    ██ ████   ██                  
// ██████  █████   ██    ██ ██    ██ ██      ██    ██   ██    ██ ██    ██ ██ ██  ██                   
// ██   ██ ██       ██  ██  ██    ██ ██      ██    ██  ██     ██ ██    ██ ██  ██ ██                   
// ██   ██ ███████   ████    ██████  ███████  ██████  ███████ ██  ██████  ██   ████    

// CONTRACT DEVELOPED BY REVOLUZION

// Revoluzion Ecosystem
// WEB: https://revoluzion.io
// DAPP: https://revoluzion.app

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

/********************************************************************************************
  INTERFACE
********************************************************************************************/

interface IERC20 {
    
    // EVENT 

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

    // FUNCTION

    function name() external view returns (string memory);
    
    function symbol() external view returns (string memory);
    
    function decimals() external view returns (uint8);
    
    function totalSupply() external view returns (uint256);
    
    function balanceOf(address account) external view returns (uint256);
    
    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}

interface IPair {

    // FUNCTION

    function token0() external view returns (address);

    function token1() external view returns (address);
}

interface IFactory {

    // FUNCTION

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

interface IRouter {

    // FUNCTION

    function WETH() external pure returns (address);
        
    function factory() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external;
    
    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable;
    
    function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
}

interface ICommonError {

    // ERROR

    error CannotUseCurrentAddress(address current);

    error CannotUseCurrentValue(uint256 current);

    error CannotUseCurrentState(bool current);

    error InvalidAddress(address invalid);

    error InvalidValue(uint256 invalid);
}

/********************************************************************************************
  ACCESS
********************************************************************************************/

abstract contract Ownable {
    
    // DATA

    address private _owner;

    // MODIFIER

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

    // ERROR

    error InvalidOwner(address account);

    error UnauthorizedAccount(address account);

    // CONSTRUCTOR

    constructor(address initialOwner) {
        _transferOwnership(initialOwner);
    }

    // EVENT
    
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

    function _checkOwner() internal view virtual {
        if (owner() != msg.sender) {
            revert UnauthorizedAccount(msg.sender);
        }
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert InvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

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

/********************************************************************************************
  TOKEN
********************************************************************************************/

contract EternalAI is Ownable, ICommonError, IERC20 {

    // DATA

    IRouter public router;

    string private constant NAME = "Eternal AI";
    string private constant SYMBOL = "MIND";

    uint8 private constant DECIMALS = 18;

    uint256 private _totalSupply;
    
    uint256 public constant FEEDENOMINATOR = 10_000;

    uint256 public buyFee = 4_000;
    uint256 public sellFee = 4_000;
    uint256 public transferFee = 0;
    uint256 public walletLimit = 200;
    uint256 public tradeStartTime = 0;
    uint256 public totalFeeCollected = 0;
    uint256 public totalFeeRedeemed = 0;
    uint256 public totalTriggerZeusBuyback = 0;
    uint256 public lastTriggerZeusTimestamp = 0;
    uint256 public minSwap = 10_000 ether;

    bool private constant ISMIND = true;

    bool public tradeEnabled = false;
    bool public isFeeActive = false;
    bool public isFeeLocked = false;
    bool public isSwapEnabled = false;
    bool public inSwap = false;
    bool public isWalletLimited = true;

    address public constant PROJECTOWNER = 0xe17e01EAA9A6Eca41dBD87161736a0D76F21995A;

    address public feeReceiver = 0x3D0829EAdE8AF8d9FeC3924dEf36970fDEA82462;

    address public pair;
    
    // MAPPING

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isExcludeFromFees;
    mapping(address => bool) public isExcludeFromWalletLimits;
    mapping(address => bool) public isPairLP;

    // MODIFIER

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

    // ERROR

    error InvalidTradeEnabledState(bool current);

    error InvalidFeeActiveState(bool current);

    error InvalidSwapEnabledState(bool current);

    error ExceedMaxFeeAllowed(uint256 limit);

    error ExceedWalletLimit(uint256 limit);

    error TradeDisabled();

    error FeeUpdateLocked();

    error WalletLimitRemoved();

    // CONSTRUCTOR

    constructor() Ownable (msg.sender) {
        _mint(msg.sender, 10_000_000 * 10**DECIMALS);

        router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());

        isPairLP[pair] = true;

        isExcludeFromFees[msg.sender] = true;
        isExcludeFromFees[address(router)] = true;

        isExcludeFromWalletLimits[msg.sender] = true;
        isExcludeFromWalletLimits[pair] = true;
    }

    // EVENT

    event UpdateRouter(address oldRouter, address newRouter, address caller, uint256 timestamp);

    event UpdateMinSwap(uint256 oldMinSwap, uint256 newMinSwap, address caller, uint256 timestamp);

    event UpdateFeeActive(bool oldStatus, bool newStatus, address caller, uint256 timestamp);

    event UpdateFeeReceiver(address oldReceiver, address newReceiver, address caller, uint256 timestamp);

    event UpdateBuyFee(uint256 oldFee, uint256 newFee, address caller, uint256 timestamp);

    event UpdateSellFee(uint256 oldFee, uint256 newFee, address caller, uint256 timestamp);

    event UpdateTransferFee(uint256 oldFee, uint256 newFee, address caller, uint256 timestamp);

    event UpdateSwapEnabled(bool oldStatus, bool newStatus, address caller, uint256 timestamp);
        
    event AutoRedeem(uint256 feeDistribution, uint256 amountToRedeem, address caller, uint256 timestamp);

    event EnableTrading(address caller, uint256 timestamp);

    event ExcludeFromFees(bool oldStatus, bool newStatus, address caller, uint256 timestamp);
    
    event ExcludeFromWalletLimits(bool oldStatus, bool newStatus, address caller, uint256 timestamp);

    event FeeLocked(address caller, uint256 timestamp);

    event RemoveWalletLimit(address caller, uint256 timestamp);

    // FUNCTION

    /* General */

    receive() external payable {}

    function enableTrading() external onlyOwner {
        if (tradeEnabled) { revert InvalidTradeEnabledState(tradeEnabled); }
        if (isFeeActive) { revert InvalidFeeActiveState(isFeeActive); }
        if (isSwapEnabled) { revert InvalidSwapEnabledState(isSwapEnabled); }
        tradeEnabled = true;
        isFeeActive = true;
        isSwapEnabled = true;
        tradeStartTime = block.timestamp;
        emit EnableTrading(msg.sender, tradeStartTime);
    }

    /* Redeem */

    function autoRedeem(uint256 amountToRedeem) public swapping {          
        totalFeeRedeemed += amountToRedeem;

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

        _approve(address(this), address(router), amountToRedeem);
        
        emit AutoRedeem(amountToRedeem, amountToRedeem, msg.sender, block.timestamp);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToRedeem,
            0,
            path,
            feeReceiver,
            block.timestamp
        );
    }

    /* Check */

    function isEternalAI() external pure returns (bool) {
        return ISMIND;
    }

    function circulatingSupply() external view returns (uint256) {
        return totalSupply() - balanceOf(address(0xdead)) - balanceOf(address(0));
    }

    function checkWalletLimit(uint256 amount, address to) public view {
        uint256 limit = totalSupply() * walletLimit / FEEDENOMINATOR;
        if (!isExcludeFromWalletLimits[to]) {
            if (balanceOf(to) + amount > limit) {
                revert ExceedWalletLimit(limit);
            }
        }
    }

    /* Update */

    function updateRouter(address newRouter) external onlyOwner {
        if (address(router) == newRouter) { revert CannotUseCurrentAddress(newRouter); }
        address oldRouter = address(router);
        router = IRouter(newRouter);
        
        isExcludeFromFees[newRouter] = true;

        emit UpdateRouter(oldRouter, newRouter, msg.sender, block.timestamp);
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        isPairLP[pair] = true;
        if (isWalletLimited) {
            isExcludeFromWalletLimits[pair] = true;
        }
    }

    function updateMinSwap(uint256 newMinSwap) external onlyOwner {
        if (minSwap == newMinSwap) { revert CannotUseCurrentValue(newMinSwap); }
        uint256 oldMinSwap = minSwap;
        minSwap = newMinSwap;
        emit UpdateMinSwap(oldMinSwap, newMinSwap, msg.sender, block.timestamp);
    }

    function lockFee() external onlyOwner {
        if (isFeeLocked) { revert FeeUpdateLocked(); }
        isFeeLocked = true;
        emit FeeLocked(msg.sender, block.timestamp);
    }

    function removeWalletLimit() external onlyOwner {
        if (!isWalletLimited) { revert WalletLimitRemoved(); }
        isWalletLimited = false;
        emit RemoveWalletLimit(msg.sender, block.timestamp);
    }

    function updateFeeActive(bool newStatus) external onlyOwner {
        if (isFeeLocked) { revert FeeUpdateLocked(); }
        if (isFeeActive == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isFeeActive;
        isFeeActive = newStatus;
        emit UpdateFeeActive(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function updateBuyFee(uint256 newFee) external onlyOwner {
        if (isFeeLocked) { revert FeeUpdateLocked(); }
        if (newFee == buyFee) { revert CannotUseCurrentValue(newFee); }
        if (newFee > 4_000) { revert ExceedMaxFeeAllowed(4_000); }
        uint256 oldFee = buyFee;
        buyFee = newFee;
        emit UpdateBuyFee(oldFee, newFee, msg.sender, block.timestamp);
    }

    function updateSellFee(uint256 newFee) external onlyOwner {
        if (isFeeLocked) { revert FeeUpdateLocked(); }
        if (newFee == sellFee) { revert CannotUseCurrentValue(newFee); }
        if (newFee > 4_000) { revert ExceedMaxFeeAllowed(4_000); }
        uint256 oldFee = sellFee;
        sellFee = newFee;
        emit UpdateSellFee(oldFee, newFee, msg.sender, block.timestamp);
    }

    function updateTransferFee(uint256 newFee) external onlyOwner {
        if (isFeeLocked) { revert FeeUpdateLocked(); }
        if (newFee == transferFee) { revert CannotUseCurrentValue(newFee); }
        if (newFee > 4_000) { revert ExceedMaxFeeAllowed(4_000); }
        uint256 oldFee = transferFee;
        transferFee = newFee;
        emit UpdateTransferFee(oldFee, newFee, msg.sender, block.timestamp);
    }

    function updateFeeReceiver(address newReceiver) external onlyOwner {
        if (feeReceiver == newReceiver) { revert CannotUseCurrentAddress(newReceiver); }
        address oldReceiver = feeReceiver;
        feeReceiver = newReceiver;
        emit UpdateFeeReceiver(oldReceiver, newReceiver, msg.sender, block.timestamp);
    }

    function updateSwapEnabled(bool newStatus) external onlyOwner {
        if (isSwapEnabled == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isSwapEnabled;
        isSwapEnabled = newStatus;
        emit UpdateSwapEnabled(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function setExcludeFromFees(address user, bool newStatus) external onlyOwner {
        if (isExcludeFromFees[user] == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isExcludeFromFees[user];
        isExcludeFromFees[user] = newStatus;
        emit ExcludeFromFees(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function setExcludeFromWalletLimits(address user, bool newStatus) external onlyOwner {
        if (isExcludeFromWalletLimits[user] == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isExcludeFromWalletLimits[user];
        isExcludeFromWalletLimits[user] = newStatus;
        emit ExcludeFromWalletLimits(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function setPairLP(address lpPair, bool status) external onlyOwner {
        if (isPairLP[lpPair] == status) { revert CannotUseCurrentState(status); }
        if (IPair(lpPair).token0() != address(this) && IPair(lpPair).token1() != address(this)) { revert InvalidAddress(lpPair); }
        isPairLP[lpPair] = status;
    }

    /* Fee */

    function takeBuyFee(address from, uint256 amount, uint256 fee) internal swapping returns (uint256) {
        uint256 feeAmount = amount * fee / FEEDENOMINATOR;
        uint256 newAmount = amount - feeAmount;
        if (feeAmount > 0) {
            tallyCollection(from, feeAmount);
        }
        return newAmount;
    }

    function takeSellFee(address from, uint256 amount, uint256 fee) internal swapping returns (uint256) {
        uint256 feeAmount = amount * fee / FEEDENOMINATOR;
        uint256 newAmount = amount - feeAmount;
        if (feeAmount > 0) {
            tallyCollection(from, feeAmount);
        }
        return newAmount;
    }

    function takeTransferFee(address from, uint256 amount, uint256 fee) internal swapping returns (uint256) {
        uint256 feeAmount = amount * fee / FEEDENOMINATOR;
        uint256 newAmount = amount - feeAmount;
        if (feeAmount > 0) {
            tallyCollection(from, feeAmount);
        }
        return newAmount;
    }

    function tallyCollection(address from, uint256 collectFee) internal swapping {
        totalFeeCollected += collectFee;
        _basicTransfer(from, address(this), collectFee);
    }

    /* Buyback */

    function triggerZeusBuyback(uint256 amount) external onlyOwner {
        totalTriggerZeusBuyback += amount;
        lastTriggerZeusTimestamp = block.timestamp;
        buyTokens(amount, address(0xdead));
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        if (msg.sender == address(0xdead)) { revert InvalidAddress(address(0xdead)); }
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amount
        } (0, path, to, block.timestamp);
    }

    /* ERC20 Standard */

    function name() external view virtual override returns (string memory) {
        return NAME;
    }
    
    function symbol() external view virtual override returns (string memory) {
        return SYMBOL;
    }
    
    function decimals() external view virtual override returns (uint8) {
        return DECIMALS;
    }
    
    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 to, uint256 amount) external virtual override returns (bool) {
        address provider = msg.sender;
        return _transfer(provider, to, amount);
    }
    
    function allowance(address provider, address spender) public view virtual override returns (uint256) {
        return _allowances[provider][spender];
    }
    
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address provider = msg.sender;
        _approve(provider, spender, amount);
        return true;
    }
    
    function transferFrom(address from, address to, uint256 amount) external virtual override returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        return _transfer(from, to, amount);
    }
    
    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        address provider = msg.sender;
        _approve(provider, spender, allowance(provider, spender) + addedValue);
        return true;
    }
    
    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        address provider = msg.sender;
        uint256 currentAllowance = allowance(provider, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(provider, spender, currentAllowance - subtractedValue);
        }

        return true;
    }
    
    function _mint(address account, uint256 amount) internal virtual {
        if (account == address(0)) { revert InvalidAddress(account); }

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

    function _approve(address provider, address spender, uint256 amount) internal virtual {
        if (provider == address(0)) { revert InvalidAddress(provider); }
        if (spender == address(0)) { revert InvalidAddress(spender); }

        _allowances[provider][spender] = amount;
        emit Approval(provider, spender, amount);
    }
    
    function _spendAllowance(address provider, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(provider, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(provider, spender, currentAllowance - amount);
            }
        }
    }

    /* Additional */

    function _basicTransfer(address from, address to, uint256 amount ) internal returns (bool) {
        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
        return true;
    }
    
    /* Overrides */
 
    function _transfer(address from, address to, uint256 amount) internal virtual returns (bool) {
        if (from == address(0)) { revert InvalidAddress(from); }
        if (to == address(0)) { revert InvalidAddress(to); }

        if (!tradeEnabled && !isExcludeFromFees[from] && !isExcludeFromFees[to]) {
            revert TradeDisabled();
        }

        if (inSwap || isExcludeFromFees[from]) {
            return _basicTransfer(from, to, amount);
        }

        if (from != pair && isSwapEnabled && balanceOf(address(this)) >= minSwap && totalFeeCollected - totalFeeRedeemed >= minSwap) {
            autoRedeem(minSwap);
        }

        uint256 newAmount = amount;

        if (isFeeActive && !isExcludeFromFees[from] && !isExcludeFromFees[to]) {
            newAmount = _beforeTokenTransfer(from, to, amount);
        }

        if (isWalletLimited) {
            checkWalletLimit(newAmount, to);
        }

        require(_balances[from] >= newAmount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = _balances[from] - newAmount;
            _balances[to] += newAmount;
        }

        emit Transfer(from, to, newAmount);

        return true;
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal swapping virtual returns (uint256) {        
        if (isPairLP[from]) {
            if (buyFee > 0) {
                return takeBuyFee(from, amount, buyFee);
            }
        }
        if (isPairLP[to]) {
            if (sellFee > 0) {
                return takeSellFee(from, amount, sellFee);
            }
        }
        if (!isPairLP[from] && !isPairLP[to]) {
            if (transferFee > 0) {
                return takeTransferFee(from, amount, transferFee);
            }
        }
        return amount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"current","type":"address"}],"name":"CannotUseCurrentAddress","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"CannotUseCurrentState","type":"error"},{"inputs":[{"internalType":"uint256","name":"current","type":"uint256"}],"name":"CannotUseCurrentValue","type":"error"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"ExceedMaxFeeAllowed","type":"error"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"ExceedWalletLimit","type":"error"},{"inputs":[],"name":"FeeUpdateLocked","type":"error"},{"inputs":[{"internalType":"address","name":"invalid","type":"address"}],"name":"InvalidAddress","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidFeeActiveState","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"InvalidOwner","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidSwapEnabledState","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidTradeEnabledState","type":"error"},{"inputs":[{"internalType":"uint256","name":"invalid","type":"uint256"}],"name":"InvalidValue","type":"error"},{"inputs":[],"name":"TradeDisabled","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"UnauthorizedAccount","type":"error"},{"inputs":[],"name":"WalletLimitRemoved","type":"error"},{"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":"feeDistribution","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToRedeem","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"AutoRedeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"EnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ExcludeFromWalletLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"FeeLocked","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":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"RemoveWalletLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newFee","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateBuyFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateFeeActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"newReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateFeeReceiver","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMinSwap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMinSwap","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateMinSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateRouter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newFee","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateSellFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateSwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newFee","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateTransferFee","type":"event"},{"inputs":[],"name":"FEEDENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROJECTOWNER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"provider","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":"uint256","name":"amountToRedeem","type":"uint256"}],"name":"autoRedeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"checkWalletLimit","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isEternalAI","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromWalletLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isFeeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isFeeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPairLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isWalletLimited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTriggerZeusTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"setExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"setExcludeFromWalletLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpPair","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setPairLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeRedeemed","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":"totalTriggerZeusBuyback","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"uint256","name":"amount","type":"uint256"}],"name":"triggerZeusBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"updateFeeActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newReceiver","type":"address"}],"name":"updateFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinSwap","type":"uint256"}],"name":"updateMinSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"updateRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052610fa060038190556004556000600581905560c8600655600781905560088190556009819055600a819055600b5569021e19e0c9bab2400000600c55600d80546001600160d01b031916793d0829eade8af8d9fec3924def36970fdea824620100000000001790553480156200007957600080fd5b50336200008681620002c4565b50620000af336200009a6012600a620004cd565b620000a99062989680620004e5565b62000314565b600180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013a9190620004ff565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c39190620004ff565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000211573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002379190620004ff565b600e80546001600160a01b0319166001600160a01b0392831690811782556000908152601360209081526040808320805460ff19908116600190811790925533808652601185528386208054831684179055825488168652838620805483168417905585526012909352818420805484168217905593549094168252929020805490921617905562000540565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166200034b57604051634726455360e11b81526001600160a01b038316600482015260240160405180910390fd5b80600260008282546200035f91906200052a565b90915550506001600160a01b0382166000818152600f60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200040f578160001904821115620003f357620003f3620003b8565b808516156200040157918102915b93841c9390800290620003d3565b509250929050565b6000826200042857506001620004c7565b816200043757506000620004c7565b81600181146200045057600281146200045b576200047b565b6001915050620004c7565b60ff8411156200046f576200046f620003b8565b50506001821b620004c7565b5060208310610133831016604e8410600b8410161715620004a0575081810a620004c7565b620004ac8383620003ce565b8060001904821115620004c357620004c3620003b8565b0290505b92915050565b6000620004de60ff84168362000417565b9392505050565b8082028115828204841417620004c757620004c7620003b8565b6000602082840312156200051257600080fd5b81516001600160a01b0381168114620004de57600080fd5b80820180821115620004c757620004c7620003b8565b6127dc80620005506000396000f3fe60806040526004361061037a5760003560e01c80638a8c523c116101d1578063b3f0067411610102578063d8306786116100a0578063f2a426871161006f578063f2a4268714610a0b578063f2fde38b14610a3b578063f31d5c7a14610a5b578063f887ea4014610a7b57600080fd5b8063d830678614610995578063da4daf71146109b6578063dd62ed3e146109cc578063e43504da146109ec57600080fd5b8063c69bebe4116100dc578063c69bebe41461091b578063c851cc321461093b578063d621e8131461095b578063d63cad221461097557600080fd5b8063b3f00674146108be578063b908de8c146108e5578063b9b2b5cd1461090557600080fd5b8063a457c2d71161016f578063ab28a04c11610149578063ab28a04c1461084d578063acb2ad6f14610863578063adc7b55614610879578063b144896f146108a957600080fd5b8063a457c2d7146107ed578063a8aa1b311461080d578063a9059cbb1461082d57600080fd5b806392b7a373116101ab57806392b7a373146107815780639358928b1461079557806395d89b41146107aa57806397e1b9d3146107d757600080fd5b80638a8c523c1461072e5780638da5cb5b14610743578063924de9b71461076157600080fd5b80633c8463a1116102ab57806363fcc9221161024957806371538eed1161022357806371538eed1461069857806375fed3c7146106ae57806378eec331146106ce5780638577a6d51461070e57600080fd5b806363fcc9221461062d57806370a082311461064d578063715018a61461068357600080fd5b806356a062351161028557806356a06235146105c257806359cd9031146105d7578063625dd605146105ed57806363a954921461060d57600080fd5b80633c8463a114610576578063467abe0a1461058c57806347062402146105ac57600080fd5b806323b872dd11610318578063313ce567116102f2578063313ce567146104f9578063351a964d1461051557806339509351146105365780633bf314541461055657600080fd5b806323b872dd146104ad5780632b14ca56146104cd5780632c735ef8146104e357600080fd5b8063095ea7b311610354578063095ea7b31461042d5780630b3acc6c1461044d57806318160ddd1461046e5780631d933a4a1461048d57600080fd5b8063012951431461038657806306fdde03146103a857806308c43650146103ed57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b506103a66103a13660046123f0565b610a9b565b005b3480156103b457600080fd5b5060408051808201909152600a815269457465726e616c20414960b01b60208201525b6040516103e49190612409565b60405180910390f35b3480156103f957600080fd5b5061041d61040836600461246c565b60136020526000908152604090205460ff1681565b60405190151581526020016103e4565b34801561043957600080fd5b5061041d610448366004612489565b610c79565b34801561045957600080fd5b50600d5461041d90600160281b900460ff1681565b34801561047a57600080fd5b506002545b6040519081526020016103e4565b34801561049957600080fd5b506103a66104a83660046123f0565b610c93565b3480156104b957600080fd5b5061041d6104c83660046124b5565b610d60565b3480156104d957600080fd5b5061047f60045481565b3480156104ef57600080fd5b5061047f60075481565b34801561050557600080fd5b50604051601281526020016103e4565b34801561052157600080fd5b50600d5461041d906301000000900460ff1681565b34801561054257600080fd5b5061041d610551366004612489565b610d84565b34801561056257600080fd5b506103a661057136600461250b565b610da6565b34801561058257600080fd5b5061047f60065481565b34801561059857600080fd5b506103a66105a73660046123f0565b610e64565b3480156105b857600080fd5b5061047f60035481565b3480156105ce57600080fd5b506103a6610f20565b3480156105e357600080fd5b5061047f600c5481565b3480156105f957600080fd5b506103a6610608366004612526565b610f9e565b34801561061957600080fd5b506103a66106283660046123f0565b611134565b34801561063957600080fd5b506103a661064836600461255b565b611166565b34801561065957600080fd5b5061047f61066836600461246c565b6001600160a01b03166000908152600f602052604090205490565b34801561068f57600080fd5b506103a6611200565b3480156106a457600080fd5b5061047f60095481565b3480156106ba57600080fd5b506103a66106c93660046123f0565b611214565b3480156106da57600080fd5b506106f673e17e01eaa9a6eca41dbd87161736a0d76f21995a81565b6040516001600160a01b0390911681526020016103e4565b34801561071a57600080fd5b506103a66107293660046123f0565b61127f565b34801561073a57600080fd5b506103a661133b565b34801561074f57600080fd5b506000546001600160a01b03166106f6565b34801561076d57600080fd5b506103a661077c36600461250b565b611436565b34801561078d57600080fd5b50600161041d565b3480156107a157600080fd5b5061047f6114ce565b3480156107b657600080fd5b506040805180820190915260048152631352539160e21b60208201526103d7565b3480156107e357600080fd5b5061047f600b5481565b3480156107f957600080fd5b5061041d610808366004612489565b61153e565b34801561081957600080fd5b50600e546106f6906001600160a01b031681565b34801561083957600080fd5b5061041d610848366004612489565b6115c4565b34801561085957600080fd5b5061047f61271081565b34801561086f57600080fd5b5061047f60055481565b34801561088557600080fd5b5061041d61089436600461246c565b60126020526000908152604090205460ff1681565b3480156108b557600080fd5b506103a66115da565b3480156108ca57600080fd5b50600d546106f690600160301b90046001600160a01b031681565b3480156108f157600080fd5b50600d5461041d9062010000900460ff1681565b34801561091157600080fd5b5061047f60085481565b34801561092757600080fd5b506103a661093636600461246c565b611650565b34801561094757600080fd5b506103a661095636600461246c565b611713565b34801561096757600080fd5b50600d5461041d9060ff1681565b34801561098157600080fd5b506103a6610990366004612526565b6119bb565b3480156109a157600080fd5b50600d5461041d90600160201b900460ff1681565b3480156109c257600080fd5b5061047f600a5481565b3480156109d857600080fd5b5061047f6109e736600461258b565b611a77565b3480156109f857600080fd5b50600d5461041d90610100900460ff1681565b348015610a1757600080fd5b5061041d610a2636600461246c565b60116020526000908152604090205460ff1681565b348015610a4757600080fd5b506103a6610a5636600461246c565b611aa2565b348015610a6757600080fd5b506103a6610a76366004612526565b611add565b348015610a8757600080fd5b506001546106f6906001600160a01b031681565b600d805460ff60201b1916600160201b17905560098054829190600090610ac39084906125cf565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110610afd57610afd6125e2565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906125f8565b81600181518110610b8d57610b8d6125e2565b6001600160a01b039283166020918202929092010152600154610bb39130911684611b8c565b7fb933c1b294702108551eddf782a9c7d1a018b57f68ecf63bc59a1247daa19c3082833342604051610be89493929190612615565b60405180910390a1600154600d5460405163791ac94760e01b81526001600160a01b039283169263791ac94792610c369287926000928892600160301b90910490911690429060040161267d565b600060405180830381600087803b158015610c5057600080fd5b505af1158015610c64573d6000803e3d6000fd5b5050600d805460ff60201b1916905550505050565b600033610c87818585611b8c565b60019150505b92915050565b610c9b611c51565b600d5462010000900460ff1615610cc5576040516334d2d20d60e01b815260040160405180910390fd5b6004548103610cef5760405163657e16cf60e01b8152600481018290526024015b60405180910390fd5b610fa0811115610d165760405163bcbac79d60e01b8152610fa06004820152602401610ce6565b60048054908290556040517f303e7b18c743f03402db563f20359b822ba8bb215a8460ba6c5f5b1f401b868290610d54908390859033904290612615565b60405180910390a15050565b600033610d6e858285611c8d565b610d79858585611d07565b9150505b9392505050565b600033610c87818585610d978383611a77565b610da191906125cf565b611b8c565b610dae611c51565b600d5462010000900460ff1615610dd8576040516334d2d20d60e01b815260040160405180910390fd5b801515600d60019054906101000a900460ff16151503610e0e5760405162a7e72d60e41b81528115156004820152602401610ce6565b600d805461ff0019811661010084151581029190911790925560405191900460ff16907ff99f9d4d81f67d0980beea494b4404ba3b8af1a0a2d493230f1a883efa027f2f90610d549083908590339042906126b9565b610e6c611c51565b600d5462010000900460ff1615610e96576040516334d2d20d60e01b815260040160405180910390fd5b6003548103610ebb5760405163657e16cf60e01b815260048101829052602401610ce6565b610fa0811115610ee25760405163bcbac79d60e01b8152610fa06004820152602401610ce6565b60038054908290556040517f90874b2697cc8e5401df6338d4549d0467cdd4f7e96a2cd367659b2eff89a07990610d54908390859033904290612615565b610f28611c51565b600d5462010000900460ff1615610f52576040516334d2d20d60e01b815260040160405180910390fd5b600d805462ff0000191662010000179055604080513381524260208201527fca4b83ef2493ff5998e26a690f3450e9a0d57028e86c4c6cdd804980e8b4db5991015b60405180910390a1565b610fa6611c51565b6001600160a01b03821660009081526013602052604090205481151560ff909116151503610fea5760405162a7e72d60e41b81528115156004820152602401610ce6565b306001600160a01b0316826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611032573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105691906125f8565b6001600160a01b0316141580156110e05750306001600160a01b0316826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d491906125f8565b6001600160a01b031614155b1561110957604051634726455360e11b81526001600160a01b0383166004820152602401610ce6565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b61113c611c51565b80600a600082825461114e91906125cf565b909155505042600b556111638161dead611fc7565b50565b600061271060065461117760025490565b61118191906126df565b61118b91906126f6565b6001600160a01b03831660009081526012602052604090205490915060ff166111fb5780836111cf846001600160a01b03166000908152600f602052604090205490565b6111d991906125cf565b11156111fb57604051633ad0b44360e11b815260048101829052602401610ce6565b505050565b611208611c51565b6112126000612160565b565b61121c611c51565b80600c54036112415760405163657e16cf60e01b815260048101829052602401610ce6565b600c8054908290556040517f9a9f4704ac409fe039e92a996e415370980275aaff2992936ed5b432886c55c590610d54908390859033904290612615565b611287611c51565b600d5462010000900460ff16156112b1576040516334d2d20d60e01b815260040160405180910390fd5b60055481036112d65760405163657e16cf60e01b815260048101829052602401610ce6565b610fa08111156112fd5760405163bcbac79d60e01b8152610fa06004820152602401610ce6565b60058054908290556040517f93f0ae7c5c2922bf736e77b4999848c80112f12ae2c18ab4d80c1f55557a0fff90610d54908390859033904290612615565b611343611c51565b600d5460ff161561137257600d546040516301bf623960e61b815260ff90911615156004820152602401610ce6565b600d54610100900460ff16156113aa57600d54604051630eff900b60e21b815261010090910460ff1615156004820152602401610ce6565b600d546301000000900460ff16156113e657600d5460405163610a8e6760e01b8152630100000090910460ff1615156004820152602401610ce6565b600d805463ff00ffff191663010001011790554260078190556040805133815260208101929092527f57367f86c2ca0eaed4ba8c6af83cb711a82cc7169d53b6a3629605a12c602d729101610f94565b61143e611c51565b801515600d60039054906101000a900460ff161515036114745760405162a7e72d60e41b81528115156004820152602401610ce6565b600d805463ff000000198116630100000084151581029190911790925560405191900460ff16907fa9eb6c000d17475b17651469533695f7b673c93327fdbadf4341ebeb2607a04490610d549083908590339042906126b9565b600f6020527ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec3755461dead60009081527f99629f56119585bf27511b6b7d295dffb54757453fcc3dabcf51d92028301f105460025491929161152f9190612718565b6115399190612718565b905090565b6000338161154c8286611a77565b9050838110156115ac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ce6565b6115b98286868403611b8c565b506001949350505050565b6000336115d2818585611d07565b949350505050565b6115e2611c51565b600d54600160281b900460ff1661160c5760405163019601bd60e41b815260040160405180910390fd5b600d805465ff000000000019169055604080513381524260208201527f59880a54046a9fec9f80ba8d2b8d6ec5be58ae5691f68759db37399025bd38069101610f94565b611658611c51565b600d546001600160a01b03808316600160301b90920416036116985760405163a936636960e01b81526001600160a01b0382166004820152602401610ce6565b600d80546001600160a01b03838116600160301b8181026601000000000000600160d01b0319851617909455604080519490930490911680845260208401919091523391830191909152426060830152907f8398165ebfaa5831ed8697905b76704b18bb44c19f6630c76c8fa68f32dc7dfe90608001610d54565b61171b611c51565b6001546001600160a01b038083169116036117545760405163a936636960e01b81526001600160a01b0382166004820152602401610ce6565b600180546001600160a01b038381166001600160a01b0319831681178455600081815260116020908152604091829020805460ff19169096179095558051929093168083529382015233918101919091524260608201527fe1cb783288eddc7b22c25642a832d886a558be0dd900747310a34156b9fdcbbb9060800160405180910390a1600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184f91906125f8565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d591906125f8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611922573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194691906125f8565b600e80546001600160a01b03929092166001600160a01b0319909216821790556000908152601360205260409020805460ff19166001179055600d54600160281b900460ff16156119b757600e546001600160a01b03166000908152601260205260409020805460ff191660011790555b5050565b6119c3611c51565b6001600160a01b03821660009081526011602052604090205481151560ff909116151503611a075760405162a7e72d60e41b81528115156004820152602401610ce6565b6001600160a01b03821660009081526011602052604090819020805483151560ff19821617909155905160ff909116907f4c18d53c2d0e765ff1dc3e5d53d8c51002cc0b5c114aa07199d629d54fad593e90611a6a9083908590339042906126b9565b60405180910390a1505050565b6001600160a01b03918216600090815260106020908152604080832093909416825291909152205490565b611aaa611c51565b6001600160a01b038116611ad45760405163b20f76e360e01b815260006004820152602401610ce6565b61116381612160565b611ae5611c51565b6001600160a01b03821660009081526012602052604090205481151560ff909116151503611b295760405162a7e72d60e41b81528115156004820152602401610ce6565b6001600160a01b03821660009081526012602052604090819020805483151560ff19821617909155905160ff909116907f887bfffde87b3f64221a6b7de2ee5ef7503d2388b41b153cfb301c26087a7f3c90611a6a9083908590339042906126b9565b6001600160a01b038316611bbe57604051634726455360e11b81526001600160a01b0384166004820152602401610ce6565b6001600160a01b038216611bf057604051634726455360e11b81526001600160a01b0383166004820152602401610ce6565b6001600160a01b0383811660008181526010602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b33611c646000546001600160a01b031690565b6001600160a01b031614611212576040516332b2baa360e01b8152336004820152602401610ce6565b6000611c998484611a77565b90506000198114611d015781811015611cf45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ce6565b611d018484848403611b8c565b50505050565b60006001600160a01b038416611d3b57604051634726455360e11b81526001600160a01b0385166004820152602401610ce6565b6001600160a01b038316611d6d57604051634726455360e11b81526001600160a01b0384166004820152602401610ce6565b600d5460ff16158015611d9957506001600160a01b03841660009081526011602052604090205460ff16155b8015611dbe57506001600160a01b03831660009081526011602052604090205460ff16155b15611ddc57604051632b61510560e11b815260040160405180910390fd5b600d54600160201b900460ff1680611e0c57506001600160a01b03841660009081526011602052604090205460ff165b15611e2357611e1c8484846121b0565b9050610d7d565b600e546001600160a01b03858116911614801590611e4a5750600d546301000000900460ff165b8015611e675750600c54306000908152600f602052604090205410155b8015611e845750600c54600954600854611e819190612718565b10155b15611e9457611e94600c54610a9b565b600d548290610100900460ff168015611ec657506001600160a01b03851660009081526011602052604090205460ff16155b8015611eeb57506001600160a01b03841660009081526011602052604090205460ff16155b15611efe57611efb858585612249565b90505b600d54600160281b900460ff1615611f1a57611f1a8185611166565b6001600160a01b0385166000908152600f6020526040902054811115611f525760405162461bcd60e51b8152600401610ce69061272b565b6001600160a01b038086166000818152600f6020526040808220805486900390559287168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fb49085815260200190565b60405180910390a3506001949350505050565b600d805460ff60201b1916600160201b17905561deac19330161200157604051634726455360e11b815261dead6004820152602401610ce6565b6040805160028082526060820183526000926020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561206b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208f91906125f8565b816000815181106120a2576120a26125e2565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106120d6576120d66125e2565b6001600160a01b03928316602091820292909201015260015460405163b6f9de9560e01b815291169063b6f9de9590859061211c90600090869088904290600401612771565b6000604051808303818588803b15801561213557600080fd5b505af1158015612149573d6000803e3d6000fd5b5050600d805460ff60201b19169055505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600f6020526040812054828110156121e95760405162461bcd60e51b8152600401610ce69061272b565b6001600160a01b038086166000818152600f602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fb49087815260200190565b600d805460ff60201b1916600160201b1790556001600160a01b03831660009081526013602052604081205460ff16156122995760035415612299576122928483600354612342565b905061232e565b6001600160a01b03831660009081526013602052604090205460ff16156122cf57600454156122cf576122928483600454612342565b6001600160a01b03841660009081526013602052604090205460ff1615801561231157506001600160a01b03831660009081526013602052604090205460ff16155b1561232b576005541561232b576122928483600554612342565b50805b600d805460ff60201b191690559392505050565b600d805460ff60201b1916600160201b17905560008061271061236584866126df565b61236f91906126f6565b9050600061237d8286612718565b9050811561238f5761238f86836123a5565b600d805460ff60201b1916905595945050505050565b600d805460ff60201b1916600160201b179055600880548291906000906123cd9084906125cf565b909155506123de90508230836121b0565b5050600d805460ff60201b1916905550565b60006020828403121561240257600080fd5b5035919050565b600060208083528351808285015260005b818110156124365785810183015185820160400152820161241a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461116357600080fd5b60006020828403121561247e57600080fd5b8135610d7d81612457565b6000806040838503121561249c57600080fd5b82356124a781612457565b946020939093013593505050565b6000806000606084860312156124ca57600080fd5b83356124d581612457565b925060208401356124e581612457565b929592945050506040919091013590565b8035801515811461250657600080fd5b919050565b60006020828403121561251d57600080fd5b610d7d826124f6565b6000806040838503121561253957600080fd5b823561254481612457565b9150612552602084016124f6565b90509250929050565b6000806040838503121561256e57600080fd5b82359150602083013561258081612457565b809150509250929050565b6000806040838503121561259e57600080fd5b82356125a981612457565b9150602083013561258081612457565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c8d57610c8d6125b9565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561260a57600080fd5b8151610d7d81612457565b93845260208401929092526001600160a01b03166040830152606082015260800190565b600081518084526020808501945080840160005b838110156126725781516001600160a01b03168752958201959082019060010161264d565b509495945050505050565b85815284602082015260a06040820152600061269c60a0830186612639565b6001600160a01b0394909416606083015250608001529392505050565b931515845291151560208401526001600160a01b03166040830152606082015260800190565b8082028115828204841417610c8d57610c8d6125b9565b60008261271357634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610c8d57610c8d6125b9565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b84815260806020820152600061278a6080830186612639565b6001600160a01b0394909416604083015250606001529291505056fea2646970667358221220f518e1152a2680f1f401993c6ae7398aa1aebd1ac2db77090985e503a455f81864736f6c63430008120033

Deployed Bytecode

0x60806040526004361061037a5760003560e01c80638a8c523c116101d1578063b3f0067411610102578063d8306786116100a0578063f2a426871161006f578063f2a4268714610a0b578063f2fde38b14610a3b578063f31d5c7a14610a5b578063f887ea4014610a7b57600080fd5b8063d830678614610995578063da4daf71146109b6578063dd62ed3e146109cc578063e43504da146109ec57600080fd5b8063c69bebe4116100dc578063c69bebe41461091b578063c851cc321461093b578063d621e8131461095b578063d63cad221461097557600080fd5b8063b3f00674146108be578063b908de8c146108e5578063b9b2b5cd1461090557600080fd5b8063a457c2d71161016f578063ab28a04c11610149578063ab28a04c1461084d578063acb2ad6f14610863578063adc7b55614610879578063b144896f146108a957600080fd5b8063a457c2d7146107ed578063a8aa1b311461080d578063a9059cbb1461082d57600080fd5b806392b7a373116101ab57806392b7a373146107815780639358928b1461079557806395d89b41146107aa57806397e1b9d3146107d757600080fd5b80638a8c523c1461072e5780638da5cb5b14610743578063924de9b71461076157600080fd5b80633c8463a1116102ab57806363fcc9221161024957806371538eed1161022357806371538eed1461069857806375fed3c7146106ae57806378eec331146106ce5780638577a6d51461070e57600080fd5b806363fcc9221461062d57806370a082311461064d578063715018a61461068357600080fd5b806356a062351161028557806356a06235146105c257806359cd9031146105d7578063625dd605146105ed57806363a954921461060d57600080fd5b80633c8463a114610576578063467abe0a1461058c57806347062402146105ac57600080fd5b806323b872dd11610318578063313ce567116102f2578063313ce567146104f9578063351a964d1461051557806339509351146105365780633bf314541461055657600080fd5b806323b872dd146104ad5780632b14ca56146104cd5780632c735ef8146104e357600080fd5b8063095ea7b311610354578063095ea7b31461042d5780630b3acc6c1461044d57806318160ddd1461046e5780631d933a4a1461048d57600080fd5b8063012951431461038657806306fdde03146103a857806308c43650146103ed57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b506103a66103a13660046123f0565b610a9b565b005b3480156103b457600080fd5b5060408051808201909152600a815269457465726e616c20414960b01b60208201525b6040516103e49190612409565b60405180910390f35b3480156103f957600080fd5b5061041d61040836600461246c565b60136020526000908152604090205460ff1681565b60405190151581526020016103e4565b34801561043957600080fd5b5061041d610448366004612489565b610c79565b34801561045957600080fd5b50600d5461041d90600160281b900460ff1681565b34801561047a57600080fd5b506002545b6040519081526020016103e4565b34801561049957600080fd5b506103a66104a83660046123f0565b610c93565b3480156104b957600080fd5b5061041d6104c83660046124b5565b610d60565b3480156104d957600080fd5b5061047f60045481565b3480156104ef57600080fd5b5061047f60075481565b34801561050557600080fd5b50604051601281526020016103e4565b34801561052157600080fd5b50600d5461041d906301000000900460ff1681565b34801561054257600080fd5b5061041d610551366004612489565b610d84565b34801561056257600080fd5b506103a661057136600461250b565b610da6565b34801561058257600080fd5b5061047f60065481565b34801561059857600080fd5b506103a66105a73660046123f0565b610e64565b3480156105b857600080fd5b5061047f60035481565b3480156105ce57600080fd5b506103a6610f20565b3480156105e357600080fd5b5061047f600c5481565b3480156105f957600080fd5b506103a6610608366004612526565b610f9e565b34801561061957600080fd5b506103a66106283660046123f0565b611134565b34801561063957600080fd5b506103a661064836600461255b565b611166565b34801561065957600080fd5b5061047f61066836600461246c565b6001600160a01b03166000908152600f602052604090205490565b34801561068f57600080fd5b506103a6611200565b3480156106a457600080fd5b5061047f60095481565b3480156106ba57600080fd5b506103a66106c93660046123f0565b611214565b3480156106da57600080fd5b506106f673e17e01eaa9a6eca41dbd87161736a0d76f21995a81565b6040516001600160a01b0390911681526020016103e4565b34801561071a57600080fd5b506103a66107293660046123f0565b61127f565b34801561073a57600080fd5b506103a661133b565b34801561074f57600080fd5b506000546001600160a01b03166106f6565b34801561076d57600080fd5b506103a661077c36600461250b565b611436565b34801561078d57600080fd5b50600161041d565b3480156107a157600080fd5b5061047f6114ce565b3480156107b657600080fd5b506040805180820190915260048152631352539160e21b60208201526103d7565b3480156107e357600080fd5b5061047f600b5481565b3480156107f957600080fd5b5061041d610808366004612489565b61153e565b34801561081957600080fd5b50600e546106f6906001600160a01b031681565b34801561083957600080fd5b5061041d610848366004612489565b6115c4565b34801561085957600080fd5b5061047f61271081565b34801561086f57600080fd5b5061047f60055481565b34801561088557600080fd5b5061041d61089436600461246c565b60126020526000908152604090205460ff1681565b3480156108b557600080fd5b506103a66115da565b3480156108ca57600080fd5b50600d546106f690600160301b90046001600160a01b031681565b3480156108f157600080fd5b50600d5461041d9062010000900460ff1681565b34801561091157600080fd5b5061047f60085481565b34801561092757600080fd5b506103a661093636600461246c565b611650565b34801561094757600080fd5b506103a661095636600461246c565b611713565b34801561096757600080fd5b50600d5461041d9060ff1681565b34801561098157600080fd5b506103a6610990366004612526565b6119bb565b3480156109a157600080fd5b50600d5461041d90600160201b900460ff1681565b3480156109c257600080fd5b5061047f600a5481565b3480156109d857600080fd5b5061047f6109e736600461258b565b611a77565b3480156109f857600080fd5b50600d5461041d90610100900460ff1681565b348015610a1757600080fd5b5061041d610a2636600461246c565b60116020526000908152604090205460ff1681565b348015610a4757600080fd5b506103a6610a5636600461246c565b611aa2565b348015610a6757600080fd5b506103a6610a76366004612526565b611add565b348015610a8757600080fd5b506001546106f6906001600160a01b031681565b600d805460ff60201b1916600160201b17905560098054829190600090610ac39084906125cf565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110610afd57610afd6125e2565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a91906125f8565b81600181518110610b8d57610b8d6125e2565b6001600160a01b039283166020918202929092010152600154610bb39130911684611b8c565b7fb933c1b294702108551eddf782a9c7d1a018b57f68ecf63bc59a1247daa19c3082833342604051610be89493929190612615565b60405180910390a1600154600d5460405163791ac94760e01b81526001600160a01b039283169263791ac94792610c369287926000928892600160301b90910490911690429060040161267d565b600060405180830381600087803b158015610c5057600080fd5b505af1158015610c64573d6000803e3d6000fd5b5050600d805460ff60201b1916905550505050565b600033610c87818585611b8c565b60019150505b92915050565b610c9b611c51565b600d5462010000900460ff1615610cc5576040516334d2d20d60e01b815260040160405180910390fd5b6004548103610cef5760405163657e16cf60e01b8152600481018290526024015b60405180910390fd5b610fa0811115610d165760405163bcbac79d60e01b8152610fa06004820152602401610ce6565b60048054908290556040517f303e7b18c743f03402db563f20359b822ba8bb215a8460ba6c5f5b1f401b868290610d54908390859033904290612615565b60405180910390a15050565b600033610d6e858285611c8d565b610d79858585611d07565b9150505b9392505050565b600033610c87818585610d978383611a77565b610da191906125cf565b611b8c565b610dae611c51565b600d5462010000900460ff1615610dd8576040516334d2d20d60e01b815260040160405180910390fd5b801515600d60019054906101000a900460ff16151503610e0e5760405162a7e72d60e41b81528115156004820152602401610ce6565b600d805461ff0019811661010084151581029190911790925560405191900460ff16907ff99f9d4d81f67d0980beea494b4404ba3b8af1a0a2d493230f1a883efa027f2f90610d549083908590339042906126b9565b610e6c611c51565b600d5462010000900460ff1615610e96576040516334d2d20d60e01b815260040160405180910390fd5b6003548103610ebb5760405163657e16cf60e01b815260048101829052602401610ce6565b610fa0811115610ee25760405163bcbac79d60e01b8152610fa06004820152602401610ce6565b60038054908290556040517f90874b2697cc8e5401df6338d4549d0467cdd4f7e96a2cd367659b2eff89a07990610d54908390859033904290612615565b610f28611c51565b600d5462010000900460ff1615610f52576040516334d2d20d60e01b815260040160405180910390fd5b600d805462ff0000191662010000179055604080513381524260208201527fca4b83ef2493ff5998e26a690f3450e9a0d57028e86c4c6cdd804980e8b4db5991015b60405180910390a1565b610fa6611c51565b6001600160a01b03821660009081526013602052604090205481151560ff909116151503610fea5760405162a7e72d60e41b81528115156004820152602401610ce6565b306001600160a01b0316826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611032573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105691906125f8565b6001600160a01b0316141580156110e05750306001600160a01b0316826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d491906125f8565b6001600160a01b031614155b1561110957604051634726455360e11b81526001600160a01b0383166004820152602401610ce6565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b61113c611c51565b80600a600082825461114e91906125cf565b909155505042600b556111638161dead611fc7565b50565b600061271060065461117760025490565b61118191906126df565b61118b91906126f6565b6001600160a01b03831660009081526012602052604090205490915060ff166111fb5780836111cf846001600160a01b03166000908152600f602052604090205490565b6111d991906125cf565b11156111fb57604051633ad0b44360e11b815260048101829052602401610ce6565b505050565b611208611c51565b6112126000612160565b565b61121c611c51565b80600c54036112415760405163657e16cf60e01b815260048101829052602401610ce6565b600c8054908290556040517f9a9f4704ac409fe039e92a996e415370980275aaff2992936ed5b432886c55c590610d54908390859033904290612615565b611287611c51565b600d5462010000900460ff16156112b1576040516334d2d20d60e01b815260040160405180910390fd5b60055481036112d65760405163657e16cf60e01b815260048101829052602401610ce6565b610fa08111156112fd5760405163bcbac79d60e01b8152610fa06004820152602401610ce6565b60058054908290556040517f93f0ae7c5c2922bf736e77b4999848c80112f12ae2c18ab4d80c1f55557a0fff90610d54908390859033904290612615565b611343611c51565b600d5460ff161561137257600d546040516301bf623960e61b815260ff90911615156004820152602401610ce6565b600d54610100900460ff16156113aa57600d54604051630eff900b60e21b815261010090910460ff1615156004820152602401610ce6565b600d546301000000900460ff16156113e657600d5460405163610a8e6760e01b8152630100000090910460ff1615156004820152602401610ce6565b600d805463ff00ffff191663010001011790554260078190556040805133815260208101929092527f57367f86c2ca0eaed4ba8c6af83cb711a82cc7169d53b6a3629605a12c602d729101610f94565b61143e611c51565b801515600d60039054906101000a900460ff161515036114745760405162a7e72d60e41b81528115156004820152602401610ce6565b600d805463ff000000198116630100000084151581029190911790925560405191900460ff16907fa9eb6c000d17475b17651469533695f7b673c93327fdbadf4341ebeb2607a04490610d549083908590339042906126b9565b600f6020527ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec3755461dead60009081527f99629f56119585bf27511b6b7d295dffb54757453fcc3dabcf51d92028301f105460025491929161152f9190612718565b6115399190612718565b905090565b6000338161154c8286611a77565b9050838110156115ac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ce6565b6115b98286868403611b8c565b506001949350505050565b6000336115d2818585611d07565b949350505050565b6115e2611c51565b600d54600160281b900460ff1661160c5760405163019601bd60e41b815260040160405180910390fd5b600d805465ff000000000019169055604080513381524260208201527f59880a54046a9fec9f80ba8d2b8d6ec5be58ae5691f68759db37399025bd38069101610f94565b611658611c51565b600d546001600160a01b03808316600160301b90920416036116985760405163a936636960e01b81526001600160a01b0382166004820152602401610ce6565b600d80546001600160a01b03838116600160301b8181026601000000000000600160d01b0319851617909455604080519490930490911680845260208401919091523391830191909152426060830152907f8398165ebfaa5831ed8697905b76704b18bb44c19f6630c76c8fa68f32dc7dfe90608001610d54565b61171b611c51565b6001546001600160a01b038083169116036117545760405163a936636960e01b81526001600160a01b0382166004820152602401610ce6565b600180546001600160a01b038381166001600160a01b0319831681178455600081815260116020908152604091829020805460ff19169096179095558051929093168083529382015233918101919091524260608201527fe1cb783288eddc7b22c25642a832d886a558be0dd900747310a34156b9fdcbbb9060800160405180910390a1600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184f91906125f8565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d591906125f8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611922573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194691906125f8565b600e80546001600160a01b03929092166001600160a01b0319909216821790556000908152601360205260409020805460ff19166001179055600d54600160281b900460ff16156119b757600e546001600160a01b03166000908152601260205260409020805460ff191660011790555b5050565b6119c3611c51565b6001600160a01b03821660009081526011602052604090205481151560ff909116151503611a075760405162a7e72d60e41b81528115156004820152602401610ce6565b6001600160a01b03821660009081526011602052604090819020805483151560ff19821617909155905160ff909116907f4c18d53c2d0e765ff1dc3e5d53d8c51002cc0b5c114aa07199d629d54fad593e90611a6a9083908590339042906126b9565b60405180910390a1505050565b6001600160a01b03918216600090815260106020908152604080832093909416825291909152205490565b611aaa611c51565b6001600160a01b038116611ad45760405163b20f76e360e01b815260006004820152602401610ce6565b61116381612160565b611ae5611c51565b6001600160a01b03821660009081526012602052604090205481151560ff909116151503611b295760405162a7e72d60e41b81528115156004820152602401610ce6565b6001600160a01b03821660009081526012602052604090819020805483151560ff19821617909155905160ff909116907f887bfffde87b3f64221a6b7de2ee5ef7503d2388b41b153cfb301c26087a7f3c90611a6a9083908590339042906126b9565b6001600160a01b038316611bbe57604051634726455360e11b81526001600160a01b0384166004820152602401610ce6565b6001600160a01b038216611bf057604051634726455360e11b81526001600160a01b0383166004820152602401610ce6565b6001600160a01b0383811660008181526010602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b33611c646000546001600160a01b031690565b6001600160a01b031614611212576040516332b2baa360e01b8152336004820152602401610ce6565b6000611c998484611a77565b90506000198114611d015781811015611cf45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ce6565b611d018484848403611b8c565b50505050565b60006001600160a01b038416611d3b57604051634726455360e11b81526001600160a01b0385166004820152602401610ce6565b6001600160a01b038316611d6d57604051634726455360e11b81526001600160a01b0384166004820152602401610ce6565b600d5460ff16158015611d9957506001600160a01b03841660009081526011602052604090205460ff16155b8015611dbe57506001600160a01b03831660009081526011602052604090205460ff16155b15611ddc57604051632b61510560e11b815260040160405180910390fd5b600d54600160201b900460ff1680611e0c57506001600160a01b03841660009081526011602052604090205460ff165b15611e2357611e1c8484846121b0565b9050610d7d565b600e546001600160a01b03858116911614801590611e4a5750600d546301000000900460ff165b8015611e675750600c54306000908152600f602052604090205410155b8015611e845750600c54600954600854611e819190612718565b10155b15611e9457611e94600c54610a9b565b600d548290610100900460ff168015611ec657506001600160a01b03851660009081526011602052604090205460ff16155b8015611eeb57506001600160a01b03841660009081526011602052604090205460ff16155b15611efe57611efb858585612249565b90505b600d54600160281b900460ff1615611f1a57611f1a8185611166565b6001600160a01b0385166000908152600f6020526040902054811115611f525760405162461bcd60e51b8152600401610ce69061272b565b6001600160a01b038086166000818152600f6020526040808220805486900390559287168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fb49085815260200190565b60405180910390a3506001949350505050565b600d805460ff60201b1916600160201b17905561deac19330161200157604051634726455360e11b815261dead6004820152602401610ce6565b6040805160028082526060820183526000926020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561206b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208f91906125f8565b816000815181106120a2576120a26125e2565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106120d6576120d66125e2565b6001600160a01b03928316602091820292909201015260015460405163b6f9de9560e01b815291169063b6f9de9590859061211c90600090869088904290600401612771565b6000604051808303818588803b15801561213557600080fd5b505af1158015612149573d6000803e3d6000fd5b5050600d805460ff60201b19169055505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600f6020526040812054828110156121e95760405162461bcd60e51b8152600401610ce69061272b565b6001600160a01b038086166000818152600f602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fb49087815260200190565b600d805460ff60201b1916600160201b1790556001600160a01b03831660009081526013602052604081205460ff16156122995760035415612299576122928483600354612342565b905061232e565b6001600160a01b03831660009081526013602052604090205460ff16156122cf57600454156122cf576122928483600454612342565b6001600160a01b03841660009081526013602052604090205460ff1615801561231157506001600160a01b03831660009081526013602052604090205460ff16155b1561232b576005541561232b576122928483600554612342565b50805b600d805460ff60201b191690559392505050565b600d805460ff60201b1916600160201b17905560008061271061236584866126df565b61236f91906126f6565b9050600061237d8286612718565b9050811561238f5761238f86836123a5565b600d805460ff60201b1916905595945050505050565b600d805460ff60201b1916600160201b179055600880548291906000906123cd9084906125cf565b909155506123de90508230836121b0565b5050600d805460ff60201b1916905550565b60006020828403121561240257600080fd5b5035919050565b600060208083528351808285015260005b818110156124365785810183015185820160400152820161241a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461116357600080fd5b60006020828403121561247e57600080fd5b8135610d7d81612457565b6000806040838503121561249c57600080fd5b82356124a781612457565b946020939093013593505050565b6000806000606084860312156124ca57600080fd5b83356124d581612457565b925060208401356124e581612457565b929592945050506040919091013590565b8035801515811461250657600080fd5b919050565b60006020828403121561251d57600080fd5b610d7d826124f6565b6000806040838503121561253957600080fd5b823561254481612457565b9150612552602084016124f6565b90509250929050565b6000806040838503121561256e57600080fd5b82359150602083013561258081612457565b809150509250929050565b6000806040838503121561259e57600080fd5b82356125a981612457565b9150602083013561258081612457565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c8d57610c8d6125b9565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561260a57600080fd5b8151610d7d81612457565b93845260208401929092526001600160a01b03166040830152606082015260800190565b600081518084526020808501945080840160005b838110156126725781516001600160a01b03168752958201959082019060010161264d565b509495945050505050565b85815284602082015260a06040820152600061269c60a0830186612639565b6001600160a01b0394909416606083015250608001529392505050565b931515845291151560208401526001600160a01b03166040830152606082015260800190565b8082028115828204841417610c8d57610c8d6125b9565b60008261271357634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610c8d57610c8d6125b9565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b84815260806020820152600061278a6080830186612639565b6001600160a01b0394909416604083015250606001529291505056fea2646970667358221220f518e1152a2680f1f401993c6ae7398aa1aebd1ac2db77090985e503a455f81864736f6c63430008120033

Deployed Bytecode Sourcemap

5444:17979:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9907:611;;;;;;;;;;-1:-1:-1;9907:611:0;;;;;:::i;:::-;;:::i;:::-;;17791:101;;;;;;;;;;-1:-1:-1;17880:4:0;;;;;;;;;;;;-1:-1:-1;;;17880:4:0;;;;17791:101;;;;;;;:::i;:::-;;;;;;;;6950:40;;;;;;;;;;-1:-1:-1;6950:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1305:14:1;;1298:22;1280:41;;1268:2;1253:18;6950:40:0;1140:187:1;18758:205:0;;;;;;;;;;-1:-1:-1;18758:205:0;;;;;:::i;:::-;;:::i;6441:34::-;;;;;;;;;;-1:-1:-1;6441:34:0;;;;-1:-1:-1;;;6441:34:0;;;;;;18134:108;;;;;;;;;;-1:-1:-1;18222:12:0;;18134:108;;;1798:25:1;;;1786:2;1771:18;18134:108:0;1652:177:1;13248:400:0;;;;;;;;;;-1:-1:-1;13248:400:0;;;;;:::i;:::-;;:::i;18975:246::-;;;;;;;;;;-1:-1:-1;18975:246:0;;;;;:::i;:::-;;:::i;5826:30::-;;;;;;;;;;;;;;;;5939:33;;;;;;;;;;;;;;;;18021:101;;;;;;;;;;-1:-1:-1;18021:101:0;;5682:2;2437:36:1;;2425:2;2410:18;18021:101:0;2295:184:1;6368:33:0;;;;;;;;;;-1:-1:-1;6368:33:0;;;;;;;;;;;19233:247;;;;;;;;;;-1:-1:-1;19233:247:0;;;;;:::i;:::-;;:::i;12474:363::-;;;;;;;;;;-1:-1:-1;12474:363:0;;;;;:::i;:::-;;:::i;5900:32::-;;;;;;;;;;;;;;;;12845:395;;;;;;;;;;-1:-1:-1;12845:395:0;;;;;:::i;:::-;;:::i;5790:29::-;;;;;;;;;;;;;;;;12057:185;;;;;;;;;;;;;:::i;6163:37::-;;;;;;;;;;;;;;;;15526:326;;;;;;;;;;-1:-1:-1;15526:326:0;;;;;:::i;:::-;;:::i;17114:213::-;;;;;;;;;;-1:-1:-1;17114:213:0;;;;;:::i;:::-;;:::i;10798:319::-;;;;;;;;;;-1:-1:-1;10798:319:0;;;;;:::i;:::-;;:::i;18254:127::-;;;;;;;;;;-1:-1:-1;18254:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;18355:18:0;18328:7;18355:18;;;:9;:18;;;;;;;18254:127;4713:103;;;;;;;;;;;;;:::i;6022:35::-;;;;;;;;;;;;;;;;11745:304;;;;;;;;;;-1:-1:-1;11745:304:0;;;;;:::i;:::-;;:::i;6484:81::-;;;;;;;;;;;;6523:42;6484:81;;;;;-1:-1:-1;;;;;3638:32:1;;;3620:51;;3608:2;3593:18;6484:81:0;3474:203:1;13656:420:0;;;;;;;;;;-1:-1:-1;13656:420:0;;;;;:::i;:::-;;:::i;9407:472::-;;;;;;;;;;;;;:::i;4455:87::-;;;;;;;;;;-1:-1:-1;4501:7:0;4528:6;-1:-1:-1;;;;;4528:6:0;4455:87;;14425:317;;;;;;;;;;-1:-1:-1;14425:317:0;;;;;:::i;:::-;;:::i;10545:84::-;;;;;;;;;;-1:-1:-1;6240:4:0;10545:84;;10637:153;;;;;;;;;;;;;:::i;17904:105::-;;;;;;;;;;-1:-1:-1;17995:6:0;;;;;;;;;;;;-1:-1:-1;;;17995:6:0;;;;17904:105;;6113:43;;;;;;;;;;;;;;;;19492:445;;;;;;;;;;-1:-1:-1;19492:445:0;;;;;:::i;:::-;;:::i;6654:19::-;;;;;;;;;;-1:-1:-1;6654:19:0;;;;-1:-1:-1;;;;;6654:19:0;;;18393:184;;;;;;;;;;-1:-1:-1;18393:184:0;;;;;:::i;:::-;;:::i;5734:47::-;;;;;;;;;;;;5775:6;5734:47;;5863:30;;;;;;;;;;;;;;;;6886:57;;;;;;;;;;-1:-1:-1;6886:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12250:216;;;;;;;;;;;;;:::i;6574:71::-;;;;;;;;;;-1:-1:-1;6574:71:0;;;;-1:-1:-1;;;6574:71:0;;-1:-1:-1;;;;;6574:71:0;;;6330:31;;;;;;;;;;-1:-1:-1;6330:31:0;;;;;;;;;;;5979:36;;;;;;;;;;;;;;;;14084:333;;;;;;;;;;-1:-1:-1;14084:333:0;;;;;:::i;:::-;;:::i;11145:592::-;;;;;;;;;;-1:-1:-1;11145:592:0;;;;;:::i;:::-;;:::i;6253:32::-;;;;;;;;;;-1:-1:-1;6253:32:0;;;;;;;;14750:360;;;;;;;;;;-1:-1:-1;14750:360:0;;;;;:::i;:::-;;:::i;6408:26::-;;;;;;;;;;-1:-1:-1;6408:26:0;;;;-1:-1:-1;;;6408:26:0;;;;;;6064:42;;;;;;;;;;;;;;;;18589:157;;;;;;;;;;-1:-1:-1;18589:157:0;;;;;:::i;:::-;;:::i;6292:31::-;;;;;;;;;;-1:-1:-1;6292:31:0;;;;;;;;;;;6830:49;;;;;;;;;;-1:-1:-1;6830:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4824:213;;;;;;;;;;-1:-1:-1;4824:213:0;;;;;:::i;:::-;;:::i;15118:400::-;;;;;;;;;;-1:-1:-1;15118:400:0;;;;;:::i;:::-;;:::i;5520:21::-;;;;;;;;;;-1:-1:-1;5520:21:0;;;;-1:-1:-1;;;;;5520:21:0;;;9907:611;7049:6;:13;;-1:-1:-1;;;;7049:13:0;-1:-1:-1;;;7049:13:0;;;9988:16:::1;:34:::0;;10008:14;;9988:16;7049:13;;9988:34:::1;::::0;10008:14;;9988:34:::1;:::i;:::-;::::0;;;-1:-1:-1;;10059:16:0::1;::::0;;10073:1:::1;10059:16:::0;;;;;::::1;::::0;;10035:21:::1;::::0;10059:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10059:16:0::1;10035:40;;10104:4;10086;10091:1;10086:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10086:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10130:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;10130:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;10086:7;;10130:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10120:4;10125:1;10120:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10120:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;10188:6:::1;::::0;10156:56:::1;::::0;10173:4:::1;::::0;10188:6:::1;10197:14:::0;10156:8:::1;:56::i;:::-;10238:71;10249:14;10265;10281:10;10293:15;10238:71;;;;;;;;;:::i;:::-;;;;;;;;10322:6;::::0;10458:11:::1;::::0;10322:188:::1;::::0;-1:-1:-1;;;10322:188:0;;-1:-1:-1;;;;;10322:6:0;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;10394:14;;10322:6:::1;::::0;10439:4;;-1:-1:-1;;;10458:11:0;;::::1;::::0;;::::1;::::0;10484:15:::1;::::0;10322:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;7085:6:0;:14;;-1:-1:-1;;;;7085:14:0;;;-1:-1:-1;;;;9907:611:0:o;18758:205::-;18841:4;18877:10;18898:35;18877:10;18917:7;18926:6;18898:8;:35::i;:::-;18951:4;18944:11;;;18758:205;;;;;:::o;13248:400::-;4053:13;:11;:13::i;:::-;13321:11:::1;::::0;;;::::1;;;13317:46;;;13343:17;;-1:-1:-1::0;;;13343:17:0::1;;;;;;;;;;;13317:46;13387:7;;13377:6;:17:::0;13373:64:::1;;13405:29;::::0;-1:-1:-1;;;13405:29:0;;::::1;::::0;::::1;1798:25:1::0;;;1771:18;;13405:29:0::1;;;;;;;;13373:64;13460:5;13451:6;:14;13447:58;;;13476:26;::::0;-1:-1:-1;;;13476:26:0;;13496:5:::1;13476:26;::::0;::::1;1798:25:1::0;1771:18;;13476:26:0::1;1652:177:1::0;13447:58:0::1;13532:7;::::0;;13550:16;;;;13582:58:::1;::::0;::::1;::::0;::::1;::::0;13532:7;;13560:6;;13612:10:::1;::::0;13624:15:::1;::::0;13582:58:::1;:::i;:::-;;;;;;;;13306:342;13248:400:::0;:::o;18975:246::-;19074:4;19109:10;19130:38;19146:4;19109:10;19161:6;19130:15;:38::i;:::-;19186:27;19196:4;19202:2;19206:6;19186:9;:27::i;:::-;19179:34;;;18975:246;;;;;;:::o;19233:247::-;19323:4;19359:10;19380:70;19359:10;19399:7;19439:10;19408:28;19359:10;19399:7;19408:9;:28::i;:::-;:41;;;;:::i;:::-;19380:8;:70::i;12474:363::-;4053:13;:11;:13::i;:::-;12549:11:::1;::::0;;;::::1;;;12545:46;;;12571:17;;-1:-1:-1::0;;;12571:17:0::1;;;;;;;;;;;12545:46;12620:9;12605:24;;:11;;;;;;;;;;;:24;;::::0;12601:74:::1;;12640:32;::::0;-1:-1:-1;;;12640:32:0;;1305:14:1;;1298:22;12640:32:0::1;::::0;::::1;1280:41:1::0;1253:18;;12640:32:0::1;1140:187:1::0;12601:74:0::1;12702:11;::::0;;-1:-1:-1;;12724:23:0;::::1;12702:11;12724:23:::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;12763:66:::1;::::0;12702:11;;::::1;;;::::0;12763:66:::1;::::0;::::1;::::0;12702:11;;12724:23;;12801:10:::1;::::0;12813:15:::1;::::0;12763:66:::1;:::i;12845:395::-:0;4053:13;:11;:13::i;:::-;12917:11:::1;::::0;;;::::1;;;12913:46;;;12939:17;;-1:-1:-1::0;;;12939:17:0::1;;;;;;;;;;;12913:46;12983:6;;12973;:16:::0;12969:63:::1;;13000:29;::::0;-1:-1:-1;;;13000:29:0;;::::1;::::0;::::1;1798:25:1::0;;;1771:18;;13000:29:0::1;1652:177:1::0;12969:63:0::1;13055:5;13046:6;:14;13042:58;;;13071:26;::::0;-1:-1:-1;;;13071:26:0;;13091:5:::1;13071:26;::::0;::::1;1798:25:1::0;1771:18;;13071:26:0::1;1652:177:1::0;13042:58:0::1;13127:6;::::0;;13144:15;;;;13175:57:::1;::::0;::::1;::::0;::::1;::::0;13127:6;;13153;;13204:10:::1;::::0;13216:15:::1;::::0;13175:57:::1;:::i;12057:185::-:0;4053:13;:11;:13::i;:::-;12110:11:::1;::::0;;;::::1;;;12106:46;;;12132:17;;-1:-1:-1::0;;;12132:17:0::1;;;;;;;;;;;12106:46;12162:11;:18:::0;;-1:-1:-1;;12162:18:0::1;::::0;::::1;::::0;;12196:38:::1;::::0;;12206:10:::1;7364:51:1::0;;12218:15:0::1;7446:2:1::0;7431:18;;7424:34;12196:38:0::1;::::0;7337:18:1;12196:38:0::1;;;;;;;;12057:185::o:0;15526:326::-;4053:13;:11;:13::i;:::-;-1:-1:-1;;;;;15608:16:0;::::1;;::::0;;;:8:::1;:16;::::0;;;;;:26;::::1;;:16;::::0;;::::1;:26;;::::0;15604:73:::1;;15645:29;::::0;-1:-1:-1;;;15645:29:0;;1305:14:1;;1298:22;15645:29:0::1;::::0;::::1;1280:41:1::0;1253:18;;15645:29:0::1;1140:187:1::0;15604:73:0::1;15725:4;-1:-1:-1::0;;;;;15691:39:0::1;15697:6;-1:-1:-1::0;;;;;15691:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15691:39:0::1;;;:82;;;;;15768:4;-1:-1:-1::0;;;;;15734:39:0::1;15740:6;-1:-1:-1::0;;;;;15734:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15734:39:0::1;;;15691:82;15687:122;;;15784:22;::::0;-1:-1:-1;;;15784:22:0;;-1:-1:-1;;;;;3638:32:1;;15784:22:0::1;::::0;::::1;3620:51:1::0;3593:18;;15784:22:0::1;3474:203:1::0;15687:122:0::1;-1:-1:-1::0;;;;;15819:16:0;;;::::1;;::::0;;;:8:::1;:16;::::0;;;;:25;;-1:-1:-1;;15819:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15526:326::o;17114:213::-;4053:13;:11;:13::i;:::-;17215:6:::1;17188:23;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17259:15:0::1;17232:24;:42:::0;17285:34:::1;17295:6:::0;17311::::1;17285:9;:34::i;:::-;17114:213:::0;:::o;10798:319::-;10875:13;5775:6;10907:11;;10891:13;18222:12;;;18134:108;10891:13;:27;;;;:::i;:::-;:44;;;;:::i;:::-;-1:-1:-1;;;;;10951:29:0;;;;;;:25;:29;;;;;;10875:60;;-1:-1:-1;10951:29:0;;10946:164;;11026:5;11017:6;11001:13;11011:2;-1:-1:-1;;;;;18355:18:0;18328:7;18355:18;;;:9;:18;;;;;;;18254:127;11001:13;:22;;;;:::i;:::-;:30;10997:102;;;11059:24;;-1:-1:-1;;;11059:24:0;;;;;1798:25:1;;;1771:18;;11059:24:0;1652:177:1;10997:102:0;10864:253;10798:319;;:::o;4713:103::-;4053:13;:11;:13::i;:::-;4778:30:::1;4805:1;4778:18;:30::i;:::-;4713:103::o:0;11745:304::-;4053:13;:11;:13::i;:::-;11833:10:::1;11822:7;;:21:::0;11818:72:::1;;11854:33;::::0;-1:-1:-1;;;11854:33:0;;::::1;::::0;::::1;1798:25:1::0;;;1771:18;;11854:33:0::1;1652:177:1::0;11818:72:0::1;11921:7;::::0;;11939:20;;;;11975:66:::1;::::0;::::1;::::0;::::1;::::0;11921:7;;11949:10;;12013::::1;::::0;12025:15:::1;::::0;11975:66:::1;:::i;13656:420::-:0;4053:13;:11;:13::i;:::-;13733:11:::1;::::0;;;::::1;;;13729:46;;;13755:17;;-1:-1:-1::0;;;13755:17:0::1;;;;;;;;;;;13729:46;13799:11;;13789:6;:21:::0;13785:68:::1;;13821:29;::::0;-1:-1:-1;;;13821:29:0;;::::1;::::0;::::1;1798:25:1::0;;;1771:18;;13821:29:0::1;1652:177:1::0;13785:68:0::1;13876:5;13867:6;:14;13863:58;;;13892:26;::::0;-1:-1:-1;;;13892:26:0;;13912:5:::1;13892:26;::::0;::::1;1798:25:1::0;1771:18;;13892:26:0::1;1652:177:1::0;13863:58:0::1;13948:11;::::0;;13970:20;;;;14006:62:::1;::::0;::::1;::::0;::::1;::::0;13948:11;;13984:6;;14040:10:::1;::::0;14052:15:::1;::::0;14006:62:::1;:::i;9407:472::-:0;4053:13;:11;:13::i;:::-;9466:12:::1;::::0;::::1;;9462:68;;;9514:12;::::0;9489:38:::1;::::0;-1:-1:-1;;;9489:38:0;;9514:12:::1;::::0;;::::1;1305:14:1::0;1298:22;9489:38:0::1;::::0;::::1;1280:41:1::0;1253:18;;9489:38:0::1;1140:187:1::0;9462:68:0::1;9544:11;::::0;::::1;::::0;::::1;;;9540:63;;;9588:11;::::0;9566:34:::1;::::0;-1:-1:-1;;;9566:34:0;;9588:11:::1;::::0;;::::1;;;1305:14:1::0;1298:22;9566:34:0::1;::::0;::::1;1280:41:1::0;1253:18;;9566:34:0::1;1140:187:1::0;9540:63:0::1;9617:13;::::0;;;::::1;;;9613:69;;;9665:13;::::0;9641:38:::1;::::0;-1:-1:-1;;;9641:38:0;;9665:13;;;::::1;;;1305:14:1::0;1298:22;9641:38:0::1;::::0;::::1;1280:41:1::0;1253:18;;9641:38:0::1;1140:187:1::0;9613:69:0::1;9692:12;:19:::0;;-1:-1:-1;;9751:20:0;;;;;9799:15:::1;9782:14;:32:::0;;;9830:41:::1;::::0;;9844:10:::1;7364:51:1::0;;7446:2;7431:18;;7424:34;;;;9830:41:0::1;::::0;7337:18:1;9830:41:0::1;7190:274:1::0;14425:317:0;4053:13;:11;:13::i;:::-;14519:9:::1;14502:26;;:13;;;;;;;;;;;:26;;::::0;14498:76:::1;;14539:32;::::0;-1:-1:-1;;;14539:32:0;;1305:14:1;;1298:22;14539:32:0::1;::::0;::::1;1280:41:1::0;1253:18;;14539:32:0::1;1140:187:1::0;14498:76:0::1;14601:13;::::0;;-1:-1:-1;;14625:25:0;::::1;14601:13:::0;14625:25;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;14666:68:::1;::::0;14601:13;;::::1;;;::::0;14666:68:::1;::::0;::::1;::::0;14601:13;;14625:25;;14706:10:::1;::::0;14718:15:::1;::::0;14666:68:::1;:::i;10637:153::-:0;18355:9;:18;;;;10750:6;10689:7;18355:18;;;;;18222:12;;10689:7;;18355:18;10716:42;;18355:18;10716:42;:::i;:::-;:66;;;;:::i;:::-;10709:73;;10637:153;:::o;19492:445::-;19587:4;19623:10;19587:4;19671:28;19623:10;19691:7;19671:9;:28::i;:::-;19644:55;;19738:15;19718:16;:35;;19710:85;;;;-1:-1:-1;;;19710:85:0;;8199:2:1;19710:85:0;;;8181:21:1;8238:2;8218:18;;;8211:30;8277:34;8257:18;;;8250:62;-1:-1:-1;;;8328:18:1;;;8321:35;8373:19;;19710:85:0;7997:401:1;19710:85:0;19831:63;19840:8;19850:7;19878:15;19859:16;:34;19831:8;:63::i;:::-;-1:-1:-1;19925:4:0;;19492:445;-1:-1:-1;;;;19492:445:0:o;18393:184::-;18474:4;18510:10;18538:31;18510:10;18558:2;18562:6;18538:9;:31::i;:::-;18531:38;18393:184;-1:-1:-1;;;;18393:184:0:o;12250:216::-;4053:13;:11;:13::i;:::-;12314:15:::1;::::0;-1:-1:-1;;;12314:15:0;::::1;;;12309:54;;12340:20;;-1:-1:-1::0;;;12340:20:0::1;;;;;;;;;;;12309:54;12373:15;:23:::0;;-1:-1:-1;;12373:23:0::1;::::0;;12412:46:::1;::::0;;12430:10:::1;7364:51:1::0;;12442:15:0::1;7446:2:1::0;7431:18;;7424:34;12412:46:0::1;::::0;7337:18:1;12412:46:0::1;7190:274:1::0;14084:333:0;4053:13;:11;:13::i;:::-;14166:11:::1;::::0;-1:-1:-1;;;;;14166:26:0;;::::1;-1:-1:-1::0;;;14166:11:0;;::::1;;:26:::0;14162:80:::1;;14203:36;::::0;-1:-1:-1;;;14203:36:0;;-1:-1:-1;;;;;3638:32:1;;14203:36:0::1;::::0;::::1;3620:51:1::0;3593:18;;14203:36:0::1;3474:203:1::0;14162:80:0::1;14274:11;::::0;;-1:-1:-1;;;;;14296:25:0;;::::1;-1:-1:-1::0;;;14296:25:0;;::::1;-1:-1:-1::0;;;;;;14296:25:0;::::1;;::::0;;;14337:72:::1;::::0;;14274:11;;;::::1;::::0;;::::1;8672:34:1::0;;;8737:2;8722:18;;8715:43;;;;14381:10:0::1;8774:18:1::0;;;8767:43;;;;14393:15:0::1;8841:2:1::0;8826:18;;8819:34;14274:11:0;14337:72:::1;::::0;8621:3:1;8606:19;14337:72:0::1;8403:456:1::0;11145:592:0;4053:13;:11;:13::i;:::-;11228:6:::1;::::0;-1:-1:-1;;;;;11220:28:0;;::::1;11228:6:::0;::::1;11220:28:::0;11216:80:::1;;11259:34;::::0;-1:-1:-1;;;11259:34:0;;-1:-1:-1;;;;;3638:32:1;;11259:34:0::1;::::0;::::1;3620:51:1::0;3593:18;;11259:34:0::1;3474:203:1::0;11216:80:0::1;11334:6;::::0;;-1:-1:-1;;;;;11352:27:0;;::::1;-1:-1:-1::0;;;;;;11352:27:0;::::1;::::0;::::1;::::0;;-1:-1:-1;11400:28:0;;;:17:::1;:28;::::0;;;;;;;;:35;;-1:-1:-1;;11400:35:0::1;::::0;;::::1;::::0;;;11453:63;;11334:6;;;::::1;8672:34:1::0;;;8722:18;;;8715:43;11488:10:0::1;8774:18:1::0;;;8767:43;;;;11500:15:0::1;8841:2:1::0;8826:18;;8819:34;11453:63:0::1;::::0;8621:3:1;8606:19;11453:63:0::1;;;;;;;11543:6;;;;;;;;;-1:-1:-1::0;;;;;11543:6:0::1;-1:-1:-1::0;;;;;11543:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11534:37:0::1;;11580:4;11587:6;;;;;;;;;-1:-1:-1::0;;;;;11587:6:0::1;-1:-1:-1::0;;;;;11587:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11534:67;::::0;-1:-1:-1;;;;;;11534:67:0::1;::::0;;;;;;-1:-1:-1;;;;;9094:15:1;;;11534:67:0::1;::::0;::::1;9076:34:1::0;9146:15;;9126:18;;;9119:43;9011:18;;11534:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11527:4;:74:::0;;-1:-1:-1;;;;;11527:74:0;;;::::1;-1:-1:-1::0;;;;;;11527:74:0;;::::1;::::0;::::1;::::0;;:4:::1;11612:14:::0;;;:8:::1;:14;::::0;;;;:21;;-1:-1:-1;;11612:21:0::1;11527:74:::0;11612:21:::1;::::0;;11648:15:::1;::::0;-1:-1:-1;;;11648:15:0;::::1;11612:21;11648:15;11644:86;;;11706:4;::::0;-1:-1:-1;;;;;11706:4:0::1;11680:31;::::0;;;:25:::1;:31;::::0;;;;:38;;-1:-1:-1;;11680:38:0::1;11714:4;11680:38;::::0;;11644:86:::1;11205:532;11145:592:::0;:::o;14750:360::-;4053:13;:11;:13::i;:::-;-1:-1:-1;;;;;14842:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;:36;::::1;;:23;::::0;;::::1;:36;;::::0;14838:86:::1;;14889:32;::::0;-1:-1:-1;;;14889:32:0;;1305:14:1;;1298:22;14889:32:0::1;::::0;::::1;1280:41:1::0;1253:18;;14889:32:0::1;1140:187:1::0;14838:86:0::1;-1:-1:-1::0;;;;;14951:23:0;::::1;14934:14;14951:23:::0;;;:17:::1;:23;::::0;;;;;;;;14985:35;::::1;;-1:-1:-1::0;;14985:35:0;::::1;;::::0;;;15036:66;;14951:23:::1;::::0;;::::1;::::0;15036:66:::1;::::0;::::1;::::0;14951:23;;15011:9;;15074:10:::1;::::0;15086:15:::1;::::0;15036:66:::1;:::i;:::-;;;;;;;;14827:283;14750:360:::0;;:::o;18589:157::-;-1:-1:-1;;;;;18708:21:0;;;18681:7;18708:21;;;:11;:21;;;;;;;;:30;;;;;;;;;;;;;18589:157::o;4824:213::-;4053:13;:11;:13::i;:::-;-1:-1:-1;;;;;4909:22:0;::::1;4905:86;;4955:24;::::0;-1:-1:-1;;;4955:24:0;;4976:1:::1;4955:24;::::0;::::1;3620:51:1::0;3593:18;;4955:24:0::1;3474:203:1::0;4905:86:0::1;5001:28;5020:8;5001:18;:28::i;15118:400::-:0;4053:13;:11;:13::i;:::-;-1:-1:-1;;;;;15218:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;:44;::::1;;:31;::::0;;::::1;:44;;::::0;15214:94:::1;;15273:32;::::0;-1:-1:-1;;;15273:32:0;;1305:14:1;;1298:22;15273:32:0::1;::::0;::::1;1280:41:1::0;1253:18;;15273:32:0::1;1140:187:1::0;15214:94:0::1;-1:-1:-1::0;;;;;15335:31:0;::::1;15318:14;15335:31:::0;;;:25:::1;:31;::::0;;;;;;;;15377:43;::::1;;-1:-1:-1::0;;15377:43:0;::::1;;::::0;;;15436:74;;15335:31:::1;::::0;;::::1;::::0;15436:74:::1;::::0;::::1;::::0;15335:31;;15411:9;;15482:10:::1;::::0;15494:15:::1;::::0;15436:74:::1;:::i;20265:343::-:0;-1:-1:-1;;;;;20366:22:0;;20362:64;;20399:24;;-1:-1:-1;;;20399:24:0;;-1:-1:-1;;;;;3638:32:1;;20399:24:0;;;3620:51:1;3593:18;;20399:24:0;3474:203:1;20362:64:0;-1:-1:-1;;;;;20440:21:0;;20436:62;;20472:23;;-1:-1:-1;;;20472:23:0;;-1:-1:-1;;;;;3638:32:1;;20472:23:0;;;3620:51:1;3593:18;;20472:23:0;3474:203:1;20436:62:0;-1:-1:-1;;;;;20510:21:0;;;;;;;:11;:21;;;;;;;;:30;;;;;;;;;;;;;:39;;;20565:35;;1798:25:1;;;20565:35:0;;1771:18:1;20565:35:0;;;;;;;20265:343;;;:::o;4550:155::-;4621:10;4610:7;4501;4528:6;-1:-1:-1;;;;;4528:6:0;;4455:87;4610:7;-1:-1:-1;;;;;4610:21:0;;4606:92;;4655:31;;-1:-1:-1;;;4655:31:0;;4675:10;4655:31;;;3620:51:1;3593:18;;4655:31:0;3474:203:1;20620:428:0;20724:24;20751:28;20761:8;20771:7;20751:9;:28::i;:::-;20724:55;;-1:-1:-1;;20794:16:0;:37;20790:251;;20876:6;20856:16;:26;;20848:68;;;;-1:-1:-1;;;20848:68:0;;9375:2:1;20848:68:0;;;9357:21:1;9414:2;9394:18;;;9387:30;9453:31;9433:18;;;9426:59;9502:18;;20848:68:0;9173:353:1;20848:68:0;20960:54;20969:8;20979:7;21007:6;20988:16;:25;20960:8;:54::i;:::-;20713:335;20620:428;;;:::o;21535:1249::-;21622:4;-1:-1:-1;;;;;21643:18:0;;21639:56;;21672:20;;-1:-1:-1;;;21672:20:0;;-1:-1:-1;;;;;3638:32:1;;21672:20:0;;;3620:51:1;3593:18;;21672:20:0;3474:203:1;21639:56:0;-1:-1:-1;;;;;21709:16:0;;21705:52;;21736:18;;-1:-1:-1;;;21736:18:0;;-1:-1:-1;;;;;3638:32:1;;21736:18:0;;;3620:51:1;3593:18;;21736::0;3474:203:1;21705:52:0;21774:12;;;;21773:13;:41;;;;-1:-1:-1;;;;;;21791:23:0;;;;;;:17;:23;;;;;;;;21790:24;21773:41;:67;;;;-1:-1:-1;;;;;;21819:21:0;;;;;;:17;:21;;;;;;;;21818:22;21773:67;21769:122;;;21864:15;;-1:-1:-1;;;21864:15:0;;;;;;;;;;;21769:122;21907:6;;-1:-1:-1;;;21907:6:0;;;;;:33;;-1:-1:-1;;;;;;21917:23:0;;;;;;:17;:23;;;;;;;;21907:33;21903:105;;;21964:32;21979:4;21985:2;21989:6;21964:14;:32::i;:::-;21957:39;;;;21903:105;22032:4;;-1:-1:-1;;;;;22024:12:0;;;22032:4;;22024:12;;;;:29;;-1:-1:-1;22040:13:0;;;;;;;22024:29;:68;;;;-1:-1:-1;22085:7:0;;22075:4;18328:7;18355:18;;;:9;:18;;;;;;22057:35;;22024:68;:119;;;;;22136:7;;22116:16;;22096:17;;:36;;;;:::i;:::-;:47;;22024:119;22020:171;;;22160:19;22171:7;;22160:10;:19::i;:::-;22246:11;;22223:6;;22246:11;;;;;:39;;;;-1:-1:-1;;;;;;22262:23:0;;;;;;:17;:23;;;;;;;;22261:24;22246:39;:65;;;;-1:-1:-1;;;;;;22290:21:0;;;;;;:17;:21;;;;;;;;22289:22;22246:65;22242:148;;;22340:38;22361:4;22367:2;22371:6;22340:20;:38::i;:::-;22328:50;;22242:148;22406:15;;-1:-1:-1;;;22406:15:0;;;;22402:79;;;22438:31;22455:9;22466:2;22438:16;:31::i;:::-;-1:-1:-1;;;;;22501:15:0;;;;;;:9;:15;;;;;;:28;-1:-1:-1;22501:28:0;22493:79;;;;-1:-1:-1;;;22493:79:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22626:15:0;;;;;;;:9;:15;;;;;;;;:27;;;22608:45;;22668:13;;;;;;;;;;:26;;;;;;22723:29;;;;;;22644:9;1798:25:1;;1786:2;1771:18;;1652:177;22723:29:0;;;;;;;;-1:-1:-1;22772:4:0;;21535:1249;-1:-1:-1;;;;21535:1249:0:o;17335:420::-;7049:6;:13;;-1:-1:-1;;;;7049:13:0;-1:-1:-1;;;7049:13:0;;;-1:-1:-1;;17415:10:0::1;:29:::0;17411:78:::1;;17455:31;::::0;-1:-1:-1;;;17455:31:0;;17478:6:::1;17455:31;::::0;::::1;3620:51:1::0;3593:18;;17455:31:0::1;3474:203:1::0;17411:78:0::1;17523:16;::::0;;17537:1:::1;17523:16:::0;;;;;::::1;::::0;;17499:21:::1;::::0;17523:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;17560:6:0::1;::::0;:13:::1;::::0;;-1:-1:-1;;;17560:13:0;;;;17499:40;;-1:-1:-1;;;;;;17560:6:0;;::::1;::::0;:11:::1;::::0;-1:-1:-1;17560:13:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17550:4;17555:1;17550:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;17550:23:0::1;;;-1:-1:-1::0;;;;;17550:23:0::1;;;::::0;::::1;17602:4;17584;17589:1;17584:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17584:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;17620:6:::1;::::0;:127:::1;::::0;-1:-1:-1;;;17620:127:0;;:6;::::1;::::0;:57:::1;::::0;17699:6;;17620:127:::1;::::0;:6:::1;::::0;17721:4;;17727:2;;17731:15:::1;::::0;17620:127:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;7085:6:0;:14;;-1:-1:-1;;;;7085:14:0;;;-1:-1:-1;;;;;;17335:420:0:o;5045:191::-;5119:16;5138:6;;-1:-1:-1;;;;;5155:17:0;;;-1:-1:-1;;;;;;5155:17:0;;;;;;5188:40;;5138:6;;;;;;;5188:40;;5119:16;5188:40;5108:128;5045:191;:::o;21080:419::-;-1:-1:-1;;;;;21204:15:0;;21165:4;21204:15;;;:9;:15;;;;;;21238:21;;;;21230:72;;;;-1:-1:-1;;;21230:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21338:15:0;;;;;;;:9;:15;;;;;;21356:20;;;21338:38;;21391:13;;;;;;;;;;:23;;;;;;21443:26;;;;;;21370:6;1798:25:1;;1786:2;1771:18;;1652:177;22792:628:0;7049:6;:13;;-1:-1:-1;;;;7049:13:0;-1:-1:-1;;;7049:13:0;;;-1:-1:-1;;;;;22931:14:0;::::1;22899:7:::0;22931:14;;;:8:::1;:14;::::0;;;;;7049:13;22931:14:::1;22927:136;;;22966:6;::::0;:10;22962:90:::1;;23004:32;23015:4;23021:6;23029;;23004:10;:32::i;:::-;22997:39;;;;22962:90;-1:-1:-1::0;;;;;23077:12:0;::::1;;::::0;;;:8:::1;:12;::::0;;;;;::::1;;23073:137;;;23110:7;::::0;:11;23106:93:::1;;23149:34;23161:4;23167:6;23175:7;;23149:11;:34::i;23106:93::-;-1:-1:-1::0;;;;;23225:14:0;::::1;;::::0;;;:8:::1;:14;::::0;;;;;::::1;;23224:15;:32:::0;::::1;;;-1:-1:-1::0;;;;;;23244:12:0;::::1;;::::0;;;:8:::1;:12;::::0;;;;;::::1;;23243:13;23224:32;23220:169;;;23277:11;::::0;:15;23273:105:::1;;23320:42;23336:4;23342:6;23350:11;;23320:15;:42::i;23273:105::-;-1:-1:-1::0;23406:6:0;7073:1:::1;7085:6:::0;:14;;-1:-1:-1;;;;7085:14:0;;;22792:628;;-1:-1:-1;;;22792:628:0:o;15877:331::-;7049:6;:13;;-1:-1:-1;;;;7049:13:0;-1:-1:-1;;;7049:13:0;;;15967:7;;5775:6:::1;16007:12;16016:3:::0;16007:6;:12:::1;:::i;:::-;:29;;;;:::i;:::-;15987:49:::0;-1:-1:-1;16047:17:0::1;16067:18;15987:49:::0;16067:6;:18:::1;:::i;:::-;16047:38:::0;-1:-1:-1;16100:13:0;;16096:78:::1;;16130:32;16146:4;16152:9;16130:15;:32::i;:::-;7085:6:::0;:14;;-1:-1:-1;;;;7085:14:0;;;16191:9;15877:331;-1:-1:-1;;;;;15877:331:0:o;16900:185::-;7049:6;:13;;-1:-1:-1;;;;7049:13:0;-1:-1:-1;;;7049:13:0;;;16988:17:::1;:31:::0;;17009:10;;16988:17;7049:13;;16988:31:::1;::::0;17009:10;;16988:31:::1;:::i;:::-;::::0;;;-1:-1:-1;17030:47:0::1;::::0;-1:-1:-1;17045:4:0;17059::::1;17066:10:::0;17030:14:::1;:47::i;:::-;-1:-1:-1::0;;7085:6:0;:14;;-1:-1:-1;;;;7085:14:0;;;-1:-1:-1;16900:185:0:o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:548::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;483:3;668:1;663:2;654:6;643:9;639:22;635:31;628:42;738:2;731;727:7;722:2;714:6;710:15;706:29;695:9;691:45;687:54;679:62;;;;199:548;;;;:::o;752:131::-;-1:-1:-1;;;;;827:31:1;;817:42;;807:70;;873:1;870;863:12;888:247;947:6;1000:2;988:9;979:7;975:23;971:32;968:52;;;1016:1;1013;1006:12;968:52;1055:9;1042:23;1074:31;1099:5;1074:31;:::i;1332:315::-;1400:6;1408;1461:2;1449:9;1440:7;1436:23;1432:32;1429:52;;;1477:1;1474;1467:12;1429:52;1516:9;1503:23;1535:31;1560:5;1535:31;:::i;:::-;1585:5;1637:2;1622:18;;;;1609:32;;-1:-1:-1;;;1332:315:1:o;1834:456::-;1911:6;1919;1927;1980:2;1968:9;1959:7;1955:23;1951:32;1948:52;;;1996:1;1993;1986:12;1948:52;2035:9;2022:23;2054:31;2079:5;2054:31;:::i;:::-;2104:5;-1:-1:-1;2161:2:1;2146:18;;2133:32;2174:33;2133:32;2174:33;:::i;:::-;1834:456;;2226:7;;-1:-1:-1;;;2280:2:1;2265:18;;;;2252:32;;1834:456::o;2484:160::-;2549:20;;2605:13;;2598:21;2588:32;;2578:60;;2634:1;2631;2624:12;2578:60;2484:160;;;:::o;2649:180::-;2705:6;2758:2;2746:9;2737:7;2733:23;2729:32;2726:52;;;2774:1;2771;2764:12;2726:52;2797:26;2813:9;2797:26;:::i;2834:315::-;2899:6;2907;2960:2;2948:9;2939:7;2935:23;2931:32;2928:52;;;2976:1;2973;2966:12;2928:52;3015:9;3002:23;3034:31;3059:5;3034:31;:::i;:::-;3084:5;-1:-1:-1;3108:35:1;3139:2;3124:18;;3108:35;:::i;:::-;3098:45;;2834:315;;;;;:::o;3154:::-;3222:6;3230;3283:2;3271:9;3262:7;3258:23;3254:32;3251:52;;;3299:1;3296;3289:12;3251:52;3335:9;3322:23;3312:33;;3395:2;3384:9;3380:18;3367:32;3408:31;3433:5;3408:31;:::i;:::-;3458:5;3448:15;;;3154:315;;;;;:::o;3682:388::-;3750:6;3758;3811:2;3799:9;3790:7;3786:23;3782:32;3779:52;;;3827:1;3824;3817:12;3779:52;3866:9;3853:23;3885:31;3910:5;3885:31;:::i;:::-;3935:5;-1:-1:-1;3992:2:1;3977:18;;3964:32;4005:33;3964:32;4005:33;:::i;4298:127::-;4359:10;4354:3;4350:20;4347:1;4340:31;4390:4;4387:1;4380:15;4414:4;4411:1;4404:15;4430:125;4495:9;;;4516:10;;;4513:36;;;4529:18;;:::i;4692:127::-;4753:10;4748:3;4744:20;4741:1;4734:31;4784:4;4781:1;4774:15;4808:4;4805:1;4798:15;4824:251;4894:6;4947:2;4935:9;4926:7;4922:23;4918:32;4915:52;;;4963:1;4960;4953:12;4915:52;4995:9;4989:16;5014:31;5039:5;5014:31;:::i;5080:417::-;5311:25;;;5367:2;5352:18;;5345:34;;;;-1:-1:-1;;;;;5415:32:1;5410:2;5395:18;;5388:60;5479:2;5464:18;;5457:34;5298:3;5283:19;;5080:417::o;5502:461::-;5555:3;5593:5;5587:12;5620:6;5615:3;5608:19;5646:4;5675:2;5670:3;5666:12;5659:19;;5712:2;5705:5;5701:14;5733:1;5743:195;5757:6;5754:1;5751:13;5743:195;;;5822:13;;-1:-1:-1;;;;;5818:39:1;5806:52;;5878:12;;;;5913:15;;;;5854:1;5772:9;5743:195;;;-1:-1:-1;5954:3:1;;5502:461;-1:-1:-1;;;;;5502:461:1:o;5968:582::-;6267:6;6256:9;6249:25;6310:6;6305:2;6294:9;6290:18;6283:34;6353:3;6348:2;6337:9;6333:18;6326:31;6230:4;6374:57;6426:3;6415:9;6411:19;6403:6;6374:57;:::i;:::-;-1:-1:-1;;;;;6467:32:1;;;;6462:2;6447:18;;6440:60;-1:-1:-1;6531:3:1;6516:19;6509:35;6366:65;5968:582;-1:-1:-1;;;5968:582:1:o;6748:437::-;6992:14;;6985:22;6967:41;;7051:14;;7044:22;7039:2;7024:18;;7017:50;-1:-1:-1;;;;;7103:32:1;7098:2;7083:18;;7076:60;7167:2;7152:18;;7145:34;6954:3;6939:19;;6748:437::o;7469:168::-;7542:9;;;7573;;7590:15;;;7584:22;;7570:37;7560:71;;7611:18;;:::i;7642:217::-;7682:1;7708;7698:132;;7752:10;7747:3;7743:20;7740:1;7733:31;7787:4;7784:1;7777:15;7815:4;7812:1;7805:15;7698:132;-1:-1:-1;7844:9:1;;7642:217::o;7864:128::-;7931:9;;;7952:11;;;7949:37;;;7966:18;;:::i;9531:402::-;9733:2;9715:21;;;9772:2;9752:18;;;9745:30;9811:34;9806:2;9791:18;;9784:62;-1:-1:-1;;;9877:2:1;9862:18;;9855:36;9923:3;9908:19;;9531:402::o;9938:510::-;10209:6;10198:9;10191:25;10252:3;10247:2;10236:9;10232:18;10225:31;10172:4;10273:57;10325:3;10314:9;10310:19;10302:6;10273:57;:::i;:::-;-1:-1:-1;;;;;10366:32:1;;;;10361:2;10346:18;;10339:60;-1:-1:-1;10430:2:1;10415:18;10408:34;10265:65;9938:510;-1:-1:-1;;9938:510:1:o

Swarm Source

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