ETH Price: $3,095.03 (-1.07%)

Token

MonkaS (MONKAS)
 

Overview

Max Total Supply

420,696,969,696 MONKAS

Holders

329

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
iamglug.eth
Balance
0.000000134744484181 MONKAS

Value
$0.00
0x2074929d0ad65c7b19f17d68c9f13683d0cd0889
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
MonkaS

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-02
*/

/**
 Website  : https://monkas.info/
 Telegram : https://t.me/monkaSerc
 Twitter  : https://twitter.com/monkaScoin
**/

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

     /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

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

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0xdead), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
            // _balances[address(0xdead)] += amount;
        }

        emit Transfer(account, address(0xdead), amount);

        _afterTokenTransfer(account, address(0xdead), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}

contract MonkaS is ERC20, ERC20Burnable, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _interlock;
    bool public providingLiquidity = true;

    uint256 public tokenLiquidityThreshold = 4_206_969_696 * 10**decimals();
    uint256 public maxBuyLimit = 4_206_969_696 * 10**decimals();
    uint256 public maxSellLimit = 4_206_969_696 * 10**decimals();
    uint256 public maxWalletLimit = 8_413_939_393 * 10**decimals();

    address public marketingWallet = 0xB2D9e8e6109651D0796d5501902f7EAb1a3a4a7F;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 burn;
    }

    Taxes public taxes = Taxes(15, 0, 0);
    Taxes public sellTaxes = Taxes(69, 0, 0);
    Taxes public transferTaxes = Taxes(0, 0, 0);

    mapping(address => bool) public exemptFee;

    event LimitRemoved(uint256 maxBuy, uint256 maxSell, uint256 maxWallet);
    event BuyTaxesUpdated(uint256 marketing, uint256 liquidity, uint256 burn);
    event SellTaxesUpdated(uint256 marketing, uint256 liquidity, uint256 burn);
    event TransferTaxesUpdated(uint256 marketing, uint256 liquidity, uint256 burn);
    event TaxesRemoved(uint256 marketing, uint256 liquidity, uint256 burn);

    modifier lockTheSwap() {
        if (!_interlock) {
            _interlock = true;
            _;
            _interlock = false;
        }
    }

    constructor() ERC20("MonkaS", "MONKAS") {
        _tokengeneration(marketingWallet, 420_696_969_696 * 10**decimals());

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // uniswap V2
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[deadWallet] = true;
        exemptFee[msg.sender] = true;
        exemptFee[marketingWallet] = true;
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

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

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

        return true;
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (sender == pair && !exemptFee[recipient] && !_interlock) {
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(
                balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (
            sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_interlock
        ) {
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if (recipient != pair) {
                require(
                    balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        uint256 feeBurn;
        uint256 burnAmount;
        Taxes memory currentTaxes;

        //set fee to zero if fees in contract are handled or exempted
        if (_interlock || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing;
            feesum = feeswap;
            feeBurn = sellTaxes.burn;
            currentTaxes = sellTaxes;
        } else if (sender == pair) {
            feeswap =
                taxes.liquidity +
                taxes.marketing;
            feesum = feeswap;
            feeBurn = taxes.burn;
            currentTaxes = taxes;
        } else {
            feeswap =
                transferTaxes.liquidity +
                transferTaxes.marketing ;
            feesum = feeswap;
            feeBurn = transferTaxes.burn;
            currentTaxes = transferTaxes;
        }

        fee = (amount * feesum) / 100;
        burnAmount = (amount * feeBurn) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) Liquify(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - (fee + burnAmount));
        // burn the tokens
        if(burnAmount > 0) {
            super._burn(sender, burnAmount);
        }
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap {

        if(feeswap == 0){
            return;
        }

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity to pancake
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pancake pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadWallet,
            block.timestamp
        );
    }

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        require(new_amount <= 15_000_000 && new_amount > 0, "Swap threshold amount should be lower or euqal to 1.5% of tokens");
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function updateTax(uint256 _Buymarketing, uint256 _Sellmarketing) external onlyOwner {
        require (_Buymarketing <= 90);
        require (_Sellmarketing <= 90);
        taxes = Taxes(_Buymarketing, 0, 0);
        sellTaxes = Taxes(_Sellmarketing, 0, 0);
    }

    function renounce() external onlyOwner {
        maxBuyLimit = totalSupply();
        maxSellLimit = totalSupply();
        maxWalletLimit = totalSupply();

        taxes = Taxes(0, 0, 0);
        sellTaxes = Taxes(0, 0, 0);

        renounceOwnership();

        emit LimitRemoved(maxBuyLimit, maxSellLimit, maxWalletLimit);
        emit TaxesRemoved(0, 0, 0);
    }

    function rescueETH(uint256 weiAmount) external onlyOwner{
        payable(owner()).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"BuyTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"LimitRemoved","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":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"SellTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"TaxesRemoved","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":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"TransferTaxesUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","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":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Buymarketing","type":"uint256"},{"internalType":"uint256","name":"_Sellmarketing","type":"uint256"}],"name":"updateTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526007805460ff60a81b1916600160a81b17905562000020601290565b6200002d90600a620005c6565b6200003d9063fac14360620005de565b6008556200004e6012600a620005c6565b6200005e9063fac14360620005de565b6009556200006f6012600a620005c6565b6200007f9063fac14360620005de565b600a5560126200009190600a620005c6565b620000a2906401f58286c1620005de565b600b55600c80546001600160a01b03191673b2d9e8e6109651d0796d5501902f7eab1a3a4a7f1790556040805160608082018352600f80835260006020808501829052938501819052600d829055600e819055908190558351808301855260458082528185018390529085018290526010556011819055601281905583519182018452808252918101829052909101819052601381905560148190556015553480156200014e57600080fd5b50604051806040016040528060068152602001654d6f6e6b615360d01b815250604051806040016040528060068152602001654d4f4e4b415360d01b81525081600390816200019e91906200069d565b506004620001ad82826200069d565b505050620001ca620001c46200040760201b60201c565b6200040b565b600c5462000200906001600160a01b0316620001e96012600a620005c6565b620001fa906461f37e51e0620005de565b6200045d565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000280919062000769565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f4919062000769565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000342573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000368919062000769565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260166020526040808220805460ff1990811660019081179092557f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b5780548216831790553384528284208054821683179055600c5490941683529120805490921617905562000794565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000508578160001904821115620004ec57620004ec620004b1565b80851615620004fa57918102915b93841c9390800290620004cc565b509250929050565b6000826200052157506001620005c0565b816200053057506000620005c0565b8160018114620005495760028114620005545762000574565b6001915050620005c0565b60ff841115620005685762000568620004b1565b50506001821b620005c0565b5060208310610133831016604e8410600b841016171562000599575081810a620005c0565b620005a58383620004c7565b8060001904821115620005bc57620005bc620004b1565b0290505b92915050565b6000620005d760ff84168362000510565b9392505050565b8082028115828204841417620005c057620005c0620004b1565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200062357607f821691505b6020821081036200064457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200069857600081815260208120601f850160051c81016020861015620006735750805b601f850160051c820191505b8181101562000694578281556001016200067f565b5050505b505050565b81516001600160401b03811115620006b957620006b9620005f8565b620006d181620006ca84546200060e565b846200064a565b602080601f831160018114620007095760008415620006f05750858301515b600019600386901b1c1916600185901b17855562000694565b600085815260208120601f198616915b828110156200073a5788860151825594840194600190910190840162000719565b5085821015620007595787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200077c57600080fd5b81516001600160a01b0381168114620005d757600080fd5b61210e80620007a46000396000f3fe6080604052600436106102085760003560e01c8063728f8eea11610118578063a8aa1b31116100a0578063dd62ed3e1161006f578063dd62ed3e146105f2578063f2fde38b14610638578063f66895a314610658578063f887ea4014610677578063fbe6324e1461069757600080fd5b8063a8aa1b311461056d578063a9059cbb1461058d578063b15be2f5146105ad578063c5d32bb2146105c257600080fd5b80638cd4426d116100e75780638cd4426d146104da5780638da5cb5b146104fa57806395d89b41146105185780639e252f001461052d578063a457c2d71461054d57600080fd5b8063728f8eea1461044d57806375f0a8741461046c57806379cc6790146104a457806385141a77146104c457600080fd5b8063395093511161019b578063652e2f041161016a578063652e2f04146103c057806366a88d96146103d65780636aa5b37f146103ec57806370a0823114610402578063715018a61461043857600080fd5b8063395093511461032657806342966c681461034657806342b6fa11146103665780635331803c1461038657600080fd5b806318160ddd116101d757806318160ddd146102b557806323b872dd146102ca5780632f37aa6d146102ea578063313ce5671461030a57600080fd5b806306fdde0314610214578063095ea7b31461023f5780631340538f1461026f5780631675d8021461029157600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b506102296106b8565b6040516102369190611c7f565b60405180910390f35b34801561024b57600080fd5b5061025f61025a366004611ce2565b61074a565b6040519015158152602001610236565b34801561027b57600080fd5b5061028f61028a366004611d1c565b610761565b005b34801561029d57600080fd5b506102a760085481565b604051908152602001610236565b3480156102c157600080fd5b506002546102a7565b3480156102d657600080fd5b5061025f6102e5366004611d40565b6107b2565b3480156102f657600080fd5b5061028f610305366004611d81565b610863565b34801561031657600080fd5b5060405160128152602001610236565b34801561033257600080fd5b5061025f610341366004611ce2565b6108f8565b34801561035257600080fd5b5061028f610361366004611da3565b61092f565b34801561037257600080fd5b5061028f610381366004611da3565b61093c565b34801561039257600080fd5b506013546014546015546103a592919083565b60408051938452602084019290925290820152606001610236565b3480156103cc57600080fd5b506102a7600a5481565b3480156103e257600080fd5b506102a7600b5481565b3480156103f857600080fd5b506102a760095481565b34801561040e57600080fd5b506102a761041d366004611dbc565b6001600160a01b031660009081526020819052604090205490565b34801561044457600080fd5b5061028f610a09565b34801561045957600080fd5b50600d54600e54600f546103a592919083565b34801561047857600080fd5b50600c5461048c906001600160a01b031681565b6040516001600160a01b039091168152602001610236565b3480156104b057600080fd5b5061028f6104bf366004611ce2565b610a3f565b3480156104d057600080fd5b5061048c61dead81565b3480156104e657600080fd5b5061028f6104f5366004611ce2565b610a58565b34801561050657600080fd5b506005546001600160a01b031661048c565b34801561052457600080fd5b50610229610b19565b34801561053957600080fd5b5061028f610548366004611da3565b610b28565b34801561055957600080fd5b5061025f610568366004611ce2565b610b8c565b34801561057957600080fd5b5060075461048c906001600160a01b031681565b34801561059957600080fd5b5061025f6105a8366004611ce2565b610c27565b3480156105b957600080fd5b5061028f610c34565b3480156105ce57600080fd5b5061025f6105dd366004611dbc565b60166020526000908152604090205460ff1681565b3480156105fe57600080fd5b506102a761060d366004611dd9565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561064457600080fd5b5061028f610653366004611dbc565b610d51565b34801561066457600080fd5b506010546011546012546103a592919083565b34801561068357600080fd5b5060065461048c906001600160a01b031681565b3480156106a357600080fd5b5060075461025f90600160a81b900460ff1681565b6060600380546106c790611e12565b80601f01602080910402602001604051908101604052809291908181526020018280546106f390611e12565b80156107405780601f1061071557610100808354040283529160200191610740565b820191906000526020600020905b81548152906001019060200180831161072357829003601f168201915b5050505050905090565b6000610757338484610de9565b5060015b92915050565b6005546001600160a01b031633146107945760405162461bcd60e51b815260040161078b90611e4c565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b60006107bf848484610f0d565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108445760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161078b565b61085885336108538685611e97565b610de9565b506001949350505050565b6005546001600160a01b0316331461088d5760405162461bcd60e51b815260040161078b90611e4c565b605a82111561089b57600080fd5b605a8111156108a957600080fd5b604080516060808201835284825260006020808401829052928401819052600d95909555600e859055600f85905582519081018352838152908101849052018290526010556011819055601255565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610757918590610853908690611eaa565b610939338261142b565b50565b6005546001600160a01b031633146109665760405162461bcd60e51b815260040161078b90611e4c565b62e4e1c081111580156109795750600081115b6109ed576040805162461bcd60e51b81526020600482015260248101919091527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f20312e3525206f6620746f6b656e73606482015260840161078b565b6109f96012600a611fa1565b610a039082611fb0565b60085550565b6005546001600160a01b03163314610a335760405162461bcd60e51b815260040161078b90611e4c565b610a3d6000611561565b565b610a4a8233836115b3565b610a54828261142b565b5050565b6005546001600160a01b03163314610a825760405162461bcd60e51b815260040161078b90611e4c565b816001600160a01b031663a9059cbb610aa36005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b149190611fc7565b505050565b6060600480546106c790611e12565b6005546001600160a01b03163314610b525760405162461bcd60e51b815260040161078b90611e4c565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a54573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610c0e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161078b565b610c1d33856108538685611e97565b5060019392505050565b6000610757338484610f0d565b6005546001600160a01b03163314610c5e5760405162461bcd60e51b815260040161078b90611e4c565b600254600955600254600a55600254600b55604080516060808201835260008083526020808401829052928401819052600d819055600e819055600f8190558351918201845280825291810182905290910181905260108190556011819055601255610cc8610a09565b600954600a54600b5460408051938452602084019290925282820152517f71e50fc869ff266df718ea6817d210f1b19d3d84b5d3dcfb72735630d5403d359181900360600190a1604080516000808252602082018190528183015290517f2862e186e6f0269fce86721e7c136c9a03d0672316fb9a878885a07f0a2b09289181900360600190a1565b6005546001600160a01b03163314610d7b5760405162461bcd60e51b815260040161078b90611e4c565b6001600160a01b038116610de05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161078b565b61093981611561565b6001600160a01b038316610e4b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161078b565b6001600160a01b038216610eac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161078b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008111610f6f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161078b565b6007546001600160a01b038481169116148015610fa557506001600160a01b03821660009081526016602052604090205460ff16155b8015610fbb5750600754600160a01b900460ff16155b1561108d576009548111156110125760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d6974000000604482015260640161078b565b600b5481611035846001600160a01b031660009081526020819052604090205490565b61103f9190611eaa565b111561108d5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161078b565b6007546001600160a01b038481169116148015906110c457506001600160a01b03821660009081526016602052604090205460ff16155b80156110e957506001600160a01b03831660009081526016602052604090205460ff16155b80156110ff5750600754600160a01b900460ff16155b156111e657600a548111156111565760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d69740000604482015260640161078b565b6007546001600160a01b038381169116146111e657600b548161118e846001600160a01b031660009081526020819052604090205490565b6111989190611eaa565b11156111e65760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161078b565b600080600080600061121260405180606001604052806000815260200160008152602001600081525090565b600754600160a01b900460ff168061124257506001600160a01b03891660009081526016602052604090205460ff165b8061126557506001600160a01b03881660009081526016602052604090205460ff165b156112735760009350611358565b6007546001600160a01b03908116908916036112c8576010546011546112999190611eaa565b601254604080516060810182526010548152601154602082015290810182905291975087965093509050611358565b6007546001600160a01b03908116908a160361131d57600d54600e546112ee9190611eaa565b600f5460408051606081018252600d548152600e54602082015290810182905291975087965093509050611358565b60135460145461132d9190611eaa565b6015546040805160608101825260135481526014546020820152908101829052919750879650935090505b60646113648689611fb0565b61136e9190611fe4565b9350606461137c8489611fb0565b6113869190611fe4565b600754909250600160a81b900460ff1680156113b057506007546001600160a01b038a8116911614155b156113bf576113bf8682611645565b6113dd89896113ce8588611eaa565b6113d8908b611e97565b611782565b81156113ed576113ed898361142b565b83156114205785156114205760006064611407888a611fb0565b6114119190611fe4565b905061141e8a3083611782565b505b505050505050505050565b6001600160a01b03821661148b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161078b565b6001600160a01b038216600090815260208190526040902054818110156114ff5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161078b565b6001600160a01b038316600081815260208181526040918290208585039055600280548690039055905184815261dead92917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461163f57818110156116325760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161078b565b61163f8484848403610de9565b50505050565b600754600160a01b900460ff16610a54576007805460ff60a01b1916600160a01b17905581156117715730600090815260208190526040902054600854811061176f576001600854111561169857506008545b60006116a5846002611fb0565b90506000818460200151846116ba9190611fb0565b6116c49190611fe4565b905060006116d28285611e97565b9050476116de8261195a565b60006116ea8247611e97565b905060008760200151866116fe9190611e97565b6117089083611fe4565b9050600088602001518261171c9190611fb0565b9050801561172e5761172e8682611ab4565b885160009061173e846002611fb0565b6117489190611fb0565b9050801561176657600c54611766906001600160a01b031682611b66565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b0383166117e65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161078b565b6001600160a01b0382166118485760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161078b565b6001600160a01b038316600090815260208190526040902054818110156118c05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161078b565b6118ca8282611e97565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611900908490611eaa565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161194c91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061198f5761198f612006565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0c919061201c565b81600181518110611a1f57611a1f612006565b6001600160a01b039283166020918202929092010152600654611a459130911684610de9565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a7e908590600090869030904290600401612039565b600060405180830381600087803b158015611a9857600080fd5b505af1158015611aac573d6000803e3d6000fd5b505050505050565b600654611acc9030906001600160a01b031684610de9565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611b3a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b5f91906120aa565b5050505050565b80471015611bb65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161078b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611c03576040519150601f19603f3d011682016040523d82523d6000602084013e611c08565b606091505b5050905080610b145760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161078b565b600060208083528351808285015260005b81811015611cac57858101830151858201604001528201611c90565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461093957600080fd5b60008060408385031215611cf557600080fd5b8235611d0081611ccd565b946020939093013593505050565b801515811461093957600080fd5b600060208284031215611d2e57600080fd5b8135611d3981611d0e565b9392505050565b600080600060608486031215611d5557600080fd5b8335611d6081611ccd565b92506020840135611d7081611ccd565b929592945050506040919091013590565b60008060408385031215611d9457600080fd5b50508035926020909101359150565b600060208284031215611db557600080fd5b5035919050565b600060208284031215611dce57600080fd5b8135611d3981611ccd565b60008060408385031215611dec57600080fd5b8235611df781611ccd565b91506020830135611e0781611ccd565b809150509250929050565b600181811c90821680611e2657607f821691505b602082108103611e4657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561075b5761075b611e81565b8082018082111561075b5761075b611e81565b600181815b80851115611ef8578160001904821115611ede57611ede611e81565b80851615611eeb57918102915b93841c9390800290611ec2565b509250929050565b600082611f0f5750600161075b565b81611f1c5750600061075b565b8160018114611f325760028114611f3c57611f58565b600191505061075b565b60ff841115611f4d57611f4d611e81565b50506001821b61075b565b5060208310610133831016604e8410600b8410161715611f7b575081810a61075b565b611f858383611ebd565b8060001904821115611f9957611f99611e81565b029392505050565b6000611d3960ff841683611f00565b808202811582820484141761075b5761075b611e81565b600060208284031215611fd957600080fd5b8151611d3981611d0e565b60008261200157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561202e57600080fd5b8151611d3981611ccd565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120895784516001600160a01b031683529383019391830191600101612064565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156120bf57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212200371de7af9ebc9946ef141d04f15f7b4d2ad935a60e5cdb2901825665911ba4c64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102085760003560e01c8063728f8eea11610118578063a8aa1b31116100a0578063dd62ed3e1161006f578063dd62ed3e146105f2578063f2fde38b14610638578063f66895a314610658578063f887ea4014610677578063fbe6324e1461069757600080fd5b8063a8aa1b311461056d578063a9059cbb1461058d578063b15be2f5146105ad578063c5d32bb2146105c257600080fd5b80638cd4426d116100e75780638cd4426d146104da5780638da5cb5b146104fa57806395d89b41146105185780639e252f001461052d578063a457c2d71461054d57600080fd5b8063728f8eea1461044d57806375f0a8741461046c57806379cc6790146104a457806385141a77146104c457600080fd5b8063395093511161019b578063652e2f041161016a578063652e2f04146103c057806366a88d96146103d65780636aa5b37f146103ec57806370a0823114610402578063715018a61461043857600080fd5b8063395093511461032657806342966c681461034657806342b6fa11146103665780635331803c1461038657600080fd5b806318160ddd116101d757806318160ddd146102b557806323b872dd146102ca5780632f37aa6d146102ea578063313ce5671461030a57600080fd5b806306fdde0314610214578063095ea7b31461023f5780631340538f1461026f5780631675d8021461029157600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b506102296106b8565b6040516102369190611c7f565b60405180910390f35b34801561024b57600080fd5b5061025f61025a366004611ce2565b61074a565b6040519015158152602001610236565b34801561027b57600080fd5b5061028f61028a366004611d1c565b610761565b005b34801561029d57600080fd5b506102a760085481565b604051908152602001610236565b3480156102c157600080fd5b506002546102a7565b3480156102d657600080fd5b5061025f6102e5366004611d40565b6107b2565b3480156102f657600080fd5b5061028f610305366004611d81565b610863565b34801561031657600080fd5b5060405160128152602001610236565b34801561033257600080fd5b5061025f610341366004611ce2565b6108f8565b34801561035257600080fd5b5061028f610361366004611da3565b61092f565b34801561037257600080fd5b5061028f610381366004611da3565b61093c565b34801561039257600080fd5b506013546014546015546103a592919083565b60408051938452602084019290925290820152606001610236565b3480156103cc57600080fd5b506102a7600a5481565b3480156103e257600080fd5b506102a7600b5481565b3480156103f857600080fd5b506102a760095481565b34801561040e57600080fd5b506102a761041d366004611dbc565b6001600160a01b031660009081526020819052604090205490565b34801561044457600080fd5b5061028f610a09565b34801561045957600080fd5b50600d54600e54600f546103a592919083565b34801561047857600080fd5b50600c5461048c906001600160a01b031681565b6040516001600160a01b039091168152602001610236565b3480156104b057600080fd5b5061028f6104bf366004611ce2565b610a3f565b3480156104d057600080fd5b5061048c61dead81565b3480156104e657600080fd5b5061028f6104f5366004611ce2565b610a58565b34801561050657600080fd5b506005546001600160a01b031661048c565b34801561052457600080fd5b50610229610b19565b34801561053957600080fd5b5061028f610548366004611da3565b610b28565b34801561055957600080fd5b5061025f610568366004611ce2565b610b8c565b34801561057957600080fd5b5060075461048c906001600160a01b031681565b34801561059957600080fd5b5061025f6105a8366004611ce2565b610c27565b3480156105b957600080fd5b5061028f610c34565b3480156105ce57600080fd5b5061025f6105dd366004611dbc565b60166020526000908152604090205460ff1681565b3480156105fe57600080fd5b506102a761060d366004611dd9565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561064457600080fd5b5061028f610653366004611dbc565b610d51565b34801561066457600080fd5b506010546011546012546103a592919083565b34801561068357600080fd5b5060065461048c906001600160a01b031681565b3480156106a357600080fd5b5060075461025f90600160a81b900460ff1681565b6060600380546106c790611e12565b80601f01602080910402602001604051908101604052809291908181526020018280546106f390611e12565b80156107405780601f1061071557610100808354040283529160200191610740565b820191906000526020600020905b81548152906001019060200180831161072357829003601f168201915b5050505050905090565b6000610757338484610de9565b5060015b92915050565b6005546001600160a01b031633146107945760405162461bcd60e51b815260040161078b90611e4c565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b60006107bf848484610f0d565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108445760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161078b565b61085885336108538685611e97565b610de9565b506001949350505050565b6005546001600160a01b0316331461088d5760405162461bcd60e51b815260040161078b90611e4c565b605a82111561089b57600080fd5b605a8111156108a957600080fd5b604080516060808201835284825260006020808401829052928401819052600d95909555600e859055600f85905582519081018352838152908101849052018290526010556011819055601255565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610757918590610853908690611eaa565b610939338261142b565b50565b6005546001600160a01b031633146109665760405162461bcd60e51b815260040161078b90611e4c565b62e4e1c081111580156109795750600081115b6109ed576040805162461bcd60e51b81526020600482015260248101919091527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f20312e3525206f6620746f6b656e73606482015260840161078b565b6109f96012600a611fa1565b610a039082611fb0565b60085550565b6005546001600160a01b03163314610a335760405162461bcd60e51b815260040161078b90611e4c565b610a3d6000611561565b565b610a4a8233836115b3565b610a54828261142b565b5050565b6005546001600160a01b03163314610a825760405162461bcd60e51b815260040161078b90611e4c565b816001600160a01b031663a9059cbb610aa36005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b149190611fc7565b505050565b6060600480546106c790611e12565b6005546001600160a01b03163314610b525760405162461bcd60e51b815260040161078b90611e4c565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a54573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610c0e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161078b565b610c1d33856108538685611e97565b5060019392505050565b6000610757338484610f0d565b6005546001600160a01b03163314610c5e5760405162461bcd60e51b815260040161078b90611e4c565b600254600955600254600a55600254600b55604080516060808201835260008083526020808401829052928401819052600d819055600e819055600f8190558351918201845280825291810182905290910181905260108190556011819055601255610cc8610a09565b600954600a54600b5460408051938452602084019290925282820152517f71e50fc869ff266df718ea6817d210f1b19d3d84b5d3dcfb72735630d5403d359181900360600190a1604080516000808252602082018190528183015290517f2862e186e6f0269fce86721e7c136c9a03d0672316fb9a878885a07f0a2b09289181900360600190a1565b6005546001600160a01b03163314610d7b5760405162461bcd60e51b815260040161078b90611e4c565b6001600160a01b038116610de05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161078b565b61093981611561565b6001600160a01b038316610e4b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161078b565b6001600160a01b038216610eac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161078b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008111610f6f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161078b565b6007546001600160a01b038481169116148015610fa557506001600160a01b03821660009081526016602052604090205460ff16155b8015610fbb5750600754600160a01b900460ff16155b1561108d576009548111156110125760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d6974000000604482015260640161078b565b600b5481611035846001600160a01b031660009081526020819052604090205490565b61103f9190611eaa565b111561108d5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161078b565b6007546001600160a01b038481169116148015906110c457506001600160a01b03821660009081526016602052604090205460ff16155b80156110e957506001600160a01b03831660009081526016602052604090205460ff16155b80156110ff5750600754600160a01b900460ff16155b156111e657600a548111156111565760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d69740000604482015260640161078b565b6007546001600160a01b038381169116146111e657600b548161118e846001600160a01b031660009081526020819052604090205490565b6111989190611eaa565b11156111e65760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161078b565b600080600080600061121260405180606001604052806000815260200160008152602001600081525090565b600754600160a01b900460ff168061124257506001600160a01b03891660009081526016602052604090205460ff165b8061126557506001600160a01b03881660009081526016602052604090205460ff165b156112735760009350611358565b6007546001600160a01b03908116908916036112c8576010546011546112999190611eaa565b601254604080516060810182526010548152601154602082015290810182905291975087965093509050611358565b6007546001600160a01b03908116908a160361131d57600d54600e546112ee9190611eaa565b600f5460408051606081018252600d548152600e54602082015290810182905291975087965093509050611358565b60135460145461132d9190611eaa565b6015546040805160608101825260135481526014546020820152908101829052919750879650935090505b60646113648689611fb0565b61136e9190611fe4565b9350606461137c8489611fb0565b6113869190611fe4565b600754909250600160a81b900460ff1680156113b057506007546001600160a01b038a8116911614155b156113bf576113bf8682611645565b6113dd89896113ce8588611eaa565b6113d8908b611e97565b611782565b81156113ed576113ed898361142b565b83156114205785156114205760006064611407888a611fb0565b6114119190611fe4565b905061141e8a3083611782565b505b505050505050505050565b6001600160a01b03821661148b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161078b565b6001600160a01b038216600090815260208190526040902054818110156114ff5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161078b565b6001600160a01b038316600081815260208181526040918290208585039055600280548690039055905184815261dead92917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461163f57818110156116325760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161078b565b61163f8484848403610de9565b50505050565b600754600160a01b900460ff16610a54576007805460ff60a01b1916600160a01b17905581156117715730600090815260208190526040902054600854811061176f576001600854111561169857506008545b60006116a5846002611fb0565b90506000818460200151846116ba9190611fb0565b6116c49190611fe4565b905060006116d28285611e97565b9050476116de8261195a565b60006116ea8247611e97565b905060008760200151866116fe9190611e97565b6117089083611fe4565b9050600088602001518261171c9190611fb0565b9050801561172e5761172e8682611ab4565b885160009061173e846002611fb0565b6117489190611fb0565b9050801561176657600c54611766906001600160a01b031682611b66565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b0383166117e65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161078b565b6001600160a01b0382166118485760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161078b565b6001600160a01b038316600090815260208190526040902054818110156118c05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161078b565b6118ca8282611e97565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611900908490611eaa565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161194c91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061198f5761198f612006565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0c919061201c565b81600181518110611a1f57611a1f612006565b6001600160a01b039283166020918202929092010152600654611a459130911684610de9565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a7e908590600090869030904290600401612039565b600060405180830381600087803b158015611a9857600080fd5b505af1158015611aac573d6000803e3d6000fd5b505050505050565b600654611acc9030906001600160a01b031684610de9565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611b3a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b5f91906120aa565b5050505050565b80471015611bb65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161078b565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611c03576040519150601f19603f3d011682016040523d82523d6000602084013e611c08565b606091505b5050905080610b145760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161078b565b600060208083528351808285015260005b81811015611cac57858101830151858201604001528201611c90565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461093957600080fd5b60008060408385031215611cf557600080fd5b8235611d0081611ccd565b946020939093013593505050565b801515811461093957600080fd5b600060208284031215611d2e57600080fd5b8135611d3981611d0e565b9392505050565b600080600060608486031215611d5557600080fd5b8335611d6081611ccd565b92506020840135611d7081611ccd565b929592945050506040919091013590565b60008060408385031215611d9457600080fd5b50508035926020909101359150565b600060208284031215611db557600080fd5b5035919050565b600060208284031215611dce57600080fd5b8135611d3981611ccd565b60008060408385031215611dec57600080fd5b8235611df781611ccd565b91506020830135611e0781611ccd565b809150509250929050565b600181811c90821680611e2657607f821691505b602082108103611e4657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561075b5761075b611e81565b8082018082111561075b5761075b611e81565b600181815b80851115611ef8578160001904821115611ede57611ede611e81565b80851615611eeb57918102915b93841c9390800290611ec2565b509250929050565b600082611f0f5750600161075b565b81611f1c5750600061075b565b8160018114611f325760028114611f3c57611f58565b600191505061075b565b60ff841115611f4d57611f4d611e81565b50506001821b61075b565b5060208310610133831016604e8410600b8410161715611f7b575081810a61075b565b611f858383611ebd565b8060001904821115611f9957611f99611e81565b029392505050565b6000611d3960ff841683611f00565b808202811582820484141761075b5761075b611e81565b600060208284031215611fd957600080fd5b8151611d3981611d0e565b60008261200157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561202e57600080fd5b8151611d3981611ccd565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120895784516001600160a01b031683529383019391830191600101612064565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156120bf57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212200371de7af9ebc9946ef141d04f15f7b4d2ad935a60e5cdb2901825665911ba4c64736f6c63430008130033

Deployed Bytecode Sourcemap

16001:10313:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18083:161;;;;;;;;;;-1:-1:-1;18083:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;18083:161:0;1023:187:1;24863:152:0;;;;;;;;;;-1:-1:-1;24863:152:0;;;;;:::i;:::-;;:::i;:::-;;16231:71;;;;;;;;;;;;;;;;;;;1730:25:1;;;1718:2;1703:18;16231:71:0;1584:177:1;3619:108:0;;;;;;;;;;-1:-1:-1;3707:12:0;;3619:108;;18252:448;;;;;;;;;;-1:-1:-1;18252:448:0;;;;;:::i;:::-;;:::i;25338:269::-;;;;;;;;;;-1:-1:-1;25338:269:0;;;;;:::i;:::-;;:::i;3461:93::-;;;;;;;;;;-1:-1:-1;3461:93:0;;3544:2;2622:36:1;;2610:2;2595:18;3461:93:0;2480:184:1;18708:248:0;;;;;;;;;;-1:-1:-1;18708:248:0;;;;;:::i;:::-;;:::i;15420:91::-;;;;;;;;;;-1:-1:-1;15420:91:0;;;;;:::i;:::-;;:::i;25023:307::-;;;;;;;;;;-1:-1:-1;25023:307:0;;;;;:::i;:::-;;:::i;16878:43::-;;;;;;;;;;-1:-1:-1;16878:43:0;;;;;;;;;;;;;;;;3056:25:1;;;3112:2;3097:18;;3090:34;;;;3140:18;;;3133:34;3044:2;3029:18;16878:43:0;2854:319:1;16375:60:0;;;;;;;;;;;;;;;;16442:62;;;;;;;;;;;;;;;;16309:59;;;;;;;;;;;;;;;;3790:127;;;;;;;;;;-1:-1:-1;3790:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3891:18:0;3864:7;3891:18;;;;;;;;;;;;3790:127;13704:94;;;;;;;;;;;;;:::i;16788:36::-;;;;;;;;;;-1:-1:-1;16788:36:0;;;;;;;;;;;;16513:75;;;;;;;;;;-1:-1:-1;16513:75:0;;;;-1:-1:-1;;;;;16513:75:0;;;;;;-1:-1:-1;;;;;3594:32:1;;;3576:51;;3564:2;3549:18;16513:75:0;3430:203:1;15830:164:0;;;;;;;;;;-1:-1:-1;15830:164:0;;;;;:::i;:::-;;:::i;16592:79::-;;;;;;;;;;;;16629:42;16592:79;;26121:135;;;;;;;;;;-1:-1:-1;26121:135:0;;;;;:::i;:::-;;:::i;13481:87::-;;;;;;;;;;-1:-1:-1;13554:6:0;;-1:-1:-1;;;;;13554:6:0;13481:87;;2718:104;;;;;;;;;;;;;:::i;26002:111::-;;;;;;;;;;-1:-1:-1;26002:111:0;;;;;:::i;:::-;;:::i;18964:410::-;;;;;;;;;;-1:-1:-1;18964:410:0;;;;;:::i;:::-;;:::i;16127:19::-;;;;;;;;;;-1:-1:-1;16127:19:0;;;;-1:-1:-1;;;;;16127:19:0;;;19382:165;;;;;;;;;;-1:-1:-1;19382:165:0;;;;;:::i;:::-;;:::i;25615:379::-;;;;;;;;;;;;;:::i;16930:41::-;;;;;;;;;;-1:-1:-1;16930:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4409:201;;;;;;;;;;-1:-1:-1;4409:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4575:18:0;;;4543:7;4575:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4409:201;13806:192;;;;;;;;;;-1:-1:-1;13806:192:0;;;;;:::i;:::-;;:::i;16831:40::-;;;;;;;;;;-1:-1:-1;16831:40:0;;;;;;;;;;;;16099:21;;;;;;;;;;-1:-1:-1;16099:21:0;;;;-1:-1:-1;;;;;16099:21:0;;;16185:37;;;;;;;;;;-1:-1:-1;16185:37:0;;;;-1:-1:-1;;;16185:37:0;;;;;;2499:100;2553:13;2586:5;2579:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:100;:::o;18083:161::-;18158:4;18175:39;301:10;18198:7;18207:6;18175:8;:39::i;:::-;-1:-1:-1;18232:4:0;18083:161;;;;;:::o;24863:152::-;13554:6;;-1:-1:-1;;;;;13554:6:0;301:10;13616:23;13608:68;;;;-1:-1:-1;;;13608:68:0;;;;;;;:::i;:::-;;;;;;;;;24981:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;24981:26:0::1;-1:-1:-1::0;;;;24981:26:0;;::::1;::::0;;;::::1;::::0;;24863:152::o;18252:448::-;18384:4;18401:36;18411:6;18419:9;18430:6;18401:9;:36::i;:::-;-1:-1:-1;;;;;18477:19:0;;18450:24;18477:19;;;:11;:19;;;;;;;;301:10;18477:33;;;;;;;;18529:26;;;;18521:79;;;;-1:-1:-1;;;18521:79:0;;5202:2:1;18521:79:0;;;5184:21:1;5241:2;5221:18;;;5214:30;5280:34;5260:18;;;5253:62;-1:-1:-1;;;5331:18:1;;;5324:38;5379:19;;18521:79:0;5000:404:1;18521:79:0;18611:57;18620:6;301:10;18642:25;18661:6;18642:16;:25;:::i;:::-;18611:8;:57::i;:::-;-1:-1:-1;18688:4:0;;18252:448;-1:-1:-1;;;;18252:448:0:o;25338:269::-;13554:6;;-1:-1:-1;;;;;13554:6:0;301:10;13616:23;13608:68;;;;-1:-1:-1;;;13608:68:0;;;;;;;:::i;:::-;25460:2:::1;25443:13;:19;;25434:29;;;::::0;::::1;;25501:2;25483:14;:20;;25474:30;;;::::0;::::1;;25523:26;::::0;;::::1;::::0;;::::1;::::0;;;;;-1:-1:-1;25523:26:0::1;::::0;;::::1;::::0;;;;;;;;;25515:5:::1;:34:::0;;;;;;;;;;;;25572:27;;;;::::1;::::0;;;;;;;::::1;::::0;;;;;;;25560:9:::1;:39:::0;;;;;;;25338:269::o;18708:248::-;301:10;18824:4;18878:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18878:34:0;;;;;;;;;;18824:4;;18846:80;;18869:7;;18878:47;;18915:10;;18878:47;:::i;15420:91::-;15476:27;301:10;15496:6;15476:5;:27::i;:::-;15420:91;:::o;25023:307::-;13554:6;;-1:-1:-1;;;;;13554:6:0;301:10;13616:23;13608:68;;;;-1:-1:-1;;;13608:68:0;;;;;;;:::i;:::-;25161:10:::1;25147;:24;;:42;;;;;25188:1;25175:10;:14;25147:42;25139:119;;;::::0;;-1:-1:-1;;;25139:119:0;;6006:2:1;25139:119:0::1;::::0;::::1;5988:21:1::0;6025:18;;;6018:30;;;;6084:34;6064:18;;;6057:62;6155:34;6135:18;;;6128:62;6207:19;;25139:119:0::1;5804:428:1::0;25139:119:0::1;25308:14;3544:2:::0;25308::::1;:14;:::i;:::-;25295:27;::::0;:10;:27:::1;:::i;:::-;25269:23;:53:::0;-1:-1:-1;25023:307:0:o;13704:94::-;13554:6;;-1:-1:-1;;;;;13554:6:0;301:10;13616:23;13608:68;;;;-1:-1:-1;;;13608:68:0;;;;;;;:::i;:::-;13769:21:::1;13787:1;13769:9;:21::i;:::-;13704:94::o:0;15830:164::-;15907:46;15923:7;301:10;15946:6;15907:15;:46::i;:::-;15964:22;15970:7;15979:6;15964:5;:22::i;:::-;15830:164;;:::o;26121:135::-;13554:6;;-1:-1:-1;;;;;13554:6:0;301:10;13616:23;13608:68;;;;-1:-1:-1;;;13608:68:0;;;;;;;:::i;:::-;26213:8:::1;-1:-1:-1::0;;;;;26206:25:0::1;;26232:7;13554:6:::0;;-1:-1:-1;;;;;13554:6:0;;13481:87;26232:7:::1;26206:42;::::0;-1:-1:-1;;;;;;26206:42:0::1;::::0;;;;;;-1:-1:-1;;;;;7985:32:1;;;26206:42:0::1;::::0;::::1;7967:51:1::0;8034:18;;;8027:34;;;7940:18;;26206:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26121:135:::0;;:::o;2718:104::-;2774:13;2807:7;2800:14;;;;;:::i;26002:111::-;13554:6;;-1:-1:-1;;;;;13554:6:0;301:10;13616:23;13608:68;;;;-1:-1:-1;;;13608:68:0;;;;;;;:::i;:::-;13554:6;;26069:36:::1;::::0;-1:-1:-1;;;;;13554:6:0;;;;26069:36;::::1;;;::::0;26095:9;;26069:36:::1;::::0;;;26095:9;13554:6;26069:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;18964:410:::0;301:10;19085:4;19134:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19134:34:0;;;;;;;;;;19187:35;;;;19179:85;;;;-1:-1:-1;;;19179:85:0;;8524:2:1;19179:85:0;;;8506:21:1;8563:2;8543:18;;;8536:30;8602:34;8582:18;;;8575:62;-1:-1:-1;;;8653:18:1;;;8646:35;8698:19;;19179:85:0;8322:401:1;19179:85:0;19275:67;301:10;19298:7;19307:34;19326:15;19307:16;:34;:::i;19275:67::-;-1:-1:-1;19362:4:0;;18964:410;-1:-1:-1;;;18964:410:0:o;19382:165::-;19460:4;19477:40;19487:10;19499:9;19510:6;19477:9;:40::i;25615:379::-;13554:6;;-1:-1:-1;;;;;13554:6:0;301:10;13616:23;13608:68;;;;-1:-1:-1;;;13608:68:0;;;;;;;:::i;:::-;3707:12;;25665:11:::1;:27:::0;3707:12;;25703::::1;:28:::0;3707:12;;25742:14:::1;:30:::0;25793:14:::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;25793:14:0;;;::::1;::::0;;::::1;::::0;;;;;;;;;25785:5:::1;:22:::0;;;;;;;;;;;25830:14;;;;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;25818:9:::1;:26:::0;;;;;;;;;25857:19:::1;:17;:19::i;:::-;25907:11;::::0;25920:12:::1;::::0;25934:14:::1;::::0;25894:55:::1;::::0;;3056:25:1;;;3112:2;3097:18;;3090:34;;;;3140:18;;;3133:34;25894:55:0;::::1;::::0;;;;3044:2:1;25894:55:0;;::::1;25965:21;::::0;;25978:1:::1;3056:25:1::0;;;3112:2;3097:18;;3090:34;;;3140:18;;;3133:34;25965:21:0;;::::1;::::0;;;;3044:2:1;25965:21:0;;::::1;25615:379::o:0;13806:192::-;13554:6;;-1:-1:-1;;;;;13554:6:0;301:10;13616:23;13608:68;;;;-1:-1:-1;;;13608:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13895:22:0;::::1;13887:73;;;::::0;-1:-1:-1;;;13887:73:0;;9278:2:1;13887:73:0::1;::::0;::::1;9260:21:1::0;9317:2;9297:18;;;9290:30;9356:34;9336:18;;;9329:62;-1:-1:-1;;;9407:18:1;;;9400:36;9453:19;;13887:73:0::1;9076:402:1::0;13887:73:0::1;13971:19;13981:8;13971:9;:19::i;11129:380::-:0;-1:-1:-1;;;;;11265:19:0;;11257:68;;;;-1:-1:-1;;;11257:68:0;;9685:2:1;11257:68:0;;;9667:21:1;9724:2;9704:18;;;9697:30;9763:34;9743:18;;;9736:62;-1:-1:-1;;;9814:18:1;;;9807:34;9858:19;;11257:68:0;9483:400:1;11257:68:0;-1:-1:-1;;;;;11344:21:0;;11336:68;;;;-1:-1:-1;;;11336:68:0;;10090:2:1;11336:68:0;;;10072:21:1;10129:2;10109:18;;;10102:30;10168:34;10148:18;;;10141:62;-1:-1:-1;;;10219:18:1;;;10212:32;10261:19;;11336:68:0;9888:398:1;11336:68:0;-1:-1:-1;;;;;11417:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11469:32;;1730:25:1;;;11469:32:0;;1703:18:1;11469:32:0;;;;;;;11129:380;;;:::o;19555:2805::-;19705:1;19696:6;:10;19688:64;;;;-1:-1:-1;;;19688:64:0;;10493:2:1;19688:64:0;;;10475:21:1;10532:2;10512:18;;;10505:30;10571:34;10551:18;;;10544:62;-1:-1:-1;;;10622:18:1;;;10615:39;10671:19;;19688:64:0;10291:405:1;19688:64:0;19779:4;;-1:-1:-1;;;;;19769:14:0;;;19779:4;;19769:14;:39;;;;-1:-1:-1;;;;;;19788:20:0;;;;;;:9;:20;;;;;;;;19787:21;19769:39;:54;;;;-1:-1:-1;19813:10:0;;-1:-1:-1;;;19813:10:0;;;;19812:11;19769:54;19765:306;;;19858:11;;19848:6;:21;;19840:63;;;;-1:-1:-1;;;19840:63:0;;10903:2:1;19840:63:0;;;10885:21:1;10942:2;10922:18;;;10915:30;10981:31;10961:18;;;10954:59;11030:18;;19840:63:0;10701:353:1;19840:63:0;19977:14;;19967:6;19944:20;19954:9;-1:-1:-1;;;;;3891:18:0;3864:7;3891:18;;;;;;;;;;;;3790:127;19944:20;:29;;;;:::i;:::-;:47;;19918:141;;;;-1:-1:-1;;;19918:141:0;;11261:2:1;19918:141:0;;;11243:21:1;;;11280:18;;;11273:30;11339:34;11319:18;;;11312:62;11391:18;;19918:141:0;11059:356:1;19918:141:0;20111:4;;-1:-1:-1;;;;;20101:14:0;;;20111:4;;20101:14;;;;:39;;-1:-1:-1;;;;;;20120:20:0;;;;;;:9;:20;;;;;;;;20119:21;20101:39;:61;;;;-1:-1:-1;;;;;;20145:17:0;;;;;;:9;:17;;;;;;;;20144:18;20101:61;:76;;;;-1:-1:-1;20167:10:0;;-1:-1:-1;;;20167:10:0;;;;20166:11;20101:76;20083:423;;;20222:12;;20212:6;:22;;20204:65;;;;-1:-1:-1;;;20204:65:0;;11622:2:1;20204:65:0;;;11604:21:1;11661:2;11641:18;;;11634:30;11700:32;11680:18;;;11673:60;11750:18;;20204:65:0;11420:354:1;20204:65:0;20301:4;;-1:-1:-1;;;;;20288:17:0;;;20301:4;;20288:17;20284:211;;20389:14;;20379:6;20356:20;20366:9;-1:-1:-1;;;;;3891:18:0;3864:7;3891:18;;;;;;;;;;;;3790:127;20356:20;:29;;;;:::i;:::-;:47;;20326:153;;;;-1:-1:-1;;;20326:153:0;;11261:2:1;20326:153:0;;;11243:21:1;;;11280:18;;;11273:30;11339:34;11319:18;;;11312:62;11391:18;;20326:153:0;11059:356:1;20326:153:0;20518:15;20544:14;20569:11;20591:15;20617:18;20646:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;20646:25:0;20759:10;;-1:-1:-1;;;20759:10:0;;;;;:31;;-1:-1:-1;;;;;;20773:17:0;;;;;;:9;:17;;;;;;;;20759:31;:55;;;-1:-1:-1;;;;;;20794:20:0;;;;;;:9;:20;;;;;;;;20759:55;20755:847;;;20835:1;20829:7;;20755:847;;;20900:4;;-1:-1:-1;;;;;20900:4:0;;;20887:17;;;;20883:719;;20987:9;:19;20948;;:58;;20987:19;20948:58;:::i;:::-;21062:14;;21091:24;;;;;;;;21062:9;21091:24;;;;;;;;;;;;;;;20921:85;;-1:-1:-1;20921:85:0;;-1:-1:-1;21062:14:0;-1:-1:-1;21091:24:0;-1:-1:-1;20883:719:0;;;21147:4;;-1:-1:-1;;;;;21147:4:0;;;21137:14;;;;21133:469;;21230:5;:15;21195;;:50;;21230:15;21195:50;:::i;:::-;21301:10;;21326:20;;;;;;;;21301:5;21326:20;;;;;;;;;;;;;;;21168:77;;-1:-1:-1;21168:77:0;;-1:-1:-1;21301:10:0;-1:-1:-1;21326:20:0;-1:-1:-1;21133:469:0;;;21449:13;:23;21406;;:66;;21449:23;21406:66;:::i;:::-;21529:18;;21562:28;;;;;;;;21529:13;21562:28;;;;;;;;;;;;;;;21379:93;;-1:-1:-1;21379:93:0;;-1:-1:-1;21529:18:0;-1:-1:-1;21562:28:0;-1:-1:-1;21133:469:0;21640:3;21621:15;21630:6;21621;:15;:::i;:::-;21620:23;;;;:::i;:::-;21614:29;-1:-1:-1;21688:3:0;21668:16;21677:7;21668:6;:16;:::i;:::-;21667:24;;;;:::i;:::-;21805:18;;21654:37;;-1:-1:-1;;;;21805:18:0;;;;:36;;;;-1:-1:-1;21837:4:0;;-1:-1:-1;;;;;21827:14:0;;;21837:4;;21827:14;;21805:36;21801:72;;;21843:30;21851:7;21860:12;21843:7;:30::i;:::-;21915:63;21931:6;21939:9;21960:16;21966:10;21960:3;:16;:::i;:::-;21950:27;;:6;:27;:::i;:::-;21915:15;:63::i;:::-;22020:14;;22017:77;;22051:31;22063:6;22071:10;22051:11;:31::i;:::-;22108:7;;22104:249;;22180:11;;22176:164;;22212:17;22253:3;22233:16;22242:7;22233:6;:16;:::i;:::-;22232:24;;;;:::i;:::-;22212:44;;22275:49;22291:6;22307:4;22314:9;22275:15;:49::i;:::-;22193:147;22176:164;19677:2683;;;;;;19555:2805;;;:::o;9947:744::-;-1:-1:-1;;;;;10031:21:0;;10023:67;;;;-1:-1:-1;;;10023:67:0;;12203:2:1;10023:67:0;;;12185:21:1;12242:2;12222:18;;;12215:30;12281:34;12261:18;;;12254:62;-1:-1:-1;;;12332:18:1;;;12325:31;12373:19;;10023:67:0;12001:397:1;10023:67:0;-1:-1:-1;;;;;10195:18:0;;10170:22;10195:18;;;;;;;;;;;10232:24;;;;10224:71;;;;-1:-1:-1;;;10224:71:0;;12605:2:1;10224:71:0;;;12587:21:1;12644:2;12624:18;;;12617:30;12683:34;12663:18;;;12656:62;-1:-1:-1;;;12734:18:1;;;12727:32;12776:19;;10224:71:0;12403:398:1;10224:71:0;-1:-1:-1;;;;;10331:18:0;;:9;:18;;;;;;;;;;;;10352:23;;;10331:44;;10470:12;:22;;;;;;;10575:42;;1730:25:1;;;10601:6:0;;10331:18;10575:42;;1703:18:1;10575:42:0;;;;;;;26206::::1;26121:135:::0;;:::o;14006:173::-;14081:6;;;-1:-1:-1;;;;;14098:17:0;;;-1:-1:-1;;;;;;14098:17:0;;;;;;;14131:40;;14081:6;;;14098:17;14081:6;;14131:40;;14062:16;;14131:40;14051:128;14006:173;:::o;5218:419::-;-1:-1:-1;;;;;4575:18:0;;;5319:24;4575:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;5386:37:0;;5382:248;;5468:6;5448:16;:26;;5440:68;;;;-1:-1:-1;;;5440:68:0;;13008:2:1;5440:68:0;;;12990:21:1;13047:2;13027:18;;;13020:30;13086:31;13066:18;;;13059:59;13135:18;;5440:68:0;12806:353:1;5440:68:0;5552:51;5561:5;5568:7;5596:6;5577:16;:25;5552:8;:51::i;:::-;5308:329;5218:419;;;:::o;22368:1437::-;17421:10;;-1:-1:-1;;;17421:10:0;;;;17416:110;;17448:10;:17;;-1:-1:-1;;;;17448:17:0;-1:-1:-1;;;17448:17:0;;;22459:49;;22490:7:::1;22459:49;22564:4;22520:23;3891:18:::0;;;;;;;;;;;22604:23:::1;::::0;22585:42;::::1;22581:1217;;22674:1;22648:23;;:27;22644:109;;;-1:-1:-1::0;22714:23:0::1;::::0;22644:109:::1;22824:19;22846:11;:7:::0;22856:1:::1;22846:11;:::i;:::-;22824:33;;22872:32;22966:11;22926:9;:19;;;22908:15;:37;;;;:::i;:::-;22907:70;;;;:::i;:::-;22872:105:::0;-1:-1:-1;22992:14:0::1;23009:42;22872:105:::0;23009:15;:42:::1;:::i;:::-;22992:59:::0;-1:-1:-1;23093:21:0::1;23131:24;22992:59:::0;23131:16:::1;:24::i;:::-;23172:20;23195:38;23219:14:::0;23195:21:::1;:38;:::i;:::-;23172:61;;23248:19;23300:9;:19;;;23286:11;:33;;;;:::i;:::-;23270:50;::::0;:12;:50:::1;:::i;:::-;23248:72;;23335:29;23381:9;:19;;;23367:11;:33;;;;:::i;:::-;23335:65:::0;-1:-1:-1;23421:25:0;;23417:172:::1;;23512:61;23525:24;23551:21;23512:12;:61::i;:::-;23646:19:::0;;23605:20:::1;::::0;23628:15:::1;:11:::0;23642:1:::1;23628:15;:::i;:::-;:37;;;;:::i;:::-;23605:60:::0;-1:-1:-1;23684:16:0;;23680:105:::1;;23729:15;::::0;23721:48:::1;::::0;-1:-1:-1;;;;;23729:15:0::1;23756:12:::0;23721:34:::1;:48::i;:::-;22629:1169;;;;;;;;22581:1217;22446:1359;17480:1;17496:10:::0;:18;;-1:-1:-1;;;;17496:18:0;;;22368:1437;;:::o;8633:578::-;-1:-1:-1;;;;;8773:20:0;;8765:70;;;;-1:-1:-1;;;8765:70:0;;13366:2:1;8765:70:0;;;13348:21:1;13405:2;13385:18;;;13378:30;13444:34;13424:18;;;13417:62;-1:-1:-1;;;13495:18:1;;;13488:35;13540:19;;8765:70:0;13164:401:1;8765:70:0;-1:-1:-1;;;;;8854:23:0;;8846:71;;;;-1:-1:-1;;;8846:71:0;;13772:2:1;8846:71:0;;;13754:21:1;13811:2;13791:18;;;13784:30;13850:34;13830:18;;;13823:62;-1:-1:-1;;;13901:18:1;;;13894:33;13944:19;;8846:71:0;13570:399:1;8846:71:0;-1:-1:-1;;;;;8954:17:0;;8930:21;8954:17;;;;;;;;;;;8990:23;;;;8982:74;;;;-1:-1:-1;;;8982:74:0;;14176:2:1;8982:74:0;;;14158:21:1;14215:2;14195:18;;;14188:30;14254:34;14234:18;;;14227:62;-1:-1:-1;;;14305:18:1;;;14298:36;14351:19;;8982:74:0;13974:402:1;8982:74:0;9087:22;9103:6;9087:13;:22;:::i;:::-;-1:-1:-1;;;;;9067:17:0;;;:9;:17;;;;;;;;;;;:42;;;;9120:20;;;;;;;;:30;;9144:6;;9067:9;9120:30;;9144:6;;9120:30;:::i;:::-;;;;;;;;9185:9;-1:-1:-1;;;;;9168:35:0;9177:6;-1:-1:-1;;;;;9168:35:0;;9196:6;9168:35;;;;1730:25:1;;1718:2;1703:18;;1584:177;9168:35:0;;;;;;;;8754:457;8633:578;;;:::o;23813:534::-;23963:16;;;23977:1;23963:16;;;;;;;;23939:21;;23963:16;;;;;;;;;;-1:-1:-1;23963:16:0;23939:40;;24008:4;23990;23995:1;23990:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23990:23:0;;;:7;;;;;;;;;;:23;;;;24034:6;;:13;;;-1:-1:-1;;;24034:13:0;;;;:6;;;;;:11;;:13;;;;;23990:7;;24034:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24024:4;24029:1;24024:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24024:23:0;;;:7;;;;;;;;;:23;24092:6;;24060:53;;24077:4;;24092:6;24101:11;24060:8;:53::i;:::-;24152:6;;:187;;-1:-1:-1;;;24152:187:0;;-1:-1:-1;;;;;24152:6:0;;;;:57;;:187;;24224:11;;24152:6;;24266:4;;24293;;24313:15;;24152:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23868:479;23813:534;:::o;24355:500::-;24535:6;;24503:53;;24520:4;;-1:-1:-1;;;;;24535:6:0;24544:11;24503:8;:53::i;:::-;24599:6;;:248;;-1:-1:-1;;;24599:248:0;;24664:4;24599:248;;;16227:34:1;16277:18;;;16270:34;;;24599:6:0;16320:18:1;;;16313:34;;;16363:18;;;16356:34;16629:42:0;16406:19:1;;;16399:44;24821:15:0;16459:19:1;;;16452:35;-1:-1:-1;;;;;24599:6:0;;;;:22;;24630:9;;16161:19:1;;24599:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24355:500;;:::o;12924:319::-;13039:6;13014:21;:31;;13006:73;;;;-1:-1:-1;;;13006:73:0;;17011:2:1;13006:73:0;;;16993:21:1;17050:2;17030:18;;;17023:30;17089:31;17069:18;;;17062:59;17138:18;;13006:73:0;16809:353:1;13006:73:0;13093:12;13111:9;-1:-1:-1;;;;;13111:14:0;13134:6;13111:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13092:54;;;13165:7;13157:78;;;;-1:-1:-1;;;13157:78:0;;17579:2:1;13157:78:0;;;17561:21:1;17618:2;17598:18;;;17591:30;17657:34;17637:18;;;17630:62;17728:28;17708:18;;;17701:56;17774:19;;13157:78:0;17377:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:118::-;1301:5;1294:13;1287:21;1280:5;1277:32;1267:60;;1323:1;1320;1313:12;1338:241;1394:6;1447:2;1435:9;1426:7;1422:23;1418:32;1415:52;;;1463:1;1460;1453:12;1415:52;1502:9;1489:23;1521:28;1543:5;1521:28;:::i;:::-;1568:5;1338:241;-1:-1:-1;;;1338:241:1:o;1766:456::-;1843:6;1851;1859;1912:2;1900:9;1891:7;1887:23;1883:32;1880:52;;;1928:1;1925;1918:12;1880:52;1967:9;1954:23;1986:31;2011:5;1986:31;:::i;:::-;2036:5;-1:-1:-1;2093:2:1;2078:18;;2065:32;2106:33;2065:32;2106:33;:::i;:::-;1766:456;;2158:7;;-1:-1:-1;;;2212:2:1;2197:18;;;;2184:32;;1766:456::o;2227:248::-;2295:6;2303;2356:2;2344:9;2335:7;2331:23;2327:32;2324:52;;;2372:1;2369;2362:12;2324:52;-1:-1:-1;;2395:23:1;;;2465:2;2450:18;;;2437:32;;-1:-1:-1;2227:248:1:o;2669:180::-;2728:6;2781:2;2769:9;2760:7;2756:23;2752:32;2749:52;;;2797:1;2794;2787:12;2749:52;-1:-1:-1;2820:23:1;;2669:180;-1:-1:-1;2669:180:1:o;3178:247::-;3237:6;3290:2;3278:9;3269:7;3265:23;3261:32;3258:52;;;3306:1;3303;3296:12;3258:52;3345:9;3332:23;3364:31;3389:5;3364:31;:::i;3638:388::-;3706:6;3714;3767:2;3755:9;3746:7;3742:23;3738:32;3735:52;;;3783:1;3780;3773:12;3735:52;3822:9;3809:23;3841:31;3866:5;3841:31;:::i;:::-;3891:5;-1:-1:-1;3948:2:1;3933:18;;3920:32;3961:33;3920:32;3961:33;:::i;:::-;4013:7;4003:17;;;3638:388;;;;;:::o;4254:380::-;4333:1;4329:12;;;;4376;;;4397:61;;4451:4;4443:6;4439:17;4429:27;;4397:61;4504:2;4496:6;4493:14;4473:18;4470:38;4467:161;;4550:10;4545:3;4541:20;4538:1;4531:31;4585:4;4582:1;4575:15;4613:4;4610:1;4603:15;4467:161;;4254:380;;;:::o;4639:356::-;4841:2;4823:21;;;4860:18;;;4853:30;4919:34;4914:2;4899:18;;4892:62;4986:2;4971:18;;4639:356::o;5409:127::-;5470:10;5465:3;5461:20;5458:1;5451:31;5501:4;5498:1;5491:15;5525:4;5522:1;5515:15;5541:128;5608:9;;;5629:11;;;5626:37;;;5643:18;;:::i;5674:125::-;5739:9;;;5760:10;;;5757:36;;;5773:18;;:::i;6237:422::-;6326:1;6369:5;6326:1;6383:270;6404:7;6394:8;6391:21;6383:270;;;6463:4;6459:1;6455:6;6451:17;6445:4;6442:27;6439:53;;;6472:18;;:::i;:::-;6522:7;6512:8;6508:22;6505:55;;;6542:16;;;;6505:55;6621:22;;;;6581:15;;;;6383:270;;;6387:3;6237:422;;;;;:::o;6664:806::-;6713:5;6743:8;6733:80;;-1:-1:-1;6784:1:1;6798:5;;6733:80;6832:4;6822:76;;-1:-1:-1;6869:1:1;6883:5;;6822:76;6914:4;6932:1;6927:59;;;;7000:1;6995:130;;;;6907:218;;6927:59;6957:1;6948:10;;6971:5;;;6995:130;7032:3;7022:8;7019:17;7016:43;;;7039:18;;:::i;:::-;-1:-1:-1;;7095:1:1;7081:16;;7110:5;;6907:218;;7209:2;7199:8;7196:16;7190:3;7184:4;7181:13;7177:36;7171:2;7161:8;7158:16;7153:2;7147:4;7144:12;7140:35;7137:77;7134:159;;;-1:-1:-1;7246:19:1;;;7278:5;;7134:159;7325:34;7350:8;7344:4;7325:34;:::i;:::-;7395:6;7391:1;7387:6;7383:19;7374:7;7371:32;7368:58;;;7406:18;;:::i;:::-;7444:20;;6664:806;-1:-1:-1;;;6664:806:1:o;7475:140::-;7533:5;7562:47;7603:4;7593:8;7589:19;7583:4;7562:47;:::i;7620:168::-;7693:9;;;7724;;7741:15;;;7735:22;;7721:37;7711:71;;7762:18;;:::i;8072:245::-;8139:6;8192:2;8180:9;8171:7;8167:23;8163:32;8160:52;;;8208:1;8205;8198:12;8160:52;8240:9;8234:16;8259:28;8281:5;8259:28;:::i;11779:217::-;11819:1;11845;11835:132;;11889:10;11884:3;11880:20;11877:1;11870:31;11924:4;11921:1;11914:15;11952:4;11949:1;11942:15;11835:132;-1:-1:-1;11981:9:1;;11779:217::o;14513:127::-;14574:10;14569:3;14565:20;14562:1;14555:31;14605:4;14602:1;14595:15;14629:4;14626:1;14619:15;14645:251;14715:6;14768:2;14756:9;14747:7;14743:23;14739:32;14736:52;;;14784:1;14781;14774:12;14736:52;14816:9;14810:16;14835:31;14860:5;14835:31;:::i;14901:980::-;15163:4;15211:3;15200:9;15196:19;15242:6;15231:9;15224:25;15268:2;15306:6;15301:2;15290:9;15286:18;15279:34;15349:3;15344:2;15333:9;15329:18;15322:31;15373:6;15408;15402:13;15439:6;15431;15424:22;15477:3;15466:9;15462:19;15455:26;;15516:2;15508:6;15504:15;15490:29;;15537:1;15547:195;15561:6;15558:1;15555:13;15547:195;;;15626:13;;-1:-1:-1;;;;;15622:39:1;15610:52;;15717:15;;;;15682:12;;;;15658:1;15576:9;15547:195;;;-1:-1:-1;;;;;;;15798:32:1;;;;15793:2;15778:18;;15771:60;-1:-1:-1;;;15862:3:1;15847:19;15840:35;15759:3;14901:980;-1:-1:-1;;;14901:980:1:o;16498:306::-;16586:6;16594;16602;16655:2;16643:9;16634:7;16630:23;16626:32;16623:52;;;16671:1;16668;16661:12;16623:52;16700:9;16694:16;16684:26;;16750:2;16739:9;16735:18;16729:25;16719:35;;16794:2;16783:9;16779:18;16773:25;16763:35;;16498:306;;;;;:::o

Swarm Source

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