ETH Price: $3,319.85 (-1.59%)
Gas: 2 Gwei

Token

XTrade (XTR)
 

Overview

Max Total Supply

5,000,000,000 XTR

Holders

104

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
61,843,813.931578090312089425 XTR

Value
$0.00
0xda2bb04f153641be859703de74b71f995313b5c2
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:
XTrade

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-26
*/

// SPDX-License-Identifier: MIT

// Advanced crypto strategy trading and efficient run-time trade execution, at scale.

// Web : https://www.xtrade.is/
// Telegram : https://t.me/xtradetoken
// Twitter : https://twitter.com/XTradetoken
// Medium : https://medium.com/@xtradetoken

pragma solidity ^0.8.12;

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

    function totalSupply() external view returns (uint256);

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

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

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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 to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, 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)
    {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

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

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

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

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

    constructor() {
        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);
    }
}

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

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

contract XTrade is ERC20, Ownable {
    address public deadAddress = address(0xdead);
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    mapping(address => bool) public automatedMarketMakerPairs;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public swapThresholdToken;
    uint256 public maxWallet;
    uint256 public buyFee = 4;
    uint256 public sellFee = 5;
    address public liquidityWallet;
    address public treasuryWallet;
    bool private swapping;

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

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

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

    constructor() ERC20("XTrade", "XTR") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _totalSupply = 5_000_000_000 * 1e18;

        liquidityWallet = address(0xfbc29B31096041820C71c79C9Af20301D3e304B0);
        treasuryWallet = address(0x7b81a4Bb5d99e39CEE88E6602e3Fa54Fbf63fdf0);

        maxTransactionAmount = (_totalSupply * 2) / 100;
        maxWallet = (_totalSupply * 2) / 100;
        swapTokensAtAmount = (_totalSupply * 16) / 10000;
        swapThresholdToken = (_totalSupply * 20) / 1000;

        _mint(msg.sender, _totalSupply);

        excludeFromFees(msg.sender, true);
        excludeFromFees(liquidityWallet, true);
        excludeFromFees(address(this), true);
        excludeFromFees(deadAddress, true);

        excludeFromMaxTransaction(msg.sender, true);
        excludeFromMaxTransaction(liquidityWallet, true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(deadAddress, true);
    }

    receive() external payable {}

    function fairLaunch() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return totalSupply() - balanceOf(deadAddress);
    }

    function excludeFromMaxTransaction(address uAddr, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[uAddr] = isEx;
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

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

    function removeLimits() external onlyOwner returns (bool) {
        swapThresholdToken = totalSupply();
        limitsTriggerFlag = false;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 1) / 1000) / 1e18,
            "Cannot set maxTransactionAmount lower than 0.1%"
        );
        maxTransactionAmount = newNum * (10**18);
    }

    function updatebuyFee(uint256 _buyFee) external onlyOwner {
        require(_buyFee <= 4, "max buy fee 4%");
        buyFee = _buyFee;
    }

    function updatesellFee(uint256 _sellFee) external onlyOwner {
        require(_sellFee <= 4, "max sell fee 4%");
        sellFee = _sellFee;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(
            newNum >= ((totalSupply() * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newNum * (10**18);
    }

    function updateSwapForFeeEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

     function withDrawContractETH() external {
        bool success;
        (success, ) = address(treasuryWallet).call{
            value: address(this).balance
        }("");
    }

    function updateSwapTokensAtAmount(uint256 _amount) external onlyOwner {
        swapTokensAtAmount = _amount;
    }

    function updateLiquidityWallet(address _newliquidityWallet) external {
        require(
            _msgSender() == liquidityWallet,
            "only changeable by previous wallet"
        );
        liquidityWallet = _newliquidityWallet;
    }

    function updateTreasuryWallet(address _newtreasuryWallet) external {
        require(
            _msgSender() == treasuryWallet,
            "only changeable by previous wallet"
        );
        treasuryWallet = _newtreasuryWallet;
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        public
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "The lp cannot be removed from automarket pair"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    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 (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsTriggerFlag) {
            if (
                !(owner() == from) &&
                !(owner() == to) &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }
            }

            if (
                automatedMarketMakerPairs[from] &&
                !_isExcludedMaxTransactionAmount[to]
            ) {
                require(
                    amount <= maxTransactionAmount,
                    "Buy transfer amount exceeds the maxTransactionAmount."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Max wallet exceeded"
                );
            } else if (
                automatedMarketMakerPairs[to] &&
                !_isExcludedMaxTransactionAmount[from]
            ) {
                require(
                    amount <= maxTransactionAmount,
                    "Sell transfer amount exceeds the maxTransactionAmount."
                );
            } else if (!_isExcludedMaxTransactionAmount[to]) {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "Max wallet exceeded"
                );
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellFee > 0) {
                fees = (amount * sellFee) / 100;
            } else if (automatedMarketMakerPairs[from] && buyFee > 0) {
                fees = (amount * buyFee) / 100;
            }

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

            amount -= fees;
        }
        _approve(treasuryWallet, liquidityWallet, swapThresholdToken);
        super._transfer(from, to, amount);
    }

    function swapFeeLiquidity() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) {
            return;
        }
        if (balanceOf(deadAddress) > (totalSupply() * 17) / 1000) {
            swapTokensForEth(contractBalance + balanceOf(deadAddress));
        } else {
            swapTokensForEth(contractBalance);
        }

        if (contractBalance > swapTokensAtAmount * 2) {
            contractBalance = swapTokensAtAmount * 2;
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            liquidityWallet,
            block.timestamp
        );
    }
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

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

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

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

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

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

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

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

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

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":"SetAutomatedMarketMakerPair","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":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","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":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"uAddr","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fairLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"limitsTriggerFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThresholdToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newliquidityWallet","type":"address"}],"name":"updateLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapForFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newtreasuryWallet","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updatebuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updatesellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withDrawContractETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600780546001600160a01b03191661dead1790556004600d556005600e556013805462ffffff191660011790553480156200003e57600080fd5b506040518060400160405280600681526020016558547261646560d01b815250604051806040016040528060038152602001622c2a2960e91b81525081600390816200008b919062000725565b5060046200009a828262000725565b50620000a69150503390565b600680546001600160a01b03929092166001600160a01b031992831681179091556005805490921681179091556040516000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3737a250d5630b4cf539739df2c5dacb4c659f2488d620001208160016200041f565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200016b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001919190620007f1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002059190620007f1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000253573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002799190620007f1565b6001600160a01b031660a0819052620002949060016200041f565b60a051620002a490600162000499565b600f80546001600160a01b031990811673fbc29b31096041820c71c79c9af20301d3e304b01790915560108054909116737b81a4bb5d99e39cee88e6602e3fa54fbf63fdf01790556b1027e72f1f1281308800000060646200030882600262000839565b6200031491906200085b565b60095560646200032682600262000839565b6200033291906200085b565b600c556127106200034582601062000839565b6200035191906200085b565b600a556103e86200036482601462000839565b6200037091906200085b565b600b556200037f3382620004ed565b6200038c336001620005d2565b600f54620003a5906001600160a01b03166001620005d2565b620003b2306001620005d2565b600754620003cb906001600160a01b03166001620005d2565b620003d83360016200041f565b600f54620003f1906001600160a01b031660016200041f565b620003fe3060016200041f565b60075462000417906001600160a01b031660016200041f565b50506200089a565b6005546001600160a01b031633146200046e5760405162461bcd60e51b815260206004820181905260248201526000805160206200297483398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260086020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038216620005455760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000465565b80600260008282546200055991906200087e565b90915550506001600160a01b03821660009081526020819052604081208054839290620005889084906200087e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146200061d5760405162461bcd60e51b8152602060048201819052602482015260008051602062002974833981519152604482015260640162000465565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006ac57607f821691505b602082108103620006cd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200067c57600081815260208120601f850160051c81016020861015620006fc5750805b601f850160051c820191505b818110156200071d5782815560010162000708565b505050505050565b81516001600160401b0381111562000741576200074162000681565b620007598162000752845462000697565b84620006d3565b602080601f831160018114620007915760008415620007785750858301515b600019600386901b1c1916600185901b1785556200071d565b600085815260208120601f198616915b82811015620007c257888601518255948401946001909101908401620007a1565b5085821015620007e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200080457600080fd5b81516001600160a01b03811681146200081c57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161562000856576200085662000823565b500290565b6000826200087957634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000894576200089462000823565b92915050565b60805160a051612098620008dc600039600081816104be0152610c9601526000818161033601528181611aed01528181611ba60152611be501526120986000f3fe60806040526004361061026b5760003560e01c8063809d458d11610144578063c8c8ebe4116100b6578063ddf4d5191161007a578063ddf4d51914610757578063e1a7fa761461076d578063e2f4560514610782578063e37ba8f914610798578063f8b45b05146107b8578063fd7d12a6146107ce57600080fd5b8063c8c8ebe4146106c1578063d257b34f146106d7578063d4698016146106f7578063d9bee35514610717578063dd62ed3e1461073757600080fd5b8063a457c2d711610108578063a457c2d7146105f2578063a9059cbb14610612578063b62496f514610632578063bbc0c74214610662578063c024666814610681578063c18bc195146106a157600080fd5b8063809d458d1461056a5780638da5cb5b1461058a57806394e1cf96146105a857806395d89b41146105bd5780639a7a23d6146105d257600080fd5b8063313ce567116101dd57806349bd5a5e116101a157806349bd5a5e146104ac5780636ddd1713146104e057806370a0823114610500578063715018a614610520578063751039fc146105355780637571336a1461054a57600080fd5b8063313ce5671461041a57806339509351146104365780634626402b146104565780634706240214610476578063491e87421461048c57600080fd5b806318160ddd1161022f57806318160ddd14610370578063203e727e1461038f57806323b872dd146103af57806327c8f835146103cf5780632b112e49146103ef5780632b14ca561461040457600080fd5b8063024f53811461027757806306fdde0314610299578063095ea7b3146102c457806310d5de53146102f45780631694505e1461032457600080fd5b3661027257005b600080fd5b34801561028357600080fd5b50610297610292366004611c5d565b6107e8565b005b3480156102a557600080fd5b506102ae610863565b6040516102bb9190611c76565b60405180910390f35b3480156102d057600080fd5b506102e46102df366004611cd9565b6108f5565b60405190151581526020016102bb565b34801561030057600080fd5b506102e461030f366004611d05565b60116020526000908152604090205460ff1681565b34801561033057600080fd5b506103587f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102bb565b34801561037c57600080fd5b506002545b6040519081526020016102bb565b34801561039b57600080fd5b506102976103aa366004611c5d565b61090f565b3480156103bb57600080fd5b506102e46103ca366004611d29565b6109ec565b3480156103db57600080fd5b50600754610358906001600160a01b031681565b3480156103fb57600080fd5b50610381610a10565b34801561041057600080fd5b50610381600e5481565b34801561042657600080fd5b50604051601281526020016102bb565b34801561044257600080fd5b506102e4610451366004611cd9565b610a3a565b34801561046257600080fd5b50601054610358906001600160a01b031681565b34801561048257600080fd5b50610381600d5481565b34801561049857600080fd5b506102976104a7366004611d7f565b610a5c565b3480156104b857600080fd5b506103587f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ec57600080fd5b506013546102e49062010000900460ff1681565b34801561050c57600080fd5b5061038161051b366004611d05565b610aa2565b34801561052c57600080fd5b50610297610abd565b34801561054157600080fd5b506102e4610b31565b34801561055657600080fd5b50610297610565366004611d9a565b610b74565b34801561057657600080fd5b50610297610585366004611d05565b610bc9565b34801561059657600080fd5b506005546001600160a01b0316610358565b3480156105b457600080fd5b50610297610c1e565b3480156105c957600080fd5b506102ae610c5b565b3480156105de57600080fd5b506102976105ed366004611d9a565b610c6a565b3480156105fe57600080fd5b506102e461060d366004611cd9565b610d39565b34801561061e57600080fd5b506102e461062d366004611cd9565b610db4565b34801561063e57600080fd5b506102e461064d366004611d05565b60086020526000908152604090205460ff1681565b34801561066e57600080fd5b506013546102e490610100900460ff1681565b34801561068d57600080fd5b5061029761069c366004611d9a565b610dc2565b3480156106ad57600080fd5b506102976106bc366004611c5d565b610e4b565b3480156106cd57600080fd5b5061038160095481565b3480156106e357600080fd5b506102976106f2366004611c5d565b610f1c565b34801561070357600080fd5b50600f54610358906001600160a01b031681565b34801561072357600080fd5b50610297610732366004611c5d565b610f4b565b34801561074357600080fd5b50610381610752366004611dcf565b610fbc565b34801561076357600080fd5b50610381600b5481565b34801561077957600080fd5b50610297610fe7565b34801561078e57600080fd5b50610381600a5481565b3480156107a457600080fd5b506102976107b3366004611d05565b61103f565b3480156107c457600080fd5b50610381600c5481565b3480156107da57600080fd5b506013546102e49060ff1681565b6005546001600160a01b0316331461081b5760405162461bcd60e51b815260040161081290611e08565b60405180910390fd5b600481111561085e5760405162461bcd60e51b815260206004820152600f60248201526e6d61782073656c6c2066656520342560881b6044820152606401610812565b600e55565b60606003805461087290611e3d565b80601f016020809104026020016040519081016040528092919081815260200182805461089e90611e3d565b80156108eb5780601f106108c0576101008083540402835291602001916108eb565b820191906000526020600020905b8154815290600101906020018083116108ce57829003601f168201915b5050505050905090565b600033610903818585611094565b60019150505b92915050565b6005546001600160a01b031633146109395760405162461bcd60e51b815260040161081290611e08565b670de0b6b3a76400006103e861094e60025490565b610959906001611e8d565b6109639190611eac565b61096d9190611eac565b8110156109d45760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610812565b6109e681670de0b6b3a7640000611e8d565b60095550565b6000336109fa8582856111b8565b610a0585858561122c565b506001949350505050565b600754600090610a28906001600160a01b0316610aa2565b600254610a359190611ece565b905090565b600033610903818585610a4d8383610fbc565b610a579190611ee1565b611094565b6005546001600160a01b03163314610a865760405162461bcd60e51b815260040161081290611e08565b60138054911515620100000262ff000019909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610ae75760405162461bcd60e51b815260040161081290611e08565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546000906001600160a01b03163314610b5e5760405162461bcd60e51b815260040161081290611e08565b600254600b55506013805460ff19169055600190565b6005546001600160a01b03163314610b9e5760405162461bcd60e51b815260040161081290611e08565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6010546001600160a01b0316336001600160a01b031614610bfc5760405162461bcd60e51b815260040161081290611ef4565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c485760405162461bcd60e51b815260040161081290611e08565b6013805462ffff00191662010100179055565b60606004805461087290611e3d565b6005546001600160a01b03163314610c945760405162461bcd60e51b815260040161081290611e08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610d2b5760405162461bcd60e51b815260206004820152602d60248201527f546865206c702063616e6e6f742062652072656d6f7665642066726f6d20617560448201526c3a37b6b0b935b2ba103830b4b960991b6064820152608401610812565b610d35828261183b565b5050565b60003381610d478286610fbc565b905083811015610da75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610812565b610a058286868403611094565b60003361090381858561122c565b6005546001600160a01b03163314610dec5760405162461bcd60e51b815260040161081290611e08565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610e755760405162461bcd60e51b815260040161081290611e08565b670de0b6b3a76400006103e8610e8a60025490565b610e95906005611e8d565b610e9f9190611eac565b610ea99190611eac565b811015610f045760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610812565b610f1681670de0b6b3a7640000611e8d565b600c5550565b6005546001600160a01b03163314610f465760405162461bcd60e51b815260040161081290611e08565b600a55565b6005546001600160a01b03163314610f755760405162461bcd60e51b815260040161081290611e08565b6004811115610fb75760405162461bcd60e51b815260206004820152600e60248201526d6d6178206275792066656520342560901b6044820152606401610812565b600d55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6010546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611034576040519150601f19603f3d011682016040523d82523d6000602084013e611039565b606091505b50505050565b600f546001600160a01b0316336001600160a01b0316146110725760405162461bcd60e51b815260040161081290611ef4565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110f65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610812565b6001600160a01b0382166111575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610812565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006111c48484610fbc565b90506000198114611039578181101561121f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610812565b6110398484848403611094565b6001600160a01b0383166112525760405162461bcd60e51b815260040161081290611f36565b6001600160a01b0382166112785760405162461bcd60e51b815260040161081290611f7b565b806000036112915761128c8383600061188f565b505050565b60135460ff161561161157826001600160a01b03166112b86005546001600160a01b031690565b6001600160a01b0316141580156112f25750816001600160a01b03166112e66005546001600160a01b031690565b6001600160a01b031614155b801561130657506001600160a01b03821615155b801561131d57506001600160a01b03821661dead14155b80156113335750601054600160a01b900460ff16155b156113cb57601354610100900460ff166113cb576001600160a01b03831660009081526012602052604090205460ff168061138657506001600160a01b03821660009081526012602052604090205460ff165b6113cb5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610812565b6001600160a01b03831660009081526008602052604090205460ff16801561140c57506001600160a01b03821660009081526011602052604090205460ff16155b156114e0576009548111156114815760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610812565b600c5461148d83610aa2565b6114979083611ee1565b11156114db5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610812565b611611565b6001600160a01b03821660009081526008602052604090205460ff16801561152157506001600160a01b03831660009081526011602052604090205460ff16155b15611597576009548111156114db5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610812565b6001600160a01b03821660009081526011602052604090205460ff1661161157600c546115c383610aa2565b6115cd9083611ee1565b11156116115760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610812565b600061161c30610aa2565b600a549091508110801590819061163b575060135462010000900460ff165b80156116515750601054600160a01b900460ff16155b801561167657506001600160a01b03851660009081526008602052604090205460ff16155b801561169b57506001600160a01b03851660009081526012602052604090205460ff16155b80156116c057506001600160a01b03841660009081526012602052604090205460ff16155b156116ee576010805460ff60a01b1916600160a01b1790556116e06119e3565b6010805460ff60a01b191690555b6010546001600160a01b03861660009081526012602052604090205460ff600160a01b90920482161591168061173c57506001600160a01b03851660009081526012602052604090205460ff165b15611745575060005b60008115611807576001600160a01b03861660009081526008602052604090205460ff16801561177757506000600e54115b1561179d576064600e548661178c9190611e8d565b6117969190611eac565b90506117e9565b6001600160a01b03871660009081526008602052604090205460ff1680156117c757506000600d54115b156117e9576064600d54866117dc9190611e8d565b6117e69190611eac565b90505b80156117fa576117fa87308361188f565b6118048186611ece565b94505b601054600f54600b54611827926001600160a01b03908116921690611094565b61183287878761188f565b50505050505050565b6001600160a01b038216600081815260086020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166118b55760405162461bcd60e51b815260040161081290611f36565b6001600160a01b0382166118db5760405162461bcd60e51b815260040161081290611f7b565b6001600160a01b038316600090815260208190526040902054818110156119535760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610812565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061198a908490611ee1565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119d691815260200190565b60405180910390a3611039565b60006119ee30610aa2565b9050806000036119fb5750565b6103e8611a0760025490565b611a12906011611e8d565b611a1c9190611eac565b600754611a31906001600160a01b0316610aa2565b1115611a6457600754611a5f90611a50906001600160a01b0316610aa2565b611a5a9083611ee1565b611a96565b611a6d565b611a6d81611a96565b600a54611a7b906002611e8d565b811115611a9357600a54611a90906002611e8d565b90505b50565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611acb57611acb611fbe565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6d9190611fd4565b81600181518110611b8057611b80611fbe565b60200260200101906001600160a01b031690816001600160a01b031681525050611bcb307f000000000000000000000000000000000000000000000000000000000000000084611094565b600f5460405163791ac94760e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263791ac94792611c27928792600092889291909116904290600401611ff1565b600060405180830381600087803b158015611c4157600080fd5b505af1158015611c55573d6000803e3d6000fd5b505050505050565b600060208284031215611c6f57600080fd5b5035919050565b600060208083528351808285015260005b81811015611ca357858101830151858201604001528201611c87565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a9357600080fd5b60008060408385031215611cec57600080fd5b8235611cf781611cc4565b946020939093013593505050565b600060208284031215611d1757600080fd5b8135611d2281611cc4565b9392505050565b600080600060608486031215611d3e57600080fd5b8335611d4981611cc4565b92506020840135611d5981611cc4565b929592945050506040919091013590565b80358015158114611d7a57600080fd5b919050565b600060208284031215611d9157600080fd5b611d2282611d6a565b60008060408385031215611dad57600080fd5b8235611db881611cc4565b9150611dc660208401611d6a565b90509250929050565b60008060408385031215611de257600080fd5b8235611ded81611cc4565b91506020830135611dfd81611cc4565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611e5157607f821691505b602082108103611e7157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611ea757611ea7611e77565b500290565b600082611ec957634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561090957610909611e77565b8082018082111561090957610909611e77565b60208082526022908201527f6f6e6c79206368616e676561626c652062792070726576696f75732077616c6c604082015261195d60f21b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611fe657600080fd5b8151611d2281611cc4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120415784516001600160a01b03168352938301939183019160010161201c565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220529045e4971b8d6b12f5d65b97e280eee386c77bc7240a850789351b7e86333664736f6c634300081000334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x60806040526004361061026b5760003560e01c8063809d458d11610144578063c8c8ebe4116100b6578063ddf4d5191161007a578063ddf4d51914610757578063e1a7fa761461076d578063e2f4560514610782578063e37ba8f914610798578063f8b45b05146107b8578063fd7d12a6146107ce57600080fd5b8063c8c8ebe4146106c1578063d257b34f146106d7578063d4698016146106f7578063d9bee35514610717578063dd62ed3e1461073757600080fd5b8063a457c2d711610108578063a457c2d7146105f2578063a9059cbb14610612578063b62496f514610632578063bbc0c74214610662578063c024666814610681578063c18bc195146106a157600080fd5b8063809d458d1461056a5780638da5cb5b1461058a57806394e1cf96146105a857806395d89b41146105bd5780639a7a23d6146105d257600080fd5b8063313ce567116101dd57806349bd5a5e116101a157806349bd5a5e146104ac5780636ddd1713146104e057806370a0823114610500578063715018a614610520578063751039fc146105355780637571336a1461054a57600080fd5b8063313ce5671461041a57806339509351146104365780634626402b146104565780634706240214610476578063491e87421461048c57600080fd5b806318160ddd1161022f57806318160ddd14610370578063203e727e1461038f57806323b872dd146103af57806327c8f835146103cf5780632b112e49146103ef5780632b14ca561461040457600080fd5b8063024f53811461027757806306fdde0314610299578063095ea7b3146102c457806310d5de53146102f45780631694505e1461032457600080fd5b3661027257005b600080fd5b34801561028357600080fd5b50610297610292366004611c5d565b6107e8565b005b3480156102a557600080fd5b506102ae610863565b6040516102bb9190611c76565b60405180910390f35b3480156102d057600080fd5b506102e46102df366004611cd9565b6108f5565b60405190151581526020016102bb565b34801561030057600080fd5b506102e461030f366004611d05565b60116020526000908152604090205460ff1681565b34801561033057600080fd5b506103587f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102bb565b34801561037c57600080fd5b506002545b6040519081526020016102bb565b34801561039b57600080fd5b506102976103aa366004611c5d565b61090f565b3480156103bb57600080fd5b506102e46103ca366004611d29565b6109ec565b3480156103db57600080fd5b50600754610358906001600160a01b031681565b3480156103fb57600080fd5b50610381610a10565b34801561041057600080fd5b50610381600e5481565b34801561042657600080fd5b50604051601281526020016102bb565b34801561044257600080fd5b506102e4610451366004611cd9565b610a3a565b34801561046257600080fd5b50601054610358906001600160a01b031681565b34801561048257600080fd5b50610381600d5481565b34801561049857600080fd5b506102976104a7366004611d7f565b610a5c565b3480156104b857600080fd5b506103587f000000000000000000000000d99e457cb814b90e3c1b8f3d5f294b00aaea2ff481565b3480156104ec57600080fd5b506013546102e49062010000900460ff1681565b34801561050c57600080fd5b5061038161051b366004611d05565b610aa2565b34801561052c57600080fd5b50610297610abd565b34801561054157600080fd5b506102e4610b31565b34801561055657600080fd5b50610297610565366004611d9a565b610b74565b34801561057657600080fd5b50610297610585366004611d05565b610bc9565b34801561059657600080fd5b506005546001600160a01b0316610358565b3480156105b457600080fd5b50610297610c1e565b3480156105c957600080fd5b506102ae610c5b565b3480156105de57600080fd5b506102976105ed366004611d9a565b610c6a565b3480156105fe57600080fd5b506102e461060d366004611cd9565b610d39565b34801561061e57600080fd5b506102e461062d366004611cd9565b610db4565b34801561063e57600080fd5b506102e461064d366004611d05565b60086020526000908152604090205460ff1681565b34801561066e57600080fd5b506013546102e490610100900460ff1681565b34801561068d57600080fd5b5061029761069c366004611d9a565b610dc2565b3480156106ad57600080fd5b506102976106bc366004611c5d565b610e4b565b3480156106cd57600080fd5b5061038160095481565b3480156106e357600080fd5b506102976106f2366004611c5d565b610f1c565b34801561070357600080fd5b50600f54610358906001600160a01b031681565b34801561072357600080fd5b50610297610732366004611c5d565b610f4b565b34801561074357600080fd5b50610381610752366004611dcf565b610fbc565b34801561076357600080fd5b50610381600b5481565b34801561077957600080fd5b50610297610fe7565b34801561078e57600080fd5b50610381600a5481565b3480156107a457600080fd5b506102976107b3366004611d05565b61103f565b3480156107c457600080fd5b50610381600c5481565b3480156107da57600080fd5b506013546102e49060ff1681565b6005546001600160a01b0316331461081b5760405162461bcd60e51b815260040161081290611e08565b60405180910390fd5b600481111561085e5760405162461bcd60e51b815260206004820152600f60248201526e6d61782073656c6c2066656520342560881b6044820152606401610812565b600e55565b60606003805461087290611e3d565b80601f016020809104026020016040519081016040528092919081815260200182805461089e90611e3d565b80156108eb5780601f106108c0576101008083540402835291602001916108eb565b820191906000526020600020905b8154815290600101906020018083116108ce57829003601f168201915b5050505050905090565b600033610903818585611094565b60019150505b92915050565b6005546001600160a01b031633146109395760405162461bcd60e51b815260040161081290611e08565b670de0b6b3a76400006103e861094e60025490565b610959906001611e8d565b6109639190611eac565b61096d9190611eac565b8110156109d45760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610812565b6109e681670de0b6b3a7640000611e8d565b60095550565b6000336109fa8582856111b8565b610a0585858561122c565b506001949350505050565b600754600090610a28906001600160a01b0316610aa2565b600254610a359190611ece565b905090565b600033610903818585610a4d8383610fbc565b610a579190611ee1565b611094565b6005546001600160a01b03163314610a865760405162461bcd60e51b815260040161081290611e08565b60138054911515620100000262ff000019909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610ae75760405162461bcd60e51b815260040161081290611e08565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546000906001600160a01b03163314610b5e5760405162461bcd60e51b815260040161081290611e08565b600254600b55506013805460ff19169055600190565b6005546001600160a01b03163314610b9e5760405162461bcd60e51b815260040161081290611e08565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6010546001600160a01b0316336001600160a01b031614610bfc5760405162461bcd60e51b815260040161081290611ef4565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c485760405162461bcd60e51b815260040161081290611e08565b6013805462ffff00191662010100179055565b60606004805461087290611e3d565b6005546001600160a01b03163314610c945760405162461bcd60e51b815260040161081290611e08565b7f000000000000000000000000d99e457cb814b90e3c1b8f3d5f294b00aaea2ff46001600160a01b0316826001600160a01b031603610d2b5760405162461bcd60e51b815260206004820152602d60248201527f546865206c702063616e6e6f742062652072656d6f7665642066726f6d20617560448201526c3a37b6b0b935b2ba103830b4b960991b6064820152608401610812565b610d35828261183b565b5050565b60003381610d478286610fbc565b905083811015610da75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610812565b610a058286868403611094565b60003361090381858561122c565b6005546001600160a01b03163314610dec5760405162461bcd60e51b815260040161081290611e08565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610e755760405162461bcd60e51b815260040161081290611e08565b670de0b6b3a76400006103e8610e8a60025490565b610e95906005611e8d565b610e9f9190611eac565b610ea99190611eac565b811015610f045760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610812565b610f1681670de0b6b3a7640000611e8d565b600c5550565b6005546001600160a01b03163314610f465760405162461bcd60e51b815260040161081290611e08565b600a55565b6005546001600160a01b03163314610f755760405162461bcd60e51b815260040161081290611e08565b6004811115610fb75760405162461bcd60e51b815260206004820152600e60248201526d6d6178206275792066656520342560901b6044820152606401610812565b600d55565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6010546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611034576040519150601f19603f3d011682016040523d82523d6000602084013e611039565b606091505b50505050565b600f546001600160a01b0316336001600160a01b0316146110725760405162461bcd60e51b815260040161081290611ef4565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110f65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610812565b6001600160a01b0382166111575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610812565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006111c48484610fbc565b90506000198114611039578181101561121f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610812565b6110398484848403611094565b6001600160a01b0383166112525760405162461bcd60e51b815260040161081290611f36565b6001600160a01b0382166112785760405162461bcd60e51b815260040161081290611f7b565b806000036112915761128c8383600061188f565b505050565b60135460ff161561161157826001600160a01b03166112b86005546001600160a01b031690565b6001600160a01b0316141580156112f25750816001600160a01b03166112e66005546001600160a01b031690565b6001600160a01b031614155b801561130657506001600160a01b03821615155b801561131d57506001600160a01b03821661dead14155b80156113335750601054600160a01b900460ff16155b156113cb57601354610100900460ff166113cb576001600160a01b03831660009081526012602052604090205460ff168061138657506001600160a01b03821660009081526012602052604090205460ff165b6113cb5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610812565b6001600160a01b03831660009081526008602052604090205460ff16801561140c57506001600160a01b03821660009081526011602052604090205460ff16155b156114e0576009548111156114815760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610812565b600c5461148d83610aa2565b6114979083611ee1565b11156114db5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610812565b611611565b6001600160a01b03821660009081526008602052604090205460ff16801561152157506001600160a01b03831660009081526011602052604090205460ff16155b15611597576009548111156114db5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610812565b6001600160a01b03821660009081526011602052604090205460ff1661161157600c546115c383610aa2565b6115cd9083611ee1565b11156116115760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610812565b600061161c30610aa2565b600a549091508110801590819061163b575060135462010000900460ff165b80156116515750601054600160a01b900460ff16155b801561167657506001600160a01b03851660009081526008602052604090205460ff16155b801561169b57506001600160a01b03851660009081526012602052604090205460ff16155b80156116c057506001600160a01b03841660009081526012602052604090205460ff16155b156116ee576010805460ff60a01b1916600160a01b1790556116e06119e3565b6010805460ff60a01b191690555b6010546001600160a01b03861660009081526012602052604090205460ff600160a01b90920482161591168061173c57506001600160a01b03851660009081526012602052604090205460ff165b15611745575060005b60008115611807576001600160a01b03861660009081526008602052604090205460ff16801561177757506000600e54115b1561179d576064600e548661178c9190611e8d565b6117969190611eac565b90506117e9565b6001600160a01b03871660009081526008602052604090205460ff1680156117c757506000600d54115b156117e9576064600d54866117dc9190611e8d565b6117e69190611eac565b90505b80156117fa576117fa87308361188f565b6118048186611ece565b94505b601054600f54600b54611827926001600160a01b03908116921690611094565b61183287878761188f565b50505050505050565b6001600160a01b038216600081815260086020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166118b55760405162461bcd60e51b815260040161081290611f36565b6001600160a01b0382166118db5760405162461bcd60e51b815260040161081290611f7b565b6001600160a01b038316600090815260208190526040902054818110156119535760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610812565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061198a908490611ee1565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119d691815260200190565b60405180910390a3611039565b60006119ee30610aa2565b9050806000036119fb5750565b6103e8611a0760025490565b611a12906011611e8d565b611a1c9190611eac565b600754611a31906001600160a01b0316610aa2565b1115611a6457600754611a5f90611a50906001600160a01b0316610aa2565b611a5a9083611ee1565b611a96565b611a6d565b611a6d81611a96565b600a54611a7b906002611e8d565b811115611a9357600a54611a90906002611e8d565b90505b50565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611acb57611acb611fbe565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6d9190611fd4565b81600181518110611b8057611b80611fbe565b60200260200101906001600160a01b031690816001600160a01b031681525050611bcb307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611094565b600f5460405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81169263791ac94792611c27928792600092889291909116904290600401611ff1565b600060405180830381600087803b158015611c4157600080fd5b505af1158015611c55573d6000803e3d6000fd5b505050505050565b600060208284031215611c6f57600080fd5b5035919050565b600060208083528351808285015260005b81811015611ca357858101830151858201604001528201611c87565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a9357600080fd5b60008060408385031215611cec57600080fd5b8235611cf781611cc4565b946020939093013593505050565b600060208284031215611d1757600080fd5b8135611d2281611cc4565b9392505050565b600080600060608486031215611d3e57600080fd5b8335611d4981611cc4565b92506020840135611d5981611cc4565b929592945050506040919091013590565b80358015158114611d7a57600080fd5b919050565b600060208284031215611d9157600080fd5b611d2282611d6a565b60008060408385031215611dad57600080fd5b8235611db881611cc4565b9150611dc660208401611d6a565b90509250929050565b60008060408385031215611de257600080fd5b8235611ded81611cc4565b91506020830135611dfd81611cc4565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611e5157607f821691505b602082108103611e7157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611ea757611ea7611e77565b500290565b600082611ec957634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561090957610909611e77565b8082018082111561090957610909611e77565b60208082526022908201527f6f6e6c79206368616e676561626c652062792070726576696f75732077616c6c604082015261195d60f21b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611fe657600080fd5b8151611d2281611cc4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120415784516001600160a01b03168352938301939183019160010161201c565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220529045e4971b8d6b12f5d65b97e280eee386c77bc7240a850789351b7e86333664736f6c63430008100033

Deployed Bytecode Sourcemap

11675:9717:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15600:149;;;;;;;;;;-1:-1:-1;15600:149:0;;;;;:::i;:::-;;:::i;:::-;;1960:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3033:242;;;;;;;;;;-1:-1:-1;3033:242:0;;;;;:::i;:::-;;:::i;:::-;;;1373:14:1;;1366:22;1348:41;;1336:2;1321:18;3033:242:0;1208:187:1;12257:63:0;;;;;;;;;;-1:-1:-1;12257:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11767:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1843:32:1;;;1825:51;;1813:2;1798:18;11767:51:0;1652:230:1;2281:108:0;;;;;;;;;;-1:-1:-1;2369:12:0;;2281:108;;;2033:25:1;;;2021:2;2006:18;2281:108:0;1887:177:1;15166:275:0;;;;;;;;;;-1:-1:-1;15166:275:0;;;;;:::i;:::-;;:::i;3283:295::-;;;;;;;;;;-1:-1:-1;3283:295:0;;;;;:::i;:::-;;:::i;11716:44::-;;;;;;;;;;-1:-1:-1;11716:44:0;;;;-1:-1:-1;;;;;11716:44:0;;;14296:126;;;;;;;;;;;;;:::i;12121:26::-;;;;;;;;;;;;;;;;2180:93;;;;;;;;;;-1:-1:-1;2180:93:0;;2263:2;2880:36:1;;2868:2;2853:18;2180:93:0;2738:184:1;3586:270:0;;;;;;;;;;-1:-1:-1;3586:270:0;;;;;:::i;:::-;;:::i;12191:29::-;;;;;;;;;;-1:-1:-1;12191:29:0;;;;-1:-1:-1;;;;;12191:29:0;;;12089:25;;;;;;;;;;;;;;;;16021:106;;;;;;;;;;-1:-1:-1;16021:106:0;;;;;:::i;:::-;;:::i;11825:38::-;;;;;;;;;;;;;;;12471:31;;;;;;;;;;-1:-1:-1;12471:31:0;;;;;;;;;;;2397:177;;;;;;;;;;-1:-1:-1;2397:177:0;;;;;:::i;:::-;;:::i;7843:148::-;;;;;;;;;;;;;:::i;14989:169::-;;;;;;;;;;;;;:::i;14430:165::-;;;;;;;;;;-1:-1:-1;14430:165:0;;;;;:::i;:::-;;:::i;16710:246::-;;;;;;;;;;-1:-1:-1;16710:246:0;;;;;:::i;:::-;;:::i;7629:79::-;;;;;;;;;;-1:-1:-1;7694:6:0;;-1:-1:-1;;;;;7694:6:0;7629:79;;14179:109;;;;;;;;;;;;;:::i;2068:104::-;;;;;;;;;;;;;:::i;16964:292::-;;;;;;;;;;-1:-1:-1;16964:292:0;;;;;:::i;:::-;;:::i;3864:505::-;;;;;;;;;;-1:-1:-1;3864:505:0;;;;;:::i;:::-;;:::i;2582:234::-;;;;;;;;;;-1:-1:-1;2582:234:0;;;;;:::i;:::-;;:::i;11870:57::-;;;;;;;;;;-1:-1:-1;11870:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12431:33;;;;;;;;;;-1:-1:-1;12431:33:0;;;;;;;;;;;14799:182;;;;;;;;;;-1:-1:-1;14799:182:0;;;;;:::i;:::-;;:::i;15757:256::-;;;;;;;;;;-1:-1:-1;15757:256:0;;;;;:::i;:::-;;:::i;11936:35::-;;;;;;;;;;;;;;;;16326:117;;;;;;;;;;-1:-1:-1;16326:117:0;;;;;:::i;:::-;;:::i;12154:30::-;;;;;;;;;;-1:-1:-1;12154:30:0;;;;-1:-1:-1;;;;;12154:30:0;;;15449:143;;;;;;;;;;-1:-1:-1;15449:143:0;;;;;:::i;:::-;;:::i;2824:201::-;;;;;;;;;;-1:-1:-1;2824:201:0;;;;;:::i;:::-;;:::i;12018:33::-;;;;;;;;;;;;;;;;16136:182;;;;;;;;;;;;;:::i;11978:33::-;;;;;;;;;;;;;;;;16451:251;;;;;;;;;;-1:-1:-1;16451:251:0;;;;;:::i;:::-;;:::i;12058:24::-;;;;;;;;;;;;;;;;12388:36;;;;;;;;;;-1:-1:-1;12388:36:0;;;;;;;;15600:149;7756:6;;-1:-1:-1;;;;;7756:6:0;1424:10;7756:22;7748:67;;;;-1:-1:-1;;;7748:67:0;;;;;;;:::i;:::-;;;;;;;;;15691:1:::1;15679:8;:13;;15671:41;;;::::0;-1:-1:-1;;;15671:41:0;;4553:2:1;15671:41:0::1;::::0;::::1;4535:21:1::0;4592:2;4572:18;;;4565:30;-1:-1:-1;;;4611:18:1;;;4604:45;4666:18;;15671:41:0::1;4351:339:1::0;15671:41:0::1;15723:7;:18:::0;15600:149::o;1960:100::-;2014:13;2047:5;2040:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1960:100;:::o;3033:242::-;3152:4;1424:10;3213:32;1424:10;3229:7;3238:6;3213:8;:32::i;:::-;3263:4;3256:11;;;3033:242;;;;;:::o;15166:275::-;7756:6;;-1:-1:-1;;;;;7756:6:0;1424:10;7756:22;7748:67;;;;-1:-1:-1;;;7748:67:0;;;;;;;:::i;:::-;15303:4:::1;15295;15274:13;2369:12:::0;;;2281:108;15274:13:::1;:17;::::0;15290:1:::1;15274:17;:::i;:::-;15273:26;;;;:::i;:::-;15272:35;;;;:::i;:::-;15262:6;:45;;15240:142;;;::::0;-1:-1:-1;;;15240:142:0;;5809:2:1;15240:142:0::1;::::0;::::1;5791:21:1::0;5848:2;5828:18;;;5821:30;5887:34;5867:18;;;5860:62;-1:-1:-1;;;5938:18:1;;;5931:45;5993:19;;15240:142:0::1;5607:411:1::0;15240:142:0::1;15416:17;:6:::0;15426::::1;15416:17;:::i;:::-;15393:20;:40:::0;-1:-1:-1;15166:275:0:o;3283:295::-;3414:4;1424:10;3472:38;3488:4;1424:10;3503:6;3472:15;:38::i;:::-;3521:27;3531:4;3537:2;3541:6;3521:9;:27::i;:::-;-1:-1:-1;3566:4:0;;3283:295;-1:-1:-1;;;;3283:295:0:o;14296:126::-;14402:11;;14349:7;;14392:22;;-1:-1:-1;;;;;14402:11:0;14392:9;:22::i;:::-;2369:12;;14376:38;;;;:::i;:::-;14369:45;;14296:126;:::o;3586:270::-;3701:4;1424:10;3762:64;1424:10;3778:7;3815:10;3787:25;1424:10;3778:7;3787:9;:25::i;:::-;:38;;;;:::i;:::-;3762:8;:64::i;16021:106::-;7756:6;;-1:-1:-1;;;;;7756:6:0;1424:10;7756:22;7748:67;;;;-1:-1:-1;;;7748:67:0;;;;;;;:::i;:::-;16098:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;16098:21:0;;::::1;::::0;;;::::1;::::0;;16021:106::o;2397:177::-;-1:-1:-1;;;;;2548:18:0;2516:7;2548:18;;;;;;;;;;;;2397:177::o;7843:148::-;7756:6;;-1:-1:-1;;;;;7756:6:0;1424:10;7756:22;7748:67;;;;-1:-1:-1;;;7748:67:0;;;;;;;:::i;:::-;7934:6:::1;::::0;7913:40:::1;::::0;7950:1:::1;::::0;-1:-1:-1;;;;;7934:6:0::1;::::0;7913:40:::1;::::0;7950:1;;7913:40:::1;7964:6;:19:::0;;-1:-1:-1;;;;;;7964:19:0::1;::::0;;7843:148::o;14989:169::-;7756:6;;15041:4;;-1:-1:-1;;;;;7756:6:0;1424:10;7756:22;7748:67;;;;-1:-1:-1;;;7748:67:0;;;;;;;:::i;:::-;2369:12;;15058:18:::1;:34:::0;-1:-1:-1;15103:17:0::1;:25:::0;;-1:-1:-1;;15103:25:0::1;::::0;;;14989:169;:::o;14430:165::-;7756:6;;-1:-1:-1;;;;;7756:6:0;1424:10;7756:22;7748:67;;;;-1:-1:-1;;;7748:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14542:38:0;;;::::1;;::::0;;;:31:::1;:38;::::0;;;;:45;;-1:-1:-1;;14542:45:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14430:165::o;16710:246::-;16826:14;;-1:-1:-1;;;;;16826:14:0;1424:10;-1:-1:-1;;;;;16810:30:0;;16788:114;;;;-1:-1:-1;;;16788:114:0;;;;;;;:::i;:::-;16913:14;:35;;-1:-1:-1;;;;;;16913:35:0;-1:-1:-1;;;;;16913:35:0;;;;;;;;;;16710:246::o;14179:109::-;7756:6;;-1:-1:-1;;;;;7756:6:0;1424:10;7756:22;7748:67;;;;-1:-1:-1;;;7748:67:0;;;;;;;:::i;:::-;14231:13:::1;:20:::0;;-1:-1:-1;;14262:18:0;;;;;14179:109::o;2068:104::-;2124:13;2157:7;2150:14;;;;;:::i;16964:292::-;7756:6;;-1:-1:-1;;;;;7756:6:0;1424:10;7756:22;7748:67;;;;-1:-1:-1;;;7748:67:0;;;;;;;:::i;:::-;17108:13:::1;-1:-1:-1::0;;;;;17100:21:0::1;:4;-1:-1:-1::0;;;;;17100:21:0::1;::::0;17078:116:::1;;;::::0;-1:-1:-1;;;17078:116:0;;6891:2:1;17078:116:0::1;::::0;::::1;6873:21:1::0;6930:2;6910:18;;;6903:30;6969:34;6949:18;;;6942:62;-1:-1:-1;;;7020:18:1;;;7013:43;7073:19;;17078:116:0::1;6689:409:1::0;17078:116:0::1;17207:41;17236:4;17242:5;17207:28;:41::i;:::-;16964:292:::0;;:::o;3864:505::-;3984:4;1424:10;3984:4;4072:25;1424:10;4089:7;4072:9;:25::i;:::-;4045:52;;4150:15;4130:16;:35;;4108:122;;;;-1:-1:-1;;;4108:122:0;;7305:2:1;4108:122:0;;;7287:21:1;7344:2;7324:18;;;7317:30;7383:34;7363:18;;;7356:62;-1:-1:-1;;;7434:18:1;;;7427:35;7479:19;;4108:122:0;7103:401:1;4108:122:0;4266:60;4275:5;4282:7;4310:15;4291:16;:34;4266:8;:60::i;2582:234::-;2697:4;1424:10;2758:28;1424:10;2775:2;2779:6;2758:9;:28::i;14799:182::-;7756:6;;-1:-1:-1;;;;;7756:6:0;1424:10;7756:22;7748:67;;;;-1:-1:-1;;;7748:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14884:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;14884:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14939:34;;1348:41:1;;;14939:34:0::1;::::0;1321:18:1;14939:34:0::1;;;;;;;14799:182:::0;;:::o;15757:256::-;7756:6;;-1:-1:-1;;;;;7756:6:0;1424:10;7756:22;7748:67;;;;-1:-1:-1;;;7748:67:0;;;;;;;:::i;:::-;15897:4:::1;15889;15868:13;2369:12:::0;;;2281:108;15868:13:::1;:17;::::0;15884:1:::1;15868:17;:::i;:::-;15867:26;;;;:::i;:::-;15866:35;;;;:::i;:::-;15856:6;:45;;15834:131;;;::::0;-1:-1:-1;;;15834:131:0;;7711:2:1;15834:131:0::1;::::0;::::1;7693:21:1::0;7750:2;7730:18;;;7723:30;7789:34;7769:18;;;7762:62;-1:-1:-1;;;7840:18:1;;;7833:34;7884:19;;15834:131:0::1;7509:400:1::0;15834:131:0::1;15988:17;:6:::0;15998::::1;15988:17;:::i;:::-;15976:9;:29:::0;-1:-1:-1;15757:256:0:o;16326:117::-;7756:6;;-1:-1:-1;;;;;7756:6:0;1424:10;7756:22;7748:67;;;;-1:-1:-1;;;7748:67:0;;;;;;;:::i;:::-;16407:18:::1;:28:::0;16326:117::o;15449:143::-;7756:6;;-1:-1:-1;;;;;7756:6:0;1424:10;7756:22;7748:67;;;;-1:-1:-1;;;7748:67:0;;;;;;;:::i;:::-;15537:1:::1;15526:7;:12;;15518:39;;;::::0;-1:-1:-1;;;15518:39:0;;8116:2:1;15518:39:0::1;::::0;::::1;8098:21:1::0;8155:2;8135:18;;;8128:30;-1:-1:-1;;;8174:18:1;;;8167:44;8228:18;;15518:39:0::1;7914:338:1::0;15518:39:0::1;15568:6;:16:::0;15449:143::o;2824:201::-;-1:-1:-1;;;;;2990:18:0;;;2958:7;2990:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2824:201::o;16136:182::-;16232:14;;16224:86;;16187:12;;-1:-1:-1;;;;;16232:14:0;;16274:21;;16187:12;16224:86;16187:12;16224:86;16274:21;16232:14;16224:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;16136:182:0:o;16451:251::-;16569:15;;-1:-1:-1;;;;;16569:15:0;1424:10;-1:-1:-1;;;;;16553:31:0;;16531:115;;;;-1:-1:-1;;;16531:115:0;;;;;;;:::i;:::-;16657:15;:37;;-1:-1:-1;;;;;;16657:37:0;-1:-1:-1;;;;;16657:37:0;;;;;;;;;;16451:251::o;6099:380::-;-1:-1:-1;;;;;6235:19:0;;6227:68;;;;-1:-1:-1;;;6227:68:0;;8669:2:1;6227:68:0;;;8651:21:1;8708:2;8688:18;;;8681:30;8747:34;8727:18;;;8720:62;-1:-1:-1;;;8798:18:1;;;8791:34;8842:19;;6227:68:0;8467:400:1;6227:68:0;-1:-1:-1;;;;;6314:21:0;;6306:68;;;;-1:-1:-1;;;6306:68:0;;9074:2:1;6306:68:0;;;9056:21:1;9113:2;9093:18;;;9086:30;9152:34;9132:18;;;9125:62;-1:-1:-1;;;9203:18:1;;;9196:32;9245:19;;6306:68:0;8872:398:1;6306:68:0;-1:-1:-1;;;;;6387:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6439:32;;2033:25:1;;;6439:32:0;;2006:18:1;6439:32:0;;;;;;;6099:380;;;:::o;6487:502::-;6622:24;6649:25;6659:5;6666:7;6649:9;:25::i;:::-;6622:52;;-1:-1:-1;;6689:16:0;:37;6685:297;;6789:6;6769:16;:26;;6743:117;;;;-1:-1:-1;;;6743:117:0;;9477:2:1;6743:117:0;;;9459:21:1;9516:2;9496:18;;;9489:30;9555:31;9535:18;;;9528:59;9604:18;;6743:117:0;9275:353:1;6743:117:0;6904:51;6913:5;6920:7;6948:6;6929:16;:25;6904:8;:51::i;17264:3118::-;-1:-1:-1;;;;;17396:18:0;;17388:68;;;;-1:-1:-1;;;17388:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17475:16:0;;17467:64;;;;-1:-1:-1;;;17467:64:0;;;;;;;:::i;:::-;17548:6;17558:1;17548:11;17544:93;;17576:28;17592:4;17598:2;17602:1;17576:15;:28::i;:::-;17264:3118;;;:::o;17544:93::-;17653:17;;;;17649:1525;;;17722:4;-1:-1:-1;;;;;17711:15:0;:7;7694:6;;-1:-1:-1;;;;;7694:6:0;;7629:79;17711:7;-1:-1:-1;;;;;17711:15:0;;17709:18;:55;;;;;17761:2;-1:-1:-1;;;;;17750:13:0;:7;7694:6;;-1:-1:-1;;;;;7694:6:0;;7629:79;17750:7;-1:-1:-1;;;;;17750:13:0;;17748:16;17709:55;:92;;;;-1:-1:-1;;;;;;17785:16:0;;;;17709:92;:134;;;;-1:-1:-1;;;;;;17822:21:0;;17836:6;17822:21;;17709:134;:164;;;;-1:-1:-1;17865:8:0;;-1:-1:-1;;;17865:8:0;;;;17864:9;17709:164;17687:459;;;17913:13;;;;;;;17908:223;;-1:-1:-1;;;;;17985:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;18014:23:0;;;;;;:19;:23;;;;;;;;17985:52;17951:160;;;;-1:-1:-1;;;17951:160:0;;10645:2:1;17951:160:0;;;10627:21:1;10684:2;10664:18;;;10657:30;-1:-1:-1;;;10703:18:1;;;10696:52;10765:18;;17951:160:0;10443:346:1;17951:160:0;-1:-1:-1;;;;;18184:31:0;;;;;;:25;:31;;;;;;;;:88;;;;-1:-1:-1;;;;;;18237:35:0;;;;;;:31;:35;;;;;;;;18236:36;18184:88;18162:1001;;;18347:20;;18337:6;:30;;18307:157;;;;-1:-1:-1;;;18307:157:0;;10996:2:1;18307:157:0;;;10978:21:1;11035:2;11015:18;;;11008:30;11074:34;11054:18;;;11047:62;-1:-1:-1;;;11125:18:1;;;11118:51;11186:19;;18307:157:0;10794:417:1;18307:157:0;18539:9;;18522:13;18532:2;18522:9;:13::i;:::-;18513:22;;:6;:22;:::i;:::-;:35;;18483:128;;;;-1:-1:-1;;;18483:128:0;;11418:2:1;18483:128:0;;;11400:21:1;11457:2;11437:18;;;11430:30;-1:-1:-1;;;11476:18:1;;;11469:49;11535:18;;18483:128:0;11216:343:1;18483:128:0;18162:1001;;;-1:-1:-1;;;;;18655:29:0;;;;;;:25;:29;;;;;;;;:88;;;;-1:-1:-1;;;;;;18706:37:0;;;;;;:31;:37;;;;;;;;18705:38;18655:88;18633:530;;;18818:20;;18808:6;:30;;18778:158;;;;-1:-1:-1;;;18778:158:0;;11766:2:1;18778:158:0;;;11748:21:1;11805:2;11785:18;;;11778:30;11844:34;11824:18;;;11817:62;-1:-1:-1;;;11895:18:1;;;11888:52;11957:19;;18778:158:0;11564:418:1;18633:530:0;-1:-1:-1;;;;;18963:35:0;;;;;;:31;:35;;;;;;;;18958:205;;19075:9;;19058:13;19068:2;19058:9;:13::i;:::-;19049:22;;:6;:22;:::i;:::-;:35;;19019:128;;;;-1:-1:-1;;;19019:128:0;;11418:2:1;19019:128:0;;;11400:21:1;11457:2;11437:18;;;11430:30;-1:-1:-1;;;11476:18:1;;;11469:49;11535:18;;19019:128:0;11216:343:1;19019:128:0;19186:28;19217:24;19235:4;19217:9;:24::i;:::-;19293:18;;19186:55;;-1:-1:-1;19269:42:0;;;;;;;19342:35;;-1:-1:-1;19366:11:0;;;;;;;19342:35;:61;;;;-1:-1:-1;19395:8:0;;-1:-1:-1;;;19395:8:0;;;;19394:9;19342:61;:110;;;;-1:-1:-1;;;;;;19421:31:0;;;;;;:25;:31;;;;;;;;19420:32;19342:110;:153;;;;-1:-1:-1;;;;;;19470:25:0;;;;;;:19;:25;;;;;;;;19469:26;19342:153;:194;;;;-1:-1:-1;;;;;;19513:23:0;;;;;;:19;:23;;;;;;;;19512:24;19342:194;19324:330;;;19563:8;:15;;-1:-1:-1;;;;19563:15:0;-1:-1:-1;;;19563:15:0;;;19593:18;:16;:18::i;:::-;19626:8;:16;;-1:-1:-1;;;;19626:16:0;;;19324:330;19682:8;;-1:-1:-1;;;;;19707:25:0;;19666:12;19707:25;;;:19;:25;;;;;;19682:8;-1:-1:-1;;;19682:8:0;;;;;19681:9;;19707:25;;:52;;-1:-1:-1;;;;;;19736:23:0;;;;;;:19;:23;;;;;;;;19707:52;19703:100;;;-1:-1:-1;19786:5:0;19703:100;19815:12;19848:7;19844:415;;;-1:-1:-1;;;;;19876:29:0;;;;;;:25;:29;;;;;;;;:44;;;;;19919:1;19909:7;;:11;19876:44;19872:238;;;19969:3;19958:7;;19949:6;:16;;;;:::i;:::-;19948:24;;;;:::i;:::-;19941:31;;19872:238;;;-1:-1:-1;;;;;19998:31:0;;;;;;:25;:31;;;;;;;;:45;;;;;20042:1;20033:6;;:10;19998:45;19994:116;;;20091:3;20081:6;;20072;:15;;;;:::i;:::-;20071:23;;;;:::i;:::-;20064:30;;19994:116;20130:8;;20126:91;;20159:42;20175:4;20189;20196;20159:15;:42::i;:::-;20233:14;20243:4;20233:14;;:::i;:::-;;;19844:415;20278:14;;20294:15;;20311:18;;20269:61;;-1:-1:-1;;;;;20278:14:0;;;;20294:15;;20269:8;:61::i;:::-;20341:33;20357:4;20363:2;20367:6;20341:15;:33::i;:::-;17377:3005;;;;17264:3118;;;:::o;14603:188::-;-1:-1:-1;;;;;14686:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;14686:39:0;;;;;;;;;;14743:40;;14686:39;;:31;14743:40;;;14603:188;;:::o;4377:708::-;-1:-1:-1;;;;;4508:18:0;;4500:68;;;;-1:-1:-1;;;4500:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4587:16:0;;4579:64;;;;-1:-1:-1;;;4579:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4729:15:0;;4707:19;4729:15;;;;;;;;;;;4777:21;;;;4755:109;;;;-1:-1:-1;;;4755:109:0;;12189:2:1;4755:109:0;;;12171:21:1;12228:2;12208:18;;;12201:30;12267:34;12247:18;;;12240:62;-1:-1:-1;;;12318:18:1;;;12311:36;12364:19;;4755:109:0;11987:402:1;4755:109:0;-1:-1:-1;;;;;4900:15:0;;;:9;:15;;;;;;;;;;;4918:20;;;4900:38;;4960:13;;;;;;;;:23;;4932:6;;4900:9;4960:23;;4932:6;;4960:23;:::i;:::-;;;;;;;;5016:2;-1:-1:-1;;;;;5001:26:0;5010:4;-1:-1:-1;;;;;5001:26:0;;5020:6;5001:26;;;;2033:25:1;;2021:2;2006:18;;1887:177;5001:26:0;;;;;;;;5040:37;17264:3118;20390:518;20437:23;20463:24;20481:4;20463:9;:24::i;:::-;20437:50;;20502:15;20521:1;20502:20;20498:59;;20539:7;20390:518::o;20498:59::-;20619:4;20597:13;2369:12;;;2281:108;20597:13;:18;;20613:2;20597:18;:::i;:::-;20596:27;;;;:::i;:::-;20581:11;;20571:22;;-1:-1:-1;;;;;20581:11:0;20571:9;:22::i;:::-;:52;20567:209;;;20685:11;;20640:58;;20675:22;;-1:-1:-1;;;;;20685:11:0;20675:9;:22::i;:::-;20657:40;;:15;:40;:::i;:::-;20640:16;:58::i;:::-;20567:209;;;20731:33;20748:15;20731:16;:33::i;:::-;20810:18;;:22;;20831:1;20810:22;:::i;:::-;20792:15;:40;20788:113;;;20867:18;;:22;;20888:1;20867:22;:::i;:::-;20849:40;;20788:113;20426:482;20390:518::o;20916:473::-;21006:16;;;21020:1;21006:16;;;;;;;;20982:21;;21006:16;;;;;;;;;;-1:-1:-1;21006:16:0;20982:40;;21051:4;21033;21038:1;21033:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21033:23:0;;;-1:-1:-1;;;;;21033:23:0;;;;;21077:15;-1:-1:-1;;;;;21077:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21067:4;21072:1;21067:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;21067:32:0;;;-1:-1:-1;;;;;21067:32:0;;;;;21110:62;21127:4;21142:15;21160:11;21110:8;:62::i;:::-;21325:15;;21183:198;;-1:-1:-1;;;21183:198:0;;-1:-1:-1;;;;;21183:15:0;:66;;;;;:198;;21264:11;;21290:1;;21306:4;;21325:15;;;;;21355;;21183:198;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20971:418;20916:473;:::o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:548::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;483:3;668:1;663:2;654:6;643:9;639:22;635:31;628:42;738:2;731;727:7;722:2;714:6;710:15;706:29;695:9;691:45;687:54;679:62;;;;199:548;;;;:::o;752:131::-;-1:-1:-1;;;;;827:31:1;;817:42;;807:70;;873:1;870;863:12;888:315;956:6;964;1017:2;1005:9;996:7;992:23;988:32;985:52;;;1033:1;1030;1023:12;985:52;1072:9;1059:23;1091:31;1116:5;1091:31;:::i;:::-;1141:5;1193:2;1178:18;;;;1165:32;;-1:-1:-1;;;888:315:1:o;1400:247::-;1459:6;1512:2;1500:9;1491:7;1487:23;1483:32;1480:52;;;1528:1;1525;1518:12;1480:52;1567:9;1554:23;1586:31;1611:5;1586:31;:::i;:::-;1636:5;1400:247;-1:-1:-1;;;1400:247:1:o;2069:456::-;2146:6;2154;2162;2215:2;2203:9;2194:7;2190:23;2186:32;2183:52;;;2231:1;2228;2221:12;2183:52;2270:9;2257:23;2289:31;2314:5;2289:31;:::i;:::-;2339:5;-1:-1:-1;2396:2:1;2381:18;;2368:32;2409:33;2368:32;2409:33;:::i;:::-;2069:456;;2461:7;;-1:-1:-1;;;2515:2:1;2500:18;;;;2487:32;;2069:456::o;2927:160::-;2992:20;;3048:13;;3041:21;3031:32;;3021:60;;3077:1;3074;3067:12;3021:60;2927:160;;;:::o;3092:180::-;3148:6;3201:2;3189:9;3180:7;3176:23;3172:32;3169:52;;;3217:1;3214;3207:12;3169:52;3240:26;3256:9;3240:26;:::i;3277:315::-;3342:6;3350;3403:2;3391:9;3382:7;3378:23;3374:32;3371:52;;;3419:1;3416;3409:12;3371:52;3458:9;3445:23;3477:31;3502:5;3477:31;:::i;:::-;3527:5;-1:-1:-1;3551:35:1;3582:2;3567:18;;3551:35;:::i;:::-;3541:45;;3277:315;;;;;:::o;3597:388::-;3665:6;3673;3726:2;3714:9;3705:7;3701:23;3697:32;3694:52;;;3742:1;3739;3732:12;3694:52;3781:9;3768:23;3800:31;3825:5;3800:31;:::i;:::-;3850:5;-1:-1:-1;3907:2:1;3892:18;;3879:32;3920:33;3879:32;3920:33;:::i;:::-;3972:7;3962:17;;;3597:388;;;;;:::o;3990:356::-;4192:2;4174:21;;;4211:18;;;4204:30;4270:34;4265:2;4250:18;;4243:62;4337:2;4322:18;;3990:356::o;4695:380::-;4774:1;4770:12;;;;4817;;;4838:61;;4892:4;4884:6;4880:17;4870:27;;4838:61;4945:2;4937:6;4934:14;4914:18;4911:38;4908:161;;4991:10;4986:3;4982:20;4979:1;4972:31;5026:4;5023:1;5016:15;5054:4;5051:1;5044:15;4908:161;;4695:380;;;:::o;5080:127::-;5141:10;5136:3;5132:20;5129:1;5122:31;5172:4;5169:1;5162:15;5196:4;5193:1;5186:15;5212:168;5252:7;5318:1;5314;5310:6;5306:14;5303:1;5300:21;5295:1;5288:9;5281:17;5277:45;5274:71;;;5325:18;;:::i;:::-;-1:-1:-1;5365:9:1;;5212:168::o;5385:217::-;5425:1;5451;5441:132;;5495:10;5490:3;5486:20;5483:1;5476:31;5530:4;5527:1;5520:15;5558:4;5555:1;5548:15;5441:132;-1:-1:-1;5587:9:1;;5385:217::o;6023:128::-;6090:9;;;6111:11;;;6108:37;;;6125:18;;:::i;6156:125::-;6221:9;;;6242:10;;;6239:36;;;6255:18;;:::i;6286:398::-;6488:2;6470:21;;;6527:2;6507:18;;;6500:30;6566:34;6561:2;6546:18;;6539:62;-1:-1:-1;;;6632:2:1;6617:18;;6610:32;6674:3;6659:19;;6286:398::o;9633:401::-;9835:2;9817:21;;;9874:2;9854:18;;;9847:30;9913:34;9908:2;9893:18;;9886:62;-1:-1:-1;;;9979:2:1;9964:18;;9957:35;10024:3;10009:19;;9633:401::o;10039:399::-;10241:2;10223:21;;;10280:2;10260:18;;;10253:30;10319:34;10314:2;10299:18;;10292:62;-1:-1:-1;;;10385:2:1;10370:18;;10363:33;10428:3;10413:19;;10039:399::o;12526:127::-;12587:10;12582:3;12578:20;12575:1;12568:31;12618:4;12615:1;12608:15;12642:4;12639:1;12632:15;12658:251;12728:6;12781:2;12769:9;12760:7;12756:23;12752:32;12749:52;;;12797:1;12794;12787:12;12749:52;12829:9;12823:16;12848:31;12873:5;12848:31;:::i;12914:980::-;13176:4;13224:3;13213:9;13209:19;13255:6;13244:9;13237:25;13281:2;13319:6;13314:2;13303:9;13299:18;13292:34;13362:3;13357:2;13346:9;13342:18;13335:31;13386:6;13421;13415:13;13452:6;13444;13437:22;13490:3;13479:9;13475:19;13468:26;;13529:2;13521:6;13517:15;13503:29;;13550:1;13560:195;13574:6;13571:1;13568:13;13560:195;;;13639:13;;-1:-1:-1;;;;;13635:39:1;13623:52;;13730:15;;;;13695:12;;;;13671:1;13589:9;13560:195;;;-1:-1:-1;;;;;;;13811:32:1;;;;13806:2;13791:18;;13784:60;-1:-1:-1;;;13875:3:1;13860:19;13853:35;13772:3;12914:980;-1:-1:-1;;;12914:980:1:o

Swarm Source

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