ETH Price: $3,276.58 (+0.95%)
Gas: 2 Gwei

Token

hentAI (hentAI)
 

Overview

Max Total Supply

69,000,000,000 hentAI

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
34,152,405.209732265 hentAI

Value
$0.00
0xb0a1a8c1351d29be47ee89ccc0c0f99d8b87b09b
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:
hentAI

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

// SPDX-License-Identifier: MIT

pragma solidity 0.8.23;

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 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    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) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max) { 
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }
        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

    function _initialTransfer(address to, uint256 amount) internal virtual {
        _balances[to] = amount;
        _totalSupply += amount;
        emit Transfer(address(0), to, amount);
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

    function WETH() external pure returns (address);

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

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

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

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

contract hentAI is ERC20, Ownable {
    IDexRouter public immutable dexRouter;
    address public lPair;

    mapping(address => uint256) public walletProtection;

    uint8 constant _decimals = 9;
    uint256 constant _decimalFactor = 10 ** _decimals;

    bool private swapping;
    uint256 public swapTokensAtAmount;
    uint256 public maxSwapTokens;

    address public taxCollector;
    uint256 _buyFee = 5;
    uint256 _sellFee = 5;
    bool public limited = true;
    uint256 immutable maxTxn;
    uint256 immutable maxWallet;

    bool public swapEnabled = true;

    uint256 public tradingActiveTime;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public pairs;

    event SetPair(address indexed pair, bool indexed value);
    event ExcludeFromFees(address indexed account, bool isExcluded);

    constructor() ERC20("hentAI", "hentAI") {
        taxCollector = msg.sender;

        address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        dexRouter = IDexRouter(routerAddress);

        _approve(msg.sender, routerAddress, type(uint256).max);
        _approve(address(this), routerAddress, type(uint256).max);

        uint256 totalSupply = 69_000_000_000 * _decimalFactor;

        swapTokensAtAmount = (totalSupply * 1) / 10000;
        maxSwapTokens = totalSupply / 100;
        maxTxn = totalSupply * 2 / 100;
        maxWallet = totalSupply * 2 / 100;

        _isExcludedFromFees[msg.sender] = true;
        _isExcludedFromFees[address(this)] = true;

        _initialTransfer(msg.sender, totalSupply);
    }

    receive() external payable {}

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

    function updateSwapTokens(uint256 atAmount, uint256 maxAmount) external onlyOwner {
        require(maxAmount <= totalSupply() / 100, "Max swap cannot be higher than 1% supply.");
        swapTokensAtAmount = atAmount;
        maxSwapTokens = maxAmount;
    }

    function toggleSwap() external onlyOwner {
        swapEnabled = !swapEnabled;
    }

    function setPair(address pair, bool value) external onlyOwner {
        require(pair != lPair, "The main pair cannot be removed from pairs");

        pairs[pair] = value;
        emit SetPair(pair, value);
    }

    function getSellFees() public view returns (uint256) {
        if(block.number - tradingActiveTime < 150) return 25;
        else if(block.number - tradingActiveTime < 225) return 15;
        else if(block.number - tradingActiveTime < 300) return 10;
        return _sellFee;
    }

    function getBuyFees() public view returns (uint256) {
        if(block.number - tradingActiveTime < 75) return 20;
        else if(block.number - tradingActiveTime < 150) return 15;
        else if(block.number - tradingActiveTime < 225) return 10;
        return _buyFee;
    }

    function reduceTaxes() external onlyOwner {
        require(_buyFee > 0);
        _buyFee--;
        _sellFee--;
    }

    function accelerateTaxes() external onlyOwner {
        require(tradingActiveTime > 76);
        tradingActiveTime -= 75;
    }

    function removeLimit() external onlyOwner {
        limited = false;
    }

    function excludeFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
            emit ExcludeFromFees(accounts[i], excluded);
        }
    }

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

        if(tradingActiveTime == 0) {
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet active");
            super._transfer(from, to, amount);
        }
        else {
            if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
                bool limits = limited;
                if(limits) {
                    require(amount <= maxTxn, "Max transaction");
                }

                uint256 fees = 0;
                uint256 _sf = getSellFees();
                uint256 _bf = getBuyFees();

                if (pairs[to]) {
                    if(_sf > 0)
                        fees = (amount * _sf) / 100;
                }
                else if (_bf > 0 && pairs[from]) {
                    fees = (amount * _bf) / 100;
                }

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

                amount -= fees;

                if(limits) {
                    if(!pairs[to] && to != address(0xdead)) {
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet");
                    }
                }

                if (swapEnabled && !swapping && pairs[to]) {
                    swapping = true;
                    swapBack(amount);
                    swapping = false;
                }   
            }

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

        _beforeTokenTransfer(from, to);
    }

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

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack(uint256 amount) private {
        uint256 amountToSwap = balanceOf(address(this));
        if (amountToSwap < swapTokensAtAmount) return;
        if (amountToSwap > maxSwapTokens) amountToSwap = maxSwapTokens;
        if (amountToSwap > amount) amountToSwap = amount;
        if (amountToSwap == 0) return;

        swapTokensForEth(amountToSwap);
    }

    function withdrawTax() external {
        require(msg.sender == owner() || msg.sender == taxCollector, "Unauthorised");
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}("");
    }

    function addLP(uint256 tokens) external payable {
        require(tradingActiveTime == 0);
        require(msg.value > 0, "Insufficient funds");
        require(tokens > 0, "No LP tokens specified");

        if(lPair == address(0)) {
            lPair = IDexFactory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
            pairs[lPair] = true;
        }

        super._transfer(msg.sender, address(this), tokens * _decimalFactor);

        dexRouter.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
    }

    function openTrading() external onlyOwner {
        require(tradingActiveTime == 0);
        tradingActiveTime = block.number;
    }

    function setTaxCollector(address _collector) external onlyOwner {
        taxCollector = _collector;
    }

    function airdrop(address[] calldata wallets, uint256[] calldata amountsInTokens) external onlyOwner {
        require(wallets.length == amountsInTokens.length, "Arrays must be the same length");

        for (uint256 i = 0; i < wallets.length; i++) {
            super._transfer(msg.sender, wallets[i], amountsInTokens[i] * _decimalFactor);
        }
    }

    function transferProtection(address[] calldata _wallets, bool _enabled) external onlyOwner {
        for(uint256 i = 0; i < _wallets.length; i++) {
            walletProtection[_wallets[i]] = _enabled ? block.number : 0;
        }
    }

    function _beforeTokenTransfer(address from, address to) internal view {
        require(walletProtection[from] == 0 || block.number - walletProtection[from] == 0 || to == owner(), "Wallet protection enabled, please contact support");
    }
}

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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"accelerateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"addLP","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"lPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapTokens","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reduceTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_collector","type":"address"}],"name":"setTaxCollector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxCollector","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveTime","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":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"transferProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"atAmount","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"name":"updateSwapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"walletProtection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e06040526005600c819055600d55600e805461ffff191661010117905534801562000029575f80fd5b5060408051808201825260068082526568656e74414960d01b602080840182905284518086019095529184529083015290600362000068838262000438565b50600462000077828262000438565b5050505f6200008b620001f460201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b80546001600160a01b03191633908117909155737a250d5630b4cf539739df2c5dacb4c659f2488d6080819052906200011690825f19620001f8565b6200012430825f19620001f8565b5f620001336009600a62000613565b6200014490641010b872006200062a565b9050612710620001568260016200062a565b62000162919062000644565b6009556200017260648262000644565b600a556064620001848260026200062a565b62000190919062000644565b60a0526064620001a28260026200062a565b620001ae919062000644565b60c052335f818152601060205260408082208054600160ff1991821681179092553084529190922080549091169091179055620001ec908262000323565b50506200067a565b3390565b6001600160a01b038316620002605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620002c35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000257565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382165f908152602081905260408120829055600280548392906200035190849062000664565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620003c357607f821691505b602082108103620003e257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200043357805f5260205f20601f840160051c810160208510156200040f5750805b601f840160051c820191505b8181101562000430575f81556001016200041b565b50505b505050565b81516001600160401b038111156200045457620004546200039a565b6200046c81620004658454620003ae565b84620003e8565b602080601f831160018114620004a2575f84156200048a5750858301515b5f19600386901b1c1916600185901b178555620004fc565b5f85815260208120601f198616915b82811015620004d257888601518255948401946001909101908401620004b1565b5085821015620004f057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200055857815f19048211156200053c576200053c62000504565b808516156200054a57918102915b93841c93908002906200051d565b509250929050565b5f8262000570575060016200060d565b816200057e57505f6200060d565b8160018114620005975760028114620005a257620005c2565b60019150506200060d565b60ff841115620005b657620005b662000504565b50506001821b6200060d565b5060208310610133831016604e8410600b8410161715620005e7575081810a6200060d565b620005f3838362000518565b805f190482111562000609576200060962000504565b0290505b92915050565b5f6200062360ff84168362000560565b9392505050565b80820281158282048414176200060d576200060d62000504565b5f826200065f57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200060d576200060d62000504565b60805160a05160c0516123bd620006c85f395f6118d101525f61177401525f818161028f01528181610d2c01528181610dba01528181610efa01528181611c8d0152611d4301526123bd5ff3fe60806040526004361061022b575f3560e01c8063685fc56811610129578063a457c2d7116100a8578063dd62ed3e1161006d578063dd62ed3e1461062d578063dfa20f0a14610671578063e2f4560514610685578063f2fde38b1461069a578063fe33b302146106b9575f80fd5b8063a457c2d71461059d578063a9059cbb146105bc578063ad29ffde146105db578063bea1dcf8146105fa578063c9567bf914610619575f80fd5b8063728607ba116100ee578063728607ba14610520578063860a32ec1461053457806386a22eff1461054d5780638da5cb5b1461056c57806395d89b4114610589575f80fd5b8063685fc568146104935780636ddd1713146104a75780636e0c63d9146104c557806370a08231146104d8578063715018a61461050c575f80fd5b80632e13becf116101b55780635208d0311161017a5780635208d031146103f7578063535a2437146104165780635c5d34121461044157806362256589146104605780636724348214610474575f80fd5b80632e13becf14610374578063313ce5671461039357806336a1efe4146103ae57806339509351146103c35780635031595f146103e2575f80fd5b806308695b41116101fb57806308695b41146102df578063095ea7b3146102fe57806318160ddd1461032d5780631ff8d5071461034157806323b872dd14610355575f80fd5b80630644e7571461023657806306fdde031461025d5780630758d9241461027e57806307c39b29146102c9575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5061024a6106e7565b6040519081526020015b60405180910390f35b348015610268575f80fd5b50610271610743565b6040516102549190611db3565b348015610289575f80fd5b506102b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610254565b3480156102d4575f80fd5b506102dd6107d3565b005b3480156102ea575f80fd5b506102dd6102f9366004611e16565b61082d565b348015610309575f80fd5b5061031d610318366004611e38565b610879565b6040519015158152602001610254565b348015610338575f80fd5b5060025461024a565b34801561034c575f80fd5b506102dd61088f565b348015610360575f80fd5b5061031d61036f366004611e62565b6108d6565b34801561037f575f80fd5b506102dd61038e366004611efc565b610986565b34801561039e575f80fd5b5060405160098152602001610254565b3480156103b9575f80fd5b5061024a600a5481565b3480156103ce575f80fd5b5061031d6103dd366004611e38565b610a18565b3480156103ed575f80fd5b5061024a600f5481565b348015610402575f80fd5b506006546102b1906001600160a01b031681565b348015610421575f80fd5b5061024a610430366004611e16565b60076020525f908152604090205481565b34801561044c575f80fd5b506102dd61045b366004611f4c565b610a53565b34801561046b575f80fd5b506102dd610afe565b34801561047f575f80fd5b506102dd61048e366004611f6c565b610b34565b34801561049e575f80fd5b5061024a610c25565b3480156104b2575f80fd5b50600e5461031d90610100900460ff1681565b6102dd6104d3366004611fd3565b610c82565b3480156104e3575f80fd5b5061024a6104f2366004611e16565b6001600160a01b03165f9081526020819052604090205490565b348015610517575f80fd5b506102dd610fe6565b34801561052b575f80fd5b506102dd611059565b34801561053f575f80fd5b50600e5461031d9060ff1681565b348015610558575f80fd5b506102dd610567366004611fea565b6110ba565b348015610577575f80fd5b506005546001600160a01b03166102b1565b348015610594575f80fd5b506102716111a8565b3480156105a8575f80fd5b5061031d6105b7366004611e38565b6111b7565b3480156105c7575f80fd5b5061031d6105d6366004611e38565b61124f565b3480156105e6575f80fd5b506102dd6105f5366004611efc565b61125b565b348015610605575f80fd5b50600b546102b1906001600160a01b031681565b348015610624575f80fd5b506102dd611354565b348015610638575f80fd5b5061024a61064736600461201d565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561067c575f80fd5b506102dd611390565b348015610690575f80fd5b5061024a60095481565b3480156106a5575f80fd5b506102dd6106b4366004611e16565b61142d565b3480156106c4575f80fd5b5061031d6106d3366004611e16565b60116020525f908152604090205460ff1681565b5f604b600f54436106f89190612068565b10156107045750601490565b6096600f54436107149190612068565b10156107205750600f90565b60e1600f54436107309190612068565b101561073c5750600a90565b50600c5490565b6060600380546107529061207b565b80601f016020809104026020016040519081016040528092919081815260200182805461077e9061207b565b80156107c95780601f106107a0576101008083540402835291602001916107c9565b820191905f5260205f20905b8154815290600101906020018083116107ac57829003601f168201915b5050505050905090565b6005546001600160a01b031633146108065760405162461bcd60e51b81526004016107fd906120b3565b60405180910390fd5b604c600f5411610814575f80fd5b604b600f5f8282546108269190612068565b9091555050565b6005546001600160a01b031633146108575760405162461bcd60e51b81526004016107fd906120b3565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f610885338484611517565b5060015b92915050565b6005546001600160a01b031633146108b95760405162461bcd60e51b81526004016107fd906120b3565b600e805461ff001981166101009182900460ff1615909102179055565b5f6108e284848461163a565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f19811461097b578281101561096e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107fd565b61097b8533858403611517565b506001949350505050565b6005546001600160a01b031633146109b05760405162461bcd60e51b81526004016107fd906120b3565b5f5b82811015610a1257816109c5575f6109c7565b435b60075f8686858181106109dc576109dc6120e8565b90506020020160208101906109f19190611e16565b6001600160a01b0316815260208101919091526040015f20556001016109b2565b50505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610885918590610a4e9086906120fc565b611517565b6005546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016107fd906120b3565b6064610a8860025490565b610a92919061210f565b811115610af35760405162461bcd60e51b815260206004820152602960248201527f4d617820737761702063616e6e6f7420626520686967686572207468616e2031604482015268129039bab838363c9760b91b60648201526084016107fd565b600991909155600a55565b6005546001600160a01b03163314610b285760405162461bcd60e51b81526004016107fd906120b3565b600e805460ff19169055565b6005546001600160a01b03163314610b5e5760405162461bcd60e51b81526004016107fd906120b3565b828114610bad5760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e677468000060448201526064016107fd565b5f5b83811015610c1e57610c1633868684818110610bcd57610bcd6120e8565b9050602002016020810190610be29190611e16565b610bee6009600a61220e565b868686818110610c0057610c006120e8565b90506020020135610c11919061221c565b6119d5565b600101610baf565b5050505050565b5f6096600f5443610c369190612068565b1015610c425750601990565b60e1600f5443610c529190612068565b1015610c5e5750600f90565b61012c600f5443610c6f9190612068565b1015610c7b5750600a90565b50600d5490565b600f5415610c8e575f80fd5b5f3411610cd25760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b60448201526064016107fd565b5f8111610d1a5760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b60448201526064016107fd565b6006546001600160a01b0316610edd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d86573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610daa9190612233565b6001600160a01b031663c9c653967f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e14573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e389190612233565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af1158015610e81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea59190612233565b600680546001600160a01b0319166001600160a01b039290921691821790555f908152601160205260409020805460ff191660011790555b610ef83330610eee6009600a61220e565b610c11908561221c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7194730610f47306001600160a01b03165f9081526020819052604090205490565b5f80610f5b6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610fc1573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a12919061224e565b6005546001600160a01b031633146110105760405162461bcd60e51b81526004016107fd906120b3565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110835760405162461bcd60e51b81526004016107fd906120b3565b5f600c5411611090575f80fd5b600c8054905f61109f83612279565b9091555050600d8054905f6110b383612279565b9190505550565b6005546001600160a01b031633146110e45760405162461bcd60e51b81526004016107fd906120b3565b6006546001600160a01b03908116908316036111555760405162461bcd60e51b815260206004820152602a60248201527f546865206d61696e20706169722063616e6e6f742062652072656d6f7665642060448201526966726f6d20706169727360b01b60648201526084016107fd565b6001600160a01b0382165f81815260116020526040808220805460ff191685151590811790915590519092917ff40a563af144a84735f7f6c7c3029794b0ac17713e5f048d3fd00ed85aa4ca7a91a35050565b6060600480546107529061207b565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156112385760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107fd565b6112453385858403611517565b5060019392505050565b5f61088533848461163a565b6005546001600160a01b031633146112855760405162461bcd60e51b81526004016107fd906120b3565b5f5b82811015610a12578160105f8686858181106112a5576112a56120e8565b90506020020160208101906112ba9190611e16565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558383828181106112f3576112f36120e8565b90506020020160208101906113089190611e16565b6001600160a01b03167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df783604051611344911515815260200190565b60405180910390a2600101611287565b6005546001600160a01b0316331461137e5760405162461bcd60e51b81526004016107fd906120b3565b600f541561138a575f80fd5b43600f55565b6005546001600160a01b03163314806113b35750600b546001600160a01b031633145b6113ee5760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5cd95960a21b60448201526064016107fd565b6040515f90339047908381818185875af1925050503d805f8114610a12576040519150601f19603f3d011682016040523d82523d5f602084013e610a12565b6005546001600160a01b031633146114575760405162461bcd60e51b81526004016107fd906120b3565b6001600160a01b0381166114bc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107fd565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166115795760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107fd565b6001600160a01b0382166115da5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107fd565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116605760405162461bcd60e51b81526004016107fd9061228e565b6001600160a01b0382166116865760405162461bcd60e51b81526004016107fd906122d3565b600f545f03611721576001600160a01b0383165f9081526010602052604090205460ff16806116cc57506001600160a01b0382165f9081526010602052604090205460ff165b6117115760405162461bcd60e51b815260206004820152601660248201527554726164696e67206e6f74207965742061637469766560501b60448201526064016107fd565b61171c8383836119d5565b6119c6565b6001600160a01b0383165f9081526010602052604090205460ff1615801561176157506001600160a01b0382165f9081526010602052604090205460ff16155b156119bb57600e5460ff1680156117d4577f00000000000000000000000000000000000000000000000000000000000000008211156117d45760405162461bcd60e51b815260206004820152600f60248201526e26b0bc103a3930b739b0b1ba34b7b760891b60448201526064016107fd565b5f806117de610c25565b90505f6117e96106e7565b6001600160a01b0387165f9081526011602052604090205490915060ff161561183057811561182b57606461181e838761221c565b611828919061210f565b92505b611874565b5f8111801561185657506001600160a01b0387165f9081526011602052604090205460ff165b15611874576064611867828761221c565b611871919061210f565b92505b8215611885576118858730856119d5565b61188f8386612068565b94508315611953576001600160a01b0386165f9081526011602052604090205460ff161580156118ca57506001600160a01b03861661dead14155b15611953577f000000000000000000000000000000000000000000000000000000000000000061190e876001600160a01b03165f9081526020819052604090205490565b61191890876120fc565b11156119535760405162461bcd60e51b815260206004820152600a60248201526913585e081dd85b1b195d60b21b60448201526064016107fd565b600e54610100900460ff16801561196d575060085460ff16155b801561199057506001600160a01b0386165f9081526011602052604090205460ff165b156119b6576008805460ff191660011790556119ab85611b28565b6008805460ff191690555b505050505b6119c68383836119d5565b6119d08383611b77565b505050565b6001600160a01b0383166119fb5760405162461bcd60e51b81526004016107fd9061228e565b6001600160a01b038216611a215760405162461bcd60e51b81526004016107fd906122d3565b6001600160a01b0383165f9081526020819052604090205481811015611a985760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107fd565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611ace9084906120fc565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b1a91815260200190565b60405180910390a350505050565b305f90815260208190526040902054600954811015611b45575050565b600a54811115611b545750600a545b81811115611b5f5750805b805f03611b6a575050565b611b7381611c38565b5050565b6001600160a01b0382165f908152600760205260409020541580611bba57506001600160a01b0382165f90815260076020526040902054611bb89043612068565b155b80611bd257506005546001600160a01b038281169116145b611b735760405162461bcd60e51b815260206004820152603160248201527f57616c6c65742070726f74656374696f6e20656e61626c65642c20706c656173604482015270194818dbdb9d1858dd081cdd5c1c1bdc9d607a1b60648201526084016107fd565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611c6b57611c6b6120e8565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0b9190612233565b81600181518110611d1e57611d1e6120e8565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac94790611d829085905f90869030904290600401612316565b5f604051808303815f87803b158015611d99575f80fd5b505af1158015611dab573d5f803e3d5ffd5b505050505050565b5f602080835283518060208501525f5b81811015611ddf57858101830151858201604001528201611dc3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611e13575f80fd5b50565b5f60208284031215611e26575f80fd5b8135611e3181611dff565b9392505050565b5f8060408385031215611e49575f80fd5b8235611e5481611dff565b946020939093013593505050565b5f805f60608486031215611e74575f80fd5b8335611e7f81611dff565b92506020840135611e8f81611dff565b929592945050506040919091013590565b5f8083601f840112611eb0575f80fd5b50813567ffffffffffffffff811115611ec7575f80fd5b6020830191508360208260051b8501011115611ee1575f80fd5b9250929050565b80358015158114611ef7575f80fd5b919050565b5f805f60408486031215611f0e575f80fd5b833567ffffffffffffffff811115611f24575f80fd5b611f3086828701611ea0565b9094509250611f43905060208501611ee8565b90509250925092565b5f8060408385031215611f5d575f80fd5b50508035926020909101359150565b5f805f8060408587031215611f7f575f80fd5b843567ffffffffffffffff80821115611f96575f80fd5b611fa288838901611ea0565b90965094506020870135915080821115611fba575f80fd5b50611fc787828801611ea0565b95989497509550505050565b5f60208284031215611fe3575f80fd5b5035919050565b5f8060408385031215611ffb575f80fd5b823561200681611dff565b915061201460208401611ee8565b90509250929050565b5f806040838503121561202e575f80fd5b823561203981611dff565b9150602083013561204981611dff565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561088957610889612054565b600181811c9082168061208f57607f821691505b6020821081036120ad57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561088957610889612054565b5f8261212957634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b8085111561216857815f190482111561214e5761214e612054565b8085161561215b57918102915b93841c9390800290612133565b509250929050565b5f8261217e57506001610889565b8161218a57505f610889565b81600181146121a057600281146121aa576121c6565b6001915050610889565b60ff8411156121bb576121bb612054565b50506001821b610889565b5060208310610133831016604e8410600b84101617156121e9575081810a610889565b6121f3838361212e565b805f190482111561220657612206612054565b029392505050565b5f611e3160ff841683612170565b808202811582820484141761088957610889612054565b5f60208284031215612243575f80fd5b8151611e3181611dff565b5f805f60608486031215612260575f80fd5b8351925060208401519150604084015190509250925092565b5f8161228757612287612054565b505f190190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156123665784516001600160a01b031683529383019391830191600101612341565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220d9e16ed7aaf580029c0aae495993c895b0872c9150374e25ac7c06731d23a3db64736f6c63430008170033

Deployed Bytecode

0x60806040526004361061022b575f3560e01c8063685fc56811610129578063a457c2d7116100a8578063dd62ed3e1161006d578063dd62ed3e1461062d578063dfa20f0a14610671578063e2f4560514610685578063f2fde38b1461069a578063fe33b302146106b9575f80fd5b8063a457c2d71461059d578063a9059cbb146105bc578063ad29ffde146105db578063bea1dcf8146105fa578063c9567bf914610619575f80fd5b8063728607ba116100ee578063728607ba14610520578063860a32ec1461053457806386a22eff1461054d5780638da5cb5b1461056c57806395d89b4114610589575f80fd5b8063685fc568146104935780636ddd1713146104a75780636e0c63d9146104c557806370a08231146104d8578063715018a61461050c575f80fd5b80632e13becf116101b55780635208d0311161017a5780635208d031146103f7578063535a2437146104165780635c5d34121461044157806362256589146104605780636724348214610474575f80fd5b80632e13becf14610374578063313ce5671461039357806336a1efe4146103ae57806339509351146103c35780635031595f146103e2575f80fd5b806308695b41116101fb57806308695b41146102df578063095ea7b3146102fe57806318160ddd1461032d5780631ff8d5071461034157806323b872dd14610355575f80fd5b80630644e7571461023657806306fdde031461025d5780630758d9241461027e57806307c39b29146102c9575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5061024a6106e7565b6040519081526020015b60405180910390f35b348015610268575f80fd5b50610271610743565b6040516102549190611db3565b348015610289575f80fd5b506102b17f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610254565b3480156102d4575f80fd5b506102dd6107d3565b005b3480156102ea575f80fd5b506102dd6102f9366004611e16565b61082d565b348015610309575f80fd5b5061031d610318366004611e38565b610879565b6040519015158152602001610254565b348015610338575f80fd5b5060025461024a565b34801561034c575f80fd5b506102dd61088f565b348015610360575f80fd5b5061031d61036f366004611e62565b6108d6565b34801561037f575f80fd5b506102dd61038e366004611efc565b610986565b34801561039e575f80fd5b5060405160098152602001610254565b3480156103b9575f80fd5b5061024a600a5481565b3480156103ce575f80fd5b5061031d6103dd366004611e38565b610a18565b3480156103ed575f80fd5b5061024a600f5481565b348015610402575f80fd5b506006546102b1906001600160a01b031681565b348015610421575f80fd5b5061024a610430366004611e16565b60076020525f908152604090205481565b34801561044c575f80fd5b506102dd61045b366004611f4c565b610a53565b34801561046b575f80fd5b506102dd610afe565b34801561047f575f80fd5b506102dd61048e366004611f6c565b610b34565b34801561049e575f80fd5b5061024a610c25565b3480156104b2575f80fd5b50600e5461031d90610100900460ff1681565b6102dd6104d3366004611fd3565b610c82565b3480156104e3575f80fd5b5061024a6104f2366004611e16565b6001600160a01b03165f9081526020819052604090205490565b348015610517575f80fd5b506102dd610fe6565b34801561052b575f80fd5b506102dd611059565b34801561053f575f80fd5b50600e5461031d9060ff1681565b348015610558575f80fd5b506102dd610567366004611fea565b6110ba565b348015610577575f80fd5b506005546001600160a01b03166102b1565b348015610594575f80fd5b506102716111a8565b3480156105a8575f80fd5b5061031d6105b7366004611e38565b6111b7565b3480156105c7575f80fd5b5061031d6105d6366004611e38565b61124f565b3480156105e6575f80fd5b506102dd6105f5366004611efc565b61125b565b348015610605575f80fd5b50600b546102b1906001600160a01b031681565b348015610624575f80fd5b506102dd611354565b348015610638575f80fd5b5061024a61064736600461201d565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561067c575f80fd5b506102dd611390565b348015610690575f80fd5b5061024a60095481565b3480156106a5575f80fd5b506102dd6106b4366004611e16565b61142d565b3480156106c4575f80fd5b5061031d6106d3366004611e16565b60116020525f908152604090205460ff1681565b5f604b600f54436106f89190612068565b10156107045750601490565b6096600f54436107149190612068565b10156107205750600f90565b60e1600f54436107309190612068565b101561073c5750600a90565b50600c5490565b6060600380546107529061207b565b80601f016020809104026020016040519081016040528092919081815260200182805461077e9061207b565b80156107c95780601f106107a0576101008083540402835291602001916107c9565b820191905f5260205f20905b8154815290600101906020018083116107ac57829003601f168201915b5050505050905090565b6005546001600160a01b031633146108065760405162461bcd60e51b81526004016107fd906120b3565b60405180910390fd5b604c600f5411610814575f80fd5b604b600f5f8282546108269190612068565b9091555050565b6005546001600160a01b031633146108575760405162461bcd60e51b81526004016107fd906120b3565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f610885338484611517565b5060015b92915050565b6005546001600160a01b031633146108b95760405162461bcd60e51b81526004016107fd906120b3565b600e805461ff001981166101009182900460ff1615909102179055565b5f6108e284848461163a565b6001600160a01b0384165f9081526001602090815260408083203384529091529020545f19811461097b578281101561096e5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107fd565b61097b8533858403611517565b506001949350505050565b6005546001600160a01b031633146109b05760405162461bcd60e51b81526004016107fd906120b3565b5f5b82811015610a1257816109c5575f6109c7565b435b60075f8686858181106109dc576109dc6120e8565b90506020020160208101906109f19190611e16565b6001600160a01b0316815260208101919091526040015f20556001016109b2565b50505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610885918590610a4e9086906120fc565b611517565b6005546001600160a01b03163314610a7d5760405162461bcd60e51b81526004016107fd906120b3565b6064610a8860025490565b610a92919061210f565b811115610af35760405162461bcd60e51b815260206004820152602960248201527f4d617820737761702063616e6e6f7420626520686967686572207468616e2031604482015268129039bab838363c9760b91b60648201526084016107fd565b600991909155600a55565b6005546001600160a01b03163314610b285760405162461bcd60e51b81526004016107fd906120b3565b600e805460ff19169055565b6005546001600160a01b03163314610b5e5760405162461bcd60e51b81526004016107fd906120b3565b828114610bad5760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d757374206265207468652073616d65206c656e677468000060448201526064016107fd565b5f5b83811015610c1e57610c1633868684818110610bcd57610bcd6120e8565b9050602002016020810190610be29190611e16565b610bee6009600a61220e565b868686818110610c0057610c006120e8565b90506020020135610c11919061221c565b6119d5565b600101610baf565b5050505050565b5f6096600f5443610c369190612068565b1015610c425750601990565b60e1600f5443610c529190612068565b1015610c5e5750600f90565b61012c600f5443610c6f9190612068565b1015610c7b5750600a90565b50600d5490565b600f5415610c8e575f80fd5b5f3411610cd25760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b60448201526064016107fd565b5f8111610d1a5760405162461bcd60e51b8152602060048201526016602482015275139bc81314081d1bdad95b9cc81cdc1958da599a595960521b60448201526064016107fd565b6006546001600160a01b0316610edd577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d86573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610daa9190612233565b6001600160a01b031663c9c653967f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e14573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e389190612233565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af1158015610e81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea59190612233565b600680546001600160a01b0319166001600160a01b039290921691821790555f908152601160205260409020805460ff191660011790555b610ef83330610eee6009600a61220e565b610c11908561221c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7194730610f47306001600160a01b03165f9081526020819052604090205490565b5f80610f5b6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610fc1573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610a12919061224e565b6005546001600160a01b031633146110105760405162461bcd60e51b81526004016107fd906120b3565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110835760405162461bcd60e51b81526004016107fd906120b3565b5f600c5411611090575f80fd5b600c8054905f61109f83612279565b9091555050600d8054905f6110b383612279565b9190505550565b6005546001600160a01b031633146110e45760405162461bcd60e51b81526004016107fd906120b3565b6006546001600160a01b03908116908316036111555760405162461bcd60e51b815260206004820152602a60248201527f546865206d61696e20706169722063616e6e6f742062652072656d6f7665642060448201526966726f6d20706169727360b01b60648201526084016107fd565b6001600160a01b0382165f81815260116020526040808220805460ff191685151590811790915590519092917ff40a563af144a84735f7f6c7c3029794b0ac17713e5f048d3fd00ed85aa4ca7a91a35050565b6060600480546107529061207b565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156112385760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107fd565b6112453385858403611517565b5060019392505050565b5f61088533848461163a565b6005546001600160a01b031633146112855760405162461bcd60e51b81526004016107fd906120b3565b5f5b82811015610a12578160105f8686858181106112a5576112a56120e8565b90506020020160208101906112ba9190611e16565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558383828181106112f3576112f36120e8565b90506020020160208101906113089190611e16565b6001600160a01b03167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df783604051611344911515815260200190565b60405180910390a2600101611287565b6005546001600160a01b0316331461137e5760405162461bcd60e51b81526004016107fd906120b3565b600f541561138a575f80fd5b43600f55565b6005546001600160a01b03163314806113b35750600b546001600160a01b031633145b6113ee5760405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5cd95960a21b60448201526064016107fd565b6040515f90339047908381818185875af1925050503d805f8114610a12576040519150601f19603f3d011682016040523d82523d5f602084013e610a12565b6005546001600160a01b031633146114575760405162461bcd60e51b81526004016107fd906120b3565b6001600160a01b0381166114bc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107fd565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166115795760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107fd565b6001600160a01b0382166115da5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107fd565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116605760405162461bcd60e51b81526004016107fd9061228e565b6001600160a01b0382166116865760405162461bcd60e51b81526004016107fd906122d3565b600f545f03611721576001600160a01b0383165f9081526010602052604090205460ff16806116cc57506001600160a01b0382165f9081526010602052604090205460ff165b6117115760405162461bcd60e51b815260206004820152601660248201527554726164696e67206e6f74207965742061637469766560501b60448201526064016107fd565b61171c8383836119d5565b6119c6565b6001600160a01b0383165f9081526010602052604090205460ff1615801561176157506001600160a01b0382165f9081526010602052604090205460ff16155b156119bb57600e5460ff1680156117d4577f0000000000000000000000000000000000000000000000001326beb03e0a00008211156117d45760405162461bcd60e51b815260206004820152600f60248201526e26b0bc103a3930b739b0b1ba34b7b760891b60448201526064016107fd565b5f806117de610c25565b90505f6117e96106e7565b6001600160a01b0387165f9081526011602052604090205490915060ff161561183057811561182b57606461181e838761221c565b611828919061210f565b92505b611874565b5f8111801561185657506001600160a01b0387165f9081526011602052604090205460ff165b15611874576064611867828761221c565b611871919061210f565b92505b8215611885576118858730856119d5565b61188f8386612068565b94508315611953576001600160a01b0386165f9081526011602052604090205460ff161580156118ca57506001600160a01b03861661dead14155b15611953577f0000000000000000000000000000000000000000000000001326beb03e0a000061190e876001600160a01b03165f9081526020819052604090205490565b61191890876120fc565b11156119535760405162461bcd60e51b815260206004820152600a60248201526913585e081dd85b1b195d60b21b60448201526064016107fd565b600e54610100900460ff16801561196d575060085460ff16155b801561199057506001600160a01b0386165f9081526011602052604090205460ff165b156119b6576008805460ff191660011790556119ab85611b28565b6008805460ff191690555b505050505b6119c68383836119d5565b6119d08383611b77565b505050565b6001600160a01b0383166119fb5760405162461bcd60e51b81526004016107fd9061228e565b6001600160a01b038216611a215760405162461bcd60e51b81526004016107fd906122d3565b6001600160a01b0383165f9081526020819052604090205481811015611a985760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107fd565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611ace9084906120fc565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b1a91815260200190565b60405180910390a350505050565b305f90815260208190526040902054600954811015611b45575050565b600a54811115611b545750600a545b81811115611b5f5750805b805f03611b6a575050565b611b7381611c38565b5050565b6001600160a01b0382165f908152600760205260409020541580611bba57506001600160a01b0382165f90815260076020526040902054611bb89043612068565b155b80611bd257506005546001600160a01b038281169116145b611b735760405162461bcd60e51b815260206004820152603160248201527f57616c6c65742070726f74656374696f6e20656e61626c65642c20706c656173604482015270194818dbdb9d1858dd081cdd5c1c1bdc9d607a1b60648201526084016107fd565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611c6b57611c6b6120e8565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0b9190612233565b81600181518110611d1e57611d1e6120e8565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac94790611d829085905f90869030904290600401612316565b5f604051808303815f87803b158015611d99575f80fd5b505af1158015611dab573d5f803e3d5ffd5b505050505050565b5f602080835283518060208501525f5b81811015611ddf57858101830151858201604001528201611dc3565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611e13575f80fd5b50565b5f60208284031215611e26575f80fd5b8135611e3181611dff565b9392505050565b5f8060408385031215611e49575f80fd5b8235611e5481611dff565b946020939093013593505050565b5f805f60608486031215611e74575f80fd5b8335611e7f81611dff565b92506020840135611e8f81611dff565b929592945050506040919091013590565b5f8083601f840112611eb0575f80fd5b50813567ffffffffffffffff811115611ec7575f80fd5b6020830191508360208260051b8501011115611ee1575f80fd5b9250929050565b80358015158114611ef7575f80fd5b919050565b5f805f60408486031215611f0e575f80fd5b833567ffffffffffffffff811115611f24575f80fd5b611f3086828701611ea0565b9094509250611f43905060208501611ee8565b90509250925092565b5f8060408385031215611f5d575f80fd5b50508035926020909101359150565b5f805f8060408587031215611f7f575f80fd5b843567ffffffffffffffff80821115611f96575f80fd5b611fa288838901611ea0565b90965094506020870135915080821115611fba575f80fd5b50611fc787828801611ea0565b95989497509550505050565b5f60208284031215611fe3575f80fd5b5035919050565b5f8060408385031215611ffb575f80fd5b823561200681611dff565b915061201460208401611ee8565b90509250929050565b5f806040838503121561202e575f80fd5b823561203981611dff565b9150602083013561204981611dff565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561088957610889612054565b600181811c9082168061208f57607f821691505b6020821081036120ad57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561088957610889612054565b5f8261212957634e487b7160e01b5f52601260045260245ffd5b500490565b600181815b8085111561216857815f190482111561214e5761214e612054565b8085161561215b57918102915b93841c9390800290612133565b509250929050565b5f8261217e57506001610889565b8161218a57505f610889565b81600181146121a057600281146121aa576121c6565b6001915050610889565b60ff8411156121bb576121bb612054565b50506001821b610889565b5060208310610133831016604e8410600b84101617156121e9575081810a610889565b6121f3838361212e565b805f190482111561220657612206612054565b029392505050565b5f611e3160ff841683612170565b808202811582820484141761088957610889612054565b5f60208284031215612243575f80fd5b8151611e3181611dff565b5f805f60608486031215612260575f80fd5b8351925060208401519150604084015190509250925092565b5f8161228757612287612054565b505f190190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156123665784516001600160a01b031683529383019391830191600101612341565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220d9e16ed7aaf580029c0aae495993c895b0872c9150374e25ac7c06731d23a3db64736f6c63430008170033

Deployed Bytecode Sourcemap

10862:8191:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13518:283;;;;;;;;;;;;;:::i;:::-;;;160:25:1;;;148:2;133:18;13518:283:0;;;;;;;;4096:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10903:37::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;931:32:1;;;913:51;;901:2;886:18;10903:37:0;749:221:1;13939:130:0;;;;;;;;;;;;;:::i;:::-;;18075:108;;;;;;;;;;-1:-1:-1;18075:108:0;;;;;:::i;:::-;;:::i;5151:210::-;;;;;;;;;;-1:-1:-1;5151:210:0;;;;;:::i;:::-;;:::i;:::-;;;1848:14:1;;1841:22;1823:41;;1811:2;1796:18;5151:210:0;1683:187:1;4417:108:0;;;;;;;;;;-1:-1:-1;4505:12:0;;4417:108;;12905:86;;;;;;;;;;;;;:::i;5369:620::-;;;;;;;;;;-1:-1:-1;5369:620:0;;;;;:::i;:::-;;:::i;18561:240::-;;;;;;;;;;-1:-1:-1;18561:240:0;;;;;:::i;:::-;;:::i;12542:84::-;;;;;;;;;;-1:-1:-1;12542:84:0;;12617:1;3525:36:1;;3513:2;3498:18;12542:84:0;3383:184:1;11197:28:0;;;;;;;;;;;;;;;;5997:297;;;;;;;;;;-1:-1:-1;5997:297:0;;;;;:::i;:::-;;:::i;11460:32::-;;;;;;;;;;;;;;;;10947:20;;;;;;;;;;-1:-1:-1;10947:20:0;;;;-1:-1:-1;;;;;10947:20:0;;;10976:51;;;;;;;;;;-1:-1:-1;10976:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;12634:263;;;;;;;;;;-1:-1:-1;12634:263:0;;;;;:::i;:::-;;:::i;14077:76::-;;;;;;;;;;;;;:::i;18191:362::-;;;;;;;;;;-1:-1:-1;18191:362:0;;;;;:::i;:::-;;:::i;13224:286::-;;;;;;;;;;;;;:::i;11421:30::-;;;;;;;;;;-1:-1:-1;11421:30:0;;;;;;;;;;;17318:606;;;;;;:::i;:::-;;:::i;4533:177::-;;;;;;;;;;-1:-1:-1;4533:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;4684:18:0;4652:7;4684:18;;;;;;;;;;;;4533:177;8597:148;;;;;;;;;;;;;:::i;13809:122::-;;;;;;;;;;;;;:::i;11321:26::-;;;;;;;;;;-1:-1:-1;11321:26:0;;;;;;;;12999:217;;;;;;;;;;-1:-1:-1;12999:217:0;;;;;:::i;:::-;;:::i;8383:79::-;;;;;;;;;;-1:-1:-1;8448:6:0;;-1:-1:-1;;;;;8448:6:0;8383:79;;4204:104;;;;;;;;;;;;;:::i;6302:482::-;;;;;;;;;;-1:-1:-1;6302:482:0;;;;;:::i;:::-;;:::i;4718:216::-;;;;;;;;;;-1:-1:-1;4718:216:0;;;;;:::i;:::-;;:::i;14161:278::-;;;;;;;;;;-1:-1:-1;14161:278:0;;;;;:::i;:::-;;:::i;11234:27::-;;;;;;;;;;-1:-1:-1;11234:27:0;;;;-1:-1:-1;;;;;11234:27:0;;;17932:135;;;;;;;;;;;;;:::i;4942:201::-;;;;;;;;;;-1:-1:-1;4942:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5108:18:0;;;5076:7;5108:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4942:201;17077:233;;;;;;;;;;;;;:::i;11157:33::-;;;;;;;;;;;;;;;;8753:281;;;;;;;;;;-1:-1:-1;8753:281:0;;;;;:::i;:::-;;:::i;11560:37::-;;;;;;;;;;-1:-1:-1;11560:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13518:283;13561:7;13619:2;13599:17;;13584:12;:32;;;;:::i;:::-;:37;13581:187;;;-1:-1:-1;13630:2:0;;13518:283::o;13581:187::-;13686:3;13666:17;;13651:12;:32;;;;:::i;:::-;:38;13648:120;;;-1:-1:-1;13698:2:0;;13518:283::o;13648:120::-;13754:3;13734:17;;13719:12;:32;;;;:::i;:::-;:38;13716:52;;;-1:-1:-1;13766:2:0;;13518:283::o;13716:52::-;-1:-1:-1;13786:7:0;;;13518:283::o;4096:100::-;4150:13;4183:5;4176:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4096:100;:::o;13939:130::-;8510:6;;-1:-1:-1;;;;;8510:6:0;246:10;8510:22;8502:67;;;;-1:-1:-1;;;8502:67:0;;;;;;;:::i;:::-;;;;;;;;;14024:2:::1;14004:17;;:22;13996:31;;;::::0;::::1;;14059:2;14038:17;;:23;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;13939:130:0:o;18075:108::-;8510:6;;-1:-1:-1;;;;;8510:6:0;246:10;8510:22;8502:67;;;;-1:-1:-1;;;8502:67:0;;;;;;;:::i;:::-;18150:12:::1;:25:::0;;-1:-1:-1;;;;;;18150:25:0::1;-1:-1:-1::0;;;;;18150:25:0;;;::::1;::::0;;;::::1;::::0;;18075:108::o;5151:210::-;5270:4;5292:39;246:10;5315:7;5324:6;5292:8;:39::i;:::-;-1:-1:-1;5349:4:0;5151:210;;;;;:::o;12905:86::-;8510:6;;-1:-1:-1;;;;;8510:6:0;246:10;8510:22;8502:67;;;;-1:-1:-1;;;8502:67:0;;;;;;;:::i;:::-;12972:11:::1;::::0;;-1:-1:-1;;12957:26:0;::::1;12972:11;::::0;;;::::1;;;12971:12;12957:26:::0;;::::1;;::::0;;12905:86::o;5369:620::-;5509:4;5526:36;5536:6;5544:9;5555:6;5526:9;:36::i;:::-;-1:-1:-1;;;;;5602:19:0;;5575:24;5602:19;;;:11;:19;;;;;;;;246:10;5602:33;;;;;;;;-1:-1:-1;;5649:37:0;;5646:314;;5750:6;5730:16;:26;;5704:128;;;;-1:-1:-1;;;5704:128:0;;6922:2:1;5704:128:0;;;6904:21:1;6961:2;6941:18;;;6934:30;7000:34;6980:18;;;6973:62;-1:-1:-1;;;7051:18:1;;;7044:38;7099:19;;5704:128:0;6720:404:1;5704:128:0;5876:57;5885:6;246:10;5926:6;5907:16;:25;5876:8;:57::i;:::-;-1:-1:-1;5977:4:0;;5369:620;-1:-1:-1;;;;5369:620:0:o;18561:240::-;8510:6;;-1:-1:-1;;;;;8510:6:0;246:10;8510:22;8502:67;;;;-1:-1:-1;;;8502:67:0;;;;;;;:::i;:::-;18667:9:::1;18663:131;18682:19:::0;;::::1;18663:131;;;18755:8;:27;;18781:1;18755:27;;;18766:12;18755:27;18723:16;:29;18740:8;;18749:1;18740:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18723:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18723:29:0;:59;18703:3:::1;;18663:131;;;;18561:240:::0;;;:::o;5997:297::-;246:10;6112:4;6206:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6206:34:0;;;;;;;;;;6112:4;;6134:130;;6184:7;;6206:47;;6243:10;;6206:47;:::i;:::-;6134:8;:130::i;12634:263::-;8510:6;;-1:-1:-1;;;;;8510:6:0;246:10;8510:22;8502:67;;;;-1:-1:-1;;;8502:67:0;;;;;;;:::i;:::-;12764:3:::1;12748:13;4505:12:::0;;;4417:108;12748:13:::1;:19;;;;:::i;:::-;12735:9;:32;;12727:86;;;::::0;-1:-1:-1;;;12727:86:0;;7815:2:1;12727:86:0::1;::::0;::::1;7797:21:1::0;7854:2;7834:18;;;7827:30;7893:34;7873:18;;;7866:62;-1:-1:-1;;;7944:18:1;;;7937:39;7993:19;;12727:86:0::1;7613:405:1::0;12727:86:0::1;12824:18;:29:::0;;;;12864:13:::1;:25:::0;12634:263::o;14077:76::-;8510:6;;-1:-1:-1;;;;;8510:6:0;246:10;8510:22;8502:67;;;;-1:-1:-1;;;8502:67:0;;;;;;;:::i;:::-;14130:7:::1;:15:::0;;-1:-1:-1;;14130:15:0::1;::::0;;14077:76::o;18191:362::-;8510:6;;-1:-1:-1;;;;;8510:6:0;246:10;8510:22;8502:67;;;;-1:-1:-1;;;8502:67:0;;;;;;;:::i;:::-;18310:40;;::::1;18302:83;;;::::0;-1:-1:-1;;;18302:83:0;;8225:2:1;18302:83:0::1;::::0;::::1;8207:21:1::0;8264:2;8244:18;;;8237:30;8303:32;8283:18;;;8276:60;8353:18;;18302:83:0::1;8023:354:1::0;18302:83:0::1;18403:9;18398:148;18418:18:::0;;::::1;18398:148;;;18458:76;18474:10;18486:7;;18494:1;18486:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;11105:15;11063:1;11105:2;:15;:::i;:::-;18498;;18514:1;18498:18;;;;;;;:::i;:::-;;;;;;;:35;;;;:::i;:::-;18458:15;:76::i;:::-;18438:3;;18398:148;;;;18191:362:::0;;;;:::o;13224:286::-;13268:7;13326:3;13306:17;;13291:12;:32;;;;:::i;:::-;:38;13288:188;;;-1:-1:-1;13338:2:0;;13224:286::o;13288:188::-;13394:3;13374:17;;13359:12;:32;;;;:::i;:::-;:38;13356:120;;;-1:-1:-1;13406:2:0;;13224:286::o;13356:120::-;13462:3;13442:17;;13427:12;:32;;;;:::i;:::-;:38;13424:52;;;-1:-1:-1;13474:2:0;;13224:286::o;13424:52::-;-1:-1:-1;13494:8:0;;;13224:286::o;17318:606::-;17385:17;;:22;17377:31;;;;;;17439:1;17427:9;:13;17419:44;;;;-1:-1:-1;;;17419:44:0;;10134:2:1;17419:44:0;;;10116:21:1;10173:2;10153:18;;;10146:30;-1:-1:-1;;;10192:18:1;;;10185:48;10250:18;;17419:44:0;9932:342:1;17419:44:0;17491:1;17482:6;:10;17474:45;;;;-1:-1:-1;;;17474:45:0;;10481:2:1;17474:45:0;;;10463:21:1;10520:2;10500:18;;;10493:30;-1:-1:-1;;;10539:18:1;;;10532:52;10601:18;;17474:45:0;10279:346:1;17474:45:0;17535:5;;-1:-1:-1;;;;;17535:5:0;17532:169;;17591:9;-1:-1:-1;;;;;17591:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17579:43:0;;17623:9;-1:-1:-1;;;;;17623:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17579:76;;-1:-1:-1;;;;;;17579:76:0;;;;;;;-1:-1:-1;;;;;11116:15:1;;;17579:76:0;;;11098:34:1;17649:4:0;11148:18:1;;;11141:43;11033:18;;17579:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17571:5;:84;;-1:-1:-1;;;;;;17571:84:0;-1:-1:-1;;;;;17571:84:0;;;;;;;;;-1:-1:-1;17670:12:0;;;:5;:12;;;;;:19;;-1:-1:-1;;17670:19:0;-1:-1:-1;17670:19:0;;;17532:169;17713:67;17729:10;17749:4;11105:15;11063:1;11105:2;:15;:::i;:::-;17756:23;;:6;:23;:::i;17713:67::-;17793:9;-1:-1:-1;;;;;17793:25:0;;17826:21;17857:4;17863:24;17881:4;-1:-1:-1;;;;;4684:18:0;4652:7;4684:18;;;;;;;;;;;;4533:177;17863:24;17888:1;17890;17892:7;8448:6;;-1:-1:-1;;;;;8448:6:0;;8383:79;17892:7;17793:123;;;;;;-1:-1:-1;;;;;;17793:123:0;;;-1:-1:-1;;;;;11554:15:1;;;17793:123:0;;;11536:34:1;11586:18;;;11579:34;;;;11629:18;;;11622:34;;;;11672:18;;;11665:34;11736:15;;;11715:19;;;11708:44;17900:15:0;11768:19:1;;;11761:35;11470:19;;17793:123:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8597:148::-;8510:6;;-1:-1:-1;;;;;8510:6:0;246:10;8510:22;8502:67;;;;-1:-1:-1;;;8502:67:0;;;;;;;:::i;:::-;8688:6:::1;::::0;8667:40:::1;::::0;8704:1:::1;::::0;-1:-1:-1;;;;;8688:6:0::1;::::0;8667:40:::1;::::0;8704:1;;8667:40:::1;8718:6;:19:::0;;-1:-1:-1;;;;;;8718:19:0::1;::::0;;8597:148::o;13809:122::-;8510:6;;-1:-1:-1;;;;;8510:6:0;246:10;8510:22;8502:67;;;;-1:-1:-1;;;8502:67:0;;;;;;;:::i;:::-;13880:1:::1;13870:7;;:11;13862:20;;;::::0;::::1;;13893:7;:9:::0;;;:7:::1;:9;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;13913:8:0::1;:10:::0;;;:8:::1;:10;::::0;::::1;:::i;:::-;;;;;;13809:122::o:0;12999:217::-;8510:6;;-1:-1:-1;;;;;8510:6:0;246:10;8510:22;8502:67;;;;-1:-1:-1;;;8502:67:0;;;;;;;:::i;:::-;13088:5:::1;::::0;-1:-1:-1;;;;;13088:5:0;;::::1;13080:13:::0;;::::1;::::0;13072:68:::1;;;::::0;-1:-1:-1;;;13072:68:0;;12461:2:1;13072:68:0::1;::::0;::::1;12443:21:1::0;12500:2;12480:18;;;12473:30;12539:34;12519:18;;;12512:62;-1:-1:-1;;;12590:18:1;;;12583:40;12640:19;;13072:68:0::1;12259:406:1::0;13072:68:0::1;-1:-1:-1::0;;;;;13153:11:0;::::1;;::::0;;;:5:::1;:11;::::0;;;;;:19;;-1:-1:-1;;13153:19:0::1;::::0;::::1;;::::0;;::::1;::::0;;;13188:20;;13153:19;;:11;13188:20:::1;::::0;::::1;12999:217:::0;;:::o;4204:104::-;4260:13;4293:7;4286:14;;;;;:::i;6302:482::-;246:10;6422:4;6471:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6471:34:0;;;;;;;;;;6538:35;;;;6516:122;;;;-1:-1:-1;;;6516:122:0;;12872:2:1;6516:122:0;;;12854:21:1;12911:2;12891:18;;;12884:30;12950:34;12930:18;;;12923:62;-1:-1:-1;;;13001:18:1;;;12994:35;13046:19;;6516:122:0;12670:401:1;6516:122:0;6674:67;246:10;6697:7;6725:15;6706:16;:34;6674:8;:67::i;:::-;-1:-1:-1;6772:4:0;;6302:482;-1:-1:-1;;;6302:482:0:o;4718:216::-;4840:4;4862:42;246:10;4886:9;4897:6;4862:9;:42::i;14161:278::-;8510:6;;-1:-1:-1;;;;;8510:6:0;246:10;8510:22;8502:67;;;;-1:-1:-1;;;8502:67:0;;;;;;;:::i;:::-;14263:9:::1;14258:174;14278:19:::0;;::::1;14258:174;;;14354:8;14319:19;:32;14339:8;;14348:1;14339:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14319:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;14319:32:0;:43;;-1:-1:-1;;14319:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14398:8;;14407:1;14398:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14382:38:0::1;;14411:8;14382:38;;;;1848:14:1::0;1841:22;1823:41;;1811:2;1796:18;;1683:187;14382:38:0::1;;;;;;;;14299:3;;14258:174;;17932:135:::0;8510:6;;-1:-1:-1;;;;;8510:6:0;246:10;8510:22;8502:67;;;;-1:-1:-1;;;8502:67:0;;;;;;;:::i;:::-;17993:17:::1;::::0;:22;17985:31:::1;;;::::0;::::1;;18047:12;18027:17;:32:::0;17932:135::o;17077:233::-;8448:6;;-1:-1:-1;;;;;8448:6:0;17128:10;:21;;:51;;-1:-1:-1;17167:12:0;;-1:-1:-1;;;;;17167:12:0;17153:10;:26;17128:51;17120:76;;;;-1:-1:-1;;;17120:76:0;;13278:2:1;17120:76:0;;;13260:21:1;13317:2;13297:18;;;13290:30;-1:-1:-1;;;13336:18:1;;;13329:42;13388:18;;17120:76:0;13076:336:1;17120:76:0;17244:58;;17207:12;;17252:10;;17276:21;;17207:12;17244:58;17207:12;17244:58;17276:21;17252:10;17244:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8753:281;8510:6;;-1:-1:-1;;;;;8510:6:0;246:10;8510:22;8502:67;;;;-1:-1:-1;;;8502:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8856:22:0;::::1;8834:110;;;::::0;-1:-1:-1;;;8834:110:0;;13829:2:1;8834:110:0::1;::::0;::::1;13811:21:1::0;13868:2;13848:18;;;13841:30;13907:34;13887:18;;;13880:62;-1:-1:-1;;;13958:18:1;;;13951:36;14004:19;;8834:110:0::1;13627:402:1::0;8834:110:0::1;8981:6;::::0;8960:38:::1;::::0;-1:-1:-1;;;;;8960:38:0;;::::1;::::0;8981:6:::1;::::0;8960:38:::1;::::0;8981:6:::1;::::0;8960:38:::1;9009:6;:17:::0;;-1:-1:-1;;;;;;9009:17:0::1;-1:-1:-1::0;;;;;9009:17:0;;;::::1;::::0;;;::::1;::::0;;8753:281::o;7451:380::-;-1:-1:-1;;;;;7587:19:0;;7579:68;;;;-1:-1:-1;;;7579:68:0;;14236:2:1;7579:68:0;;;14218:21:1;14275:2;14255:18;;;14248:30;14314:34;14294:18;;;14287:62;-1:-1:-1;;;14365:18:1;;;14358:34;14409:19;;7579:68:0;14034:400:1;7579:68:0;-1:-1:-1;;;;;7666:21:0;;7658:68;;;;-1:-1:-1;;;7658:68:0;;14641:2:1;7658:68:0;;;14623:21:1;14680:2;14660:18;;;14653:30;14719:34;14699:18;;;14692:62;-1:-1:-1;;;14770:18:1;;;14763:32;14812:19;;7658:68:0;14439:398:1;7658:68:0;-1:-1:-1;;;;;7739:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7791:32;;160:25:1;;;7791:32:0;;133:18:1;7791:32:0;;;;;;;7451:380;;;:::o;14447:1811::-;-1:-1:-1;;;;;14579:18:0;;14571:68;;;;-1:-1:-1;;;14571:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14658:16:0;;14650:64;;;;-1:-1:-1;;;14650:64:0;;;;;;;:::i;:::-;14730:17;;14751:1;14730:22;14727:1481;;-1:-1:-1;;;;;14777:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;14806:23:0;;;;;;:19;:23;;;;;;;;14777:52;14769:87;;;;-1:-1:-1;;;14769:87:0;;15854:2:1;14769:87:0;;;15836:21:1;15893:2;15873:18;;;15866:30;-1:-1:-1;;;15912:18:1;;;15905:52;15974:18;;14769:87:0;15652:346:1;14769:87:0;14871:33;14887:4;14893:2;14897:6;14871:15;:33::i;:::-;14727:1481;;;-1:-1:-1;;;;;14951:25:0;;;;;;:19;:25;;;;;;;;14950:26;:54;;;;-1:-1:-1;;;;;;14981:23:0;;;;;;:19;:23;;;;;;;;14980:24;14950:54;14946:1201;;;15039:7;;;;15065:98;;;;15117:6;15107;:16;;15099:44;;;;-1:-1:-1;;;15099:44:0;;16205:2:1;15099:44:0;;;16187:21:1;16244:2;16224:18;;;16217:30;-1:-1:-1;;;16263:18:1;;;16256:45;16318:18;;15099:44:0;16003:339:1;15099:44:0;15183:12;15218:11;15232:13;:11;:13::i;:::-;15218:27;;15264:11;15278:12;:10;:12::i;:::-;-1:-1:-1;;;;;15315:9:0;;;;;;:5;:9;;;;;;15264:26;;-1:-1:-1;15315:9:0;;15311:243;;;15352:7;;15349:64;;15410:3;15394:12;15403:3;15394:6;:12;:::i;:::-;15393:20;;;;:::i;:::-;15386:27;;15349:64;15311:243;;;15466:1;15460:3;:7;:22;;;;-1:-1:-1;;;;;;15471:11:0;;;;;;:5;:11;;;;;;;;15460:22;15456:98;;;15531:3;15515:12;15524:3;15515:6;:12;:::i;:::-;15514:20;;;;:::i;:::-;15507:27;;15456:98;15578:8;;15574:99;;15611:42;15627:4;15641;15648;15611:15;:42::i;:::-;15693:14;15703:4;15693:14;;:::i;:::-;;;15731:6;15728:202;;;-1:-1:-1;;;;;15766:9:0;;;;;;:5;:9;;;;;;;;15765:10;:35;;;;-1:-1:-1;;;;;;15779:21:0;;15793:6;15779:21;;15765:35;15762:149;;;15863:9;15846:13;15856:2;-1:-1:-1;;;;;4684:18:0;4652:7;4684:18;;;;;;;;;;;;4533:177;15846:13;15837:22;;:6;:22;:::i;:::-;:35;;15829:58;;;;-1:-1:-1;;;15829:58:0;;16549:2:1;15829:58:0;;;16531:21:1;16588:2;16568:18;;;16561:30;-1:-1:-1;;;16607:18:1;;;16600:40;16657:18;;15829:58:0;16347:334:1;15829:58:0;15954:11;;;;;;;:24;;;;-1:-1:-1;15970:8:0;;;;15969:9;15954:24;:37;;;;-1:-1:-1;;;;;;15982:9:0;;;;;;:5;:9;;;;;;;;15954:37;15950:179;;;16016:8;:15;;-1:-1:-1;;16016:15:0;16027:4;16016:15;;;16054:16;16063:6;16054:8;:16::i;:::-;16093:8;:16;;-1:-1:-1;;16093:16:0;;;15950:179;15006:1141;;;;14946:1201;16163:33;16179:4;16185:2;16189:6;16163:15;:33::i;:::-;16220:30;16241:4;16247:2;16220:20;:30::i;:::-;14447:1811;;;:::o;6792:651::-;-1:-1:-1;;;;;6932:20:0;;6924:70;;;;-1:-1:-1;;;6924:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7013:23:0;;7005:71;;;;-1:-1:-1;;;7005:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7113:17:0;;7089:21;7113:17;;;;;;;;;;;7163:23;;;;7141:111;;;;-1:-1:-1;;;7141:111:0;;16888:2:1;7141:111:0;;;16870:21:1;16927:2;16907:18;;;16900:30;16966:34;16946:18;;;16939:62;-1:-1:-1;;;17017:18:1;;;17010:36;17063:19;;7141:111:0;16686:402:1;7141:111:0;-1:-1:-1;;;;;7288:17:0;;;:9;:17;;;;;;;;;;;7308:22;;;7288:42;;7352:20;;;;;;;;:30;;7324:6;;7288:9;7352:30;;7324:6;;7352:30;:::i;:::-;;;;;;;;7417:9;-1:-1:-1;;;;;7400:35:0;7409:6;-1:-1:-1;;;;;7400:35:0;;7428:6;7400:35;;;;160:25:1;;148:2;133:18;;14:177;7400:35:0;;;;;;;;6913:530;6792:651;;;:::o;16690:379::-;16784:4;16743:20;4684:18;;;;;;;;;;;16820;;16805:33;;16801:46;;;16840:7;16690:379;:::o;16801:46::-;16876:13;;16861:12;:28;16857:62;;;-1:-1:-1;16906:13:0;;16857:62;16949:6;16934:12;:21;16930:48;;;-1:-1:-1;16972:6:0;16930:48;16993:12;17009:1;16993:17;16989:30;;17012:7;16690:379;:::o;16989:30::-;17031;17048:12;17031:16;:30::i;:::-;16732:337;16690:379;:::o;18809:241::-;-1:-1:-1;;;;;18898:22:0;;;;;;:16;:22;;;;;;:27;;:73;;-1:-1:-1;;;;;;18944:22:0;;;;;;:16;:22;;;;;;18929:37;;:12;:37;:::i;:::-;:42;18898:73;:90;;;-1:-1:-1;8448:6:0;;-1:-1:-1;;;;;18975:13:0;;;8448:6;;18975:13;18898:90;18890:152;;;;-1:-1:-1;;;18890:152:0;;17295:2:1;18890:152:0;;;17277:21:1;17334:2;17314:18;;;17307:30;17373:34;17353:18;;;17346:62;-1:-1:-1;;;17424:18:1;;;17417:47;17481:19;;18890:152:0;17093:413:1;16266:416:0;16356:16;;;16370:1;16356:16;;;;;;;;16332:21;;16356:16;;;;;;;;;;-1:-1:-1;16356:16:0;16332:40;;16401:4;16383;16388:1;16383:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;16383:23:0;;;-1:-1:-1;;;;;16383:23:0;;;;;16427:9;-1:-1:-1;;;;;16427:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16417:4;16422:1;16417:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16417:26:0;;;:7;;;;;;;;;:26;16456:218;;-1:-1:-1;;;16456:218:0;;:9;:60;;;;;;:218;;16531:11;;16557:1;;16601:4;;16628;;16648:15;;16456:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16321:361;16266:416;:::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;975:131::-;-1:-1:-1;;;;;1050:31:1;;1040:42;;1030:70;;1096:1;1093;1086:12;1030:70;975:131;:::o;1111:247::-;1170:6;1223:2;1211:9;1202:7;1198:23;1194:32;1191:52;;;1239:1;1236;1229:12;1191:52;1278:9;1265:23;1297:31;1322:5;1297:31;:::i;:::-;1347:5;1111:247;-1:-1:-1;;;1111:247:1:o;1363:315::-;1431:6;1439;1492:2;1480:9;1471:7;1467:23;1463:32;1460:52;;;1508:1;1505;1498:12;1460:52;1547:9;1534:23;1566:31;1591:5;1566:31;:::i;:::-;1616:5;1668:2;1653:18;;;;1640:32;;-1:-1:-1;;;1363:315:1:o;1875:456::-;1952:6;1960;1968;2021:2;2009:9;2000:7;1996:23;1992:32;1989:52;;;2037:1;2034;2027:12;1989:52;2076:9;2063:23;2095:31;2120:5;2095:31;:::i;:::-;2145:5;-1:-1:-1;2202:2:1;2187:18;;2174:32;2215:33;2174:32;2215:33;:::i;:::-;1875:456;;2267:7;;-1:-1:-1;;;2321:2:1;2306:18;;;;2293:32;;1875:456::o;2336:367::-;2399:8;2409:6;2463:3;2456:4;2448:6;2444:17;2440:27;2430:55;;2481:1;2478;2471:12;2430:55;-1:-1:-1;2504:20:1;;2547:18;2536:30;;2533:50;;;2579:1;2576;2569:12;2533:50;2616:4;2608:6;2604:17;2592:29;;2676:3;2669:4;2659:6;2656:1;2652:14;2644:6;2640:27;2636:38;2633:47;2630:67;;;2693:1;2690;2683:12;2630:67;2336:367;;;;;:::o;2708:160::-;2773:20;;2829:13;;2822:21;2812:32;;2802:60;;2858:1;2855;2848:12;2802:60;2708:160;;;:::o;2873:505::-;2965:6;2973;2981;3034:2;3022:9;3013:7;3009:23;3005:32;3002:52;;;3050:1;3047;3040:12;3002:52;3090:9;3077:23;3123:18;3115:6;3112:30;3109:50;;;3155:1;3152;3145:12;3109:50;3194:70;3256:7;3247:6;3236:9;3232:22;3194:70;:::i;:::-;3283:8;;-1:-1:-1;3168:96:1;-1:-1:-1;3337:35:1;;-1:-1:-1;3368:2:1;3353:18;;3337:35;:::i;:::-;3327:45;;2873:505;;;;;:::o;3780:248::-;3848:6;3856;3909:2;3897:9;3888:7;3884:23;3880:32;3877:52;;;3925:1;3922;3915:12;3877:52;-1:-1:-1;;3948:23:1;;;4018:2;4003:18;;;3990:32;;-1:-1:-1;3780:248:1:o;4033:773::-;4155:6;4163;4171;4179;4232:2;4220:9;4211:7;4207:23;4203:32;4200:52;;;4248:1;4245;4238:12;4200:52;4288:9;4275:23;4317:18;4358:2;4350:6;4347:14;4344:34;;;4374:1;4371;4364:12;4344:34;4413:70;4475:7;4466:6;4455:9;4451:22;4413:70;:::i;:::-;4502:8;;-1:-1:-1;4387:96:1;-1:-1:-1;4590:2:1;4575:18;;4562:32;;-1:-1:-1;4606:16:1;;;4603:36;;;4635:1;4632;4625:12;4603:36;;4674:72;4738:7;4727:8;4716:9;4712:24;4674:72;:::i;:::-;4033:773;;;;-1:-1:-1;4765:8:1;-1:-1:-1;;;;4033:773:1:o;4811:180::-;4870:6;4923:2;4911:9;4902:7;4898:23;4894:32;4891:52;;;4939:1;4936;4929:12;4891:52;-1:-1:-1;4962:23:1;;4811:180;-1:-1:-1;4811:180:1:o;4996:315::-;5061:6;5069;5122:2;5110:9;5101:7;5097:23;5093:32;5090:52;;;5138:1;5135;5128:12;5090:52;5177:9;5164:23;5196:31;5221:5;5196:31;:::i;:::-;5246:5;-1:-1:-1;5270:35:1;5301:2;5286:18;;5270:35;:::i;:::-;5260:45;;4996:315;;;;;:::o;5316:388::-;5384:6;5392;5445:2;5433:9;5424:7;5420:23;5416:32;5413:52;;;5461:1;5458;5451:12;5413:52;5500:9;5487:23;5519:31;5544:5;5519:31;:::i;:::-;5569:5;-1:-1:-1;5626:2:1;5611:18;;5598:32;5639:33;5598:32;5639:33;:::i;:::-;5691:7;5681:17;;;5316:388;;;;;:::o;5709:127::-;5770:10;5765:3;5761:20;5758:1;5751:31;5801:4;5798:1;5791:15;5825:4;5822:1;5815:15;5841:128;5908:9;;;5929:11;;;5926:37;;;5943:18;;:::i;5974:380::-;6053:1;6049:12;;;;6096;;;6117:61;;6171:4;6163:6;6159:17;6149:27;;6117:61;6224:2;6216:6;6213:14;6193:18;6190:38;6187:161;;6270:10;6265:3;6261:20;6258:1;6251:31;6305:4;6302:1;6295:15;6333:4;6330:1;6323:15;6187:161;;5974:380;;;:::o;6359:356::-;6561:2;6543:21;;;6580:18;;;6573:30;6639:34;6634:2;6619:18;;6612:62;6706:2;6691:18;;6359:356::o;7129:127::-;7190:10;7185:3;7181:20;7178:1;7171:31;7221:4;7218:1;7211:15;7245:4;7242:1;7235:15;7261:125;7326:9;;;7347:10;;;7344:36;;;7360:18;;:::i;7391:217::-;7431:1;7457;7447:132;;7501:10;7496:3;7492:20;7489:1;7482:31;7536:4;7533:1;7526:15;7564:4;7561:1;7554:15;7447:132;-1:-1:-1;7593:9:1;;7391:217::o;8382:416::-;8471:1;8508:5;8471:1;8522:270;8543:7;8533:8;8530:21;8522:270;;;8602:4;8598:1;8594:6;8590:17;8584:4;8581:27;8578:53;;;8611:18;;:::i;:::-;8661:7;8651:8;8647:22;8644:55;;;8681:16;;;;8644:55;8760:22;;;;8720:15;;;;8522:270;;;8526:3;8382:416;;;;;:::o;8803:806::-;8852:5;8882:8;8872:80;;-1:-1:-1;8923:1:1;8937:5;;8872:80;8971:4;8961:76;;-1:-1:-1;9008:1:1;9022:5;;8961:76;9053:4;9071:1;9066:59;;;;9139:1;9134:130;;;;9046:218;;9066:59;9096:1;9087:10;;9110:5;;;9134:130;9171:3;9161:8;9158:17;9155:43;;;9178:18;;:::i;:::-;-1:-1:-1;;9234:1:1;9220:16;;9249:5;;9046:218;;9348:2;9338:8;9335:16;9329:3;9323:4;9320:13;9316:36;9310:2;9300:8;9297:16;9292:2;9286:4;9283:12;9279:35;9276:77;9273:159;;;-1:-1:-1;9385:19:1;;;9417:5;;9273:159;9464:34;9489:8;9483:4;9464:34;:::i;:::-;9534:6;9530:1;9526:6;9522:19;9513:7;9510:32;9507:58;;;9545:18;;:::i;:::-;9583:20;;8803:806;-1:-1:-1;;;8803:806:1:o;9614:140::-;9672:5;9701:47;9742:4;9732:8;9728:19;9722:4;9701:47;:::i;9759:168::-;9832:9;;;9863;;9880:15;;;9874:22;;9860:37;9850:71;;9901:18;;:::i;10630:251::-;10700:6;10753:2;10741:9;10732:7;10728:23;10724:32;10721:52;;;10769:1;10766;10759:12;10721:52;10801:9;10795:16;10820:31;10845:5;10820:31;:::i;11807:306::-;11895:6;11903;11911;11964:2;11952:9;11943:7;11939:23;11935:32;11932:52;;;11980:1;11977;11970:12;11932:52;12009:9;12003:16;11993:26;;12059:2;12048:9;12044:18;12038:25;12028:35;;12103:2;12092:9;12088:18;12082:25;12072:35;;11807:306;;;;;:::o;12118:136::-;12157:3;12185:5;12175:39;;12194:18;;:::i;:::-;-1:-1:-1;;;12230:18:1;;12118:136::o;14842:401::-;15044:2;15026:21;;;15083:2;15063:18;;;15056:30;15122:34;15117:2;15102:18;;15095:62;-1:-1:-1;;;15188:2:1;15173:18;;15166:35;15233:3;15218:19;;14842:401::o;15248:399::-;15450:2;15432:21;;;15489:2;15469:18;;;15462:30;15528:34;15523:2;15508:18;;15501:62;-1:-1:-1;;;15594:2:1;15579:18;;15572:33;15637:3;15622:19;;15248:399::o;17643:980::-;17905:4;17953:3;17942:9;17938:19;17984:6;17973:9;17966:25;18010:2;18048:6;18043:2;18032:9;18028:18;18021:34;18091:3;18086:2;18075:9;18071:18;18064:31;18115:6;18150;18144:13;18181:6;18173;18166:22;18219:3;18208:9;18204:19;18197:26;;18258:2;18250:6;18246:15;18232:29;;18279:1;18289:195;18303:6;18300:1;18297:13;18289:195;;;18368:13;;-1:-1:-1;;;;;18364:39:1;18352:52;;18459:15;;;;18424:12;;;;18400:1;18318:9;18289:195;;;-1:-1:-1;;;;;;;18540:32:1;;;;18535:2;18520:18;;18513:60;-1:-1:-1;;;18604:3:1;18589:19;18582:35;18501:3;17643:980;-1:-1:-1;;;17643:980:1:o

Swarm Source

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