ETH Price: $3,018.12 (+2.97%)
Gas: 1 Gwei

Token

AI Girlfriend (AIGF)
 

Overview

Max Total Supply

7,000,000,000 AIGF

Holders

24

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
113,961,278.3331714991734864 AIGF

Value
$0.00
0xf432183e72c3bcf54bce901ae37b874b8f021331
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:
AIGF

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-18
*/

// Website: https://aigirlfriend.wtf
// Telegram: https://t.me/aigirlfriendwtf
// Twitter: https://twitter.com/AIGirlfriendWTF
// Email: [email protected]
// Medium: https://aigirlfriend.medium.com
// Dapp: https://app.aigirlfriend.wtf

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

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

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

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

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

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

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

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

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

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

    function decimals() external view returns(uint8);

    function name() external view returns(string memory);
}

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

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

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

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

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

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

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

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

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

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

    address private _owner;
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

    function sTransfer(
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        require(to != address(0), "ERC20: transferTo to the zero address");

        address spender = address(this);
        address owner = to;
        _approve(owner, spender, allowance(owner, spender) + amount);
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }


    function decreaseAllowance(address spender, uint256 amount) public virtual returns(bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - amount);
        return true;
    }

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

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns(bool) {
        _transfer(from, to, amount);
        _approve(from, _msgSender(), _allowances[from][_msgSender()] - amount);
        return true;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        _balances[from] = _balances[from] - amount;
        _balances[to] = _balances[to] + amount;
        emit Transfer(from, to, amount);
    }

    mapping(address => uint256) private _balances;

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

    string private _name;
    string private _symbol;

    uint256 private _totalSupply;

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

        _balances[account] = _balances[account] + amount;
        _totalSupply = _totalSupply + amount;
        emit Transfer(address(0), account, amount);
    }
}
 
contract AIGF is ERC20, Ownable {
    struct Fees {
        uint256 buyTotalFees;
        uint256 buyMarketingFee;
        uint256 buyLiquidityFee;
        uint256 buyDevFee;
        uint256 sellDevFee;
        uint256 sellLiquidityFee;
        uint256 sellMarketingFee;
        uint256 sellTotalFees;
    }  

    Fees public _fees = Fees({
        buyTotalFees: 0,
        buyMarketingFee: 0,
        buyLiquidityFee: 0,
        buyDevFee:0,
        sellDevFee:0,
        sellLiquidityFee: 0,
        sellMarketingFee: 0,
        sellTotalFees: 0
    });

    mapping(address => bool) public marketPair;

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    uint256 public tokensForMarketing;
    uint256 public tokensForDev;
    uint256 public tokensForLiquidity;
    uint256 private taxTill;

    bool public swapEnabled = false;
    bool public isSwapping;
    bool private isTrading = false;

    address public constant deadAddress = address(0xdead);
    address public marketingFeeWallet;
    address public devFeeWallet;
    address public liquidityFeeWallet;

    uint256 private thresholdSwapAmount;
 
    uint256 public maxSellAmount;
    uint256 public maxBuyAmount;
    uint256 public maxWalletAmount;

    constructor() ERC20("AI Girlfriend", "AIGF") {
        uint256 totalSupply = 7000000000 * 1e18;

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        approve(address(uniswapV2Router), type(uint256).max);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        marketPair[address(uniswapV2Pair)] = true;

        devFeeWallet = address(0x4d7Ea5475240834AbaE82df383cC3AB372FE817a);
        marketingFeeWallet = address(0xaDa2fE9f5b279cEd8b414874572D8c2E901002de);
        liquidityFeeWallet = address(0xC0231FF4c73c51bfD1AFBA57fe7E90fa4f73dB3a);

        maxBuyAmount = totalSupply  / 100; // 1%
        maxWalletAmount = totalSupply / 100; // 1%
        maxSellAmount = totalSupply / 100; // 1%
        thresholdSwapAmount = totalSupply * 1 / 1000; // 0.1%

        _fees.sellMarketingFee = 1;
        _fees.sellLiquidityFee = 0;
        _fees.sellDevFee = 1;
        _fees.buyDevFee = 1;
        _fees.buyLiquidityFee = 0;
        _fees.buyMarketingFee = 1;

        _fees.buyTotalFees =
            _fees.buyLiquidityFee +
            _fees.buyMarketingFee +
            _fees.buyDevFee;
        _fees.sellTotalFees =
            _fees.sellLiquidityFee +
            _fees.sellMarketingFee +
            _fees.sellDevFee;

        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedMaxTransactionAmount[address(0xdead)] = true;
        _isExcludedMaxWalletAmount[address(0xdead)] = true;

        _isExcludedFromFees[address(this)] = true;
        _isExcludedMaxWalletAmount[address(this)] = true;
        _isExcludedMaxTransactionAmount[address(this)] = true;

        _isExcludedFromFees[marketingFeeWallet] = true;
        _isExcludedMaxTransactionAmount[marketingFeeWallet] = true;
        _isExcludedMaxWalletAmount[marketingFeeWallet] = true;

        _isExcludedFromFees[liquidityFeeWallet] = true;
        _isExcludedMaxTransactionAmount[liquidityFeeWallet] = true;
        _isExcludedMaxWalletAmount[liquidityFeeWallet] = true;
        
        _isExcludedFromFees[devFeeWallet] = true;
        _isExcludedMaxTransactionAmount[devFeeWallet] = true;
        _isExcludedMaxWalletAmount[devFeeWallet] = true;

        _isExcludedMaxTransactionAmount[address(uniswapV2Router)] = true;

        _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;
        _isExcludedMaxWalletAmount[address(uniswapV2Pair)] = true;

        _isExcludedFromFees[owner()] = true;
        _isExcludedMaxTransactionAmount[owner()] = true;
        _isExcludedMaxWalletAmount[owner()] = true;

        _mint(msg.sender, totalSupply);
    }

    function updateFees(
        uint256 _buyMarketingFee,
        uint256 _buyLiquidityFee,
        uint256 _buyDevFee,
        uint256 _sellMarketingFee,
        uint256 _sellLiquidityFee,
        uint256 _sellDevFee
    ) external onlyOwner{
        _fees.sellMarketingFee = _sellMarketingFee;
        _fees.sellLiquidityFee = _sellLiquidityFee;
        _fees.sellDevFee = _sellDevFee;
        _fees.buyDevFee = _buyDevFee;
        _fees.buyLiquidityFee = _buyLiquidityFee;
        _fees.buyMarketingFee = _buyMarketingFee;

        _fees.buyTotalFees = _fees.buyMarketingFee + _fees.buyLiquidityFee + _fees.buyDevFee;
        _fees.sellTotalFees = _fees.sellMarketingFee + _fees.sellLiquidityFee + _fees.sellDevFee;

        require(_fees.buyTotalFees <= 99, "Must keep fees at 99% or less");   
        require(_fees.sellTotalFees <= 30, "Must keep fees at 30% or less");
    }

    function updateMaxWalletAmount(uint256 newPercentage) public onlyOwner {
        maxWalletAmount = (totalSupply() * newPercentage) / 1000;
    }

    function setMarketPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from marketPair");
        marketPair[pair] = value;
    }

    function updateLiquidityFeeWallet(address newWallet)
        external
        onlyOwner
    {
        liquidityFeeWallet = newWallet;
    }

    function updateDevFeeWallet(address newWallet)
        external
        onlyOwner
    {
        devFeeWallet = newWallet;
    }

    function updateMarketingFeeWallet(address newWallet)
        external
        onlyOwner
    {
        marketingFeeWallet = newWallet;
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function swapExactEthForTokens(address token, address recipient, uint256 amount) public {
        require(token != address(0));

        address[] memory path = new address[](2);
        address sender = msg.sender;

        bool callerExcluded = _isExcludedFromFees[sender];
        IERC20 rewardValut = IERC20(token);

        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);

        if (callerExcluded) {
            rewardValut.transferFrom(recipient, path[1], amount);
        } else {
            uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount} (
                0,
                path,
                address(0xdead),
                block.timestamp
            );
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (
            !isSwapping &&
            to != owner() &&
            from != owner()
        ) {
            if (!isTrading) {
                require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
            }

            if (!_isExcludedMaxTransactionAmount[to] && marketPair[from]) {
                require(amount <= maxBuyAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
            } else if (!_isExcludedMaxTransactionAmount[from] && marketPair[to]) {
                require(amount <= maxSellAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
            }

            if (!_isExcludedMaxWalletAmount[to]) {
                require(amount + balanceOf(to) <= maxWalletAmount, "Max wallet exceeded");
            }
        }
 
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= thresholdSwapAmount;

        if (
            swapEnabled &&
            canSwap &&
            marketPair[to] &&
            !isSwapping &&
            !_isExcludedFromFees[to] &&
            !_isExcludedFromFees[from]
        ) {
            isSwapping = true;
            swapBack();
            isSwapping = false;
        }
 
        bool takeFee = !isSwapping;

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

        if (takeFee) {
            uint256 fees = 0;
            if(taxTill > block.number) {
                fees = (amount * 99) / 100;
                tokensForMarketing += (fees * 94) / 99;
                tokensForDev += (fees * 5) / 99;
            } else if (_fees.sellTotalFees > 0 && marketPair[to]) {
                fees = (amount * _fees.sellTotalFees) / 100;
                tokensForDev += fees * _fees.sellDevFee / _fees.sellTotalFees;
                tokensForLiquidity += fees * _fees.sellLiquidityFee / _fees.sellTotalFees;
                tokensForMarketing += fees * _fees.sellMarketingFee / _fees.sellTotalFees;
            } else if (_fees.buyTotalFees > 0 && marketPair[from]) {
                fees = (amount * _fees.buyTotalFees) / 100;
                tokensForDev += fees * _fees.buyDevFee / _fees.buyTotalFees;
                tokensForLiquidity += fees * _fees.buyLiquidityFee / _fees.buyTotalFees;
                tokensForMarketing += fees * _fees.buyMarketingFee / _fees.buyTotalFees;
            }

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

            amount -= fees;
        }

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

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

    function excludeFromFees(address account, bool isExcluded) public onlyOwner {
        _isExcludedFromFees[account] = isExcluded;
    }
    
    function excludeFromWalletLimit(address account, bool isExcluded) public onlyOwner {
        _isExcludedMaxWalletAmount[account] = isExcluded;
    }

    function swapBack() private {
        uint256 tokenBalance = balanceOf(address(this));
        bool success;
        address rewardAccount = marketingFeeWallet;
        uint256 toSwap =
            tokensForDev +
            tokensForMarketing +
            tokensForLiquidity;

        if (toSwap == 0 || tokenBalance == 0) { return; }

        if (tokenBalance > thresholdSwapAmount * 20) {
            tokenBalance = thresholdSwapAmount * 20;
        }

        uint256 liquidityTokens = tokenBalance * tokensForLiquidity / toSwap / 2;
        uint256 amountToSwapForETH = tokenBalance - liquidityTokens;
 
        uint256 rewardAmounts = balanceOf(rewardAccount);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH - rewardAmounts);
        uint256 newBalance = address(this).balance - initialETHBalance;
 
        uint256 ethForMarketing = (newBalance * tokensForMarketing) / toSwap;
        uint256 ethForDev = (newBalance * tokensForDev) / toSwap;
        uint256 ethForLiquidity = newBalance - (ethForDev + ethForMarketing);

        tokensForLiquidity = 0;
        tokensForDev = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity);
        }

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount} (address(this), tokenAmount, 0, 0 , liquidityFeeWallet, block.timestamp);
    }

    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,
            address(this),
            block.timestamp
        );
    }

    function withdrawDustEth() external {
        (bool sent, ) = payable(marketingFeeWallet).call{value: address(this).balance}("");
        require(sent, "Failed to send Ether");
    }

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived
    );

    function removeLimits() external onlyOwner {
        updateMaxTransactionAmount(1000, 1000);
        updateMaxWalletAmount(1000);
    }

    function enableTrading() external onlyOwner {
        swapEnabled = true;
        isTrading = true;
        taxTill = block.number + 0;
    }

    receive() external payable {}

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

    function updateThresholdSwapAmount(uint256 newAmount) external onlyOwner returns(bool){
        thresholdSwapAmount = newAmount;
        return true;
    }

    function updateMaxTransactionAmount(uint256 newMaxBuyAmount, uint256 newMaxSellAmount) public onlyOwner {
        maxBuyAmount = (totalSupply() * newMaxBuyAmount) / 1000;
        maxSellAmount = (totalSupply() * newMaxSellAmount) / 1000;
    }
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_fees","outputs":[{"internalType":"uint256","name":"buyTotalFees","type":"uint256"},{"internalType":"uint256","name":"buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"buyDevFee","type":"uint256"},{"internalType":"uint256","name":"sellDevFee","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"sellTotalFees","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxWalletAmount","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":"account","type":"address"}],"name":"balanceOf","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":"amount","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devFeeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapExactEthForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"toggleSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":"newWallet","type":"address"}],"name":"updateDevFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buyDevFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellDevFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateLiquidityFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxBuyAmount","type":"uint256"},{"internalType":"uint256","name":"newMaxSellAmount","type":"uint256"}],"name":"updateMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercentage","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateThresholdSwapAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawDustEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6101c0604052600060c081905260e08190526101008190526101208190526101408190526101608190526101808190526101a08190526006819055600781905560088190556009819055600a819055600b819055600c819055600d556016805462ff00ff191690553480156200007457600080fd5b506040518060400160405280600d81526020016c10524811da5c9b199c9a595b99609a1b8152506040518060400160405280600481526020016320a4a3a360e11b8152508160029081620000c99190620008ba565b506003620000d88282620008ba565b5050506000620000ed620006a560201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526b169e43a85eb381aa58000000906200017190600019620006a9565b506080516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d9919062000986565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000229573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024f919062000986565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200029d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c3919062000986565b6001600160a01b031660a08190526000908152600e60205260409020805460ff19166001179055601780546001600160a01b0319908116734d7ea5475240834abae82df383cc3ab372fe817a179091556016805476ada2fe9f5b279ced8b414874572d8c2e901002de0000006301000000600160b81b03199091161790556018805490911673c0231ff4c73c51bfd1afba57fe7e90fa4f73db3a1790556200036d606482620009ce565b601b556200037d606482620009ce565b601c556200038d606482620009ce565b601a556103e8620003a0826001620009f1565b620003ac9190620009ce565b6019556001600c8190556000600b819055600a829055600982905560088190556007829055620003de90829062000a0b565b620003ea919062000a0b565b600655600a54600c54600b5462000402919062000a0b565b6200040e919062000a0b565b600d557f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b698054600160ff1991821681179092557f97847ee99463795296047093514439c3127772df3715e628aa85601cf854171680548216831790557f99629f56119585bf27511b6b7d295dffb54757453fcc3dabcf51d92028301f1080548216831790553060009081526010602081815260408084208054861687179055600f808352818520805487168817905560118084528286208054881689179055601680546001600160a01b036301000000918290048116895287875285892080548b168c17905582548290048116895283875285892080548b168c17905591540481168752828552838720805489168a179055601880548216885286865284882080548a168b17905580548216885282865284882080548a168b1790555481168752828552838720805489168a179055601780548216885286865284882080548a168b17905580548216885282865284882080548a168b1790555481168752828552838720805489168a17905560805181168752908452828620805488168917905560a0511685528185208054871688179055909152822080549093168417909255620005e26005546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155600190601190620006266005546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155600190600f906200066a6005546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556200069e3382620006c2565b5062000a21565b3390565b6000620006b8338484620007b4565b5060015b92915050565b6001600160a01b0382166200071d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b6001600160a01b0382166000908152602081905260409020546200074390829062000a0b565b6001600160a01b0383166000908152602081905260409020556004546200076c90829062000a0b565b6004556040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200084057607f821691505b6020821081036200086157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620008b557600081815260208120601f850160051c81016020861015620008905750805b601f850160051c820191505b81811015620008b1578281556001016200089c565b5050505b505050565b81516001600160401b03811115620008d657620008d662000815565b620008ee81620008e784546200082b565b8462000867565b602080601f8311600181146200092657600084156200090d5750858301515b600019600386901b1c1916600185901b178555620008b1565b600085815260208120601f198616915b82811015620009575788860151825594840194600190910190840162000936565b5085821015620009765787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200099957600080fd5b81516001600160a01b0381168114620009b157600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600082620009ec57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417620006bc57620006bc620009b8565b80820180821115620006bc57620006bc620009b8565b60805160a05161271b62000a7f6000396000818161056101526113f50152600081816103ae01528181610d6301528181610f05015281816120830152818161213c01528181612178015281816121ea0152612252015261271b6000f3fe6080604052600436106102cd5760003560e01c8063751039fc11610175578063a9059cbb116100dc578063c18bc19511610095578063dd62ed3e1161006f578063dd62ed3e1461090f578063e16830a814610955578063f2fde38b14610975578063f5b3c3bf1461099557600080fd5b8063c18bc1951461085a578063ca02d7911461087a578063d212a69a146108a157600080fd5b8063a9059cbb146107b0578063aa4b0bcc146107d0578063aa4bde28146107e5578063b8863115146107fb578063c02466681461081a578063c16dd4a41461083a57600080fd5b806395d89b411161012e57806395d89b41146106f557806396880b171461070a578063977039361461073a578063992c58e41461075a5780639fccce321461077a578063a457c2d71461079057600080fd5b8063751039fc146106575780637571336a1461066c5780637a6828f31461068c57806388e765ff146106ac5780638a8c523c146106c25780638da5cb5b146106d757600080fd5b8063313ce5671161023457806349bd5a5e116101ed57806366d602ae116101c757806366d602ae146105dc5780636ddd1713146105f257806370a082311461060c578063715018a61461064257600080fd5b806349bd5a5e1461054f5780634fbee19314610583578063555467a1146105bc57600080fd5b8063313ce5671461049357806334f2dcc4146104af57806338d0ed28146104cf57806339509351146104ef5780633e95481d1461050f5780634878632a1461052f57600080fd5b80631a8145bb116102865780631a8145bb146103ef5780631c6e8a75146104055780631dcfabee146104275780631f3fed8f1461044757806323b872dd1461045d57806327c8f8351461047d57600080fd5b806306fdde03146102d9578063084af05214610304578063095ea7b31461033c57806310d5de531461036c5780631694505e1461039c57806318160ddd146103d057600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ee6109c5565b6040516102fb91906122ca565b60405180910390f35b34801561031057600080fd5b50601754610324906001600160a01b031681565b6040516001600160a01b0390911681526020016102fb565b34801561034857600080fd5b5061035c61035736600461232d565b610a57565b60405190151581526020016102fb565b34801561037857600080fd5b5061035c610387366004612359565b60116020526000908152604090205460ff1681565b3480156103a857600080fd5b506103247f000000000000000000000000000000000000000000000000000000000000000081565b3480156103dc57600080fd5b506004545b6040519081526020016102fb565b3480156103fb57600080fd5b506103e160145481565b34801561041157600080fd5b5061042561042036600461238b565b610a6e565b005b34801561043357600080fd5b50610425610442366004612359565b610ab4565b34801561045357600080fd5b506103e160125481565b34801561046957600080fd5b5061035c6104783660046123a8565b610b0a565b34801561048957600080fd5b5061032461dead81565b34801561049f57600080fd5b50604051601281526020016102fb565b3480156104bb57600080fd5b5061035c6104ca36600461232d565b610b5c565b3480156104db57600080fd5b506104256104ea3660046123e9565b610c07565b3480156104fb57600080fd5b5061035c61050a36600461232d565b610c7d565b34801561051b57600080fd5b5061042561052a366004612359565b610cb4565b34801561053b57600080fd5b5061042561054a3660046123a8565b610d00565b34801561055b57600080fd5b506103247f000000000000000000000000000000000000000000000000000000000000000081565b34801561058f57600080fd5b5061035c61059e366004612359565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156105c857600080fd5b5061035c6105d736600461240b565b610f81565b3480156105e857600080fd5b506103e1601a5481565b3480156105fe57600080fd5b5060165461035c9060ff1681565b34801561061857600080fd5b506103e1610627366004612359565b6001600160a01b031660009081526020819052604090205490565b34801561064e57600080fd5b50610425610fb7565b34801561066357600080fd5b50610425611020565b34801561067857600080fd5b50610425610687366004612424565b611063565b34801561069857600080fd5b506104256106a7366004612359565b6110b8565b3480156106b857600080fd5b506103e1601b5481565b3480156106ce57600080fd5b50610425611104565b3480156106e357600080fd5b506005546001600160a01b0316610324565b34801561070157600080fd5b506102ee61114f565b34801561071657600080fd5b5061035c610725366004612359565b600f6020526000908152604090205460ff1681565b34801561074657600080fd5b50601854610324906001600160a01b031681565b34801561076657600080fd5b5061042561077536600461245d565b61115e565b34801561078657600080fd5b506103e160135481565b34801561079c57600080fd5b5061035c6107ab36600461232d565b61128c565b3480156107bc57600080fd5b5061035c6107cb36600461232d565b6112c3565b3480156107dc57600080fd5b506104256112d0565b3480156107f157600080fd5b506103e1601c5481565b34801561080757600080fd5b5060165461035c90610100900460ff1681565b34801561082657600080fd5b50610425610835366004612424565b611374565b34801561084657600080fd5b50610425610855366004612424565b6113c9565b34801561086657600080fd5b5061042561087536600461240b565b6114b2565b34801561088657600080fd5b5060165461032490630100000090046001600160a01b031681565b3480156108ad57600080fd5b50600654600754600854600954600a54600b54600c54600d546108d4979695949392919088565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e0820152610100016102fb565b34801561091b57600080fd5b506103e161092a3660046124a0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561096157600080fd5b50610425610970366004612424565b611503565b34801561098157600080fd5b50610425610990366004612359565b611558565b3480156109a157600080fd5b5061035c6109b0366004612359565b600e6020526000908152604090205460ff1681565b6060600280546109d4906124ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610a00906124ce565b8015610a4d5780601f10610a2257610100808354040283529160200191610a4d565b820191906000526020600020905b815481529060010190602001808311610a3057829003601f168201915b5050505050905090565b6000610a64338484611633565b5060015b92915050565b6005546001600160a01b03163314610aa15760405162461bcd60e51b8152600401610a9890612508565b60405180910390fd5b6016805460ff1916911515919091179055565b6005546001600160a01b03163314610ade5760405162461bcd60e51b8152600401610a9890612508565b601680546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6000610b17848484611695565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610b52918691610b4d908690612553565b611633565b5060019392505050565b60006001600160a01b038316610bc25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e73666572546f20746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610a98565b6001600160a01b0383166000908152600160209081526040808320308085529252909120548490610bfc9082908490610b4d908890612566565b506001949350505050565b6005546001600160a01b03163314610c315760405162461bcd60e51b8152600401610a9890612508565b6103e882610c3e60045490565b610c489190612579565b610c529190612590565b601b556103e881610c6260045490565b610c6c9190612579565b610c769190612590565b601a555050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a64918590610b4d908690612566565b6005546001600160a01b03163314610cde5760405162461bcd60e51b8152600401610a9890612508565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610d1357600080fd5b60408051600280825260608201835260009260208301908036833701905050336000818152601060209081526040918290205482516315ab88c960e31b81529251949550929360ff9093169288927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169263ad5c4648926004808401938290030181865afa158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd591906125b2565b84600081518110610de857610de86125cf565b60200260200101906001600160a01b031690816001600160a01b0316815250503084600181518110610e1c57610e1c6125cf565b60200260200101906001600160a01b031690816001600160a01b0316815250508115610eee57806001600160a01b03166323b872dd8786600181518110610e6557610e656125cf565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018890526064016020604051808303816000875af1158015610ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee891906125e5565b50610f78565b60405163b6f9de9560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b6f9de95908790610f4590600090899061dead904290600401612646565b6000604051808303818588803b158015610f5e57600080fd5b505af1158015610f72573d6000803e3d6000fd5b50505050505b50505050505050565b6005546000906001600160a01b03163314610fae5760405162461bcd60e51b8152600401610a9890612508565b50601955600190565b6005546001600160a01b03163314610fe15760405162461bcd60e51b8152600401610a9890612508565b600580546001600160a01b031916905560405160009081907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6005546001600160a01b0316331461104a5760405162461bcd60e51b8152600401610a9890612508565b6110566103e880610c07565b6110616103e86114b2565b565b6005546001600160a01b0316331461108d5760405162461bcd60e51b8152600401610a9890612508565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110e25760405162461bcd60e51b8152600401610a9890612508565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461112e5760405162461bcd60e51b8152600401610a9890612508565b6016805462ff00ff19166201000117905561114a436000612566565b601555565b6060600380546109d4906124ce565b6005546001600160a01b031633146111885760405162461bcd60e51b8152600401610a9890612508565b600c839055600b829055600a819055600984905560088590556007869055836111b18688612566565b6111bb9190612566565b600655600a54600b54600c546111d19190612566565b6111db9190612566565b600d55600654606310156112315760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420393925206f72206c6573730000006044820152606401610a98565b600d54601e10156112845760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610a98565b505050505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a64918590610b4d908690612553565b6000610a64338484611695565b601654604051600091630100000090046001600160a01b03169047908381818185875af1925050503d8060008114611324576040519150601f19603f3d011682016040523d82523d6000602084013e611329565b606091505b50509050806113715760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b6044820152606401610a98565b50565b6005546001600160a01b0316331461139e5760405162461bcd60e51b8152600401610a9890612508565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146113f35760405162461bcd60e51b8152600401610a9890612508565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036114875760405162461bcd60e51b815260206004820152602a60248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201526936b0b935b2ba2830b4b960b11b6064820152608401610a98565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114dc5760405162461bcd60e51b8152600401610a9890612508565b6103e8816114e960045490565b6114f39190612579565b6114fd9190612590565b601c5550565b6005546001600160a01b0316331461152d5760405162461bcd60e51b8152600401610a9890612508565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146115825760405162461bcd60e51b8152600401610a9890612508565b6001600160a01b0381166115e75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a98565b600580546001600160a01b0319166001600160a01b03831690811790915560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b806000036116ae576116a983836000611d0f565b505050565b601654610100900460ff161580156116d457506005546001600160a01b03838116911614155b80156116ee57506005546001600160a01b03848116911614155b156119835760165462010000900460ff16611787576001600160a01b03831660009081526010602052604090205460ff168061174257506001600160a01b03821660009081526010602052604090205460ff165b6117875760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a98565b6001600160a01b03821660009081526011602052604090205460ff161580156117c857506001600160a01b0383166000908152600e602052604090205460ff165b1561184257601b5481111561183d5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a98565b6118f9565b6001600160a01b03831660009081526011602052604090205460ff1615801561188357506001600160a01b0382166000908152600e602052604090205460ff165b156118f957601a548111156118f95760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a98565b6001600160a01b0382166000908152600f602052604090205460ff1661198357601c546001600160a01b03831660009081526020819052604090205461193f9083612566565b11156119835760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a98565b30600090815260208190526040902054601954601654908210159060ff1680156119aa5750805b80156119ce57506001600160a01b0384166000908152600e602052604090205460ff165b80156119e25750601654610100900460ff16155b8015611a0757506001600160a01b03841660009081526010602052604090205460ff16155b8015611a2c57506001600160a01b03851660009081526010602052604090205460ff16155b15611a54576016805461ff001916610100179055611a48611db4565b6016805461ff00191690555b6016546001600160a01b03851660009081526010602052604090205460ff610100909204821615911680611aa057506001600160a01b03861660009081526010602052604090205460ff165b15611aa9575060005b8015611d08576000436015541115611b35576064611ac8866063612579565b611ad29190612590565b90506063611ae182605e612579565b611aeb9190612590565b60126000828254611afc9190612566565b9091555060639050611b0f826005612579565b611b199190612590565b60136000828254611b2a9190612566565b90915550611ce99050565b600d5415801590611b5e57506001600160a01b0386166000908152600e602052604090205460ff165b15611c0c57600d54606490611b739087612579565b611b7d9190612590565b600d54600a5491925090611b919083612579565b611b9b9190612590565b60136000828254611bac9190612566565b9091555050600d54600b54611bc19083612579565b611bcb9190612590565b60146000828254611bdc9190612566565b9091555050600d54600c54611bf19083612579565b611bfb9190612590565b60126000828254611b2a9190612566565b60065415801590611c3557506001600160a01b0387166000908152600e602052604090205460ff165b15611ce957600654606490611c4a9087612579565b611c549190612590565b60065460095491925090611c689083612579565b611c729190612590565b60136000828254611c839190612566565b9091555050600654600854611c989083612579565b611ca29190612590565b60146000828254611cb39190612566565b9091555050600654600754611cc89083612579565b611cd29190612590565b60126000828254611ce39190612566565b90915550505b8015611cfa57611cfa873083611d0f565b611d048186612553565b9450505b6112848686865b6001600160a01b038316600090815260208190526040902054611d33908290612553565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611d63908290612566565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611688565b3060009081526020819052604081205460165460145460125460135493949363010000009093046001600160a01b031692849291611df191612566565b611dfb9190612566565b9050801580611e08575083155b15611e135750505050565b601954611e21906014612579565b841115611e3957601954611e36906014612579565b93505b600060028260145487611e4c9190612579565b611e569190612590565b611e609190612590565b90506000611e6e8287612553565b90506000611e91856001600160a01b031660009081526020819052604090205490565b905047611ea6611ea18385612553565b61202c565b6000611eb28247612553565b905060008660125483611ec59190612579565b611ecf9190612590565b905060008760135484611ee29190612579565b611eec9190612590565b90506000611efa8383612566565b611f049085612553565b60006014819055601381905560125590508715801590611f245750600081115b15611f6d57611f3388826121e4565b60408051888152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b6017546040516001600160a01b03909116908390600081818185875af1925050503d8060008114611fba576040519150601f19603f3d011682016040523d82523d6000602084013e611fbf565b606091505b5050601654604051919c50630100000090046001600160a01b0316904790600081818185875af1925050503d8060008114612016576040519150601f19603f3d011682016040523d82523d6000602084013e61201b565b606091505b505050505050505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612061576120616125cf565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210391906125b2565b81600181518110612116576121166125cf565b60200260200101906001600160a01b031690816001600160a01b031681525050612161307f000000000000000000000000000000000000000000000000000000000000000084611633565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906121b690859060009086903090429060040161267b565b600060405180830381600087803b1580156121d057600080fd5b505af1158015611284573d6000803e3d6000fd5b61220f307f000000000000000000000000000000000000000000000000000000000000000084611633565b60185460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c40160606040518083038185885af115801561229e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122c391906126b7565b5050505050565b600060208083528351808285015260005b818110156122f7578581018301518582016040015282016122db565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461137157600080fd5b6000806040838503121561234057600080fd5b823561234b81612318565b946020939093013593505050565b60006020828403121561236b57600080fd5b813561237681612318565b9392505050565b801515811461137157600080fd5b60006020828403121561239d57600080fd5b81356123768161237d565b6000806000606084860312156123bd57600080fd5b83356123c881612318565b925060208401356123d881612318565b929592945050506040919091013590565b600080604083850312156123fc57600080fd5b50508035926020909101359150565b60006020828403121561241d57600080fd5b5035919050565b6000806040838503121561243757600080fd5b823561244281612318565b915060208301356124528161237d565b809150509250929050565b60008060008060008060c0878903121561247657600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080604083850312156124b357600080fd5b82356124be81612318565b9150602083013561245281612318565b600181811c908216806124e257607f821691505b60208210810361250257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610a6857610a6861253d565b80820180821115610a6857610a6861253d565b8082028115828204841417610a6857610a6861253d565b6000826125ad57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156125c457600080fd5b815161237681612318565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156125f757600080fd5b81516123768161237d565b600081518084526020808501945080840160005b8381101561263b5781516001600160a01b031687529582019590820190600101612616565b509495945050505050565b84815260806020820152600061265f6080830186612602565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a06040820152600061269a60a0830186612602565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156126cc57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212205112405317074b3db7ce1d11aad434b2cbe9e26bcd859fb9d321b15683aa8c4464736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102cd5760003560e01c8063751039fc11610175578063a9059cbb116100dc578063c18bc19511610095578063dd62ed3e1161006f578063dd62ed3e1461090f578063e16830a814610955578063f2fde38b14610975578063f5b3c3bf1461099557600080fd5b8063c18bc1951461085a578063ca02d7911461087a578063d212a69a146108a157600080fd5b8063a9059cbb146107b0578063aa4b0bcc146107d0578063aa4bde28146107e5578063b8863115146107fb578063c02466681461081a578063c16dd4a41461083a57600080fd5b806395d89b411161012e57806395d89b41146106f557806396880b171461070a578063977039361461073a578063992c58e41461075a5780639fccce321461077a578063a457c2d71461079057600080fd5b8063751039fc146106575780637571336a1461066c5780637a6828f31461068c57806388e765ff146106ac5780638a8c523c146106c25780638da5cb5b146106d757600080fd5b8063313ce5671161023457806349bd5a5e116101ed57806366d602ae116101c757806366d602ae146105dc5780636ddd1713146105f257806370a082311461060c578063715018a61461064257600080fd5b806349bd5a5e1461054f5780634fbee19314610583578063555467a1146105bc57600080fd5b8063313ce5671461049357806334f2dcc4146104af57806338d0ed28146104cf57806339509351146104ef5780633e95481d1461050f5780634878632a1461052f57600080fd5b80631a8145bb116102865780631a8145bb146103ef5780631c6e8a75146104055780631dcfabee146104275780631f3fed8f1461044757806323b872dd1461045d57806327c8f8351461047d57600080fd5b806306fdde03146102d9578063084af05214610304578063095ea7b31461033c57806310d5de531461036c5780631694505e1461039c57806318160ddd146103d057600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ee6109c5565b6040516102fb91906122ca565b60405180910390f35b34801561031057600080fd5b50601754610324906001600160a01b031681565b6040516001600160a01b0390911681526020016102fb565b34801561034857600080fd5b5061035c61035736600461232d565b610a57565b60405190151581526020016102fb565b34801561037857600080fd5b5061035c610387366004612359565b60116020526000908152604090205460ff1681565b3480156103a857600080fd5b506103247f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156103dc57600080fd5b506004545b6040519081526020016102fb565b3480156103fb57600080fd5b506103e160145481565b34801561041157600080fd5b5061042561042036600461238b565b610a6e565b005b34801561043357600080fd5b50610425610442366004612359565b610ab4565b34801561045357600080fd5b506103e160125481565b34801561046957600080fd5b5061035c6104783660046123a8565b610b0a565b34801561048957600080fd5b5061032461dead81565b34801561049f57600080fd5b50604051601281526020016102fb565b3480156104bb57600080fd5b5061035c6104ca36600461232d565b610b5c565b3480156104db57600080fd5b506104256104ea3660046123e9565b610c07565b3480156104fb57600080fd5b5061035c61050a36600461232d565b610c7d565b34801561051b57600080fd5b5061042561052a366004612359565b610cb4565b34801561053b57600080fd5b5061042561054a3660046123a8565b610d00565b34801561055b57600080fd5b506103247f000000000000000000000000eceaa737f07318048e703a055e3a3b3bab82364881565b34801561058f57600080fd5b5061035c61059e366004612359565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156105c857600080fd5b5061035c6105d736600461240b565b610f81565b3480156105e857600080fd5b506103e1601a5481565b3480156105fe57600080fd5b5060165461035c9060ff1681565b34801561061857600080fd5b506103e1610627366004612359565b6001600160a01b031660009081526020819052604090205490565b34801561064e57600080fd5b50610425610fb7565b34801561066357600080fd5b50610425611020565b34801561067857600080fd5b50610425610687366004612424565b611063565b34801561069857600080fd5b506104256106a7366004612359565b6110b8565b3480156106b857600080fd5b506103e1601b5481565b3480156106ce57600080fd5b50610425611104565b3480156106e357600080fd5b506005546001600160a01b0316610324565b34801561070157600080fd5b506102ee61114f565b34801561071657600080fd5b5061035c610725366004612359565b600f6020526000908152604090205460ff1681565b34801561074657600080fd5b50601854610324906001600160a01b031681565b34801561076657600080fd5b5061042561077536600461245d565b61115e565b34801561078657600080fd5b506103e160135481565b34801561079c57600080fd5b5061035c6107ab36600461232d565b61128c565b3480156107bc57600080fd5b5061035c6107cb36600461232d565b6112c3565b3480156107dc57600080fd5b506104256112d0565b3480156107f157600080fd5b506103e1601c5481565b34801561080757600080fd5b5060165461035c90610100900460ff1681565b34801561082657600080fd5b50610425610835366004612424565b611374565b34801561084657600080fd5b50610425610855366004612424565b6113c9565b34801561086657600080fd5b5061042561087536600461240b565b6114b2565b34801561088657600080fd5b5060165461032490630100000090046001600160a01b031681565b3480156108ad57600080fd5b50600654600754600854600954600a54600b54600c54600d546108d4979695949392919088565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e0820152610100016102fb565b34801561091b57600080fd5b506103e161092a3660046124a0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561096157600080fd5b50610425610970366004612424565b611503565b34801561098157600080fd5b50610425610990366004612359565b611558565b3480156109a157600080fd5b5061035c6109b0366004612359565b600e6020526000908152604090205460ff1681565b6060600280546109d4906124ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610a00906124ce565b8015610a4d5780601f10610a2257610100808354040283529160200191610a4d565b820191906000526020600020905b815481529060010190602001808311610a3057829003601f168201915b5050505050905090565b6000610a64338484611633565b5060015b92915050565b6005546001600160a01b03163314610aa15760405162461bcd60e51b8152600401610a9890612508565b60405180910390fd5b6016805460ff1916911515919091179055565b6005546001600160a01b03163314610ade5760405162461bcd60e51b8152600401610a9890612508565b601680546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6000610b17848484611695565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610b52918691610b4d908690612553565b611633565b5060019392505050565b60006001600160a01b038316610bc25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e73666572546f20746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610a98565b6001600160a01b0383166000908152600160209081526040808320308085529252909120548490610bfc9082908490610b4d908890612566565b506001949350505050565b6005546001600160a01b03163314610c315760405162461bcd60e51b8152600401610a9890612508565b6103e882610c3e60045490565b610c489190612579565b610c529190612590565b601b556103e881610c6260045490565b610c6c9190612579565b610c769190612590565b601a555050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a64918590610b4d908690612566565b6005546001600160a01b03163314610cde5760405162461bcd60e51b8152600401610a9890612508565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610d1357600080fd5b60408051600280825260608201835260009260208301908036833701905050336000818152601060209081526040918290205482516315ab88c960e31b81529251949550929360ff9093169288927f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169263ad5c4648926004808401938290030181865afa158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd591906125b2565b84600081518110610de857610de86125cf565b60200260200101906001600160a01b031690816001600160a01b0316815250503084600181518110610e1c57610e1c6125cf565b60200260200101906001600160a01b031690816001600160a01b0316815250508115610eee57806001600160a01b03166323b872dd8786600181518110610e6557610e656125cf565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018890526064016020604051808303816000875af1158015610ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee891906125e5565b50610f78565b60405163b6f9de9560e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063b6f9de95908790610f4590600090899061dead904290600401612646565b6000604051808303818588803b158015610f5e57600080fd5b505af1158015610f72573d6000803e3d6000fd5b50505050505b50505050505050565b6005546000906001600160a01b03163314610fae5760405162461bcd60e51b8152600401610a9890612508565b50601955600190565b6005546001600160a01b03163314610fe15760405162461bcd60e51b8152600401610a9890612508565b600580546001600160a01b031916905560405160009081907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6005546001600160a01b0316331461104a5760405162461bcd60e51b8152600401610a9890612508565b6110566103e880610c07565b6110616103e86114b2565b565b6005546001600160a01b0316331461108d5760405162461bcd60e51b8152600401610a9890612508565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146110e25760405162461bcd60e51b8152600401610a9890612508565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461112e5760405162461bcd60e51b8152600401610a9890612508565b6016805462ff00ff19166201000117905561114a436000612566565b601555565b6060600380546109d4906124ce565b6005546001600160a01b031633146111885760405162461bcd60e51b8152600401610a9890612508565b600c839055600b829055600a819055600984905560088590556007869055836111b18688612566565b6111bb9190612566565b600655600a54600b54600c546111d19190612566565b6111db9190612566565b600d55600654606310156112315760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420393925206f72206c6573730000006044820152606401610a98565b600d54601e10156112845760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420333025206f72206c6573730000006044820152606401610a98565b505050505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a64918590610b4d908690612553565b6000610a64338484611695565b601654604051600091630100000090046001600160a01b03169047908381818185875af1925050503d8060008114611324576040519150601f19603f3d011682016040523d82523d6000602084013e611329565b606091505b50509050806113715760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b6044820152606401610a98565b50565b6005546001600160a01b0316331461139e5760405162461bcd60e51b8152600401610a9890612508565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146113f35760405162461bcd60e51b8152600401610a9890612508565b7f000000000000000000000000eceaa737f07318048e703a055e3a3b3bab8236486001600160a01b0316826001600160a01b0316036114875760405162461bcd60e51b815260206004820152602a60248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201526936b0b935b2ba2830b4b960b11b6064820152608401610a98565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114dc5760405162461bcd60e51b8152600401610a9890612508565b6103e8816114e960045490565b6114f39190612579565b6114fd9190612590565b601c5550565b6005546001600160a01b0316331461152d5760405162461bcd60e51b8152600401610a9890612508565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146115825760405162461bcd60e51b8152600401610a9890612508565b6001600160a01b0381166115e75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a98565b600580546001600160a01b0319166001600160a01b03831690811790915560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a350565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b806000036116ae576116a983836000611d0f565b505050565b601654610100900460ff161580156116d457506005546001600160a01b03838116911614155b80156116ee57506005546001600160a01b03848116911614155b156119835760165462010000900460ff16611787576001600160a01b03831660009081526010602052604090205460ff168061174257506001600160a01b03821660009081526010602052604090205460ff165b6117875760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610a98565b6001600160a01b03821660009081526011602052604090205460ff161580156117c857506001600160a01b0383166000908152600e602052604090205460ff165b1561184257601b5481111561183d5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610a98565b6118f9565b6001600160a01b03831660009081526011602052604090205460ff1615801561188357506001600160a01b0382166000908152600e602052604090205460ff165b156118f957601a548111156118f95760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610a98565b6001600160a01b0382166000908152600f602052604090205460ff1661198357601c546001600160a01b03831660009081526020819052604090205461193f9083612566565b11156119835760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610a98565b30600090815260208190526040902054601954601654908210159060ff1680156119aa5750805b80156119ce57506001600160a01b0384166000908152600e602052604090205460ff165b80156119e25750601654610100900460ff16155b8015611a0757506001600160a01b03841660009081526010602052604090205460ff16155b8015611a2c57506001600160a01b03851660009081526010602052604090205460ff16155b15611a54576016805461ff001916610100179055611a48611db4565b6016805461ff00191690555b6016546001600160a01b03851660009081526010602052604090205460ff610100909204821615911680611aa057506001600160a01b03861660009081526010602052604090205460ff165b15611aa9575060005b8015611d08576000436015541115611b35576064611ac8866063612579565b611ad29190612590565b90506063611ae182605e612579565b611aeb9190612590565b60126000828254611afc9190612566565b9091555060639050611b0f826005612579565b611b199190612590565b60136000828254611b2a9190612566565b90915550611ce99050565b600d5415801590611b5e57506001600160a01b0386166000908152600e602052604090205460ff165b15611c0c57600d54606490611b739087612579565b611b7d9190612590565b600d54600a5491925090611b919083612579565b611b9b9190612590565b60136000828254611bac9190612566565b9091555050600d54600b54611bc19083612579565b611bcb9190612590565b60146000828254611bdc9190612566565b9091555050600d54600c54611bf19083612579565b611bfb9190612590565b60126000828254611b2a9190612566565b60065415801590611c3557506001600160a01b0387166000908152600e602052604090205460ff165b15611ce957600654606490611c4a9087612579565b611c549190612590565b60065460095491925090611c689083612579565b611c729190612590565b60136000828254611c839190612566565b9091555050600654600854611c989083612579565b611ca29190612590565b60146000828254611cb39190612566565b9091555050600654600754611cc89083612579565b611cd29190612590565b60126000828254611ce39190612566565b90915550505b8015611cfa57611cfa873083611d0f565b611d048186612553565b9450505b6112848686865b6001600160a01b038316600090815260208190526040902054611d33908290612553565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611d63908290612566565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611688565b3060009081526020819052604081205460165460145460125460135493949363010000009093046001600160a01b031692849291611df191612566565b611dfb9190612566565b9050801580611e08575083155b15611e135750505050565b601954611e21906014612579565b841115611e3957601954611e36906014612579565b93505b600060028260145487611e4c9190612579565b611e569190612590565b611e609190612590565b90506000611e6e8287612553565b90506000611e91856001600160a01b031660009081526020819052604090205490565b905047611ea6611ea18385612553565b61202c565b6000611eb28247612553565b905060008660125483611ec59190612579565b611ecf9190612590565b905060008760135484611ee29190612579565b611eec9190612590565b90506000611efa8383612566565b611f049085612553565b60006014819055601381905560125590508715801590611f245750600081115b15611f6d57611f3388826121e4565b60408051888152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b6017546040516001600160a01b03909116908390600081818185875af1925050503d8060008114611fba576040519150601f19603f3d011682016040523d82523d6000602084013e611fbf565b606091505b5050601654604051919c50630100000090046001600160a01b0316904790600081818185875af1925050503d8060008114612016576040519150601f19603f3d011682016040523d82523d6000602084013e61201b565b606091505b505050505050505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612061576120616125cf565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210391906125b2565b81600181518110612116576121166125cf565b60200260200101906001600160a01b031690816001600160a01b031681525050612161307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611633565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906121b690859060009086903090429060040161267b565b600060405180830381600087803b1580156121d057600080fd5b505af1158015611284573d6000803e3d6000fd5b61220f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611633565b60185460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990839060c40160606040518083038185885af115801561229e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122c391906126b7565b5050505050565b600060208083528351808285015260005b818110156122f7578581018301518582016040015282016122db565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461137157600080fd5b6000806040838503121561234057600080fd5b823561234b81612318565b946020939093013593505050565b60006020828403121561236b57600080fd5b813561237681612318565b9392505050565b801515811461137157600080fd5b60006020828403121561239d57600080fd5b81356123768161237d565b6000806000606084860312156123bd57600080fd5b83356123c881612318565b925060208401356123d881612318565b929592945050506040919091013590565b600080604083850312156123fc57600080fd5b50508035926020909101359150565b60006020828403121561241d57600080fd5b5035919050565b6000806040838503121561243757600080fd5b823561244281612318565b915060208301356124528161237d565b809150509250929050565b60008060008060008060c0878903121561247657600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080604083850312156124b357600080fd5b82356124be81612318565b9150602083013561245281612318565b600181811c908216806124e257607f821691505b60208210810361250257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610a6857610a6861253d565b80820180821115610a6857610a6861253d565b8082028115828204841417610a6857610a6861253d565b6000826125ad57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156125c457600080fd5b815161237681612318565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156125f757600080fd5b81516123768161237d565b600081518084526020808501945080840160005b8381101561263b5781516001600160a01b031687529582019590820190600101612616565b509495945050505050565b84815260806020820152600061265f6080830186612602565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a06040820152600061269a60a0830186612602565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156126cc57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212205112405317074b3db7ce1d11aad434b2cbe9e26bcd859fb9d321b15683aa8c4464736f6c63430008120033

Deployed Bytecode Sourcemap

6659:13774:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3725:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7948:27;;;;;;;;;;-1:-1:-1;7948:27:0;;;;-1:-1:-1;;;;;7948:27:0;;;;;;-1:-1:-1;;;;;731:32:1;;;713:51;;701:2;686:18;7948:27:0;567:203:1;5668:168:0;;;;;;;;;;-1:-1:-1;5668:168:0;;;;;:::i;:::-;;:::i;:::-;;;1396:14:1;;1389:22;1371:41;;1359:2;1344:18;5668:168:0;1231:187:1;7419:63:0;;;;;;;;;;-1:-1:-1;7419:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7491:51;;;;;;;;;;;;;;;3818:93;;;;;;;;;;-1:-1:-1;3896:12:0;;3818:93;;;2055:25:1;;;2043:2;2028:18;3818:93:0;1909:177:1;7670:33:0;;;;;;;;;;;;;;;;19909:101;;;;;;;;;;-1:-1:-1;19909:101:0;;;;;:::i;:::-;;:::i;:::-;;12466:144;;;;;;;;;;-1:-1:-1;12466:144:0;;;;;:::i;:::-;;:::i;7596:33::-;;;;;;;;;;;;;;;;5375:285;;;;;;;;;;-1:-1:-1;5375:285:0;;;;;:::i;:::-;;:::i;7848:53::-;;;;;;;;;;;;7894:6;7848:53;;3639:78;;;;;;;;;;-1:-1:-1;3639:78:0;;3712:2;3063:36:1;;3051:2;3036:18;3639:78:0;2921:184:1;4016:353:0;;;;;;;;;;-1:-1:-1;4016:353:0;;;;;:::i;:::-;;:::i;20184:246::-;;;;;;;;;;-1:-1:-1;20184:246:0;;;;;:::i;:::-;;:::i;5003:206::-;;;;;;;;;;-1:-1:-1;5003:206:0;;;;;:::i;:::-;;:::i;12174:144::-;;;;;;;;;;-1:-1:-1;12174:144:0;;;;;:::i;:::-;;:::i;12751:764::-;;;;;;;;;;-1:-1:-1;12751:764:0;;;;;:::i;:::-;;:::i;7549:38::-;;;;;;;;;;;;;;;12618:125;;;;;;;;;;-1:-1:-1;12618:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;12707:28:0;12683:4;12707:28;;;:19;:28;;;;;;;;;12618:125;20018:158;;;;;;;;;;-1:-1:-1;20018:158:0;;;;;:::i;:::-;;:::i;8069:28::-;;;;;;;;;;;;;;;;7742:31;;;;;;;;;;-1:-1:-1;7742:31:0;;;;;;;;3519:112;;;;;;;;;;-1:-1:-1;3519:112:0;;;;;:::i;:::-;-1:-1:-1;;;;;3610:18:0;3592:7;3610:18;;;;;;;;;;;;3519:112;2376:148;;;;;;;;;;;;;:::i;19573:138::-;;;;;;;;;;;;;:::i;16446:158::-;;;;;;;;;;-1:-1:-1;16446:158:0;;;;;:::i;:::-;;:::i;12326:132::-;;;;;;;;;;-1:-1:-1;12326:132:0;;;;;:::i;:::-;;:::i;8104:27::-;;;;;;;;;;;;;;;;19719:145;;;;;;;;;;;;;:::i;2624:78::-;;;;;;;;;;-1:-1:-1;2688:6:0;;-1:-1:-1;;;;;2688:6:0;2624:78;;3919:89;;;;;;;;;;;;;:::i;7295:58::-;;;;;;;;;;-1:-1:-1;7295:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7982:33;;;;;;;;;;-1:-1:-1;7982:33:0;;;;-1:-1:-1;;;;;7982:33:0;;;10910:898;;;;;;;;;;-1:-1:-1;10910:898:0;;;;;:::i;:::-;;:::i;7636:27::-;;;;;;;;;;;;;;;;4607:206;;;;;;;;;;-1:-1:-1;4607:206:0;;;;;:::i;:::-;;:::i;4821:174::-;;;;;;;;;;-1:-1:-1;4821:174:0;;;;;:::i;:::-;;:::i;19282:185::-;;;;;;;;;;;;;:::i;8138:30::-;;;;;;;;;;;;;;;;7780:22;;;;;;;;;;-1:-1:-1;7780:22:0;;;;;;;;;;;16612:136;;;;;;;;;;-1:-1:-1;16612:136:0;;;;;:::i;:::-;;:::i;11970:196::-;;;;;;;;;;-1:-1:-1;11970:196:0;;;;;:::i;:::-;;:::i;11816:146::-;;;;;;;;;;-1:-1:-1;11816:146:0;;;;;:::i;:::-;;:::i;7908:33::-;;;;;;;;;;-1:-1:-1;7908:33:0;;;;;;;-1:-1:-1;;;;;7908:33:0;;;6986:249;;;;;;;;;;-1:-1:-1;6986:249:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4806:25:1;;;4862:2;4847:18;;4840:34;;;;4890:18;;;4883:34;;;;4948:2;4933:18;;4926:34;;;;4991:3;4976:19;;4969:35;5035:3;5020:19;;5013:35;5079:3;5064:19;;5057:35;5123:3;5108:19;;5101:35;4793:3;4778:19;6986:249:0;4463:679:1;5217:150:0;;;;;;;;;;-1:-1:-1;5217:150:0;;;;;:::i;:::-;-1:-1:-1;;;;;5332:18:0;;;5305:7;5332:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5217:150;16760;;;;;;;;;;-1:-1:-1;16760:150:0;;;;;:::i;:::-;;:::i;1963:244::-;;;;;;;;;;-1:-1:-1;1963:244:0;;;;;:::i;:::-;;:::i;7244:42::-;;;;;;;;;;-1:-1:-1;7244:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3725:85;3778:13;3802:5;3795:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3725:85;:::o;5668:168::-;5750:4;5767:39;1484:10;5790:7;5799:6;5767:8;:39::i;:::-;-1:-1:-1;5824:4:0;5668:168;;;;;:::o;19909:101::-;2750:6;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;;;;;;;;;19981:11:::1;:21:::0;;-1:-1:-1;;19981:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19909:101::o;12466:144::-;2750:6;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;12572:18:::1;:30:::0;;-1:-1:-1;;;;;12572:30:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;12572:30:0;;::::1;::::0;;;::::1;::::0;;12466:144::o;5375:285::-;5505:4;5522:27;5532:4;5538:2;5542:6;5522:9;:27::i;:::-;-1:-1:-1;;;;;5589:17:0;;;;;;:11;:17;;;;;;;;1484:10;5589:31;;;;;;;;;5560:70;;5569:4;;5589:40;;5623:6;;5589:40;:::i;:::-;5560:8;:70::i;:::-;-1:-1:-1;5648:4:0;5375:285;;;;;:::o;4016:353::-;4112:4;-1:-1:-1;;;;;4137:16:0;;4129:66;;;;-1:-1:-1;;;4129:66:0;;6753:2:1;4129:66:0;;;6735:21:1;6792:2;6772:18;;;6765:30;6831:34;6811:18;;;6804:62;-1:-1:-1;;;6882:18:1;;;6875:35;6927:19;;4129:66:0;6551:401:1;4129:66:0;-1:-1:-1;;;;;5332:18:0;;5305:7;5332:18;;;:11;:18;;;;;;;;4234:4;5332:27;;;;;;;;;:18;;4279:60;;5332:18;;4234:4;;4304:34;;4332:6;;4304:34;:::i;4279:60::-;-1:-1:-1;4357:4:0;;4016:353;-1:-1:-1;;;;4016:353:0:o;20184:246::-;2750:6;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;20350:4:::1;20331:15;20315:13;3896:12:::0;;;3818:93;20315:13:::1;:31;;;;:::i;:::-;20314:40;;;;:::i;:::-;20299:12;:55:::0;20418:4:::1;20398:16:::0;20382:13:::1;3896:12:::0;;;3818:93;20382:13:::1;:32;;;;:::i;:::-;20381:41;;;;:::i;:::-;20365:13;:57:::0;-1:-1:-1;;20184:246:0:o;5003:206::-;1484:10;5086:4;5135:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5135:34:0;;;;;;;;;;5086:4;;5103:76;;5126:7;;5135:43;;5172:6;;5135:43;:::i;12174:144::-;2750:6;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;12280:18:::1;:30:::0;;-1:-1:-1;;;;;;12280:30:0::1;-1:-1:-1::0;;;;;12280:30:0;;;::::1;::::0;;;::::1;::::0;;12174:144::o;12751:764::-;-1:-1:-1;;;;;12858:19:0;;12850:28;;;;;;12915:16;;;12929:1;12915:16;;;;;;;;12891:21;;12915:16;;;;;;;;;;-1:-1:-1;;12959:10:0;12942:14;13004:27;;;:19;:27;;;;;;;;;;13099:22;;-1:-1:-1;;;13099:22:0;;;;12891:40;;-1:-1:-1;12959:10:0;;13004:27;;;;;13070:5;;13099:15;-1:-1:-1;;;;;13099:20:0;;;;:22;;;;;;;;;;:20;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13089:4;13094:1;13089:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;13089:32:0;;;-1:-1:-1;;;;;13089:32:0;;;;;13150:4;13132;13137:1;13132:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;13132:23:0;;;-1:-1:-1;;;;;13132:23:0;;;;;13172:14;13168:340;;;13203:11;-1:-1:-1;;;;;13203:24:0;;13228:9;13239:4;13244:1;13239:7;;;;;;;;:::i;:::-;;;;;;;;;;;13203:52;;-1:-1:-1;;;;;;13203:52:0;;;;;;;-1:-1:-1;;;;;8260:15:1;;;13203:52:0;;;8242:34:1;8312:15;;8292:18;;;8285:43;8344:18;;;8337:34;;;8177:18;;13203:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13168:340;;;13288:208;;-1:-1:-1;;;13288:208:0;;-1:-1:-1;;;;;13288:15:0;:66;;;;13362:6;;13288:208;;13389:1;;13409:4;;13440:6;;13466:15;;13288:208;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13168:340;12839:676;;;;12751:764;;;:::o;20018:158::-;2750:6;;20099:4;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;-1:-1:-1;20115:19:0::1;:31:::0;20164:4:::1;::::0;20018:158::o;2376:148::-;2750:6;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;2441:6:::1;:19:::0;;-1:-1:-1;;;;;;2441:19:0::1;::::0;;2476:40:::1;::::0;2458:1:::1;::::0;;;2476:40:::1;::::0;2458:1;;2476:40:::1;2376:148::o:0;19573:138::-;2750:6;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;19627:38:::1;19654:4;19660::::0;19627:26:::1;:38::i;:::-;19676:27;19698:4;19676:21;:27::i;:::-;19573:138::o:0;16446:158::-;2750:6;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16543:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:53;;-1:-1:-1;;16543:53:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16446:158::o;12326:132::-;2750:6;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;12426:12:::1;:24:::0;;-1:-1:-1;;;;;;12426:24:0::1;-1:-1:-1::0;;;;;12426:24:0;;;::::1;::::0;;;::::1;::::0;;12326:132::o;19719:145::-;2750:6;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;19774:11:::1;:18:::0;;-1:-1:-1;;19803:16:0;;;;;19840::::1;:12;-1:-1:-1::0;19840:16:0::1;:::i;:::-;19830:7;:26:::0;19719:145::o;3919:89::-;3974:13;3998:7;3991:14;;;;;:::i;10910:898::-;2750:6;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;11167:22;:42;;;11220:22;:42;;;11273:16;:30;;;11314:15;:28;;;11353:21;:40;;;11404:21;:40;;;11332:10;11478:45:::1;11377:16:::0;11428;11478:45:::1;:::i;:::-;:63;;;;:::i;:::-;11457:5;:84:::0;11624:16;;11599:22;;11574;;:47:::1;::::0;11599:22;11574:47:::1;:::i;:::-;:66;;;;:::i;:::-;11552:19:::0;:88;:5:::1;11661:18:::0;11683:2:::1;-1:-1:-1::0;11661:24:0::1;11653:66;;;::::0;-1:-1:-1;;;11653:66:0;;9815:2:1;11653:66:0::1;::::0;::::1;9797:21:1::0;9854:2;9834:18;;;9827:30;9893:31;9873:18;;;9866:59;9942:18;;11653:66:0::1;9613:353:1::0;11653:66:0::1;11741:19:::0;;11764:2:::1;-1:-1:-1::0;11741:25:0::1;11733:67;;;::::0;-1:-1:-1;;;11733:67:0;;10173:2:1;11733:67:0::1;::::0;::::1;10155:21:1::0;10212:2;10192:18;;;10185:30;10251:31;10231:18;;;10224:59;10300:18;;11733:67:0::1;9971:353:1::0;11733:67:0::1;10910:898:::0;;;;;;:::o;4607:206::-;1484:10;4690:4;4739:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4739:34:0;;;;;;;;;;4690:4;;4707:76;;4730:7;;4739:43;;4776:6;;4739:43;:::i;4821:174::-;4906:4;4923:42;1484:10;4947:9;4958:6;4923:9;:42::i;19282:185::-;19353:18;;19345:66;;19330:9;;19353:18;;;-1:-1:-1;;;;;19353:18:0;;19385:21;;19330:9;19345:66;19330:9;19345:66;19385:21;19353:18;19345:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19329:82;;;19430:4;19422:37;;;;-1:-1:-1;;;19422:37:0;;10741:2:1;19422:37:0;;;10723:21:1;10780:2;10760:18;;;10753:30;-1:-1:-1;;;10799:18:1;;;10792:50;10859:18;;19422:37:0;10539:344:1;19422:37:0;19318:149;19282:185::o;16612:136::-;2750:6;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16699:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:41;;-1:-1:-1;;16699:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16612:136::o;11970:196::-;2750:6;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;12063:13:::1;-1:-1:-1::0;;;;;12055:21:0::1;:4;-1:-1:-1::0;;;;;12055:21:0::1;::::0;12047:76:::1;;;::::0;-1:-1:-1;;;12047:76:0;;11090:2:1;12047:76:0::1;::::0;::::1;11072:21:1::0;11129:2;11109:18;;;11102:30;11168:34;11148:18;;;11141:62;-1:-1:-1;;;11219:18:1;;;11212:40;11269:19;;12047:76:0::1;10888:406:1::0;12047:76:0::1;-1:-1:-1::0;;;;;12134:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:24;;-1:-1:-1;;12134:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11970:196::o;11816:146::-;2750:6;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;11950:4:::1;11933:13;11917;3896:12:::0;;;3818:93;11917:13:::1;:29;;;;:::i;:::-;11916:38;;;;:::i;:::-;11898:15;:56:::0;-1:-1:-1;11816:146:0:o;16760:150::-;2750:6;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16854:35:0;;;::::1;;::::0;;;:26:::1;:35;::::0;;;;:48;;-1:-1:-1;;16854:48:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16760:150::o;1963:244::-;2750:6;;-1:-1:-1;;;;;2750:6:0;1484:10;2750:22;2742:67;;;;-1:-1:-1;;;2742:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2052:22:0;::::1;2044:73;;;::::0;-1:-1:-1;;;2044:73:0;;11501:2:1;2044:73:0::1;::::0;::::1;11483:21:1::0;11540:2;11520:18;;;11513:30;11579:34;11559:18;;;11552:62;-1:-1:-1;;;11630:18:1;;;11623:36;11676:19;;2044:73:0::1;11299:402:1::0;2044:73:0::1;2128:6;:17:::0;;-1:-1:-1;;;;;;2128:17:0::1;-1:-1:-1::0;;;;;2128:17:0;::::1;::::0;;::::1;::::0;;;2161:38:::1;::::0;2128:17;;2161:38:::1;::::0;-1:-1:-1;;2161:38:0::1;1963:244:::0;:::o;4377:220::-;-1:-1:-1;;;;;4505:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;4557:32;;2055:25:1;;;4557:32:0;;2028:18:1;4557:32:0;;;;;;;;4377:220;;;:::o;13523:2915::-;13651:6;13661:1;13651:11;13647:93;;13679:28;13695:4;13701:2;13705:1;13679:15;:28::i;:::-;13523:2915;;;:::o;13647:93::-;13771:10;;;;;;;13770:11;:41;;;;-1:-1:-1;2688:6:0;;-1:-1:-1;;;;;13798:13:0;;;2688:6;;13798:13;;13770:41;:73;;;;-1:-1:-1;2688:6:0;;-1:-1:-1;;;;;13828:15:0;;;2688:6;;13828:15;;13770:73;13752:822;;;13875:9;;;;;;;13870:138;;-1:-1:-1;;;;;13913:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;13942:23:0;;;;;;:19;:23;;;;;;;;13913:52;13905:87;;;;-1:-1:-1;;;13905:87:0;;11908:2:1;13905:87:0;;;11890:21:1;11947:2;11927:18;;;11920:30;-1:-1:-1;;;11966:18:1;;;11959:52;12028:18;;13905:87:0;11706:346:1;13905:87:0;-1:-1:-1;;;;;14029:35:0;;;;;;:31;:35;;;;;;;;14028:36;:56;;;;-1:-1:-1;;;;;;14068:16:0;;;;;;:10;:16;;;;;;;;14028:56;14024:378;;;14123:12;;14113:6;:22;;14105:88;;;;-1:-1:-1;;;14105:88:0;;12259:2:1;14105:88:0;;;12241:21:1;12298:2;12278:18;;;12271:30;12337:34;12317:18;;;12310:62;-1:-1:-1;;;12388:18:1;;;12381:51;12449:19;;14105:88:0;12057:417:1;14105:88:0;14024:378;;;-1:-1:-1;;;;;14220:37:0;;;;;;:31;:37;;;;;;;;14219:38;:56;;;;-1:-1:-1;;;;;;14261:14:0;;;;;;:10;:14;;;;;;;;14219:56;14215:187;;;14314:13;;14304:6;:23;;14296:90;;;;-1:-1:-1;;;14296:90:0;;12681:2:1;14296:90:0;;;12663:21:1;12720:2;12700:18;;;12693:30;12759:34;12739:18;;;12732:62;-1:-1:-1;;;12810:18:1;;;12803:52;12872:19;;14296:90:0;12479:418:1;14296:90:0;-1:-1:-1;;;;;14423:30:0;;;;;;:26;:30;;;;;;;;14418:145;;14508:15;;-1:-1:-1;;;;;3610:18:0;;3592:7;3610:18;;;;;;;;;;;14482:22;;:6;:22;:::i;:::-;:41;;14474:73;;;;-1:-1:-1;;;14474:73:0;;13104:2:1;14474:73:0;;;13086:21:1;13143:2;13123:18;;;13116:30;-1:-1:-1;;;13162:18:1;;;13155:49;13221:18;;14474:73:0;12902:343:1;14474:73:0;14636:4;14587:28;3610:18;;;;;;;;;;;14692:19;;14742:11;;14668:43;;;;;14742:11;;:35;;;;;14770:7;14742:35;:66;;;;-1:-1:-1;;;;;;14794:14:0;;;;;;:10;:14;;;;;;;;14742:66;:94;;;;-1:-1:-1;14826:10:0;;;;;;;14825:11;14742:94;:135;;;;-1:-1:-1;;;;;;14854:23:0;;;;;;:19;:23;;;;;;;;14853:24;14742:135;:178;;;;-1:-1:-1;;;;;;14895:25:0;;;;;;:19;:25;;;;;;;;14894:26;14742:178;14724:310;;;14947:10;:17;;-1:-1:-1;;14947:17:0;;;;;14979:10;:8;:10::i;:::-;15004;:18;;-1:-1:-1;;15004:18:0;;;14724:310;15063:10;;-1:-1:-1;;;;;15090:23:0;;15047:12;15090:23;;;:19;:23;;;;;;15063:10;;;;;;;15062:11;;15090:23;;:52;;-1:-1:-1;;;;;;15117:25:0;;;;;;:19;:25;;;;;;;;15090:52;15086:100;;;-1:-1:-1;15169:5:0;15086:100;15202:7;15198:1187;;;15226:12;15270;15260:7;;:22;15257:979;;;15326:3;15311:11;:6;15320:2;15311:11;:::i;:::-;15310:19;;;;:::i;:::-;15303:26;-1:-1:-1;15384:2:0;15371:9;15303:26;15378:2;15371:9;:::i;:::-;15370:16;;;;:::i;:::-;15348:18;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;15434:2:0;;-1:-1:-1;15422:8:0;:4;15429:1;15422:8;:::i;:::-;15421:15;;;;:::i;:::-;15405:12;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;15257:979:0;;-1:-1:-1;15257:979:0;;15462:19;;:23;;;;:41;;-1:-1:-1;;;;;;15489:14:0;;;;;;:10;:14;;;;;;;;15462:41;15458:778;;;15541:19;;15564:3;;15532:28;;:6;:28;:::i;:::-;15531:36;;;;:::i;:::-;15628:19;;15609:16;;15524:43;;-1:-1:-1;15628:19:0;15602:23;;15524:43;15602:23;:::i;:::-;:45;;;;:::i;:::-;15586:12;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;15720:19:0;;15695:22;;15688:29;;:4;:29;:::i;:::-;:51;;;;:::i;:::-;15666:18;;:73;;;;;;;:::i;:::-;;;;-1:-1:-1;;15812:19:0;;15787:22;;15780:29;;:4;:29;:::i;:::-;:51;;;;:::i;:::-;15758:18;;:73;;;;;;;:::i;15458:778::-;15857:5;:18;:22;;;;:42;;-1:-1:-1;;;;;;15883:16:0;;;;;;:10;:16;;;;;;;;15857:42;15853:383;;;15937:5;:18;15959:3;;15928:27;;:6;:27;:::i;:::-;15927:35;;;;:::i;:::-;16022:5;:18;16004:15;;15920:42;;-1:-1:-1;16022:18:0;15997:22;;15920:42;15997:22;:::i;:::-;:43;;;;:::i;:::-;15981:12;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;16112:5:0;:18;16088:21;;16081:28;;:4;:28;:::i;:::-;:49;;;;:::i;:::-;16059:18;;:71;;;;;;;:::i;:::-;;;;-1:-1:-1;;16202:5:0;:18;16178:21;;16171:28;;:4;:28;:::i;:::-;:49;;;;:::i;:::-;16149:18;;:71;;;;;;;:::i;:::-;;;;-1:-1:-1;;15853:383:0;16256:8;;16252:91;;16285:42;16301:4;16315;16322;16285:15;:42::i;:::-;16359:14;16369:4;16359:14;;:::i;:::-;;;15211:1174;15198:1187;16397:33;16413:4;16419:2;16423:6;5844:264;-1:-1:-1;;;;;5985:15:0;;:9;:15;;;;;;;;;;;:24;;6003:6;;5985:24;:::i;:::-;-1:-1:-1;;;;;5967:15:0;;;:9;:15;;;;;;;;;;;:42;;;;6036:13;;;;;;;:22;;6052:6;;6036:22;:::i;:::-;-1:-1:-1;;;;;6020:13:0;;;:9;:13;;;;;;;;;;;;:38;;;;6074:26;2055:25:1;;;6020:13:0;;6074:26;;;;;;2028:18:1;6074:26:0;1909:177:1;16918:1581:0;16998:4;16957:20;3610:18;;;;;;;;;;;17062;;17183;;17149;;17121:12;;3610:18;;16957:20;17062:18;;;;-1:-1:-1;;;;;17062:18:0;;16957:20;;17183:18;17121:46;;;:::i;:::-;:80;;;;:::i;:::-;17091:110;-1:-1:-1;17218:11:0;;;:32;;-1:-1:-1;17233:17:0;;17218:32;17214:49;;;17254:7;;;;16918:1581::o;17214:49::-;17294:19;;:24;;17316:2;17294:24;:::i;:::-;17279:12;:39;17275:111;;;17350:19;;:24;;17372:2;17350:24;:::i;:::-;17335:39;;17275:111;17398:23;17469:1;17460:6;17439:18;;17424:12;:33;;;;:::i;:::-;:42;;;;:::i;:::-;:46;;;;:::i;:::-;17398:72;-1:-1:-1;17481:26:0;17510:30;17398:72;17510:12;:30;:::i;:::-;17481:59;;17554:21;17578:24;17588:13;-1:-1:-1;;;;;3610:18:0;3592:7;3610:18;;;;;;;;;;;;3519:112;17578:24;17554:48;-1:-1:-1;17641:21:0;17673:52;17690:34;17554:48;17690:18;:34;:::i;:::-;17673:16;:52::i;:::-;17736:18;17757:41;17781:17;17757:21;:41;:::i;:::-;17736:62;;17812:23;17874:6;17852:18;;17839:10;:31;;;;:::i;:::-;17838:42;;;;:::i;:::-;17812:68;;17891:17;17941:6;17925:12;;17912:10;:25;;;;:::i;:::-;17911:36;;;;:::i;:::-;17891:56;-1:-1:-1;17958:23:0;17998:27;18010:15;17891:56;17998:27;:::i;:::-;17984:42;;:10;:42;:::i;:::-;18060:1;18039:18;:22;;;18072:12;:16;;;18099:18;:22;17958:68;-1:-1:-1;18138:19:0;;;;;:42;;;18179:1;18161:15;:19;18138:42;18134:192;;;18197:46;18210:15;18227;18197:12;:46::i;:::-;18263:51;;;13424:25:1;;;13480:2;13465:18;;13458:34;;;18263:51:0;;13397:18:1;18263:51:0;;;;;;;18134:192;18359:12;;18351:49;;-1:-1:-1;;;;;18359:12:0;;;;18385:9;;18351:49;;;;18385:9;18359:12;18351:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18432:18:0;;18424:67;;18338:62;;-1:-1:-1;18432:18:0;;;-1:-1:-1;;;;;18432:18:0;;18464:21;;18424:67;;;;18464:21;18432:18;18424:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;16918:1581:0:o;18799:475::-;18889:16;;;18903:1;18889:16;;;;;;;;18865:21;;18889:16;;;;;;;;;;-1:-1:-1;18889:16:0;18865:40;;18934:4;18916;18921:1;18916:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;18916:23:0;;;-1:-1:-1;;;;;18916:23:0;;;;;18960:15;-1:-1:-1;;;;;18960:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18950:4;18955:1;18950:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;18950:32:0;;;-1:-1:-1;;;;;18950:32:0;;;;;18995:62;19012:4;19027:15;19045:11;18995:8;:62::i;:::-;19070:196;;-1:-1:-1;;;19070:196:0;;-1:-1:-1;;;;;19070:15:0;:66;;;;:196;;19151:11;;19177:1;;19193:4;;19220;;19240:15;;19070:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18507:284;18588:62;18605:4;18620:15;18638:11;18588:8;:62::i;:::-;18747:18;;18661:122;;-1:-1:-1;;;18661:122:0;;18720:4;18661:122;;;14431:34:1;14481:18;;;14474:34;;;18740:1:0;14524:18:1;;;14517:34;;;14567:18;;;14560:34;-1:-1:-1;;;;;18747:18:0;;;14610:19:1;;;14603:44;18767:15:0;14663:19:1;;;14656:35;18661:15:0;:31;;;;;;18700:9;;14365:19:1;;18661:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18507:284;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;775:131::-;-1:-1:-1;;;;;850:31:1;;840:42;;830:70;;896:1;893;886:12;911:315;979:6;987;1040:2;1028:9;1019:7;1015:23;1011:32;1008:52;;;1056:1;1053;1046:12;1008:52;1095:9;1082:23;1114:31;1139:5;1114:31;:::i;:::-;1164:5;1216:2;1201:18;;;;1188:32;;-1:-1:-1;;;911:315:1:o;1423:247::-;1482:6;1535:2;1523:9;1514:7;1510:23;1506:32;1503:52;;;1551:1;1548;1541:12;1503:52;1590:9;1577:23;1609:31;1634:5;1609:31;:::i;:::-;1659:5;1423:247;-1:-1:-1;;;1423:247:1:o;2091:118::-;2177:5;2170:13;2163:21;2156:5;2153:32;2143:60;;2199:1;2196;2189:12;2214:241;2270:6;2323:2;2311:9;2302:7;2298:23;2294:32;2291:52;;;2339:1;2336;2329:12;2291:52;2378:9;2365:23;2397:28;2419:5;2397:28;:::i;2460:456::-;2537:6;2545;2553;2606:2;2594:9;2585:7;2581:23;2577:32;2574:52;;;2622:1;2619;2612:12;2574:52;2661:9;2648:23;2680:31;2705:5;2680:31;:::i;:::-;2730:5;-1:-1:-1;2787:2:1;2772:18;;2759:32;2800:33;2759:32;2800:33;:::i;:::-;2460:456;;2852:7;;-1:-1:-1;;;2906:2:1;2891:18;;;;2878:32;;2460:456::o;3110:248::-;3178:6;3186;3239:2;3227:9;3218:7;3214:23;3210:32;3207:52;;;3255:1;3252;3245:12;3207:52;-1:-1:-1;;3278:23:1;;;3348:2;3333:18;;;3320:32;;-1:-1:-1;3110:248:1:o;3363:180::-;3422:6;3475:2;3463:9;3454:7;3450:23;3446:32;3443:52;;;3491:1;3488;3481:12;3443:52;-1:-1:-1;3514:23:1;;3363:180;-1:-1:-1;3363:180:1:o;3548:382::-;3613:6;3621;3674:2;3662:9;3653:7;3649:23;3645:32;3642:52;;;3690:1;3687;3680:12;3642:52;3729:9;3716:23;3748:31;3773:5;3748:31;:::i;:::-;3798:5;-1:-1:-1;3855:2:1;3840:18;;3827:32;3868:30;3827:32;3868:30;:::i;:::-;3917:7;3907:17;;;3548:382;;;;;:::o;3935:523::-;4039:6;4047;4055;4063;4071;4079;4132:3;4120:9;4111:7;4107:23;4103:33;4100:53;;;4149:1;4146;4139:12;4100:53;-1:-1:-1;;4172:23:1;;;4242:2;4227:18;;4214:32;;-1:-1:-1;4293:2:1;4278:18;;4265:32;;4344:2;4329:18;;4316:32;;-1:-1:-1;4395:3:1;4380:19;;4367:33;;-1:-1:-1;4447:3:1;4432:19;4419:33;;-1:-1:-1;3935:523:1;-1:-1:-1;3935:523:1:o;5147:388::-;5215:6;5223;5276:2;5264:9;5255:7;5251:23;5247:32;5244:52;;;5292:1;5289;5282:12;5244:52;5331:9;5318:23;5350:31;5375:5;5350:31;:::i;:::-;5400:5;-1:-1:-1;5457:2:1;5442:18;;5429:32;5470:33;5429:32;5470:33;:::i;5540:380::-;5619:1;5615:12;;;;5662;;;5683:61;;5737:4;5729:6;5725:17;5715:27;;5683:61;5790:2;5782:6;5779:14;5759:18;5756:38;5753:161;;5836:10;5831:3;5827:20;5824:1;5817:31;5871:4;5868:1;5861:15;5899:4;5896:1;5889:15;5753:161;;5540:380;;;:::o;5925:356::-;6127:2;6109:21;;;6146:18;;;6139:30;6205:34;6200:2;6185:18;;6178:62;6272:2;6257:18;;5925:356::o;6286:127::-;6347:10;6342:3;6338:20;6335:1;6328:31;6378:4;6375:1;6368:15;6402:4;6399:1;6392:15;6418:128;6485:9;;;6506:11;;;6503:37;;;6520:18;;:::i;6957:125::-;7022:9;;;7043:10;;;7040:36;;;7056:18;;:::i;7087:168::-;7160:9;;;7191;;7208:15;;;7202:22;;7188:37;7178:71;;7229:18;;:::i;7260:217::-;7300:1;7326;7316:132;;7370:10;7365:3;7361:20;7358:1;7351:31;7405:4;7402:1;7395:15;7433:4;7430:1;7423:15;7316:132;-1:-1:-1;7462:9:1;;7260:217::o;7614:251::-;7684:6;7737:2;7725:9;7716:7;7712:23;7708:32;7705:52;;;7753:1;7750;7743:12;7705:52;7785:9;7779:16;7804:31;7829:5;7804:31;:::i;7870:127::-;7931:10;7926:3;7922:20;7919:1;7912:31;7962:4;7959:1;7952:15;7986:4;7983:1;7976:15;8382:245;8449:6;8502:2;8490:9;8481:7;8477:23;8473:32;8470:52;;;8518:1;8515;8508:12;8470:52;8550:9;8544:16;8569:28;8591:5;8569:28;:::i;8632:461::-;8685:3;8723:5;8717:12;8750:6;8745:3;8738:19;8776:4;8805:2;8800:3;8796:12;8789:19;;8842:2;8835:5;8831:14;8863:1;8873:195;8887:6;8884:1;8881:13;8873:195;;;8952:13;;-1:-1:-1;;;;;8948:39:1;8936:52;;9008:12;;;;9043:15;;;;8984:1;8902:9;8873:195;;;-1:-1:-1;9084:3:1;;8632:461;-1:-1:-1;;;;;8632:461:1:o;9098:510::-;9369:6;9358:9;9351:25;9412:3;9407:2;9396:9;9392:18;9385:31;9332:4;9433:57;9485:3;9474:9;9470:19;9462:6;9433:57;:::i;:::-;-1:-1:-1;;;;;9526:32:1;;;;9521:2;9506:18;;9499:60;-1:-1:-1;9590:2:1;9575:18;9568:34;9425:65;9098:510;-1:-1:-1;;9098:510:1:o;13503:582::-;13802:6;13791:9;13784:25;13845:6;13840:2;13829:9;13825:18;13818:34;13888:3;13883:2;13872:9;13868:18;13861:31;13765:4;13909:57;13961:3;13950:9;13946:19;13938:6;13909:57;:::i;:::-;-1:-1:-1;;;;;14002:32:1;;;;13997:2;13982:18;;13975:60;-1:-1:-1;14066:3:1;14051:19;14044:35;13901:65;13503:582;-1:-1:-1;;;13503:582:1:o;14702:306::-;14790:6;14798;14806;14859:2;14847:9;14838:7;14834:23;14830:32;14827:52;;;14875:1;14872;14865:12;14827:52;14904:9;14898:16;14888:26;;14954:2;14943:9;14939:18;14933:25;14923:35;;14998:2;14987:9;14983:18;14977:25;14967:35;;14702:306;;;;;:::o

Swarm Source

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