ETH Price: $2,480.44 (+3.59%)

Token

NANI (NANI)
 

Overview

Max Total Supply

1,000,000,000 NANI

Holders

9

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
NANI

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.11;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

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

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

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        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 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

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

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

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

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

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

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

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

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

    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

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

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

    function WETH() external pure returns (address);

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

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

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    bool private swapping;
    bool public limitsInEffect = true;

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

    address public marketingWallet;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 total;
    }
    Taxes public buyTax;
    Taxes public sellTax;

    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;

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

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SwapAndLiquidity(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);

    constructor() ERC20("NANI", "NANI") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

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

        uint256 totalSupply = 1000000000 * 10**decimals();

        maxWallet = maxTransactionAmount = (totalSupply * 2) / 100;
        swapTokensAtAmount = (totalSupply * 1) / 1000;

        marketingWallet = _msgSender();

        buyTax = Taxes(0, 0, 0);
        sellTax = Taxes(1, 0, 1);

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

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

        _mint(_msgSender(), totalSupply);
    }

    receive() external payable {}

    function removeLimits() external onlyOwner {
        require(limitsInEffect == true, "The limits has been removed.");
        limitsInEffect = false;
    }

    function setTaxes(uint256 _buyMarketing, uint256 _buyLiquidity, uint256 _sellMarketing, uint256 _sellLiquidity) external onlyOwner {
        buyTax = Taxes(_buyMarketing, _buyLiquidity, _buyMarketing + _buyLiquidity);
        sellTax = Taxes(_sellMarketing, _sellLiquidity, _sellMarketing + _sellLiquidity);
    }

    function updateMarketingWallet(address _marketingWallet) external onlyOwner {
        marketingWallet = _marketingWallet;
    }

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

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

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

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address.");
        require(to != address(0), "ERC20: transfer to the zero address.");
        require(amount > 0, "ERC20: Transfer amount must be greater than zero.");

        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
            if (limitsInEffect == true) {
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "ERC20: Buy transfer amount exceeds the max transaction amount.");
                    require(amount + balanceOf(to) <= maxWallet, "ERC20: Max wallet exceeded.");
                } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "ERC20: Sell transfer amount exceeds the max transaction amount.");
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "ERC20: Max wallet exceeded.");
                }
            }
        }

        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if (canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

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

        uint256 fees = 0;
        if (takeFee) {
            if (automatedMarketMakerPairs[to] && sellTax.total > 0) {
                fees = amount.mul(sellTax.total).div(100);
                tokensForLiquidity += (fees * sellTax.liquidity) / sellTax.total;
                tokensForMarketing += (fees * sellTax.marketing) / sellTax.total;
            } else if (automatedMarketMakerPairs[from] && buyTax.total > 0) {
                fees = amount.mul(buyTax.total).div(100);
                tokensForLiquidity += (fees * buyTax.liquidity) / buyTax.total;
                tokensForMarketing += (fees * buyTax.marketing) / buyTax.total;
            }

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

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

        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

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

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

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

        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 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketing","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidity","type":"uint256"},{"internalType":"uint256","name":"_sellMarketing","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidity","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526005805460ff60a81b1916600160a81b1790553480156200002457600080fd5b506040805180820182526004808252634e414e4960e01b6020808401828152855180870190965292855284015281519192916200006491600391620005f9565b5080516200007a906004906020840190620005f9565b50505062000097620000916200038c60201b60201c565b62000390565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000b9816001620003e2565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000104573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012a91906200069f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000178573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019e91906200069f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021291906200069f565b6001600160a01b031660a08190526200022d906001620003e2565b60a0516200023d90600162000417565b60006200024d6012600a620007e6565b6200025d90633b9aca00620007f7565b905060646200026e826002620007f7565b6200027a919062000819565b60078190556008556103e862000292826001620007f7565b6200029e919062000819565b60065533600980546001600160a01b0319166001600160a01b03928316179055604080516060808201835260008083526020808401829052928401819052600a819055600b819055600c8190558351918201845260018083529282018190529201819052600d819055600e91909155600f5560055462000321911660016200046b565b6200032e3060016200046b565b6200033d61dead60016200046b565b6200035c620003546005546001600160a01b031690565b6001620003e2565b62000369306001620003e2565b6200037861dead6001620003e2565b620003843382620004d4565b505062000894565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620003ec6200059b565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b620004756200059b565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005305760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b80600260008282546200054491906200083c565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620005f75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000527565b565b828054620006079062000857565b90600052602060002090601f0160209004810192826200062b576000855562000676565b82601f106200064657805160ff191683800117855562000676565b8280016001018555821562000676579182015b828111156200067657825182559160200191906001019062000659565b506200068492915062000688565b5090565b5b8082111562000684576000815560010162000689565b600060208284031215620006b257600080fd5b81516001600160a01b0381168114620006ca57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007285781600019048211156200070c576200070c620006d1565b808516156200071a57918102915b93841c9390800290620006ec565b509250929050565b6000826200074157506001620007e0565b816200075057506000620007e0565b8160018114620007695760028114620007745762000794565b6001915050620007e0565b60ff841115620007885762000788620006d1565b50506001821b620007e0565b5060208310610133831016604e8410600b8410161715620007b9575081810a620007e0565b620007c58383620006e7565b8060001904821115620007dc57620007dc620006d1565b0290505b92915050565b6000620006ca60ff84168362000730565b6000816000190483118215151615620008145762000814620006d1565b500290565b6000826200083757634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620008525762000852620006d1565b500190565b600181811c908216806200086c57607f821691505b602082108114156200088e57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051611c38620008dd60003960006102fb0152600081816102340152818161169b015281816117540152818161179001528181611802015261185f0152611c386000f3fe6080604052600436106101bb5760003560e01c806375f0a874116100ec578063c02466681161008a578063dd62ed3e11610064578063dd62ed3e14610522578063e2f4560514610542578063f2fde38b14610558578063f8b45b051461057857600080fd5b8063c0246668146104cd578063c8c8ebe4146104ed578063cc1776d31461050357600080fd5b8063a12a7d61116100c6578063a12a7d611461044d578063a457c2d71461046d578063a9059cbb1461048d578063aacebbe3146104ad57600080fd5b806375f0a874146103fa5780638da5cb5b1461041a57806395d89b411461043857600080fd5b806349bd5a5e1161015957806370a082311161013357806370a0823114610378578063715018a6146103ae578063751039fc146103c55780637571336a146103da57600080fd5b806349bd5a5e146102e95780634a62bb651461031d5780634f7041a51461033e57600080fd5b806318160ddd1161019557806318160ddd1461026e57806323b872dd1461028d578063313ce567146102ad57806339509351146102c957600080fd5b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022257600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dc61058e565b6040516101e991906118dd565b60405180910390f35b3480156101fe57600080fd5b5061021261020d366004611947565b610620565b60405190151581526020016101e9565b34801561022e57600080fd5b506102567f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e9565b34801561027a57600080fd5b506002545b6040519081526020016101e9565b34801561029957600080fd5b506102126102a8366004611973565b610638565b3480156102b957600080fd5b50604051601281526020016101e9565b3480156102d557600080fd5b506102126102e4366004611947565b61065c565b3480156102f557600080fd5b506102567f000000000000000000000000000000000000000000000000000000000000000081565b34801561032957600080fd5b5060055461021290600160a81b900460ff1681565b34801561034a57600080fd5b50600a54600b54600c5461035d92919083565b604080519384526020840192909252908201526060016101e9565b34801561038457600080fd5b5061027f6103933660046119b4565b6001600160a01b031660009081526020819052604090205490565b3480156103ba57600080fd5b506103c361067e565b005b3480156103d157600080fd5b506103c3610692565b3480156103e657600080fd5b506103c36103f53660046119d1565b61070c565b34801561040657600080fd5b50600954610256906001600160a01b031681565b34801561042657600080fd5b506005546001600160a01b0316610256565b34801561044457600080fd5b506101dc61073f565b34801561045957600080fd5b506103c3610468366004611a0f565b61074e565b34801561047957600080fd5b50610212610488366004611947565b6107cc565b34801561049957600080fd5b506102126104a8366004611947565b610847565b3480156104b957600080fd5b506103c36104c83660046119b4565b610855565b3480156104d957600080fd5b506103c36104e83660046119d1565b61087f565b3480156104f957600080fd5b5061027f60075481565b34801561050f57600080fd5b50600d54600e54600f5461035d92919083565b34801561052e57600080fd5b5061027f61053d366004611a41565b6108e6565b34801561054e57600080fd5b5061027f60065481565b34801561056457600080fd5b506103c36105733660046119b4565b610911565b34801561058457600080fd5b5061027f60085481565b60606003805461059d90611a6f565b80601f01602080910402602001604051908101604052809291908181526020018280546105c990611a6f565b80156106165780601f106105eb57610100808354040283529160200191610616565b820191906000526020600020905b8154815290600101906020018083116105f957829003601f168201915b5050505050905090565b60003361062e81858561098a565b5060019392505050565b600033610646858285610aae565b610651858585610b28565b506001949350505050565b60003361062e81858561066f83836108e6565b6106799190611ac0565b61098a565b610686611220565b610690600061127a565b565b61069a611220565b600554600160a81b900460ff1615156001146106fd5760405162461bcd60e51b815260206004820152601c60248201527f546865206c696d69747320686173206265656e2072656d6f7665642e0000000060448201526064015b60405180910390fd5b6005805460ff60a81b19169055565b610714611220565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b60606004805461059d90611a6f565b610756611220565b604051806060016040528085815260200184815260200184866107799190611ac0565b90528051600a55602080820151600b55604091820151600c5581516060810183528481529081018390529081016107b08385611ac0565b90528051600d556020810151600e5560400151600f5550505050565b600033816107da82866108e6565b90508381101561083a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106f4565b610651828686840361098a565b60003361062e818585610b28565b61085d611220565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b610887611220565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610919611220565b6001600160a01b03811661097e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106f4565b6109878161127a565b50565b6001600160a01b0383166109ec5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106f4565b6001600160a01b038216610a4d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106f4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610aba84846108e6565b90506000198114610b225781811015610b155760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106f4565b610b22848484840361098a565b50505050565b6001600160a01b038316610b8d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015265323932b9b99760d11b60648201526084016106f4565b6001600160a01b038216610bef5760405162461bcd60e51b8152602060048201526024808201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526332b9b99760e11b60648201526084016106f4565b60008111610c595760405162461bcd60e51b815260206004820152603160248201527f45524332303a205472616e7366657220616d6f756e74206d75737420626520676044820152703932b0ba32b9103a3430b7103d32b9379760791b60648201526084016106f4565b6005546001600160a01b03848116911614801590610c8557506005546001600160a01b03838116911614155b8015610c9957506001600160a01b03821615155b8015610cb057506001600160a01b03821661dead14155b8015610cc65750600554600160a01b900460ff16155b15610f6b57600554600160a81b900460ff16151560011415610f6b576001600160a01b03831660009081526014602052604090205460ff168015610d2357506001600160a01b03821660009081526013602052604090205460ff16155b15610e1957600754811115610da05760405162461bcd60e51b815260206004820152603e60248201527f45524332303a20427579207472616e7366657220616d6f756e7420657863656560448201527f647320746865206d6178207472616e73616374696f6e20616d6f756e742e000060648201526084016106f4565b6008546001600160a01b038316600090815260208190526040902054610dc69083611ac0565b1115610e145760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204d61782077616c6c65742065786365656465642e000000000060448201526064016106f4565b610f6b565b6001600160a01b03821660009081526014602052604090205460ff168015610e5a57506001600160a01b03831660009081526013602052604090205460ff16155b15610ed757600754811115610e145760405162461bcd60e51b815260206004820152603f60248201527f45524332303a2053656c6c207472616e7366657220616d6f756e74206578636560448201527f65647320746865206d6178207472616e73616374696f6e20616d6f756e742e0060648201526084016106f4565b6001600160a01b03821660009081526013602052604090205460ff16610f6b576008546001600160a01b038316600090815260208190526040902054610f1d9083611ac0565b1115610f6b5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204d61782077616c6c65742065786365656465642e000000000060448201526064016106f4565b60065430600090815260208190526040902054108015908190610f985750600554600160a01b900460ff16155b8015610fbd57506001600160a01b03841660009081526014602052604090205460ff16155b8015610fe257506001600160a01b03841660009081526012602052604090205460ff16155b801561100757506001600160a01b03831660009081526012602052604090205460ff16155b15611035576005805460ff60a01b1916600160a01b1790556110276112cc565b6005805460ff60a01b191690555b6005546001600160a01b03851660009081526012602052604090205460ff600160a01b90920482161591168061108357506001600160a01b03841660009081526012602052604090205460ff165b1561108c575060005b6000811561120d576001600160a01b03851660009081526014602052604090205460ff1680156110bd5750600f5415155b1561114757600f546110dd906064906110d7908790611475565b90611488565b600f54600e54919250906110f19083611ad8565b6110fb9190611af7565b6011600082825461110c9190611ac0565b9091555050600f54600d546111219083611ad8565b61112b9190611af7565b6010600082825461113c9190611ac0565b909155506111ef9050565b6001600160a01b03861660009081526014602052604090205460ff1680156111705750600c5415155b156111ef57600c5461118a906064906110d7908790611475565b600c54600b549192509061119e9083611ad8565b6111a89190611af7565b601160008282546111b99190611ac0565b9091555050600c54600a546111ce9083611ad8565b6111d89190611af7565b601060008282546111e99190611ac0565b90915550505b801561120057611200863083611494565b61120a8185611b19565b93505b611218868686611494565b505050505050565b6005546001600160a01b031633146106905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b30600090815260208190526040812054905060006010546011546112f09190611ac0565b905060008215806112ff575081155b1561130957505050565b600654611317906014611ad8565b83111561132f5760065461132c906014611ad8565b92505b6000600283601154866113429190611ad8565b61134c9190611af7565b6113569190611af7565b905060006113648583611638565b90504761137082611644565b600061137c4783611638565b90506000611399876110d76010548561147590919063ffffffff16565b905060006113a78284611b19565b60006011819055601055905085158015906113c25750600081115b15611415576113d186826117fc565b601154604080518781526020810184905280820192909252517f34755123977fda4465c19ffa30709bc81ed728f17cf49014d33b243ae2d682fb9181900360600190a15b6009546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611462576040519150601f19603f3d011682016040523d82523d6000602084013e611467565b606091505b505050505050505050505050565b60006114818284611ad8565b9392505050565b60006114818284611af7565b6001600160a01b0383166114f85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106f4565b6001600160a01b03821661155a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106f4565b6001600160a01b038316600090815260208190526040902054818110156115d25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106f4565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610b22565b60006114818284611b19565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061167957611679611b30565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171b9190611b46565b8160018151811061172e5761172e611b30565b60200260200101906001600160a01b031690816001600160a01b031681525050611779307f00000000000000000000000000000000000000000000000000000000000000008461098a565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906117ce908590600090869030904290600401611b63565b600060405180830381600087803b1580156117e857600080fd5b505af1158015611218573d6000803e3d6000fd5b611827307f00000000000000000000000000000000000000000000000000000000000000008461098a565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af11580156118b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118d69190611bd4565b5050505050565b600060208083528351808285015260005b8181101561190a578581018301518582016040015282016118ee565b8181111561191c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461098757600080fd5b6000806040838503121561195a57600080fd5b823561196581611932565b946020939093013593505050565b60008060006060848603121561198857600080fd5b833561199381611932565b925060208401356119a381611932565b929592945050506040919091013590565b6000602082840312156119c657600080fd5b813561148181611932565b600080604083850312156119e457600080fd5b82356119ef81611932565b915060208301358015158114611a0457600080fd5b809150509250929050565b60008060008060808587031215611a2557600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5457600080fd5b8235611a5f81611932565b91506020830135611a0481611932565b600181811c90821680611a8357607f821691505b60208210811415611aa457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611ad357611ad3611aaa565b500190565b6000816000190483118215151615611af257611af2611aaa565b500290565b600082611b1457634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611b2b57611b2b611aaa565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611b5857600080fd5b815161148181611932565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611bb35784516001600160a01b031683529383019391830191600101611b8e565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611be957600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e40d199684387da4e3cf06eb91b25e496b5f3f4a5037e04b8b05eaf08c4efa1e64736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c806375f0a874116100ec578063c02466681161008a578063dd62ed3e11610064578063dd62ed3e14610522578063e2f4560514610542578063f2fde38b14610558578063f8b45b051461057857600080fd5b8063c0246668146104cd578063c8c8ebe4146104ed578063cc1776d31461050357600080fd5b8063a12a7d61116100c6578063a12a7d611461044d578063a457c2d71461046d578063a9059cbb1461048d578063aacebbe3146104ad57600080fd5b806375f0a874146103fa5780638da5cb5b1461041a57806395d89b411461043857600080fd5b806349bd5a5e1161015957806370a082311161013357806370a0823114610378578063715018a6146103ae578063751039fc146103c55780637571336a146103da57600080fd5b806349bd5a5e146102e95780634a62bb651461031d5780634f7041a51461033e57600080fd5b806318160ddd1161019557806318160ddd1461026e57806323b872dd1461028d578063313ce567146102ad57806339509351146102c957600080fd5b806306fdde03146101c7578063095ea7b3146101f25780631694505e1461022257600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dc61058e565b6040516101e991906118dd565b60405180910390f35b3480156101fe57600080fd5b5061021261020d366004611947565b610620565b60405190151581526020016101e9565b34801561022e57600080fd5b506102567f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016101e9565b34801561027a57600080fd5b506002545b6040519081526020016101e9565b34801561029957600080fd5b506102126102a8366004611973565b610638565b3480156102b957600080fd5b50604051601281526020016101e9565b3480156102d557600080fd5b506102126102e4366004611947565b61065c565b3480156102f557600080fd5b506102567f00000000000000000000000047587fbc057675a729ea4158f340cd7dc8cdd72881565b34801561032957600080fd5b5060055461021290600160a81b900460ff1681565b34801561034a57600080fd5b50600a54600b54600c5461035d92919083565b604080519384526020840192909252908201526060016101e9565b34801561038457600080fd5b5061027f6103933660046119b4565b6001600160a01b031660009081526020819052604090205490565b3480156103ba57600080fd5b506103c361067e565b005b3480156103d157600080fd5b506103c3610692565b3480156103e657600080fd5b506103c36103f53660046119d1565b61070c565b34801561040657600080fd5b50600954610256906001600160a01b031681565b34801561042657600080fd5b506005546001600160a01b0316610256565b34801561044457600080fd5b506101dc61073f565b34801561045957600080fd5b506103c3610468366004611a0f565b61074e565b34801561047957600080fd5b50610212610488366004611947565b6107cc565b34801561049957600080fd5b506102126104a8366004611947565b610847565b3480156104b957600080fd5b506103c36104c83660046119b4565b610855565b3480156104d957600080fd5b506103c36104e83660046119d1565b61087f565b3480156104f957600080fd5b5061027f60075481565b34801561050f57600080fd5b50600d54600e54600f5461035d92919083565b34801561052e57600080fd5b5061027f61053d366004611a41565b6108e6565b34801561054e57600080fd5b5061027f60065481565b34801561056457600080fd5b506103c36105733660046119b4565b610911565b34801561058457600080fd5b5061027f60085481565b60606003805461059d90611a6f565b80601f01602080910402602001604051908101604052809291908181526020018280546105c990611a6f565b80156106165780601f106105eb57610100808354040283529160200191610616565b820191906000526020600020905b8154815290600101906020018083116105f957829003601f168201915b5050505050905090565b60003361062e81858561098a565b5060019392505050565b600033610646858285610aae565b610651858585610b28565b506001949350505050565b60003361062e81858561066f83836108e6565b6106799190611ac0565b61098a565b610686611220565b610690600061127a565b565b61069a611220565b600554600160a81b900460ff1615156001146106fd5760405162461bcd60e51b815260206004820152601c60248201527f546865206c696d69747320686173206265656e2072656d6f7665642e0000000060448201526064015b60405180910390fd5b6005805460ff60a81b19169055565b610714611220565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b60606004805461059d90611a6f565b610756611220565b604051806060016040528085815260200184815260200184866107799190611ac0565b90528051600a55602080820151600b55604091820151600c5581516060810183528481529081018390529081016107b08385611ac0565b90528051600d556020810151600e5560400151600f5550505050565b600033816107da82866108e6565b90508381101561083a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016106f4565b610651828686840361098a565b60003361062e818585610b28565b61085d611220565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b610887611220565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610919611220565b6001600160a01b03811661097e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106f4565b6109878161127a565b50565b6001600160a01b0383166109ec5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106f4565b6001600160a01b038216610a4d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106f4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610aba84846108e6565b90506000198114610b225781811015610b155760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106f4565b610b22848484840361098a565b50505050565b6001600160a01b038316610b8d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015265323932b9b99760d11b60648201526084016106f4565b6001600160a01b038216610bef5760405162461bcd60e51b8152602060048201526024808201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526332b9b99760e11b60648201526084016106f4565b60008111610c595760405162461bcd60e51b815260206004820152603160248201527f45524332303a205472616e7366657220616d6f756e74206d75737420626520676044820152703932b0ba32b9103a3430b7103d32b9379760791b60648201526084016106f4565b6005546001600160a01b03848116911614801590610c8557506005546001600160a01b03838116911614155b8015610c9957506001600160a01b03821615155b8015610cb057506001600160a01b03821661dead14155b8015610cc65750600554600160a01b900460ff16155b15610f6b57600554600160a81b900460ff16151560011415610f6b576001600160a01b03831660009081526014602052604090205460ff168015610d2357506001600160a01b03821660009081526013602052604090205460ff16155b15610e1957600754811115610da05760405162461bcd60e51b815260206004820152603e60248201527f45524332303a20427579207472616e7366657220616d6f756e7420657863656560448201527f647320746865206d6178207472616e73616374696f6e20616d6f756e742e000060648201526084016106f4565b6008546001600160a01b038316600090815260208190526040902054610dc69083611ac0565b1115610e145760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204d61782077616c6c65742065786365656465642e000000000060448201526064016106f4565b610f6b565b6001600160a01b03821660009081526014602052604090205460ff168015610e5a57506001600160a01b03831660009081526013602052604090205460ff16155b15610ed757600754811115610e145760405162461bcd60e51b815260206004820152603f60248201527f45524332303a2053656c6c207472616e7366657220616d6f756e74206578636560448201527f65647320746865206d6178207472616e73616374696f6e20616d6f756e742e0060648201526084016106f4565b6001600160a01b03821660009081526013602052604090205460ff16610f6b576008546001600160a01b038316600090815260208190526040902054610f1d9083611ac0565b1115610f6b5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204d61782077616c6c65742065786365656465642e000000000060448201526064016106f4565b60065430600090815260208190526040902054108015908190610f985750600554600160a01b900460ff16155b8015610fbd57506001600160a01b03841660009081526014602052604090205460ff16155b8015610fe257506001600160a01b03841660009081526012602052604090205460ff16155b801561100757506001600160a01b03831660009081526012602052604090205460ff16155b15611035576005805460ff60a01b1916600160a01b1790556110276112cc565b6005805460ff60a01b191690555b6005546001600160a01b03851660009081526012602052604090205460ff600160a01b90920482161591168061108357506001600160a01b03841660009081526012602052604090205460ff165b1561108c575060005b6000811561120d576001600160a01b03851660009081526014602052604090205460ff1680156110bd5750600f5415155b1561114757600f546110dd906064906110d7908790611475565b90611488565b600f54600e54919250906110f19083611ad8565b6110fb9190611af7565b6011600082825461110c9190611ac0565b9091555050600f54600d546111219083611ad8565b61112b9190611af7565b6010600082825461113c9190611ac0565b909155506111ef9050565b6001600160a01b03861660009081526014602052604090205460ff1680156111705750600c5415155b156111ef57600c5461118a906064906110d7908790611475565b600c54600b549192509061119e9083611ad8565b6111a89190611af7565b601160008282546111b99190611ac0565b9091555050600c54600a546111ce9083611ad8565b6111d89190611af7565b601060008282546111e99190611ac0565b90915550505b801561120057611200863083611494565b61120a8185611b19565b93505b611218868686611494565b505050505050565b6005546001600160a01b031633146106905760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f4565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b30600090815260208190526040812054905060006010546011546112f09190611ac0565b905060008215806112ff575081155b1561130957505050565b600654611317906014611ad8565b83111561132f5760065461132c906014611ad8565b92505b6000600283601154866113429190611ad8565b61134c9190611af7565b6113569190611af7565b905060006113648583611638565b90504761137082611644565b600061137c4783611638565b90506000611399876110d76010548561147590919063ffffffff16565b905060006113a78284611b19565b60006011819055601055905085158015906113c25750600081115b15611415576113d186826117fc565b601154604080518781526020810184905280820192909252517f34755123977fda4465c19ffa30709bc81ed728f17cf49014d33b243ae2d682fb9181900360600190a15b6009546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611462576040519150601f19603f3d011682016040523d82523d6000602084013e611467565b606091505b505050505050505050505050565b60006114818284611ad8565b9392505050565b60006114818284611af7565b6001600160a01b0383166114f85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106f4565b6001600160a01b03821661155a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106f4565b6001600160a01b038316600090815260208190526040902054818110156115d25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016106f4565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610b22565b60006114818284611b19565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061167957611679611b30565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171b9190611b46565b8160018151811061172e5761172e611b30565b60200260200101906001600160a01b031690816001600160a01b031681525050611779307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461098a565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906117ce908590600090869030904290600401611b63565b600060405180830381600087803b1580156117e857600080fd5b505af1158015611218573d6000803e3d6000fd5b611827307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461098a565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03169063f305d71990839060c40160606040518083038185885af11580156118b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118d69190611bd4565b5050505050565b600060208083528351808285015260005b8181101561190a578581018301518582016040015282016118ee565b8181111561191c576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461098757600080fd5b6000806040838503121561195a57600080fd5b823561196581611932565b946020939093013593505050565b60008060006060848603121561198857600080fd5b833561199381611932565b925060208401356119a381611932565b929592945050506040919091013590565b6000602082840312156119c657600080fd5b813561148181611932565b600080604083850312156119e457600080fd5b82356119ef81611932565b915060208301358015158114611a0457600080fd5b809150509250929050565b60008060008060808587031215611a2557600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5457600080fd5b8235611a5f81611932565b91506020830135611a0481611932565b600181811c90821680611a8357607f821691505b60208210811415611aa457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115611ad357611ad3611aaa565b500190565b6000816000190483118215151615611af257611af2611aaa565b500290565b600082611b1457634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611b2b57611b2b611aaa565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611b5857600080fd5b815161148181611932565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611bb35784516001600160a01b031683529383019391830191600101611b8e565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611be957600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220e40d199684387da4e3cf06eb91b25e496b5f3f4a5037e04b8b05eaf08c4efa1e64736f6c634300080b0033

Deployed Bytecode Sourcemap

8986:8320:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3009:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3941:201;;;;;;;;;;-1:-1:-1;3941:201:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;3941:201:0;1072:187:1;9060:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1454:32:1;;;1436:51;;1424:2;1409:18;9060:51:0;1264:229:1;3330:108:0;;;;;;;;;;-1:-1:-1;3418:12:0;;3330:108;;;1644:25:1;;;1632:2;1617:18;3330:108:0;1498:177:1;4150:261:0;;;;;;;;;;-1:-1:-1;4150:261:0;;;;;:::i;:::-;;:::i;3229:93::-;;;;;;;;;;-1:-1:-1;3229:93:0;;3312:2;2283:36:1;;2271:2;2256:18;3229:93:0;2141:184:1;4419:238:0;;;;;;;;;;-1:-1:-1;4419:238:0;;;;;:::i;:::-;;:::i;9118:38::-;;;;;;;;;;;;;;;9191:33;;;;;;;;;;-1:-1:-1;9191:33:0;;;;-1:-1:-1;;;9191:33:0;;;;;;9494:19;;;;;;;;;;-1:-1:-1;9494:19:0;;;;;;;;;;;;;;;;2740:25:1;;;2796:2;2781:18;;2774:34;;;;2824:18;;;2817:34;2728:2;2713:18;9494:19:0;2538:319:1;3446:127:0;;;;;;;;;;-1:-1:-1;3446:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3547:18:0;3520:7;3547:18;;;;;;;;;;;;3446:127;1203:103;;;;;;;;;;;;;:::i;:::-;;11316:158;;;;;;;;;;;;;:::i;11943:154::-;;;;;;;;;;-1:-1:-1;11943:154:0;;;;;:::i;:::-;;:::i;9348:30::-;;;;;;;;;;-1:-1:-1;9348:30:0;;;;-1:-1:-1;;;;;9348:30:0;;;968:87;;;;;;;;;;-1:-1:-1;1041:6:0;;-1:-1:-1;;;;;1041:6:0;968:87;;3117:104;;;;;;;;;;;;;:::i;11482:316::-;;;;;;;;;;-1:-1:-1;11482:316:0;;;;;:::i;:::-;;:::i;4665:436::-;;;;;;;;;;-1:-1:-1;4665:436:0;;;;;:::i;:::-;;:::i;3581:193::-;;;;;;;;;;-1:-1:-1;3581:193:0;;;;;:::i;:::-;;:::i;11806:129::-;;;;;;;;;;-1:-1:-1;11806:129:0;;;;;:::i;:::-;;:::i;12105:182::-;;;;;;;;;;-1:-1:-1;12105:182:0;;;;;:::i;:::-;;:::i;9273:35::-;;;;;;;;;;;;;;;;9520:20;;;;;;;;;;-1:-1:-1;9520:20:0;;;;;;;;;;;;3782:151;;;;;;;;;;-1:-1:-1;3782:151:0;;;;;:::i;:::-;;:::i;9233:33::-;;;;;;;;;;;;;;;;1314:201;;;;;;;;;;-1:-1:-1;1314:201:0;;;;;:::i;:::-;;:::i;9315:24::-;;;;;;;;;;;;;;;;3009:100;3063:13;3096:5;3089:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3009:100;:::o;3941:201::-;4024:4;630:10;4080:32;630:10;4096:7;4105:6;4080:8;:32::i;:::-;-1:-1:-1;4130:4:0;;3941:201;-1:-1:-1;;;3941:201:0:o;4150:261::-;4247:4;630:10;4305:38;4321:4;630:10;4336:6;4305:15;:38::i;:::-;4354:27;4364:4;4370:2;4374:6;4354:9;:27::i;:::-;-1:-1:-1;4399:4:0;;4150:261;-1:-1:-1;;;;4150:261:0:o;4419:238::-;4507:4;630:10;4563:64;630:10;4579:7;4616:10;4588:25;630:10;4579:7;4588:9;:25::i;:::-;:38;;;;:::i;:::-;4563:8;:64::i;1203:103::-;927:13;:11;:13::i;:::-;1268:30:::1;1295:1;1268:18;:30::i;:::-;1203:103::o:0;11316:158::-;927:13;:11;:13::i;:::-;11378:14:::1;::::0;-1:-1:-1;;;11378:14:0;::::1;;;:22;;11396:4;11378:22;11370:63;;;::::0;-1:-1:-1;;;11370:63:0;;5170:2:1;11370:63:0::1;::::0;::::1;5152:21:1::0;5209:2;5189:18;;;5182:30;5248;5228:18;;;5221:58;5296:18;;11370:63:0::1;;;;;;;;;11444:14;:22:::0;;-1:-1:-1;;;;11444:22:0::1;::::0;;11316:158::o;11943:154::-;927:13;:11;:13::i;:::-;-1:-1:-1;;;;;12038:40:0;;;::::1;;::::0;;;:31:::1;:40;::::0;;;;:51;;-1:-1:-1;;12038:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11943:154::o;3117:104::-;3173:13;3206:7;3199:14;;;;;:::i;11482:316::-;927:13;:11;:13::i;:::-;11633:66:::1;;;;;;;;11639:13;11633:66;;;;11654:13;11633:66;;;;11685:13;11669;:29;;;;:::i;:::-;11633:66:::0;;11624:75;;:6:::1;:75:::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;11720:70;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;;;;;11758:31:::1;11742:14:::0;11726;11758:31:::1;:::i;:::-;11720:70:::0;;11710:80;;:7:::1;:80:::0;::::1;::::0;::::1;::::0;;;::::1;;::::0;;;-1:-1:-1;;;;11482:316:0:o;4665:436::-;4758:4;630:10;4758:4;4841:25;630:10;4858:7;4841:9;:25::i;:::-;4814:52;;4905:15;4885:16;:35;;4877:85;;;;-1:-1:-1;;;4877:85:0;;5527:2:1;4877:85:0;;;5509:21:1;5566:2;5546:18;;;5539:30;5605:34;5585:18;;;5578:62;-1:-1:-1;;;5656:18:1;;;5649:35;5701:19;;4877:85:0;5325:401:1;4877:85:0;4998:60;5007:5;5014:7;5042:15;5023:16;:34;4998:8;:60::i;3581:193::-;3660:4;630:10;3716:28;630:10;3733:2;3737:6;3716:9;:28::i;11806:129::-;927:13;:11;:13::i;:::-;11893:15:::1;:34:::0;;-1:-1:-1;;;;;;11893:34:0::1;-1:-1:-1::0;;;;;11893:34:0;;;::::1;::::0;;;::::1;::::0;;11806:129::o;12105:182::-;927:13;:11;:13::i;:::-;-1:-1:-1;;;;;12190:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;12190:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;12245:34;;1212:41:1;;;12245:34:0::1;::::0;1185:18:1;12245:34:0::1;;;;;;;12105:182:::0;;:::o;3782:151::-;-1:-1:-1;;;;;3898:18:0;;;3871:7;3898:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3782:151::o;1314:201::-;927:13;:11;:13::i;:::-;-1:-1:-1;;;;;1403:22:0;::::1;1395:73;;;::::0;-1:-1:-1;;;1395:73:0;;5933:2:1;1395:73:0::1;::::0;::::1;5915:21:1::0;5972:2;5952:18;;;5945:30;6011:34;5991:18;;;5984:62;-1:-1:-1;;;6062:18:1;;;6055:36;6108:19;;1395:73:0::1;5731:402:1::0;1395:73:0::1;1479:28;1498:8;1479:18;:28::i;:::-;1314:201:::0;:::o;7162:346::-;-1:-1:-1;;;;;7264:19:0;;7256:68;;;;-1:-1:-1;;;7256:68:0;;6340:2:1;7256:68:0;;;6322:21:1;6379:2;6359:18;;;6352:30;6418:34;6398:18;;;6391:62;-1:-1:-1;;;6469:18:1;;;6462:34;6513:19;;7256:68:0;6138:400:1;7256:68:0;-1:-1:-1;;;;;7343:21:0;;7335:68;;;;-1:-1:-1;;;7335:68:0;;6745:2:1;7335:68:0;;;6727:21:1;6784:2;6764:18;;;6757:30;6823:34;6803:18;;;6796:62;-1:-1:-1;;;6874:18:1;;;6867:32;6916:19;;7335:68:0;6543:398:1;7335:68:0;-1:-1:-1;;;;;7416:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7468:32;;1644:25:1;;;7468:32:0;;1617:18:1;7468:32:0;;;;;;;7162:346;;;:::o;7516:419::-;7617:24;7644:25;7654:5;7661:7;7644:9;:25::i;:::-;7617:52;;-1:-1:-1;;7684:16:0;:37;7680:248;;7766:6;7746:16;:26;;7738:68;;;;-1:-1:-1;;;7738:68:0;;7148:2:1;7738:68:0;;;7130:21:1;7187:2;7167:18;;;7160:30;7226:31;7206:18;;;7199:59;7275:18;;7738:68:0;6946:353:1;7738:68:0;7850:51;7859:5;7866:7;7894:6;7875:16;:25;7850:8;:51::i;:::-;7606:329;7516:419;;;:::o;12489:2548::-;-1:-1:-1;;;;;12587:18:0;;12579:69;;;;-1:-1:-1;;;12579:69:0;;7506:2:1;12579:69:0;;;7488:21:1;7545:2;7525:18;;;7518:30;7584:34;7564:18;;;7557:62;-1:-1:-1;;;7635:18:1;;;7628:36;7681:19;;12579:69:0;7304:402:1;12579:69:0;-1:-1:-1;;;;;12667:16:0;;12659:65;;;;-1:-1:-1;;;12659:65:0;;7913:2:1;12659:65:0;;;7895:21:1;7952:2;7932:18;;;7925:30;7991:34;7971:18;;;7964:62;-1:-1:-1;;;8042:18:1;;;8035:34;8086:19;;12659:65:0;7711:400:1;12659:65:0;12752:1;12743:6;:10;12735:72;;;;-1:-1:-1;;;12735:72:0;;8318:2:1;12735:72:0;;;8300:21:1;8357:2;8337:18;;;8330:30;8396:34;8376:18;;;8369:62;-1:-1:-1;;;8447:18:1;;;8440:47;8504:19;;12735:72:0;8116:413:1;12735:72:0;1041:6;;-1:-1:-1;;;;;12824:15:0;;;1041:6;;12824:15;;;;:32;;-1:-1:-1;1041:6:0;;-1:-1:-1;;;;;12843:13:0;;;1041:6;;12843:13;;12824:32;:52;;;;-1:-1:-1;;;;;;12860:16:0;;;;12824:52;:77;;;;-1:-1:-1;;;;;;12880:21:0;;12894:6;12880:21;;12824:77;:90;;;;-1:-1:-1;12906:8:0;;-1:-1:-1;;;12906:8:0;;;;12905:9;12824:90;12820:905;;;12935:14;;-1:-1:-1;;;12935:14:0;;;;:22;;12953:4;12935:22;12931:783;;;-1:-1:-1;;;;;12982:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;13018:35:0;;;;;;:31;:35;;;;;;;;13017:36;12982:71;12978:721;;;13096:20;;13086:6;:30;;13078:105;;;;-1:-1:-1;;;13078:105:0;;8736:2:1;13078:105:0;;;8718:21:1;8775:2;8755:18;;;8748:30;8814:34;8794:18;;;8787:62;8885:32;8865:18;;;8858:60;8935:19;;13078:105:0;8534:426:1;13078:105:0;13240:9;;-1:-1:-1;;;;;3547:18:0;;3520:7;3547:18;;;;;;;;;;;13214:22;;:6;:22;:::i;:::-;:35;;13206:75;;;;-1:-1:-1;;;13206:75:0;;9167:2:1;13206:75:0;;;9149:21:1;9206:2;9186:18;;;9179:30;9245:29;9225:18;;;9218:57;9292:18;;13206:75:0;8965:351:1;13206:75:0;12978:721;;;-1:-1:-1;;;;;13311:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;13345:37:0;;;;;;:31;:37;;;;;;;;13344:38;13311:71;13307:392;;;13425:20;;13415:6;:30;;13407:106;;;;-1:-1:-1;;;13407:106:0;;9523:2:1;13407:106:0;;;9505:21:1;9562:2;9542:18;;;9535:30;9601:34;9581:18;;;9574:62;9672:33;9652:18;;;9645:61;9723:19;;13407:106:0;9321:427:1;13307:392:0;-1:-1:-1;;;;;13544:35:0;;;;;;:31;:35;;;;;;;;13539:160;;13638:9;;-1:-1:-1;;;;;3547:18:0;;3520:7;3547:18;;;;;;;;;;;13612:22;;:6;:22;:::i;:::-;:35;;13604:75;;;;-1:-1:-1;;;13604:75:0;;9167:2:1;13604:75:0;;;9149:21:1;9206:2;9186:18;;;9179:30;9245:29;9225:18;;;9218:57;9292:18;;13604:75:0;8965:351:1;13604:75:0;13780:18;;13770:4;13737:12;3547:18;;;;;;;;;;;-1:-1:-1;13752:46:0;;;;;13813:20;;-1:-1:-1;13825:8:0;;-1:-1:-1;;;13825:8:0;;;;13824:9;13813:20;:56;;;;-1:-1:-1;;;;;;13838:31:0;;;;;;:25;:31;;;;;;;;13837:32;13813:56;:86;;;;-1:-1:-1;;;;;;13874:25:0;;;;;;:19;:25;;;;;;;;13873:26;13813:86;:114;;;;-1:-1:-1;;;;;;13904:23:0;;;;;;:19;:23;;;;;;;;13903:24;13813:114;13809:218;;;13944:8;:15;;-1:-1:-1;;;;13944:15:0;-1:-1:-1;;;13944:15:0;;;13974:10;:8;:10::i;:::-;13999:8;:16;;-1:-1:-1;;;;13999:16:0;;;13809:218;14055:8;;-1:-1:-1;;;;;14078:25:0;;14039:12;14078:25;;;:19;:25;;;;;;14055:8;-1:-1:-1;;;14055:8:0;;;;;14054:9;;14078:25;;:52;;-1:-1:-1;;;;;;14107:23:0;;;;;;:19;:23;;;;;;;;14078:52;14074:100;;;-1:-1:-1;14157:5:0;14074:100;14186:12;14217:7;14213:773;;;-1:-1:-1;;;;;14245:29:0;;;;;;:25;:29;;;;;;;;:50;;;;-1:-1:-1;14278:13:0;;:17;;14245:50;14241:598;;;14334:13;;14323:34;;14353:3;;14323:25;;:6;;:10;:25::i;:::-;:29;;:34::i;:::-;14427:13;;14406:17;;14316:41;;-1:-1:-1;14427:13:0;14399:24;;14316:41;14399:24;:::i;:::-;14398:42;;;;:::i;:::-;14376:18;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;14510:13:0;;:7;14489:17;14482:24;;:4;:24;:::i;:::-;14481:42;;;;:::i;:::-;14459:18;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;14241:598:0;;-1:-1:-1;14241:598:0;;-1:-1:-1;;;;;14549:31:0;;;;;;:25;:31;;;;;;;;:51;;;;-1:-1:-1;14584:12:0;;:16;;14549:51;14545:294;;;14639:12;;14628:33;;14657:3;;14628:24;;:6;;:10;:24::i;:33::-;14730:12;;14710:16;;14621:40;;-1:-1:-1;14730:12:0;14703:23;;14621:40;14703:23;:::i;:::-;14702:40;;;;:::i;:::-;14680:18;;:62;;;;;;;:::i;:::-;;;;-1:-1:-1;;14811:12:0;;:6;14791:16;14784:23;;:4;:23;:::i;:::-;14783:40;;;;:::i;:::-;14761:18;;:62;;;;;;;:::i;:::-;;;;-1:-1:-1;;14545:294:0;14859:8;;14855:91;;14888:42;14904:4;14918;14925;14888:15;:42::i;:::-;14960:14;14970:4;14960:14;;:::i;:::-;;;14213:773;14996:33;15012:4;15018:2;15022:6;14996:15;:33::i;:::-;12568:2469;;;12489:2548;;;:::o;1063:132::-;1041:6;;-1:-1:-1;;;;;1041:6:0;630:10;1127:23;1119:68;;;;-1:-1:-1;;;1119:68:0;;10480:2:1;1119:68:0;;;10462:21:1;;;10499:18;;;10492:30;10558:34;10538:18;;;10531:62;10610:18;;1119:68:0;10278:356:1;1523:191:0;1616:6;;;-1:-1:-1;;;;;1633:17:0;;;-1:-1:-1;;;;;;1633:17:0;;;;;;;1666:40;;1616:6;;;1633:17;1616:6;;1666:40;;1597:16;;1666:40;1586:128;1523:191;:::o;15902:1401::-;15985:4;15941:23;3547:18;;;;;;;;;;;15941:50;;16002:25;16051:18;;16030;;:39;;;;:::i;:::-;16002:67;-1:-1:-1;16080:12:0;16109:20;;;:46;;-1:-1:-1;16133:22:0;;16109:46;16105:85;;;16172:7;;;15902:1401::o;16105:85::-;16224:18;;:23;;16245:2;16224:23;:::i;:::-;16206:15;:41;16202:115;;;16282:18;;:23;;16303:2;16282:23;:::i;:::-;16264:41;;16202:115;16329:23;16416:1;16396:17;16374:18;;16356:15;:36;;;;:::i;:::-;16355:58;;;;:::i;:::-;:62;;;;:::i;:::-;16329:88;-1:-1:-1;16428:26:0;16457:36;:15;16329:88;16457:19;:36::i;:::-;16428:65;-1:-1:-1;16534:21:0;16568:36;16428:65;16568:16;:36::i;:::-;16617:18;16638:44;:21;16664:17;16638:25;:44::i;:::-;16617:65;;16695:23;16721:57;16760:17;16721:34;16736:18;;16721:10;:14;;:34;;;;:::i;:57::-;16695:83;-1:-1:-1;16791:23:0;16817:28;16695:83;16817:10;:28;:::i;:::-;16879:1;16858:18;:22;;;16891:18;:22;16791:54;-1:-1:-1;16930:19:0;;;;;:42;;;16971:1;16953:15;:19;16930:42;16926:280;;;16989:46;17002:15;17019;16989:12;:46::i;:::-;17161:18;;17055:139;;;2740:25:1;;;2796:2;2781:18;;2774:34;;;2824:18;;;2817:34;;;;17055:139:0;;;;;;2728:2:1;17055:139:0;;;16926:280;17240:15;;17232:63;;-1:-1:-1;;;;;17240:15:0;;;;17269:21;;17232:63;;;;17269:21;17240:15;17232:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;15902:1401:0:o;306:98::-;364:7;391:5;395:1;391;:5;:::i;:::-;384:12;306:98;-1:-1:-1;;;306:98:0:o;412:::-;470:7;497:5;501:1;497;:5;:::i;5109:806::-;-1:-1:-1;;;;;5206:18:0;;5198:68;;;;-1:-1:-1;;;5198:68:0;;11051:2:1;5198:68:0;;;11033:21:1;11090:2;11070:18;;;11063:30;11129:34;11109:18;;;11102:62;-1:-1:-1;;;11180:18:1;;;11173:35;11225:19;;5198:68:0;10849:401:1;5198:68:0;-1:-1:-1;;;;;5285:16:0;;5277:64;;;;-1:-1:-1;;;5277:64:0;;11457:2:1;5277:64:0;;;11439:21:1;11496:2;11476:18;;;11469:30;11535:34;11515:18;;;11508:62;-1:-1:-1;;;11586:18:1;;;11579:33;11629:19;;5277:64:0;11255:399:1;5277:64:0;-1:-1:-1;;;;;5427:15:0;;5405:19;5427:15;;;;;;;;;;;5461:21;;;;5453:72;;;;-1:-1:-1;;;5453:72:0;;11861:2:1;5453:72:0;;;11843:21:1;11900:2;11880:18;;;11873:30;11939:34;11919:18;;;11912:62;-1:-1:-1;;;11990:18:1;;;11983:36;12036:19;;5453:72:0;11659:402:1;5453:72:0;-1:-1:-1;;;;;5561:15:0;;;:9;:15;;;;;;;;;;;5579:20;;;5561:38;;5779:13;;;;;;;;;;:23;;;;;;5831:26;;1644:25:1;;;5779:13:0;;5831:26;;1617:18:1;5831:26:0;;;;;;;5870:37;7943:91;200:98;258:7;285:5;289:1;285;:5;:::i;15045:473::-;15135:16;;;15149:1;15135:16;;;;;;;;15111:21;;15135:16;;;;;;;;;;-1:-1:-1;15135:16:0;15111:40;;15180:4;15162;15167:1;15162:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15162:23:0;;;-1:-1:-1;;;;;15162:23:0;;;;;15206:15;-1:-1:-1;;;;;15206:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15196:4;15201:1;15196:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;15196:32:0;;;-1:-1:-1;;;;;15196:32:0;;;;;15241:62;15258:4;15273:15;15291:11;15241:8;:62::i;:::-;15314:196;;-1:-1:-1;;;15314:196:0;;-1:-1:-1;;;;;15314:15:0;:66;;;;:196;;15395:11;;15421:1;;15437:4;;15464;;15484:15;;15314:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15526:368;15607:62;15624:4;15639:15;15657:11;15607:8;:62::i;:::-;15680:206;;-1:-1:-1;;;15680:206:0;;15752:4;15680:206;;;13912:34:1;13962:18;;;13955:34;;;15798:1:0;14005:18:1;;;13998:34;;;14048:18;;;14041:34;15838:6:0;14091:19:1;;;14084:44;15860:15:0;14144:19:1;;;14137:35;15680:15:0;-1:-1:-1;;;;;15680:31:0;;;;15719:9;;13846:19:1;;15680:206:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15526:368;;:::o;14:597: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1680:456::-;1757:6;1765;1773;1826:2;1814:9;1805:7;1801:23;1797:32;1794:52;;;1842:1;1839;1832:12;1794:52;1881:9;1868:23;1900:31;1925:5;1900:31;:::i;:::-;1950:5;-1:-1:-1;2007:2:1;1992:18;;1979:32;2020:33;1979:32;2020:33;:::i;:::-;1680:456;;2072:7;;-1:-1:-1;;;2126:2:1;2111:18;;;;2098:32;;1680:456::o;2862:247::-;2921:6;2974:2;2962:9;2953:7;2949:23;2945:32;2942:52;;;2990:1;2987;2980:12;2942:52;3029:9;3016:23;3048:31;3073:5;3048:31;:::i;3114:416::-;3179:6;3187;3240:2;3228:9;3219:7;3215:23;3211:32;3208:52;;;3256:1;3253;3246:12;3208:52;3295:9;3282:23;3314:31;3339:5;3314:31;:::i;:::-;3364:5;-1:-1:-1;3421:2:1;3406:18;;3393:32;3463:15;;3456:23;3444:36;;3434:64;;3494:1;3491;3484:12;3434:64;3517:7;3507:17;;;3114:416;;;;;:::o;3535:385::-;3621:6;3629;3637;3645;3698:3;3686:9;3677:7;3673:23;3669:33;3666:53;;;3715:1;3712;3705:12;3666:53;-1:-1:-1;;3738:23:1;;;3808:2;3793:18;;3780:32;;-1:-1:-1;3859:2:1;3844:18;;3831:32;;3910:2;3895:18;3882:32;;-1:-1:-1;3535:385:1;-1:-1:-1;3535:385:1:o;3925:388::-;3993:6;4001;4054:2;4042:9;4033:7;4029:23;4025:32;4022:52;;;4070:1;4067;4060:12;4022:52;4109:9;4096:23;4128:31;4153:5;4128:31;:::i;:::-;4178:5;-1:-1:-1;4235:2:1;4220:18;;4207:32;4248:33;4207:32;4248:33;:::i;4318:380::-;4397:1;4393:12;;;;4440;;;4461:61;;4515:4;4507:6;4503:17;4493:27;;4461:61;4568:2;4560:6;4557:14;4537:18;4534:38;4531:161;;;4614:10;4609:3;4605:20;4602:1;4595:31;4649:4;4646:1;4639:15;4677:4;4674:1;4667:15;4531:161;;4318:380;;;:::o;4703:127::-;4764:10;4759:3;4755:20;4752:1;4745:31;4795:4;4792:1;4785:15;4819:4;4816:1;4809:15;4835:128;4875:3;4906:1;4902:6;4899:1;4896:13;4893:39;;;4912:18;;:::i;:::-;-1:-1:-1;4948:9:1;;4835:128::o;9753:168::-;9793:7;9859:1;9855;9851:6;9847:14;9844:1;9841:21;9836:1;9829:9;9822:17;9818:45;9815:71;;;9866:18;;:::i;:::-;-1:-1:-1;9906:9:1;;9753:168::o;9926:217::-;9966:1;9992;9982:132;;10036:10;10031:3;10027:20;10024:1;10017:31;10071:4;10068:1;10061:15;10099:4;10096:1;10089:15;9982:132;-1:-1:-1;10128:9:1;;9926:217::o;10148:125::-;10188:4;10216:1;10213;10210:8;10207:34;;;10221:18;;:::i;:::-;-1:-1:-1;10258:9:1;;10148:125::o;12198:127::-;12259:10;12254:3;12250:20;12247:1;12240:31;12290:4;12287:1;12280:15;12314:4;12311:1;12304:15;12330:251;12400:6;12453:2;12441:9;12432:7;12428:23;12424:32;12421:52;;;12469:1;12466;12459:12;12421:52;12501:9;12495:16;12520:31;12545:5;12520:31;:::i;12586:980::-;12848:4;12896:3;12885:9;12881:19;12927:6;12916:9;12909:25;12953:2;12991:6;12986:2;12975:9;12971:18;12964:34;13034:3;13029:2;13018:9;13014:18;13007:31;13058:6;13093;13087:13;13124:6;13116;13109:22;13162:3;13151:9;13147:19;13140:26;;13201:2;13193:6;13189:15;13175:29;;13222:1;13232:195;13246:6;13243:1;13240:13;13232:195;;;13311:13;;-1:-1:-1;;;;;13307:39:1;13295:52;;13402:15;;;;13367:12;;;;13343:1;13261:9;13232:195;;;-1:-1:-1;;;;;;;13483:32:1;;;;13478:2;13463:18;;13456:60;-1:-1:-1;;;13547:3:1;13532:19;13525:35;13444:3;12586:980;-1:-1:-1;;;12586:980:1:o;14183:306::-;14271:6;14279;14287;14340:2;14328:9;14319:7;14315:23;14311:32;14308:52;;;14356:1;14353;14346:12;14308:52;14385:9;14379:16;14369:26;;14435:2;14424:9;14420:18;14414:25;14404:35;;14479:2;14468:9;14464:18;14458:25;14448:35;;14183:306;;;;;:::o

Swarm Source

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