ETH Price: $3,101.89 (-0.96%)

Token

Ming Dynasty (YAO11)
 

Overview

Max Total Supply

180,000,000 YAO11

Holders

79

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
481,758.768862113480338085 YAO11

Value
$0.00
0x3c06b980263f993143d17a496fcb65a2284b1203
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:
YAO11

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

"Yao Ming's 43": 43 NFTs Inspired by Yao Ming's Career

Telegram: https://t.me/mingdynastyvip
Twitter: https://twitter.com/MingDynastyVip

Happy Birthday to Yao Ming in Advance!
*/

//  SPDX-License-Identifier: MIT
pragma solidity >=0.8.19;

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

}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

library SafeMath {

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
} 

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

contract YAO11 is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public mkt;
    address public halloffame;
    address public lpWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

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

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;

    /******************/

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event LimitsRemoved();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event mktUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event halloffameUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event lpWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20("Ming Dynasty", "YAO11") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

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

        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;

        uint256 totalSupply = 180_000_000  * 1e18;

        maxTransactionAmount = (totalSupply * 2) / 100;
        maxWallet = (totalSupply * 2) / 100;
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        mkt = address(0x37200f0E5C32b283C100F5D3eA566A88C75ca96c); 
        halloffame = address(0x40454ae42D6BfcD5a417092c2Da9Ef860AC5Ab23); // locked wallet
        lpWallet = msg.sender;

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(mkt, true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(mkt, true);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        emit LimitsRemoved();
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

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

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

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

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _liquidityFee,
        uint256 _devFee
    ) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
    }

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

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

        _setAutomatedMarketMakerPair(pair, value);
    }

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

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updatemkt(address newmkt)
        external
        onlyOwner
    {
        emit mktUpdated(newmkt, mkt);
        mkt = newmkt;
    }

    function updateLPWallet(address newLPWallet)
        external
        onlyOwner
    {
        emit lpWalletUpdated(newLPWallet, lpWallet);
        lpWallet = newLPWallet;
    }

    function updatehalloffame(address newWallet) external onlyOwner {
        emit halloffameUpdated(newWallet, halloffame);
        halloffame = newWallet;
    }

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

    event BoughtEarly(address indexed sniper);

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

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

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
            }

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

            amount -= fees;
        }

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

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

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

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

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

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

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForMarketing +
            tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;

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

        (success, ) = address(halloffame).call{value: ethForDev}("");

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

        (success, ) = address(mkt).call{
            value: address(this).balance
        }("");
    }
    // to remove unknown tokens from contract
     function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    }
}

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":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"LimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"halloffameUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"lpWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"mktUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"halloffame","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mkt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLPWallet","type":"address"}],"name":"updateLPWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatehalloffame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newmkt","type":"address"}],"name":"updatemkt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600c805462ffffff19166201000117905534801562000021575f80fd5b506040518060400160405280600c81526020016b4d696e672044796e6173747960a01b8152506040518060400160405280600581526020016459414f313160d81b815250816003908162000076919062000766565b50600462000085828262000766565b505050620000a26200009c6200041860201b60201c565b6200041c565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000c48160016200046d565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200010d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200013391906200082e565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a591906200082e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001f0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021691906200082e565b6001600160a01b031660a0819052620002319060016200046d565b60a05162000241906001620004e5565b5f80808080806a94e47b8d6817153400000060646200026282600262000871565b6200026e919062000891565b60095560646200028082600262000871565b6200028c919062000891565b600b556127106200029f82600562000871565b620002ab919062000891565b600a55600e879055600f869055601085905584620002ca8789620008b1565b620002d69190620008b1565b600d5560128490556013839055601482905581620002f58486620008b1565b620003019190620008b1565b601155600680546001600160a01b03199081167337200f0e5c32b283c100f5d3ea566a88c75ca96c179091556007805482167340454ae42d6bfcd5a417092c2da9ef860ac5ab231790556008805490911633179055620003756200036d6005546001600160a01b031690565b600162000538565b6200038230600162000538565b6200039161dead600162000538565b600654620003aa906001600160a01b0316600162000538565b620003c9620003c16005546001600160a01b031690565b60016200046d565b620003d63060016200046d565b620003e561dead60016200046d565b600654620003fe906001600160a01b031660016200046d565b6200040a3382620005e0565b5050505050505050620008c7565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6005546001600160a01b03163314620004bb5760405162461bcd60e51b815260206004820181905260248201525f80516020620031b383398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601960205260409020805460ff1916911515919091179055565b6001600160a01b0382165f818152601a6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005825760405162461bcd60e51b815260206004820181905260248201525f80516020620031b38339815191526044820152606401620004b2565b6001600160a01b0382165f81815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006385760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004b2565b8060025f8282546200064b9190620008b1565b90915550506001600160a01b0382165f908152602081905260408120805483929062000679908490620008b1565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620006f057607f821691505b6020821081036200070f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620006c2575f81815260208120601f850160051c810160208610156200073d5750805b601f850160051c820191505b818110156200075e5782815560010162000749565b505050505050565b81516001600160401b03811115620007825762000782620006c7565b6200079a81620007938454620006db565b8462000715565b602080601f831160018114620007d0575f8415620007b85750858301515b5f19600386901b1c1916600185901b1785556200075e565b5f85815260208120601f198616915b828110156200080057888601518255948401946001909101908401620007df565b50858210156200081e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156200083f575f80fd5b81516001600160a01b038116811462000856575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176200088b576200088b6200085d565b92915050565b5f82620008ac57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200088b576200088b6200085d565b60805160a0516128a0620009135f395f81816105470152610fa901525f81816103e701528181612230015281816122e7015281816123230152818161239701526123fe01526128a05ff3fe608060405260043610610344575f3560e01c80638a8c523c116101bd578063c0246668116100f2578063dd62ed3e11610092578063f2fde38b1161006d578063f2fde38b1461098d578063f6374342146109ac578063f8b45b05146109c1578063fbc10c55146109d6575f80fd5b8063dd62ed3e1461091f578063e2f4560514610963578063f11a24d314610978575f80fd5b8063c1928223116100cd578063c1928223146108b7578063c8c8ebe4146108d6578063d257b34f146108eb578063d85ba0631461090a575f80fd5b8063c02466681461085a578063c17b5b8c14610879578063c18bc19514610898575f80fd5b80639c3b4fdc1161015d578063a457c2d711610138578063a457c2d7146107d0578063a9059cbb146107ef578063b62496f51461080e578063bbc0c7421461083c575f80fd5b80639c3b4fdc146107915780639fccce32146107a6578063a0d82dc5146107bb575f80fd5b80639213691311610198578063921369131461072a578063924de9b71461073f57806395d89b411461075e5780639a7a23d614610772575f80fd5b80638a8c523c146106da5780638cd4426d146106ee5780638da5cb5b1461070d575f80fd5b8063395093511161029357806370a08231116102335780637571336a1161020e5780637571336a146106685780637bce5a04146106875780637cc5b1e61461069c5780638095d564146106bb575f80fd5b806370a082311461060c578063715018a614610640578063751039fc14610654575f80fd5b80634fbee1931161026e5780634fbee193146105825780636303516c146105b95780636a486a8e146105d85780636ddd1713146105ed575f80fd5b8063395093511461051757806349bd5a5e146105365780634a62bb6514610569575f80fd5b80631f3fed8f116102fe57806323b872dd116102d957806323b872dd146104a957806327c8f835146104c8578063313ce567146104dd578063354ab0d4146104f8575f80fd5b80631f3fed8f14610454578063203e727e146104695780632359709b1461048a575f80fd5b806306fdde031461034f578063095ea7b31461037957806310d5de53146103a85780631694505e146103d657806318160ddd146104215780631a8145bb1461043f575f80fd5b3661034b57005b5f80fd5b34801561035a575f80fd5b506103636109f5565b6040516103709190612474565b60405180910390f35b348015610384575f80fd5b506103986103933660046124d3565b610a85565b6040519015158152602001610370565b3480156103b3575f80fd5b506103986103c23660046124fd565b60196020525f908152604090205460ff1681565b3480156103e1575f80fd5b506104097f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610370565b34801561042c575f80fd5b506002545b604051908152602001610370565b34801561044a575f80fd5b5061043160165481565b34801561045f575f80fd5b5061043160155481565b348015610474575f80fd5b50610488610483366004612518565b610a9b565b005b348015610495575f80fd5b506104886104a43660046124fd565b610b81565b3480156104b4575f80fd5b506103986104c336600461252f565b610c07565b3480156104d3575f80fd5b5061040961dead81565b3480156104e8575f80fd5b5060405160128152602001610370565b348015610503575f80fd5b50600754610409906001600160a01b031681565b348015610522575f80fd5b506103986105313660046124d3565b610caf565b348015610541575f80fd5b506104097f000000000000000000000000000000000000000000000000000000000000000081565b348015610574575f80fd5b50600c546103989060ff1681565b34801561058d575f80fd5b5061039861059c3660046124fd565b6001600160a01b03165f9081526018602052604090205460ff1690565b3480156105c4575f80fd5b50600854610409906001600160a01b031681565b3480156105e3575f80fd5b5061043160115481565b3480156105f8575f80fd5b50600c546103989062010000900460ff1681565b348015610617575f80fd5b506104316106263660046124fd565b6001600160a01b03165f9081526020819052604090205490565b34801561064b575f80fd5b50610488610cea565b34801561065f575f80fd5b50610398610d1f565b348015610673575f80fd5b5061048861068236600461257a565b610d83565b348015610692575f80fd5b50610431600e5481565b3480156106a7575f80fd5b50600654610409906001600160a01b031681565b3480156106c6575f80fd5b506104886106d53660046125b1565b610dd7565b3480156106e5575f80fd5b50610488610e2d565b3480156106f9575f80fd5b506104886107083660046124d3565b610e6a565b348015610718575f80fd5b506005546001600160a01b0316610409565b348015610735575f80fd5b5061043160125481565b34801561074a575f80fd5b506104886107593660046125da565b610f28565b348015610769575f80fd5b50610363610f6e565b34801561077d575f80fd5b5061048861078c36600461257a565b610f7d565b34801561079c575f80fd5b5061043160105481565b3480156107b1575f80fd5b5061043160175481565b3480156107c6575f80fd5b5061043160145481565b3480156107db575f80fd5b506103986107ea3660046124d3565b61105c565b3480156107fa575f80fd5b506103986108093660046124d3565b6110f4565b348015610819575f80fd5b506103986108283660046124fd565b601a6020525f908152604090205460ff1681565b348015610847575f80fd5b50600c5461039890610100900460ff1681565b348015610865575f80fd5b5061048861087436600461257a565b611100565b348015610884575f80fd5b506104886108933660046125b1565b611188565b3480156108a3575f80fd5b506104886108b2366004612518565b6111de565b3480156108c2575f80fd5b506104886108d13660046124fd565b6112af565b3480156108e1575f80fd5b5061043160095481565b3480156108f6575f80fd5b50610398610905366004612518565b611335565b348015610915575f80fd5b50610431600d5481565b34801561092a575f80fd5b506104316109393660046125f5565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561096e575f80fd5b50610431600a5481565b348015610983575f80fd5b50610431600f5481565b348015610998575f80fd5b506104886109a73660046124fd565b611486565b3480156109b7575f80fd5b5061043160135481565b3480156109cc575f80fd5b50610431600b5481565b3480156109e1575f80fd5b506104886109f03660046124fd565b611521565b606060038054610a0490612621565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3090612621565b8015610a7b5780601f10610a5257610100808354040283529160200191610a7b565b820191905f5260205f20905b815481529060010190602001808311610a5e57829003601f168201915b5050505050905090565b5f610a913384846115a7565b5060015b92915050565b6005546001600160a01b03163314610ace5760405162461bcd60e51b8152600401610ac590612659565b60405180910390fd5b670de0b6b3a76400006103e8610ae360025490565b610aee9060016126a2565b610af891906126b9565b610b0291906126b9565b811015610b695760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610ac5565b610b7b81670de0b6b3a76400006126a2565b60095550565b6005546001600160a01b03163314610bab5760405162461bcd60e51b8152600401610ac590612659565b6007546040516001600160a01b03918216918316907f22349f226abd9507d2e34ea02baa1bcaa6a61bbf6a45701c43a10d13a586996d905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f610c138484846116ca565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610c975760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ac5565b610ca485338584036115a7565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a91918590610ce59086906126d8565b6115a7565b6005546001600160a01b03163314610d145760405162461bcd60e51b8152600401610ac590612659565b610d1d5f611db8565b565b6005545f906001600160a01b03163314610d4b5760405162461bcd60e51b8152600401610ac590612659565b600c805460ff191690556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef905f90a150600190565b6005546001600160a01b03163314610dad5760405162461bcd60e51b8152600401610ac590612659565b6001600160a01b03919091165f908152601960205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e015760405162461bcd60e51b8152600401610ac590612659565b600e839055600f829055601081905580610e1b83856126d8565b610e2591906126d8565b600d55505050565b6005546001600160a01b03163314610e575760405162461bcd60e51b8152600401610ac590612659565b600c805462ffff00191662010100179055565b6005546001600160a01b03163314610e945760405162461bcd60e51b8152600401610ac590612659565b816001600160a01b031663a9059cbb610eb56005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610eff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2391906126eb565b505050565b6005546001600160a01b03163314610f525760405162461bcd60e51b8152600401610ac590612659565b600c8054911515620100000262ff000019909216919091179055565b606060048054610a0490612621565b6005546001600160a01b03163314610fa75760405162461bcd60e51b8152600401610ac590612659565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361104e5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ac5565b6110588282611e09565b5050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156110dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ac5565b6110ea33858584036115a7565b5060019392505050565b5f610a913384846116ca565b6005546001600160a01b0316331461112a5760405162461bcd60e51b8152600401610ac590612659565b6001600160a01b0382165f81815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146111b25760405162461bcd60e51b8152600401610ac590612659565b601283905560138290556014819055806111cc83856126d8565b6111d691906126d8565b601155505050565b6005546001600160a01b031633146112085760405162461bcd60e51b8152600401610ac590612659565b670de0b6b3a76400006103e861121d60025490565b6112289060056126a2565b61123291906126b9565b61123c91906126b9565b8110156112975760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610ac5565b6112a981670de0b6b3a76400006126a2565b600b5550565b6005546001600160a01b031633146112d95760405162461bcd60e51b8152600401610ac590612659565b6006546040516001600160a01b03918216918316907f1f49ce16a2f0fb9f3620cc602685eacf0041a97b34102281ca79092782597ffa905f90a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005545f906001600160a01b031633146113615760405162461bcd60e51b8152600401610ac590612659565b620186a061136e60025490565b6113799060016126a2565b61138391906126b9565b8210156113f05760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610ac5565b6103e86113fc60025490565b6114079060056126a2565b61141191906126b9565b82111561147d5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610ac5565b50600a55600190565b6005546001600160a01b031633146114b05760405162461bcd60e51b8152600401610ac590612659565b6001600160a01b0381166115155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ac5565b61151e81611db8565b50565b6005546001600160a01b0316331461154b5760405162461bcd60e51b8152600401610ac590612659565b6008546040516001600160a01b03918216918316907f8e4fb3162b55d3fcdb7507ecfed5ab4ea5d2bd7494d0bb621d698a52ea3f74b4905f90a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166116095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ac5565b6001600160a01b03821661166a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ac5565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116f05760405162461bcd60e51b8152600401610ac590612706565b6001600160a01b0382166117165760405162461bcd60e51b8152600401610ac59061274b565b805f0361172857610f2383835f611e5c565b600c5460ff1615611a95576005546001600160a01b0384811691161480159061175f57506005546001600160a01b03838116911614155b801561177357506001600160a01b03821615155b801561178a57506001600160a01b03821661dead14155b80156117a05750600554600160a01b900460ff16155b15611a9557600c54610100900460ff16611836576001600160a01b0383165f9081526018602052604090205460ff16806117f157506001600160a01b0382165f9081526018602052604090205460ff165b6118365760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ac5565b6001600160a01b0383165f908152601a602052604090205460ff16801561187557506001600160a01b0382165f9081526019602052604090205460ff16155b15611958576009548111156118ea5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610ac5565b600b546001600160a01b0383165f9081526020819052604090205461190f90836126d8565b11156119535760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ac5565b611a95565b6001600160a01b0382165f908152601a602052604090205460ff16801561199757506001600160a01b0383165f9081526019602052604090205460ff16155b15611a0d576009548111156119535760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610ac5565b6001600160a01b0382165f9081526019602052604090205460ff16611a9557600b546001600160a01b0383165f90815260208190526040902054611a5190836126d8565b1115611a955760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ac5565b305f90815260208190526040902054600a5481108015908190611ac05750600c5462010000900460ff165b8015611ad65750600554600160a01b900460ff16155b8015611afa57506001600160a01b0385165f908152601a602052604090205460ff16155b8015611b1e57506001600160a01b0385165f9081526018602052604090205460ff16155b8015611b4257506001600160a01b0384165f9081526018602052604090205460ff16155b15611b70576005805460ff60a01b1916600160a01b179055611b62611faf565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526018602052604090205460ff600160a01b909204821615911680611bbc57506001600160a01b0385165f9081526018602052604090205460ff165b15611bc457505f5b5f8115611da4576001600160a01b0386165f908152601a602052604090205460ff168015611bf357505f601154115b15611cae57611c186064611c12601154886121b390919063ffffffff16565b906121c5565b905060115460135482611c2b91906126a2565b611c3591906126b9565b60165f828254611c4591906126d8565b9091555050601154601454611c5a90836126a2565b611c6491906126b9565b60175f828254611c7491906126d8565b9091555050601154601254611c8990836126a2565b611c9391906126b9565b60155f828254611ca391906126d8565b90915550611d869050565b6001600160a01b0387165f908152601a602052604090205460ff168015611cd657505f600d54115b15611d8657611cf56064611c12600d54886121b390919063ffffffff16565b9050600d54600f5482611d0891906126a2565b611d1291906126b9565b60165f828254611d2291906126d8565b9091555050600d54601054611d3790836126a2565b611d4191906126b9565b60175f828254611d5191906126d8565b9091555050600d54600e54611d6690836126a2565b611d7091906126b9565b60155f828254611d8091906126d8565b90915550505b8015611d9757611d97873083611e5c565b611da1818661278e565b94505b611daf878787611e5c565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f818152601a6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e825760405162461bcd60e51b8152600401610ac590612706565b6001600160a01b038216611ea85760405162461bcd60e51b8152600401610ac59061274b565b6001600160a01b0383165f9081526020819052604090205481811015611f1f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ac5565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611f559084906126d8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fa191815260200190565b60405180910390a350505050565b305f9081526020819052604081205490505f601754601554601654611fd491906126d8565b611fde91906126d8565b90505f821580611fec575081155b15611ff657505050565b5f6002836016548661200891906126a2565b61201291906126b9565b61201c91906126b9565b90505f61202985836121d0565b905047612035826121db565b5f61204047836121d0565b90505f61205c87611c12601554856121b390919063ffffffff16565b90505f61207888611c12601754866121b390919063ffffffff16565b90505f81612086848661278e565b612090919061278e565b5f6016819055601581905560178190556007546040519293506001600160a01b031691849181818185875af1925050503d805f81146120ea576040519150601f19603f3d011682016040523d82523d5f602084013e6120ef565b606091505b5090985050861580159061210257505f81115b15612155576121118782612391565b601654604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b039091169047905f81818185875af1925050503d805f811461219f576040519150601f19603f3d011682016040523d82523d5f602084013e6121a4565b606091505b50505050505050505050505050565b5f6121be82846126a2565b9392505050565b5f6121be82846126b9565b5f6121be828461278e565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061220e5761220e6127a1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561228a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ae91906127b5565b816001815181106122c1576122c16127a1565b60200260200101906001600160a01b031690816001600160a01b03168152505061230c307f0000000000000000000000000000000000000000000000000000000000000000846115a7565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906123609085905f908690309042906004016127d0565b5f604051808303815f87803b158015612377575f80fd5b505af1158015612389573d5f803e3d5ffd5b505050505050565b6123bc307f0000000000000000000000000000000000000000000000000000000000000000846115a7565b60085460405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c40160606040518083038185885af1158015612448573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061246d919061283f565b5050505050565b5f6020808352835180828501525f5b8181101561249f57858101830151858201604001528201612483565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461151e575f80fd5b5f80604083850312156124e4575f80fd5b82356124ef816124bf565b946020939093013593505050565b5f6020828403121561250d575f80fd5b81356121be816124bf565b5f60208284031215612528575f80fd5b5035919050565b5f805f60608486031215612541575f80fd5b833561254c816124bf565b9250602084013561255c816124bf565b929592945050506040919091013590565b801515811461151e575f80fd5b5f806040838503121561258b575f80fd5b8235612596816124bf565b915060208301356125a68161256d565b809150509250929050565b5f805f606084860312156125c3575f80fd5b505081359360208301359350604090920135919050565b5f602082840312156125ea575f80fd5b81356121be8161256d565b5f8060408385031215612606575f80fd5b8235612611816124bf565b915060208301356125a6816124bf565b600181811c9082168061263557607f821691505b60208210810361265357634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a9557610a9561268e565b5f826126d357634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a9557610a9561268e565b5f602082840312156126fb575f80fd5b81516121be8161256d565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610a9557610a9561268e565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156127c5575f80fd5b81516121be816124bf565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561281e5784516001600160a01b0316835293830193918301916001016127f9565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612851575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220c6c39003ee019e62192f4812af694ccf39108cdbc72aa9435262bd5cffcb676364736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x608060405260043610610344575f3560e01c80638a8c523c116101bd578063c0246668116100f2578063dd62ed3e11610092578063f2fde38b1161006d578063f2fde38b1461098d578063f6374342146109ac578063f8b45b05146109c1578063fbc10c55146109d6575f80fd5b8063dd62ed3e1461091f578063e2f4560514610963578063f11a24d314610978575f80fd5b8063c1928223116100cd578063c1928223146108b7578063c8c8ebe4146108d6578063d257b34f146108eb578063d85ba0631461090a575f80fd5b8063c02466681461085a578063c17b5b8c14610879578063c18bc19514610898575f80fd5b80639c3b4fdc1161015d578063a457c2d711610138578063a457c2d7146107d0578063a9059cbb146107ef578063b62496f51461080e578063bbc0c7421461083c575f80fd5b80639c3b4fdc146107915780639fccce32146107a6578063a0d82dc5146107bb575f80fd5b80639213691311610198578063921369131461072a578063924de9b71461073f57806395d89b411461075e5780639a7a23d614610772575f80fd5b80638a8c523c146106da5780638cd4426d146106ee5780638da5cb5b1461070d575f80fd5b8063395093511161029357806370a08231116102335780637571336a1161020e5780637571336a146106685780637bce5a04146106875780637cc5b1e61461069c5780638095d564146106bb575f80fd5b806370a082311461060c578063715018a614610640578063751039fc14610654575f80fd5b80634fbee1931161026e5780634fbee193146105825780636303516c146105b95780636a486a8e146105d85780636ddd1713146105ed575f80fd5b8063395093511461051757806349bd5a5e146105365780634a62bb6514610569575f80fd5b80631f3fed8f116102fe57806323b872dd116102d957806323b872dd146104a957806327c8f835146104c8578063313ce567146104dd578063354ab0d4146104f8575f80fd5b80631f3fed8f14610454578063203e727e146104695780632359709b1461048a575f80fd5b806306fdde031461034f578063095ea7b31461037957806310d5de53146103a85780631694505e146103d657806318160ddd146104215780631a8145bb1461043f575f80fd5b3661034b57005b5f80fd5b34801561035a575f80fd5b506103636109f5565b6040516103709190612474565b60405180910390f35b348015610384575f80fd5b506103986103933660046124d3565b610a85565b6040519015158152602001610370565b3480156103b3575f80fd5b506103986103c23660046124fd565b60196020525f908152604090205460ff1681565b3480156103e1575f80fd5b506104097f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610370565b34801561042c575f80fd5b506002545b604051908152602001610370565b34801561044a575f80fd5b5061043160165481565b34801561045f575f80fd5b5061043160155481565b348015610474575f80fd5b50610488610483366004612518565b610a9b565b005b348015610495575f80fd5b506104886104a43660046124fd565b610b81565b3480156104b4575f80fd5b506103986104c336600461252f565b610c07565b3480156104d3575f80fd5b5061040961dead81565b3480156104e8575f80fd5b5060405160128152602001610370565b348015610503575f80fd5b50600754610409906001600160a01b031681565b348015610522575f80fd5b506103986105313660046124d3565b610caf565b348015610541575f80fd5b506104097f0000000000000000000000001edfee75ce32042b34bf0f2382ee119ced66772e81565b348015610574575f80fd5b50600c546103989060ff1681565b34801561058d575f80fd5b5061039861059c3660046124fd565b6001600160a01b03165f9081526018602052604090205460ff1690565b3480156105c4575f80fd5b50600854610409906001600160a01b031681565b3480156105e3575f80fd5b5061043160115481565b3480156105f8575f80fd5b50600c546103989062010000900460ff1681565b348015610617575f80fd5b506104316106263660046124fd565b6001600160a01b03165f9081526020819052604090205490565b34801561064b575f80fd5b50610488610cea565b34801561065f575f80fd5b50610398610d1f565b348015610673575f80fd5b5061048861068236600461257a565b610d83565b348015610692575f80fd5b50610431600e5481565b3480156106a7575f80fd5b50600654610409906001600160a01b031681565b3480156106c6575f80fd5b506104886106d53660046125b1565b610dd7565b3480156106e5575f80fd5b50610488610e2d565b3480156106f9575f80fd5b506104886107083660046124d3565b610e6a565b348015610718575f80fd5b506005546001600160a01b0316610409565b348015610735575f80fd5b5061043160125481565b34801561074a575f80fd5b506104886107593660046125da565b610f28565b348015610769575f80fd5b50610363610f6e565b34801561077d575f80fd5b5061048861078c36600461257a565b610f7d565b34801561079c575f80fd5b5061043160105481565b3480156107b1575f80fd5b5061043160175481565b3480156107c6575f80fd5b5061043160145481565b3480156107db575f80fd5b506103986107ea3660046124d3565b61105c565b3480156107fa575f80fd5b506103986108093660046124d3565b6110f4565b348015610819575f80fd5b506103986108283660046124fd565b601a6020525f908152604090205460ff1681565b348015610847575f80fd5b50600c5461039890610100900460ff1681565b348015610865575f80fd5b5061048861087436600461257a565b611100565b348015610884575f80fd5b506104886108933660046125b1565b611188565b3480156108a3575f80fd5b506104886108b2366004612518565b6111de565b3480156108c2575f80fd5b506104886108d13660046124fd565b6112af565b3480156108e1575f80fd5b5061043160095481565b3480156108f6575f80fd5b50610398610905366004612518565b611335565b348015610915575f80fd5b50610431600d5481565b34801561092a575f80fd5b506104316109393660046125f5565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561096e575f80fd5b50610431600a5481565b348015610983575f80fd5b50610431600f5481565b348015610998575f80fd5b506104886109a73660046124fd565b611486565b3480156109b7575f80fd5b5061043160135481565b3480156109cc575f80fd5b50610431600b5481565b3480156109e1575f80fd5b506104886109f03660046124fd565b611521565b606060038054610a0490612621565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3090612621565b8015610a7b5780601f10610a5257610100808354040283529160200191610a7b565b820191905f5260205f20905b815481529060010190602001808311610a5e57829003601f168201915b5050505050905090565b5f610a913384846115a7565b5060015b92915050565b6005546001600160a01b03163314610ace5760405162461bcd60e51b8152600401610ac590612659565b60405180910390fd5b670de0b6b3a76400006103e8610ae360025490565b610aee9060016126a2565b610af891906126b9565b610b0291906126b9565b811015610b695760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608401610ac5565b610b7b81670de0b6b3a76400006126a2565b60095550565b6005546001600160a01b03163314610bab5760405162461bcd60e51b8152600401610ac590612659565b6007546040516001600160a01b03918216918316907f22349f226abd9507d2e34ea02baa1bcaa6a61bbf6a45701c43a10d13a586996d905f90a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b5f610c138484846116ca565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610c975760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ac5565b610ca485338584036115a7565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a91918590610ce59086906126d8565b6115a7565b6005546001600160a01b03163314610d145760405162461bcd60e51b8152600401610ac590612659565b610d1d5f611db8565b565b6005545f906001600160a01b03163314610d4b5760405162461bcd60e51b8152600401610ac590612659565b600c805460ff191690556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef905f90a150600190565b6005546001600160a01b03163314610dad5760405162461bcd60e51b8152600401610ac590612659565b6001600160a01b03919091165f908152601960205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e015760405162461bcd60e51b8152600401610ac590612659565b600e839055600f829055601081905580610e1b83856126d8565b610e2591906126d8565b600d55505050565b6005546001600160a01b03163314610e575760405162461bcd60e51b8152600401610ac590612659565b600c805462ffff00191662010100179055565b6005546001600160a01b03163314610e945760405162461bcd60e51b8152600401610ac590612659565b816001600160a01b031663a9059cbb610eb56005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015610eff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2391906126eb565b505050565b6005546001600160a01b03163314610f525760405162461bcd60e51b8152600401610ac590612659565b600c8054911515620100000262ff000019909216919091179055565b606060048054610a0490612621565b6005546001600160a01b03163314610fa75760405162461bcd60e51b8152600401610ac590612659565b7f0000000000000000000000001edfee75ce32042b34bf0f2382ee119ced66772e6001600160a01b0316826001600160a01b03160361104e5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ac5565b6110588282611e09565b5050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156110dd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ac5565b6110ea33858584036115a7565b5060019392505050565b5f610a913384846116ca565b6005546001600160a01b0316331461112a5760405162461bcd60e51b8152600401610ac590612659565b6001600160a01b0382165f81815260186020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146111b25760405162461bcd60e51b8152600401610ac590612659565b601283905560138290556014819055806111cc83856126d8565b6111d691906126d8565b601155505050565b6005546001600160a01b031633146112085760405162461bcd60e51b8152600401610ac590612659565b670de0b6b3a76400006103e861121d60025490565b6112289060056126a2565b61123291906126b9565b61123c91906126b9565b8110156112975760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608401610ac5565b6112a981670de0b6b3a76400006126a2565b600b5550565b6005546001600160a01b031633146112d95760405162461bcd60e51b8152600401610ac590612659565b6006546040516001600160a01b03918216918316907f1f49ce16a2f0fb9f3620cc602685eacf0041a97b34102281ca79092782597ffa905f90a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005545f906001600160a01b031633146113615760405162461bcd60e51b8152600401610ac590612659565b620186a061136e60025490565b6113799060016126a2565b61138391906126b9565b8210156113f05760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610ac5565b6103e86113fc60025490565b6114079060056126a2565b61141191906126b9565b82111561147d5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610ac5565b50600a55600190565b6005546001600160a01b031633146114b05760405162461bcd60e51b8152600401610ac590612659565b6001600160a01b0381166115155760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ac5565b61151e81611db8565b50565b6005546001600160a01b0316331461154b5760405162461bcd60e51b8152600401610ac590612659565b6008546040516001600160a01b03918216918316907f8e4fb3162b55d3fcdb7507ecfed5ab4ea5d2bd7494d0bb621d698a52ea3f74b4905f90a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166116095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ac5565b6001600160a01b03821661166a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ac5565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116f05760405162461bcd60e51b8152600401610ac590612706565b6001600160a01b0382166117165760405162461bcd60e51b8152600401610ac59061274b565b805f0361172857610f2383835f611e5c565b600c5460ff1615611a95576005546001600160a01b0384811691161480159061175f57506005546001600160a01b03838116911614155b801561177357506001600160a01b03821615155b801561178a57506001600160a01b03821661dead14155b80156117a05750600554600160a01b900460ff16155b15611a9557600c54610100900460ff16611836576001600160a01b0383165f9081526018602052604090205460ff16806117f157506001600160a01b0382165f9081526018602052604090205460ff165b6118365760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ac5565b6001600160a01b0383165f908152601a602052604090205460ff16801561187557506001600160a01b0382165f9081526019602052604090205460ff16155b15611958576009548111156118ea5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610ac5565b600b546001600160a01b0383165f9081526020819052604090205461190f90836126d8565b11156119535760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ac5565b611a95565b6001600160a01b0382165f908152601a602052604090205460ff16801561199757506001600160a01b0383165f9081526019602052604090205460ff16155b15611a0d576009548111156119535760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610ac5565b6001600160a01b0382165f9081526019602052604090205460ff16611a9557600b546001600160a01b0383165f90815260208190526040902054611a5190836126d8565b1115611a955760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610ac5565b305f90815260208190526040902054600a5481108015908190611ac05750600c5462010000900460ff165b8015611ad65750600554600160a01b900460ff16155b8015611afa57506001600160a01b0385165f908152601a602052604090205460ff16155b8015611b1e57506001600160a01b0385165f9081526018602052604090205460ff16155b8015611b4257506001600160a01b0384165f9081526018602052604090205460ff16155b15611b70576005805460ff60a01b1916600160a01b179055611b62611faf565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526018602052604090205460ff600160a01b909204821615911680611bbc57506001600160a01b0385165f9081526018602052604090205460ff165b15611bc457505f5b5f8115611da4576001600160a01b0386165f908152601a602052604090205460ff168015611bf357505f601154115b15611cae57611c186064611c12601154886121b390919063ffffffff16565b906121c5565b905060115460135482611c2b91906126a2565b611c3591906126b9565b60165f828254611c4591906126d8565b9091555050601154601454611c5a90836126a2565b611c6491906126b9565b60175f828254611c7491906126d8565b9091555050601154601254611c8990836126a2565b611c9391906126b9565b60155f828254611ca391906126d8565b90915550611d869050565b6001600160a01b0387165f908152601a602052604090205460ff168015611cd657505f600d54115b15611d8657611cf56064611c12600d54886121b390919063ffffffff16565b9050600d54600f5482611d0891906126a2565b611d1291906126b9565b60165f828254611d2291906126d8565b9091555050600d54601054611d3790836126a2565b611d4191906126b9565b60175f828254611d5191906126d8565b9091555050600d54600e54611d6690836126a2565b611d7091906126b9565b60155f828254611d8091906126d8565b90915550505b8015611d9757611d97873083611e5c565b611da1818661278e565b94505b611daf878787611e5c565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f818152601a6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e825760405162461bcd60e51b8152600401610ac590612706565b6001600160a01b038216611ea85760405162461bcd60e51b8152600401610ac59061274b565b6001600160a01b0383165f9081526020819052604090205481811015611f1f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ac5565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611f559084906126d8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fa191815260200190565b60405180910390a350505050565b305f9081526020819052604081205490505f601754601554601654611fd491906126d8565b611fde91906126d8565b90505f821580611fec575081155b15611ff657505050565b5f6002836016548661200891906126a2565b61201291906126b9565b61201c91906126b9565b90505f61202985836121d0565b905047612035826121db565b5f61204047836121d0565b90505f61205c87611c12601554856121b390919063ffffffff16565b90505f61207888611c12601754866121b390919063ffffffff16565b90505f81612086848661278e565b612090919061278e565b5f6016819055601581905560178190556007546040519293506001600160a01b031691849181818185875af1925050503d805f81146120ea576040519150601f19603f3d011682016040523d82523d5f602084013e6120ef565b606091505b5090985050861580159061210257505f81115b15612155576121118782612391565b601654604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b039091169047905f81818185875af1925050503d805f811461219f576040519150601f19603f3d011682016040523d82523d5f602084013e6121a4565b606091505b50505050505050505050505050565b5f6121be82846126a2565b9392505050565b5f6121be82846126b9565b5f6121be828461278e565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061220e5761220e6127a1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561228a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ae91906127b5565b816001815181106122c1576122c16127a1565b60200260200101906001600160a01b031690816001600160a01b03168152505061230c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846115a7565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906123609085905f908690309042906004016127d0565b5f604051808303815f87803b158015612377575f80fd5b505af1158015612389573d5f803e3d5ffd5b505050505050565b6123bc307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846115a7565b60085460405163f305d71960e01b8152306004820152602481018490525f6044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990839060c40160606040518083038185885af1158015612448573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061246d919061283f565b5050505050565b5f6020808352835180828501525f5b8181101561249f57858101830151858201604001528201612483565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461151e575f80fd5b5f80604083850312156124e4575f80fd5b82356124ef816124bf565b946020939093013593505050565b5f6020828403121561250d575f80fd5b81356121be816124bf565b5f60208284031215612528575f80fd5b5035919050565b5f805f60608486031215612541575f80fd5b833561254c816124bf565b9250602084013561255c816124bf565b929592945050506040919091013590565b801515811461151e575f80fd5b5f806040838503121561258b575f80fd5b8235612596816124bf565b915060208301356125a68161256d565b809150509250929050565b5f805f606084860312156125c3575f80fd5b505081359360208301359350604090920135919050565b5f602082840312156125ea575f80fd5b81356121be8161256d565b5f8060408385031215612606575f80fd5b8235612611816124bf565b915060208301356125a6816124bf565b600181811c9082168061263557607f821691505b60208210810361265357634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a9557610a9561268e565b5f826126d357634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a9557610a9561268e565b5f602082840312156126fb575f80fd5b81516121be8161256d565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610a9557610a9561268e565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156127c5575f80fd5b81516121be816124bf565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561281e5784516001600160a01b0316835293830193918301916001016127f9565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612851575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220c6c39003ee019e62192f4812af694ccf39108cdbc72aa9435262bd5cffcb676364736f6c63430008140033

Deployed Bytecode Sourcemap

12376:15327:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2741:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3655:169;;;;;;;;;;-1:-1:-1;3655:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;3655:169:0;1023:187:1;13511:63:0;;;;;;;;;;-1:-1:-1;13511:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12451:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;12451:51:0;1467:230:1;3062:108:0;;;;;;;;;;-1:-1:-1;3150:12:0;;3062:108;;;1848:25:1;;;1836:2;1821:18;3062:108:0;1702:177:1;13295:33:0;;;;;;;;;;;;;;;;13255;;;;;;;;;;;;;;;;17840:275;;;;;;;;;;-1:-1:-1;17840:275:0;;;;;:::i;:::-;;:::i;:::-;;20489:161;;;;;;;;;;-1:-1:-1;20489:161:0;;;;;:::i;:::-;;:::i;3832:492::-;;;;;;;;;;-1:-1:-1;3832:492:0;;;;;:::i;:::-;;:::i;12554:53::-;;;;;;;;;;;;12600:6;12554:53;;2961:93;;;;;;;;;;-1:-1:-1;2961:93:0;;3044:2;2880:36:1;;2868:2;2853:18;2961:93:0;2738:184:1;12671:25:0;;;;;;;;;;-1:-1:-1;12671:25:0;;;;-1:-1:-1;;;;;12671:25:0;;;4332:215;;;;;;;;;;-1:-1:-1;4332:215:0;;;;;:::i;:::-;;:::i;12509:38::-;;;;;;;;;;;;;;;12850:33;;;;;;;;;;-1:-1:-1;12850:33:0;;;;;;;;20658:126;;;;;;;;;;-1:-1:-1;20658:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;20748:28:0;20724:4;20748:28;;;:19;:28;;;;;;;;;20658:126;12703:23;;;;;;;;;;-1:-1:-1;12703:23:0;;;;-1:-1:-1;;;;;12703:23:0;;;13110:28;;;;;;;;;;;;;;;;12930:30;;;;;;;;;;-1:-1:-1;12930:30:0;;;;;;;;;;;3178:127;;;;;;;;;;-1:-1:-1;3178:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3279:18:0;3252:7;3279:18;;;;;;;;;;;;3178:127;863:103;;;;;;;;;;;;;:::i;17113:152::-;;;;;;;;;;;;;:::i;18387:167::-;;;;;;;;;;-1:-1:-1;18387:167:0;;;;;:::i;:::-;;:::i;13003:30::-;;;;;;;;;;;;;;;;12646:18;;;;;;;;;;-1:-1:-1;12646:18:0;;;;-1:-1:-1;;;;;12646:18:0;;;18758:332;;;;;;;;;;-1:-1:-1;18758:332:0;;;;;:::i;:::-;;:::i;16949:112::-;;;;;;;;;;;;;:::i;27565:135::-;;;;;;;;;;-1:-1:-1;27565:135:0;;;;;:::i;:::-;;:::i;640:87::-;;;;;;;;;;-1:-1:-1;713:6:0;;-1:-1:-1;;;;;713:6:0;640:87;;13145:31;;;;;;;;;;;;;;;;18650:100;;;;;;;;;;-1:-1:-1;18650:100:0;;;;;:::i;:::-;;:::i;2849:104::-;;;;;;;;;;;;;:::i;19636:304::-;;;;;;;;;;-1:-1:-1;19636:304:0;;;;;:::i;:::-;;:::i;13077:24::-;;;;;;;;;;;;;;;;13335:27;;;;;;;;;;;;;;;;13221:25;;;;;;;;;;;;;;;;4555:413;;;;;;;;;;-1:-1:-1;4555:413:0;;;;;:::i;:::-;;:::i;3313:175::-;;;;;;;;;;-1:-1:-1;3313:175:0;;;;;:::i;:::-;;:::i;13732:57::-;;;;;;;;;;-1:-1:-1;13732:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12890:33;;;;;;;;;;-1:-1:-1;12890:33:0;;;;;;;;;;;19446:182;;;;;;;;;;-1:-1:-1;19446:182:0;;;;;:::i;:::-;;:::i;19098:340::-;;;;;;;;;;-1:-1:-1;19098:340:0;;;;;:::i;:::-;;:::i;18123:256::-;;;;;;;;;;-1:-1:-1;18123:256:0;;;;;:::i;:::-;;:::i;20144:147::-;;;;;;;;;;-1:-1:-1;20144:147:0;;;;;:::i;:::-;;:::i;12735:35::-;;;;;;;;;;;;;;;;17335:497;;;;;;;;;;-1:-1:-1;17335:497:0;;;;;:::i;:::-;;:::i;12969:27::-;;;;;;;;;;;;;;;;3496:151;;;;;;;;;;-1:-1:-1;3496:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3612:18:0;;;3585:7;3612:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3496:151;12777:33;;;;;;;;;;;;;;;;13040:30;;;;;;;;;;;;;;;;974:201;;;;;;;;;;-1:-1:-1;974:201:0;;;;;:::i;:::-;;:::i;13183:31::-;;;;;;;;;;;;;;;;12817:24;;;;;;;;;;;;;;;;20299:182;;;;;;;;;;-1:-1:-1;20299:182:0;;;;;:::i;:::-;;:::i;2741:100::-;2795:13;2828:5;2821:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2741:100;:::o;3655:169::-;3738:4;3755:39;373:10;3778:7;3787:6;3755:8;:39::i;:::-;-1:-1:-1;3812:4:0;3655:169;;;;;:::o;17840:275::-;713:6;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;;;;;;;;;17977:4:::1;17969;17948:13;3150:12:::0;;;3062:108;17948:13:::1;:17;::::0;17964:1:::1;17948:17;:::i;:::-;17947:26;;;;:::i;:::-;17946:35;;;;:::i;:::-;17936:6;:45;;17914:142;;;::::0;-1:-1:-1;;;17914:142:0;;5872:2:1;17914:142:0::1;::::0;::::1;5854:21:1::0;5911:2;5891:18;;;5884:30;5950:34;5930:18;;;5923:62;-1:-1:-1;;;6001:18:1;;;5994:45;6056:19;;17914:142:0::1;5670:411:1::0;17914:142:0::1;18090:17;:6:::0;18100::::1;18090:17;:::i;:::-;18067:20;:40:::0;-1:-1:-1;17840:275:0:o;20489:161::-;713:6;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;20598:10:::1;::::0;20569:40:::1;::::0;-1:-1:-1;;;;;20598:10:0;;::::1;::::0;20569:40;::::1;::::0;::::1;::::0;20598:10:::1;::::0;20569:40:::1;20620:10;:22:::0;;-1:-1:-1;;;;;;20620:22:0::1;-1:-1:-1::0;;;;;20620:22:0;;;::::1;::::0;;;::::1;::::0;;20489:161::o;3832:492::-;3972:4;3989:36;3999:6;4007:9;4018:6;3989:9;:36::i;:::-;-1:-1:-1;;;;;4065:19:0;;4038:24;4065:19;;;:11;:19;;;;;;;;373:10;4065:33;;;;;;;;4117:26;;;;4109:79;;;;-1:-1:-1;;;4109:79:0;;6288:2:1;4109:79:0;;;6270:21:1;6327:2;6307:18;;;6300:30;6366:34;6346:18;;;6339:62;-1:-1:-1;;;6417:18:1;;;6410:38;6465:19;;4109:79:0;6086:404:1;4109:79:0;4224:57;4233:6;373:10;4274:6;4255:16;:25;4224:8;:57::i;:::-;-1:-1:-1;4312:4:0;;3832:492;-1:-1:-1;;;;3832:492:0:o;4332:215::-;373:10;4420:4;4469:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4469:34:0;;;;;;;;;;4420:4;;4437:80;;4460:7;;4469:47;;4506:10;;4469:47;:::i;:::-;4437:8;:80::i;863:103::-;713:6;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;928:30:::1;955:1;928:18;:30::i;:::-;863:103::o:0;17113:152::-;713:6;;17165:4;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;17182:14:::1;:22:::0;;-1:-1:-1;;17182:22:0::1;::::0;;17220:15:::1;::::0;::::1;::::0;17199:5:::1;::::0;17220:15:::1;-1:-1:-1::0;17253:4:0::1;17113:152:::0;:::o;18387:167::-;713:6;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18500:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;18500:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18387:167::o;18758:332::-;713:6;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;18908:15:::1;:31:::0;;;18950:15:::1;:31:::0;;;18992:9:::1;:19:::0;;;19004:7;19037:33:::1;18968:13:::0;18926;19037:33:::1;:::i;:::-;:45;;;;:::i;:::-;19022:12;:60:::0;-1:-1:-1;;;18758:332:0:o;16949:112::-;713:6;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;17004:13:::1;:20:::0;;-1:-1:-1;;17035:18:0;;;;;16949:112::o;27565:135::-;713:6;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;27657:8:::1;-1:-1:-1::0;;;;;27650:25:0::1;;27676:7;713:6:::0;;-1:-1:-1;;;;;713:6:0;;640:87;27676:7:::1;27650:42;::::0;-1:-1:-1;;;;;;27650:42:0::1;::::0;;;;;;-1:-1:-1;;;;;6817:32:1;;;27650:42:0::1;::::0;::::1;6799:51:1::0;6866:18;;;6859:34;;;6772:18;;27650:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27565:135:::0;;:::o;18650:100::-;713:6;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;18721:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;18721:21:0;;::::1;::::0;;;::::1;::::0;;18650:100::o;2849:104::-;2905:13;2938:7;2931:14;;;;;:::i;19636:304::-;713:6;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;19780:13:::1;-1:-1:-1::0;;;;;19772:21:0::1;:4;-1:-1:-1::0;;;;;19772:21:0::1;::::0;19750:128:::1;;;::::0;-1:-1:-1;;;19750:128:0;;7356:2:1;19750:128:0::1;::::0;::::1;7338:21:1::0;7395:2;7375:18;;;7368:30;7434:34;7414:18;;;7407:62;7505:27;7485:18;;;7478:55;7550:19;;19750:128:0::1;7154:421:1::0;19750:128:0::1;19891:41;19920:4;19926:5;19891:28;:41::i;:::-;19636:304:::0;;:::o;4555:413::-;373:10;4648:4;4692:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4692:34:0;;;;;;;;;;4745:35;;;;4737:85;;;;-1:-1:-1;;;4737:85:0;;7782:2:1;4737:85:0;;;7764:21:1;7821:2;7801:18;;;7794:30;7860:34;7840:18;;;7833:62;-1:-1:-1;;;7911:18:1;;;7904:35;7956:19;;4737:85:0;7580:401:1;4737:85:0;4858:67;373:10;4881:7;4909:15;4890:16;:34;4858:8;:67::i;:::-;-1:-1:-1;4956:4:0;;4555:413;-1:-1:-1;;;4555:413:0:o;3313:175::-;3399:4;3416:42;373:10;3440:9;3451:6;3416:9;:42::i;19446:182::-;713:6;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19531:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19531:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19586:34;;1163:41:1;;;19586:34:0::1;::::0;1136:18:1;19586:34:0::1;;;;;;;19446:182:::0;;:::o;19098:340::-;713:6;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;19249:16:::1;:32:::0;;;19292:16:::1;:32:::0;;;19335:10:::1;:20:::0;;;19348:7;19382:35:::1;19311:13:::0;19268;19382:35:::1;:::i;:::-;:48;;;;:::i;:::-;19366:13;:64:::0;-1:-1:-1;;;19098:340:0:o;18123:256::-;713:6;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;18263:4:::1;18255;18234:13;3150:12:::0;;;3062:108;18234:13:::1;:17;::::0;18250:1:::1;18234:17;:::i;:::-;18233:26;;;;:::i;:::-;18232:35;;;;:::i;:::-;18222:6;:45;;18200:131;;;::::0;-1:-1:-1;;;18200:131:0;;8188:2:1;18200:131:0::1;::::0;::::1;8170:21:1::0;8227:2;8207:18;;;8200:30;8266:34;8246:18;;;8239:62;-1:-1:-1;;;8317:18:1;;;8310:34;8361:19;;18200:131:0::1;7986:400:1::0;18200:131:0::1;18354:17;:6:::0;18364::::1;18354:17;:::i;:::-;18342:9;:29:::0;-1:-1:-1;18123:256:0:o;20144:147::-;713:6;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;20256:3:::1;::::0;20237:23:::1;::::0;-1:-1:-1;;;;;20256:3:0;;::::1;::::0;20237:23;::::1;::::0;::::1;::::0;20256:3:::1;::::0;20237:23:::1;20271:3;:12:::0;;-1:-1:-1;;;;;;20271:12:0::1;-1:-1:-1::0;;;;;20271:12:0;;;::::1;::::0;;;::::1;::::0;;20144:147::o;17335:497::-;713:6;;17443:4;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;17522:6:::1;17501:13;3150:12:::0;;;3062:108;17501:13:::1;:17;::::0;17517:1:::1;17501:17;:::i;:::-;17500:28;;;;:::i;:::-;17487:9;:41;;17465:144;;;::::0;-1:-1:-1;;;17465:144:0;;8593:2:1;17465:144:0::1;::::0;::::1;8575:21:1::0;8632:2;8612:18;;;8605:30;8671:34;8651:18;;;8644:62;-1:-1:-1;;;8722:18:1;;;8715:51;8783:19;;17465:144:0::1;8391:417:1::0;17465:144:0::1;17677:4;17656:13;3150:12:::0;;;3062:108;17656:13:::1;:17;::::0;17672:1:::1;17656:17;:::i;:::-;17655:26;;;;:::i;:::-;17642:9;:39;;17620:141;;;::::0;-1:-1:-1;;;17620:141:0;;9015:2:1;17620:141:0::1;::::0;::::1;8997:21:1::0;9054:2;9034:18;;;9027:30;9093:34;9073:18;;;9066:62;-1:-1:-1;;;9144:18:1;;;9137:50;9204:19;;17620:141:0::1;8813:416:1::0;17620:141:0::1;-1:-1:-1::0;17772:18:0::1;:30:::0;17820:4:::1;::::0;17335:497::o;974:201::-;713:6;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1063:22:0;::::1;1055:73;;;::::0;-1:-1:-1;;;1055:73:0;;9436:2:1;1055:73:0::1;::::0;::::1;9418:21:1::0;9475:2;9455:18;;;9448:30;9514:34;9494:18;;;9487:62;-1:-1:-1;;;9565:18:1;;;9558:36;9611:19;;1055:73:0::1;9234:402:1::0;1055:73:0::1;1139:28;1158:8;1139:18;:28::i;:::-;974:201:::0;:::o;20299:182::-;713:6;;-1:-1:-1;;;;;713:6:0;373:10;775:23;767:68;;;;-1:-1:-1;;;767:68:0;;;;;;;:::i;:::-;20431:8:::1;::::0;20402:38:::1;::::0;-1:-1:-1;;;;;20431:8:0;;::::1;::::0;20402:38;::::1;::::0;::::1;::::0;20431:8:::1;::::0;20402:38:::1;20451:8;:22:::0;;-1:-1:-1;;;;;;20451:22:0::1;-1:-1:-1::0;;;;;20451:22:0;;;::::1;::::0;;;::::1;::::0;;20299:182::o;6124:380::-;-1:-1:-1;;;;;6260:19:0;;6252:68;;;;-1:-1:-1;;;6252:68:0;;9843:2:1;6252:68:0;;;9825:21:1;9882:2;9862:18;;;9855:30;9921:34;9901:18;;;9894:62;-1:-1:-1;;;9972:18:1;;;9965:34;10016:19;;6252:68:0;9641:400:1;6252:68:0;-1:-1:-1;;;;;6339:21:0;;6331:68;;;;-1:-1:-1;;;6331:68:0;;10248:2:1;6331:68:0;;;10230:21:1;10287:2;10267:18;;;10260:30;10326:34;10306:18;;;10299:62;-1:-1:-1;;;10377:18:1;;;10370:32;10419:19;;6331:68:0;10046:398:1;6331:68:0;-1:-1:-1;;;;;6412:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6464:32;;1848:25:1;;;6464:32:0;;1821:18:1;6464:32:0;;;;;;;6124:380;;;:::o;20842:3924::-;-1:-1:-1;;;;;20974:18:0;;20966:68;;;;-1:-1:-1;;;20966:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21053:16:0;;21045:64;;;;-1:-1:-1;;;21045:64:0;;;;;;;:::i;:::-;21126:6;21136:1;21126:11;21122:93;;21154:28;21170:4;21176:2;21180:1;21154:15;:28::i;21122:93::-;21231:14;;;;21227:1694;;;713:6;;-1:-1:-1;;;;;21284:15:0;;;713:6;;21284:15;;;;:49;;-1:-1:-1;713:6:0;;-1:-1:-1;;;;;21320:13:0;;;713:6;;21320:13;;21284:49;:86;;;;-1:-1:-1;;;;;;21354:16:0;;;;21284:86;:128;;;;-1:-1:-1;;;;;;21391:21:0;;21405:6;21391:21;;21284:128;:158;;;;-1:-1:-1;21434:8:0;;-1:-1:-1;;;21434:8:0;;;;21433:9;21284:158;21262:1648;;;21482:13;;;;;;;21477:223;;-1:-1:-1;;;;;21554:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;21583:23:0;;;;;;:19;:23;;;;;;;;21554:52;21520:160;;;;-1:-1:-1;;;21520:160:0;;11461:2:1;21520:160:0;;;11443:21:1;11500:2;11480:18;;;11473:30;-1:-1:-1;;;11519:18:1;;;11512:52;11581:18;;21520:160:0;11259:346:1;21520:160:0;-1:-1:-1;;;;;21774:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;21831:35:0;;;;;;:31;:35;;;;;;;;21830:36;21774:92;21748:1147;;;21953:20;;21943:6;:30;;21909:169;;;;-1:-1:-1;;;21909:169:0;;11812:2:1;21909:169:0;;;11794:21:1;11851:2;11831:18;;;11824:30;11890:34;11870:18;;;11863:62;-1:-1:-1;;;11941:18:1;;;11934:51;12002:19;;21909:169:0;11610:417:1;21909:169:0;22161:9;;-1:-1:-1;;;;;3279:18:0;;3252:7;3279:18;;;;;;;;;;;22135:22;;:6;:22;:::i;:::-;:35;;22101:140;;;;-1:-1:-1;;;22101:140:0;;12234:2:1;22101:140:0;;;12216:21:1;12273:2;12253:18;;;12246:30;-1:-1:-1;;;12292:18:1;;;12285:49;12351:18;;22101:140:0;12032:343:1;22101:140:0;21748:1147;;;-1:-1:-1;;;;;22339:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;22394:37:0;;;;;;:31;:37;;;;;;;;22393:38;22339:92;22313:582;;;22518:20;;22508:6;:30;;22474:170;;;;-1:-1:-1;;;22474:170:0;;12582:2:1;22474:170:0;;;12564:21:1;12621:2;12601:18;;;12594:30;12660:34;12640:18;;;12633:62;-1:-1:-1;;;12711:18:1;;;12704:52;12773:19;;22474:170:0;12380:418:1;22313:582:0;-1:-1:-1;;;;;22675:35:0;;;;;;:31;:35;;;;;;;;22670:225;;22795:9;;-1:-1:-1;;;;;3279:18:0;;3252:7;3279:18;;;;;;;;;;;22769:22;;:6;:22;:::i;:::-;:35;;22735:140;;;;-1:-1:-1;;;22735:140:0;;12234:2:1;22735:140:0;;;12216:21:1;12273:2;12253:18;;;12246:30;-1:-1:-1;;;12292:18:1;;;12285:49;12351:18;;22735:140:0;12032:343:1;22735:140:0;22982:4;22933:28;3279:18;;;;;;;;;;;23040;;23016:42;;;;;;;23089:35;;-1:-1:-1;23113:11:0;;;;;;;23089:35;:61;;;;-1:-1:-1;23142:8:0;;-1:-1:-1;;;23142:8:0;;;;23141:9;23089:61;:110;;;;-1:-1:-1;;;;;;23168:31:0;;;;;;:25;:31;;;;;;;;23167:32;23089:110;:153;;;;-1:-1:-1;;;;;;23217:25:0;;;;;;:19;:25;;;;;;;;23216:26;23089:153;:194;;;;-1:-1:-1;;;;;;23260:23:0;;;;;;:19;:23;;;;;;;;23259:24;23089:194;23071:326;;;23310:8;:15;;-1:-1:-1;;;;23310:15:0;-1:-1:-1;;;23310:15:0;;;23342:10;:8;:10::i;:::-;23369:8;:16;;-1:-1:-1;;;;23369:16:0;;;23071:326;23425:8;;-1:-1:-1;;;;;23535:25:0;;23409:12;23535:25;;;:19;:25;;;;;;23425:8;-1:-1:-1;;;23425:8:0;;;;;23424:9;;23535:25;;:52;;-1:-1:-1;;;;;;23564:23:0;;;;;;:19;:23;;;;;;;;23535:52;23531:100;;;-1:-1:-1;23614:5:0;23531:100;23643:12;23748:7;23744:969;;;-1:-1:-1;;;;;23800:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;23849:1;23833:13;;:17;23800:50;23796:768;;;23878:34;23908:3;23878:25;23889:13;;23878:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;23871:41;;23981:13;;23961:16;;23954:4;:23;;;;:::i;:::-;23953:41;;;;:::i;:::-;23931:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;24051:13:0;;24037:10;;24030:17;;:4;:17;:::i;:::-;24029:35;;;;:::i;:::-;24013:12;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;24133:13:0;;24113:16;;24106:23;;:4;:23;:::i;:::-;24105:41;;;;:::i;:::-;24083:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;23796:768:0;;-1:-1:-1;23796:768:0;;-1:-1:-1;;;;;24208:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;24258:1;24243:12;;:16;24208:51;24204:360;;;24287:33;24316:3;24287:24;24298:12;;24287:6;:10;;:24;;;;:::i;:33::-;24280:40;;24388:12;;24369:15;;24362:4;:22;;;;:::i;:::-;24361:39;;;;:::i;:::-;24339:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;24456:12:0;;24443:9;;24436:16;;:4;:16;:::i;:::-;24435:33;;;;:::i;:::-;24419:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;24536:12:0;;24517:15;;24510:22;;:4;:22;:::i;:::-;24509:39;;;;:::i;:::-;24487:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;24204:360:0;24584:8;;24580:91;;24613:42;24629:4;24643;24650;24613:15;:42::i;:::-;24687:14;24697:4;24687:14;;:::i;:::-;;;23744:969;24725:33;24741:4;24747:2;24751:6;24725:15;:33::i;:::-;20955:3811;;;;20842:3924;;;:::o;1183:191::-;1276:6;;;-1:-1:-1;;;;;1293:17:0;;;-1:-1:-1;;;;;;1293:17:0;;;;;;;1326:40;;1276:6;;;1293:17;1276:6;;1326:40;;1257:16;;1326:40;1246:128;1183:191;:::o;19948:188::-;-1:-1:-1;;;;;20031:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;20031:39:0;;;;;;;;;;20088:40;;20031:39;;:31;20088:40;;;19948:188;;:::o;4976:733::-;-1:-1:-1;;;;;5116:20:0;;5108:70;;;;-1:-1:-1;;;5108:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5197:23:0;;5189:71;;;;-1:-1:-1;;;5189:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5357:17:0;;5333:21;5357:17;;;;;;;;;;;5393:23;;;;5385:74;;;;-1:-1:-1;;;5385:74:0;;13138:2:1;5385:74:0;;;13120:21:1;13177:2;13157:18;;;13150:30;13216:34;13196:18;;;13189:62;-1:-1:-1;;;13267:18:1;;;13260:36;13313:19;;5385:74:0;12936:402:1;5385:74:0;-1:-1:-1;;;;;5495:17:0;;;:9;:17;;;;;;;;;;;5515:22;;;5495:42;;5559:20;;;;;;;;:30;;5531:6;;5495:9;5559:30;;5531:6;;5559:30;:::i;:::-;;;;;;;;5624:9;-1:-1:-1;;;;;5607:35:0;5616:6;-1:-1:-1;;;;;5607:35:0;;5635:6;5607:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;5607:35:0;;;;;;;;5097:612;4976:733;;;:::o;25893:1618::-;25976:4;25932:23;3279:18;;;;;;;;;;;25932:50;;25993:25;26089:12;;26055:18;;26021;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;25993:108;-1:-1:-1;26112:12:0;26141:20;;;:46;;-1:-1:-1;26165:22:0;;26141:46;26137:85;;;26204:7;;;25893:1618::o;26137:85::-;26283:23;26396:1;26363:17;26328:18;;26310:15;:36;;;;:::i;:::-;26309:71;;;;:::i;:::-;:88;;;;:::i;:::-;26283:114;-1:-1:-1;26408:26:0;26437:36;:15;26283:114;26437:19;:36::i;:::-;26408:65;-1:-1:-1;26514:21:0;26548:36;26408:65;26548:16;:36::i;:::-;26597:18;26618:44;:21;26644:17;26618:25;:44::i;:::-;26597:65;;26675:23;26701:81;26754:17;26701:34;26716:18;;26701:10;:14;;:34;;;;:::i;:81::-;26675:107;;26793:17;26813:51;26846:17;26813:28;26828:12;;26813:10;:14;;:28;;;;:::i;:51::-;26793:71;-1:-1:-1;26877:23:0;26793:71;26903:28;26916:15;26903:10;:28;:::i;:::-;:40;;;;:::i;:::-;26977:1;26956:18;:22;;;26989:18;:22;;;27022:12;:16;;;27073:10;;27065:46;;26877:66;;-1:-1:-1;;;;;;27073:10:0;;27097:9;;27065:46;26977:1;27065:46;27097:9;27073:10;27065:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27051:60:0;;-1:-1:-1;;27128:19:0;;;;;:42;;;27169:1;27151:15;:19;27128:42;27124:278;;;27187:46;27200:15;27217;27187:12;:46::i;:::-;27357:18;;27253:137;;;13755:25:1;;;13811:2;13796:18;;13789:34;;;13839:18;;;13832:34;;;;27253:137:0;;;;;;13743:2:1;27253:137:0;;;27124:278;27436:3;;27428:75;;-1:-1:-1;;;;;27436:3:0;;;;27467:21;;27428:75;;;;27467:21;27436:3;27428:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;25893:1618:0:o;6908:98::-;6966:7;6993:5;6997:1;6993;:5;:::i;:::-;6986:12;6908:98;-1:-1:-1;;;6908:98:0:o;7014:::-;7072:7;7099:5;7103:1;7099;:5;:::i;6802:98::-;6860:7;6887:5;6891:1;6887;:5;:::i;24774:589::-;24924:16;;;24938:1;24924:16;;;;;;;;24900:21;;24924:16;;;;;;;;;;-1:-1:-1;24924:16:0;24900:40;;24969:4;24951;24956:1;24951:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;24951:23:0;;;-1:-1:-1;;;;;24951:23:0;;;;;24995:15;-1:-1:-1;;;;;24995:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24985:4;24990:1;24985:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;24985:32:0;;;-1:-1:-1;;;;;24985:32:0;;;;;25030:62;25047:4;25062:15;25080:11;25030:8;:62::i;:::-;25131:224;;-1:-1:-1;;;25131:224:0;;-1:-1:-1;;;;;25131:15:0;:66;;;;:224;;25212:11;;25238:1;;25282:4;;25309;;25329:15;;25131:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24829:534;24774:589;:::o;25371:514::-;25519:62;25536:4;25551:15;25569:11;25519:8;:62::i;:::-;25828:8;;25624:253;;-1:-1:-1;;;25624:253:0;;25696:4;25624:253;;;15723:34:1;15773:18;;;15766:34;;;25742:1:0;15816:18:1;;;15809:34;;;15859:18;;;15852:34;-1:-1:-1;;;;;25828:8:0;;;15902:19:1;;;15895:44;25851:15:0;15955:19:1;;;15948:35;25624:15:0;:31;;;;;;25663:9;;15657:19:1;;25624:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25371:514;;:::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;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:180::-;1943:6;1996:2;1984:9;1975:7;1971:23;1967:32;1964:52;;;2012:1;2009;2002:12;1964:52;-1:-1:-1;2035:23:1;;1884:180;-1:-1:-1;1884:180:1:o;2069:456::-;2146:6;2154;2162;2215:2;2203:9;2194:7;2190:23;2186:32;2183:52;;;2231:1;2228;2221:12;2183:52;2270:9;2257:23;2289:31;2314:5;2289:31;:::i;:::-;2339:5;-1:-1:-1;2396:2:1;2381:18;;2368:32;2409:33;2368:32;2409:33;:::i;:::-;2069:456;;2461:7;;-1:-1:-1;;;2515:2:1;2500:18;;;;2487:32;;2069:456::o;2927:118::-;3013:5;3006:13;2999:21;2992:5;2989:32;2979:60;;3035:1;3032;3025:12;3050:382;3115:6;3123;3176:2;3164:9;3155:7;3151:23;3147:32;3144:52;;;3192:1;3189;3182:12;3144:52;3231:9;3218:23;3250:31;3275:5;3250:31;:::i;:::-;3300:5;-1:-1:-1;3357:2:1;3342:18;;3329:32;3370:30;3329:32;3370:30;:::i;:::-;3419:7;3409:17;;;3050:382;;;;;:::o;3437:316::-;3514:6;3522;3530;3583:2;3571:9;3562:7;3558:23;3554:32;3551:52;;;3599:1;3596;3589:12;3551:52;-1:-1:-1;;3622:23:1;;;3692:2;3677:18;;3664:32;;-1:-1:-1;3743:2:1;3728:18;;;3715:32;;3437:316;-1:-1:-1;3437:316:1:o;3758:241::-;3814:6;3867:2;3855:9;3846:7;3842:23;3838:32;3835:52;;;3883:1;3880;3873:12;3835:52;3922:9;3909:23;3941:28;3963:5;3941:28;:::i;4004:388::-;4072:6;4080;4133:2;4121:9;4112:7;4108:23;4104:32;4101:52;;;4149:1;4146;4139:12;4101:52;4188:9;4175:23;4207:31;4232:5;4207:31;:::i;:::-;4257:5;-1:-1:-1;4314:2:1;4299:18;;4286:32;4327:33;4286:32;4327:33;:::i;4397:380::-;4476:1;4472:12;;;;4519;;;4540:61;;4594:4;4586:6;4582:17;4572:27;;4540:61;4647:2;4639:6;4636:14;4616:18;4613:38;4610:161;;4693:10;4688:3;4684:20;4681:1;4674:31;4728:4;4725:1;4718:15;4756:4;4753:1;4746:15;4610:161;;4397:380;;;:::o;4782:356::-;4984:2;4966:21;;;5003:18;;;4996:30;5062:34;5057:2;5042:18;;5035:62;5129:2;5114:18;;4782:356::o;5143:127::-;5204:10;5199:3;5195:20;5192:1;5185:31;5235:4;5232:1;5225:15;5259:4;5256:1;5249:15;5275:168;5348:9;;;5379;;5396:15;;;5390:22;;5376:37;5366:71;;5417:18;;:::i;5448:217::-;5488:1;5514;5504:132;;5558:10;5553:3;5549:20;5546:1;5539:31;5593:4;5590:1;5583:15;5621:4;5618:1;5611:15;5504:132;-1:-1:-1;5650:9:1;;5448:217::o;6495:125::-;6560:9;;;6581:10;;;6578:36;;;6594:18;;:::i;6904:245::-;6971:6;7024:2;7012:9;7003:7;6999:23;6995:32;6992:52;;;7040:1;7037;7030:12;6992:52;7072:9;7066:16;7091:28;7113:5;7091:28;:::i;10449:401::-;10651:2;10633:21;;;10690:2;10670:18;;;10663:30;10729:34;10724:2;10709:18;;10702:62;-1:-1:-1;;;10795:2:1;10780:18;;10773:35;10840:3;10825:19;;10449:401::o;10855:399::-;11057:2;11039:21;;;11096:2;11076:18;;;11069:30;11135:34;11130:2;11115:18;;11108:62;-1:-1:-1;;;11201:2:1;11186:18;;11179:33;11244:3;11229:19;;10855:399::o;12803:128::-;12870:9;;;12891:11;;;12888:37;;;12905:18;;:::i;14009:127::-;14070:10;14065:3;14061:20;14058:1;14051:31;14101:4;14098:1;14091:15;14125:4;14122:1;14115:15;14141:251;14211:6;14264:2;14252:9;14243:7;14239:23;14235:32;14232:52;;;14280:1;14277;14270:12;14232:52;14312:9;14306:16;14331:31;14356:5;14331:31;:::i;14397:980::-;14659:4;14707:3;14696:9;14692:19;14738:6;14727:9;14720:25;14764:2;14802:6;14797:2;14786:9;14782:18;14775:34;14845:3;14840:2;14829:9;14825:18;14818:31;14869:6;14904;14898:13;14935:6;14927;14920:22;14973:3;14962:9;14958:19;14951:26;;15012:2;15004:6;15000:15;14986:29;;15033:1;15043:195;15057:6;15054:1;15051:13;15043:195;;;15122:13;;-1:-1:-1;;;;;15118:39:1;15106:52;;15213:15;;;;15178:12;;;;15154:1;15072:9;15043:195;;;-1:-1:-1;;;;;;;15294:32:1;;;;15289:2;15274:18;;15267:60;-1:-1:-1;;;15358:3:1;15343:19;15336:35;15255:3;14397:980;-1:-1:-1;;;14397:980:1:o;15994:306::-;16082:6;16090;16098;16151:2;16139:9;16130:7;16126:23;16122:32;16119:52;;;16167:1;16164;16157:12;16119:52;16196:9;16190:16;16180:26;;16246:2;16235:9;16231:18;16225:25;16215:35;;16290:2;16279:9;16275:18;16269:25;16259:35;;15994:306;;;;;:::o

Swarm Source

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