ETH Price: $2,506.27 (+0.18%)
Gas: 3.04 Gwei

Token

DOGITA (DOGA)
 

Overview

Max Total Supply

100,000,000,000 DOGA

Holders

1,049

Market

Price

$0.00 @ 0.000000 ETH (-5.96%)

Onchain Market Cap

$143,487.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
1 DOGA

Value
$0.00 ( ~0 Eth) [0.0000%]
0x52e40c21a937ec00ad731aa39c01a61351df457b
Loading...
Loading
Loading...
Loading
Loading...
Loading

Market

Volume (24H):$1,333,320.54
Market Capitalization:$0.00
Circulating Supply:0.00 DOGA
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DOGITA

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-11
*/

/*────────────────────────────┐
Developed by Coinsult                       
 _____     _             _ _   
|     |___|_|___ ___ _ _| | |_ 
|   --| . | |   |_ -| | | |  _|
|_____|___|_|_|_|___|___|_|_|  
                               
tg: @coinsult_tg
──────────────────────────────┘

 SPDX-License-Identifier: MIT */

pragma solidity 0.8.19;

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

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

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

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

library Address {
    function sendValue(address payable recipient, uint256 amount) internal returns(bool){
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        return success; // always proceeds
    }
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

contract DOGITA is ERC20, Ownable {
    using Address for address payable;

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;

    mapping (address => bool) private _isExcludedFromFees;

    string  public creator;

    uint256 public  liquidityFeeOnBuy;
    uint256 public  liquidityFeeOnSell;

    uint256 public  marketingFeeOnBuy;
    uint256 public  marketingFeeOnSell;

    uint256 private _totalFeesOnBuy;
    uint256 private _totalFeesOnSell;

    address public  marketingWallet;

    uint256 public  swapTokensAtAmount;
    bool    private swapping;

    bool    public swapEnabled;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event MarketingWalletChanged(address marketingWallet);
    event SwapAndLiquify(uint256 tokensSwapped,uint256 bnbReceived,uint256 tokensIntoLiqudity);
    event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend);
    event SwapTokensAtAmountUpdated(uint256 swapTokensAtAmount);

    constructor () ERC20("DOGITA", "DOGA") 
    {   
        address router;
        address pinkLock;
        
        if (block.chainid == 56) {
            router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Pancake Mainnet Router
            pinkLock = 0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE; // BSC PinkLock
        } else if (block.chainid == 97) {
            router = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // BSC Pancake Testnet Router
            pinkLock = 0x5E5b9bE5fd939c578ABE5800a90C566eeEbA44a5; // BSC Testnet PinkLock
        } else if (block.chainid == 1 || block.chainid == 5) {
            router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Uniswap Mainnet % Testnet
            pinkLock = 0x71B5759d73262FBb223956913ecF4ecC51057641; // ETH PinkLock
        } else {
            revert();
        }

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        creator = "coinsult.net";

        liquidityFeeOnBuy  = 1;
        liquidityFeeOnSell = 1;

        marketingFeeOnBuy  = 3;
        marketingFeeOnSell = 3;

        _totalFeesOnBuy    = liquidityFeeOnBuy  + marketingFeeOnBuy;
        _totalFeesOnSell   = liquidityFeeOnSell + marketingFeeOnSell;

        marketingWallet = 0xF7fC367FBa1fc53Aa1f34308025B3BeD39525951;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[pinkLock] = true;

        _mintOnce(owner(), 100e9 * (10 ** decimals()));
        swapTokensAtAmount = totalSupply() / 5_000;

        tradingEnabled = false;
        swapEnabled = false;
    }

    receive() external payable {

  	}

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim contract's balance of its own tokens");
        if (token == address(0x0)) {
            payable(msg.sender).sendValue(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner{
        require(_isExcludedFromFees[account] != excluded,"Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

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

    function changeMarketingWallet(address _marketingWallet) external onlyOwner{
        require(_marketingWallet != marketingWallet,"Marketing wallet is already that address");
        require(_marketingWallet != address(0),"Marketing wallet cannot be the zero address");
        marketingWallet = _marketingWallet;

        emit MarketingWalletChanged(marketingWallet);
    }

    bool public tradingEnabled;

    function enableTrading() external onlyOwner{
        require(!tradingEnabled, "Trading already enabled.");
        tradingEnabled = true;
        swapEnabled = true;
    }

    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(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet enabled!");
       
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap &&
            !swapping &&
            to == uniswapV2Pair &&
            _totalFeesOnBuy + _totalFeesOnSell > 0 &&
            swapEnabled
        ) {
            swapping = true;

            uint256 totalFee = _totalFeesOnBuy + _totalFeesOnSell;
            uint256 liquidityShare = liquidityFeeOnBuy + liquidityFeeOnSell;
            uint256 marketingShare = marketingFeeOnBuy + marketingFeeOnSell;

            if (liquidityShare > 0) {
                uint256 liquidityTokens = contractTokenBalance * liquidityShare / totalFee;
                swapAndLiquify(liquidityTokens);
            }
            
            if (marketingShare > 0) {
                uint256 marketingTokens = contractTokenBalance * marketingShare / totalFee;
                swapAndSendMarketing(marketingTokens);
            }          

            swapping = false;
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || swapping) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            _totalFees = _totalFeesOnBuy;
        } else if (to == uniswapV2Pair) {
            _totalFees = _totalFeesOnSell;
        } else {
            _totalFees = 0;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(this), fees);
        }

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

    function setSwapEnabled(bool _enabled) external onlyOwner{
        require(swapEnabled != _enabled, "swapEnabled already at this state.");
        swapEnabled = _enabled;
    }

    function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{
        require(newAmount > totalSupply() / 1_000_000, "SwapTokensAtAmount must be greater than 0.0001% of total supply");
        swapTokensAtAmount = newAmount;

        emit SwapTokensAtAmountUpdated(swapTokensAtAmount);
    }

    function swapAndLiquify(uint256 tokens) private {
        uint256 half = tokens / 2;
        uint256 otherHalf = tokens - half;

        uint256 initialBalance = address(this).balance;

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

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            half,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {}
        
        uint256 newBalance = address(this).balance - initialBalance;

        try uniswapV2Router.addLiquidityETH{value: newBalance}(
            address(this),
            otherHalf,
            0,
            0,
            address(0xdead),
            block.timestamp
        ) {} catch {}

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapAndSendMarketing(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

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

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {}

        uint256 newBalance = address(this).balance - initialBalance;

        payable(marketingWallet).sendValue(newBalance);

        emit SwapAndSendMarketing(tokenAmount, newBalance);
    }
}

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":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendMarketing","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountUpdated","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":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"creator","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","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"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405180604001604052806006815260200165444f4749544160d01b81525060405180604001604052806004815260200163444f474160e01b81525081600390816200005f919062000782565b5060046200006e828262000782565b505050600062000083620004c860201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600080466038036200011057507310ed43c718714eb63d5aa57b78b54704e256024e905073407993575c91ce7643a4d4ccacc9a98c36ee1bbe6200019a565b466061036200014c575073d99d1c33f9fc3444f8101754abc46c52416550d19050735e5b9be5fd939c578abe5800a90c566eeeba44a56200019a565b46600114806200015c5750466005145b15620001955750737a250d5630b4cf539739df2c5dacb4c659f2488d90507371b5759d73262fbb223956913ecf4ecc510576416200019a565b600080fd5b60008290506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020691906200084e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027a91906200084e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ee91906200084e565b600680546001600160a01b038086166001600160a01b0319928316811790935560078054918516919092161790559091506200032f903090600019620004cc565b60408051808201909152600c81526b18dbda5b9cdd5b1d0b9b995d60a21b602082015260099062000361908262000782565b506001600a819055600b8190556003600c819055600d819055620003859162000896565b600e55600d54600b546200039a919062000896565b600f55601080546001600160a01b03191673f7fc367fba1fc53aa1f34308025b3bed39525951179055600160086000620003dc6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560089093527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd09334299805485166001908117909155308452828420805486168217905590871683529120805490921617905562000495620004706005546001600160a01b031690565b6200047e6012600a620009af565b6200048f9064174876e800620009c0565b620005f8565b611388620004a260025490565b620004ae9190620009da565b60115550506012805462ffff001916905550620009fd9050565b3390565b6001600160a01b038316620005345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200052b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216620006505760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200052b565b806002600082825462000664919062000896565b90915550506001600160a01b038216600090815260208190526040812080548392906200069390849062000896565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200070857607f821691505b6020821081036200072957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200077d57600081815260208120601f850160051c81016020861015620007585750805b601f850160051c820191505b81811015620007795782815560010162000764565b5050505b505050565b81516001600160401b038111156200079e576200079e620006dd565b620007b681620007af8454620006f3565b846200072f565b602080601f831160018114620007ee5760008415620007d55750858301515b600019600386901b1c1916600185901b17855562000779565b600085815260208120601f198616915b828110156200081f57888601518255948401946001909101908401620007fe565b50858210156200083e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200086157600080fd5b81516001600160a01b03811681146200087957600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115620008ac57620008ac62000880565b92915050565b600181815b80851115620008f3578160001904821115620008d757620008d762000880565b80851615620008e557918102915b93841c9390800290620008b7565b509250929050565b6000826200090c57506001620008ac565b816200091b57506000620008ac565b81600181146200093457600281146200093f576200095f565b6001915050620008ac565b60ff84111562000953576200095362000880565b50506001821b620008ac565b5060208310610133831016604e8410600b841016171562000984575081810a620008ac565b620009908383620008b2565b8060001904821115620009a757620009a762000880565b029392505050565b60006200087960ff841683620008fb565b8082028115828204841417620008ac57620008ac62000880565b600082620009f857634e487b7160e01b600052601260045260246000fd5b500490565b611eef8062000a0d6000396000f3fe6080604052600436106101e75760003560e01c806375f0a87411610102578063bb85c6d111610095578063e01af92c11610064578063e01af92c146105a1578063e2f45605146105c1578063f2fde38b146105d7578063f9d0831a146105f757600080fd5b8063bb85c6d114610505578063c024666814610525578063dc4c7dbc14610545578063dd62ed3e1461055b57600080fd5b806395d89b41116100d157806395d89b4114610490578063a457c2d7146104a5578063a9059cbb146104c5578063afa4f3b2146104e557600080fd5b806375f0a874146104275780637b3c83b1146104475780638a8c523c1461045d5780638da5cb5b1461047257600080fd5b8063395093511161017a5780635fc2e596116101495780635fc2e596146103a55780636ddd1713146103bb57806370a08231146103da578063715018a61461041057600080fd5b8063395093511461030c57806349bd5a5e1461032c5780634ada218b1461034c5780634fbee1931461036c57600080fd5b806318160ddd116101b657806318160ddd1461029b57806323b872dd146102ba5780632ce86fbf146102da578063313ce567146102f057600080fd5b806302d05d3f146101f357806306fdde031461021e578063095ea7b3146102335780631694505e1461026357600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610617565b6040516102159190611aa6565b60405180910390f35b34801561022a57600080fd5b506102086106a5565b34801561023f57600080fd5b5061025361024e366004611b09565b610737565b6040519015158152602001610215565b34801561026f57600080fd5b50600654610283906001600160a01b031681565b6040516001600160a01b039091168152602001610215565b3480156102a757600080fd5b506002545b604051908152602001610215565b3480156102c657600080fd5b506102536102d5366004611b35565b61074e565b3480156102e657600080fd5b506102ac600b5481565b3480156102fc57600080fd5b5060405160128152602001610215565b34801561031857600080fd5b50610253610327366004611b09565b610804565b34801561033857600080fd5b50600754610283906001600160a01b031681565b34801561035857600080fd5b506012546102539062010000900460ff1681565b34801561037857600080fd5b50610253610387366004611b76565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156103b157600080fd5b506102ac600c5481565b3480156103c757600080fd5b5060125461025390610100900460ff1681565b3480156103e657600080fd5b506102ac6103f5366004611b76565b6001600160a01b031660009081526020819052604090205490565b34801561041c57600080fd5b50610425610840565b005b34801561043357600080fd5b50601054610283906001600160a01b031681565b34801561045357600080fd5b506102ac600a5481565b34801561046957600080fd5b506104256108b4565b34801561047e57600080fd5b506005546001600160a01b0316610283565b34801561049c57600080fd5b5061020861094a565b3480156104b157600080fd5b506102536104c0366004611b09565b610959565b3480156104d157600080fd5b506102536104e0366004611b09565b6109f2565b3480156104f157600080fd5b50610425610500366004611b9a565b6109ff565b34801561051157600080fd5b50610425610520366004611b76565b610af0565b34801561053157600080fd5b50610425610540366004611bc1565b610c41565b34801561055157600080fd5b506102ac600d5481565b34801561056757600080fd5b506102ac610576366004611bfa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105ad57600080fd5b506104256105bc366004611c28565b610d4d565b3480156105cd57600080fd5b506102ac60115481565b3480156105e357600080fd5b506104256105f2366004611b76565b610dfe565b34801561060357600080fd5b50610425610612366004611b76565b610ee9565b6009805461062490611c45565b80601f016020809104026020016040519081016040528092919081815260200182805461065090611c45565b801561069d5780601f106106725761010080835404028352916020019161069d565b820191906000526020600020905b81548152906001019060200180831161068057829003601f168201915b505050505081565b6060600380546106b490611c45565b80601f01602080910402602001604051908101604052809291908181526020018280546106e090611c45565b801561072d5780601f106107025761010080835404028352916020019161072d565b820191906000526020600020905b81548152906001019060200180831161071057829003601f168201915b5050505050905090565b6000610744338484611095565b5060015b92915050565b6001600160a01b038316600090815260016020908152604080832033845290915281205460001981146107ee57828110156107e15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107ee8533858403611095565b6107f98585856111b9565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161074491859061083b908690611c95565b611095565b6005546001600160a01b0316331461086a5760405162461bcd60e51b81526004016107d890611ca8565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146108de5760405162461bcd60e51b81526004016107d890611ca8565b60125462010000900460ff16156109375760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642e000000000000000060448201526064016107d8565b6012805462ffff00191662010100179055565b6060600480546106b490611c45565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156109db5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107d8565b6109e83385858403611095565b5060019392505050565b60006107443384846111b9565b6005546001600160a01b03163314610a295760405162461bcd60e51b81526004016107d890611ca8565b620f4240610a3660025490565b610a409190611cdd565b8111610ab45760405162461bcd60e51b815260206004820152603f60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c790060648201526084016107d8565b60118190556040518181527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145906020015b60405180910390a150565b6005546001600160a01b03163314610b1a5760405162461bcd60e51b81526004016107d890611ca8565b6010546001600160a01b0390811690821603610b895760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c72656164792074686174604482015267206164647265737360c01b60648201526084016107d8565b6001600160a01b038116610bf35760405162461bcd60e51b815260206004820152602b60248201527f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60448201526a65726f206164647265737360a81b60648201526084016107d8565b601080546001600160a01b0319166001600160a01b0383169081179091556040519081527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b90602001610ae5565b6005546001600160a01b03163314610c6b5760405162461bcd60e51b81526004016107d890611ca8565b6001600160a01b03821660009081526008602052604090205481151560ff909116151503610cee5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b60648201526084016107d8565b6001600160a01b038216600081815260086020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610d775760405162461bcd60e51b81526004016107d890611ca8565b801515601260019054906101000a900460ff16151503610de45760405162461bcd60e51b815260206004820152602260248201527f73776170456e61626c656420616c726561647920617420746869732073746174604482015261329760f11b60648201526084016107d8565b601280549115156101000261ff0019909216919091179055565b6005546001600160a01b03163314610e285760405162461bcd60e51b81526004016107d890611ca8565b6001600160a01b038116610e8d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d8565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f135760405162461bcd60e51b81526004016107d890611ca8565b306001600160a01b03821603610f915760405162461bcd60e51b815260206004820152603760248201527f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160448201527f6c616e6365206f6620697473206f776e20746f6b656e7300000000000000000060648201526084016107d8565b6001600160a01b038116610fad57610fa933476114c1565b5050565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101a9190611cff565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561106a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108e9190611d18565b5050505b50565b6001600160a01b0383166110f75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107d8565b6001600160a01b0382166111585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107d8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111df5760405162461bcd60e51b81526004016107d890611d35565b6001600160a01b0382166112055760405162461bcd60e51b81526004016107d890611d7a565b60125462010000900460ff168061123457506001600160a01b03831660009081526008602052604090205460ff165b8061125757506001600160a01b03821660009081526008602052604090205460ff165b6112a35760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016107d8565b806000036112bc576112b783836000611570565b505050565b30600090815260208190526040902054601154811080159081906112e3575060125460ff16155b80156112fc57506007546001600160a01b038581169116145b801561131757506000600f54600e546113159190611c95565b115b801561132a5750601254610100900460ff165b156113da576012805460ff19166001179055600f54600e5460009161134e91611c95565b90506000600b54600a546113629190611c95565b90506000600d54600c546113769190611c95565b905081156113a25760008361138b8488611dbd565b6113959190611cdd565b90506113a0816116c5565b505b80156113cc576000836113b58388611dbd565b6113bf9190611cdd565b90506113ca81611906565b505b50506012805460ff19169055505b6001600160a01b03851660009081526008602052604081205460ff168061141957506001600160a01b03851660009081526008602052604090205460ff165b80611426575060125460ff165b1561143357506000611475565b6007546001600160a01b03908116908716036114525750600e54611475565b6007546001600160a01b03908116908616036114715750600f54611475565b5060005b80156114ae57600060646114898387611dbd565b6114939190611cdd565b905061149f8186611dd4565b94506114ac873083611570565b505b6114b9868686611570565b505050505050565b6000814710156115135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107d8565b6000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114611560576040519150601f19603f3d011682016040523d82523d6000602084013e611565565b606091505b509095945050505050565b6001600160a01b0383166115965760405162461bcd60e51b81526004016107d890611d35565b6001600160a01b0382166115bc5760405162461bcd60e51b81526004016107d890611d7a565b6001600160a01b038316600090815260208190526040902054818110156116345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107d8565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061166b908490611c95565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116b791815260200190565b60405180910390a350505050565b60006116d2600283611cdd565b905060006116e08284611dd4565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061171a5761171a611de7565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611773573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117979190611dfd565b816001815181106117aa576117aa611de7565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac947906117f0908790600090869030904290600401611e1a565b600060405180830381600087803b15801561180a57600080fd5b505af192505050801561181b575060015b5060006118288347611dd4565b60065460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201529192506001600160a01b03169063f305d71990839060c40160606040518083038185885af1935050505080156118b4575060408051601f3d908101601f191682019092526118b191810190611e8b565b60015b156118bd575050505b60408051868152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505050505050565b60408051600280825260608201835247926000929190602083019080368337019050509050308160008151811061193f5761193f611de7565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bc9190611dfd565b816001815181106119cf576119cf611de7565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac94790611a15908690600090869030904290600401611e1a565b600060405180830381600087803b158015611a2f57600080fd5b505af1925050508015611a40575060015b506000611a4d8347611dd4565b601054909150611a66906001600160a01b0316826114c1565b5060408051858152602081018390527f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999910160405180910390a150505050565b600060208083528351808285015260005b81811015611ad357858101830151858201604001528201611ab7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461109257600080fd5b60008060408385031215611b1c57600080fd5b8235611b2781611af4565b946020939093013593505050565b600080600060608486031215611b4a57600080fd5b8335611b5581611af4565b92506020840135611b6581611af4565b929592945050506040919091013590565b600060208284031215611b8857600080fd5b8135611b9381611af4565b9392505050565b600060208284031215611bac57600080fd5b5035919050565b801515811461109257600080fd5b60008060408385031215611bd457600080fd5b8235611bdf81611af4565b91506020830135611bef81611bb3565b809150509250929050565b60008060408385031215611c0d57600080fd5b8235611c1881611af4565b91506020830135611bef81611af4565b600060208284031215611c3a57600080fd5b8135611b9381611bb3565b600181811c90821680611c5957607f821691505b602082108103611c7957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561074857610748611c7f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082611cfa57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611d1157600080fd5b5051919050565b600060208284031215611d2a57600080fd5b8151611b9381611bb3565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808202811582820484141761074857610748611c7f565b8181038181111561074857610748611c7f565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611e0f57600080fd5b8151611b9381611af4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e6a5784516001600160a01b031683529383019391830191600101611e45565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611ea057600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f6214a9dabf5ff188105d0a49a4c96479aad4ba8fb859d452d12c8a91883ce0f64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c806375f0a87411610102578063bb85c6d111610095578063e01af92c11610064578063e01af92c146105a1578063e2f45605146105c1578063f2fde38b146105d7578063f9d0831a146105f757600080fd5b8063bb85c6d114610505578063c024666814610525578063dc4c7dbc14610545578063dd62ed3e1461055b57600080fd5b806395d89b41116100d157806395d89b4114610490578063a457c2d7146104a5578063a9059cbb146104c5578063afa4f3b2146104e557600080fd5b806375f0a874146104275780637b3c83b1146104475780638a8c523c1461045d5780638da5cb5b1461047257600080fd5b8063395093511161017a5780635fc2e596116101495780635fc2e596146103a55780636ddd1713146103bb57806370a08231146103da578063715018a61461041057600080fd5b8063395093511461030c57806349bd5a5e1461032c5780634ada218b1461034c5780634fbee1931461036c57600080fd5b806318160ddd116101b657806318160ddd1461029b57806323b872dd146102ba5780632ce86fbf146102da578063313ce567146102f057600080fd5b806302d05d3f146101f357806306fdde031461021e578063095ea7b3146102335780631694505e1461026357600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610617565b6040516102159190611aa6565b60405180910390f35b34801561022a57600080fd5b506102086106a5565b34801561023f57600080fd5b5061025361024e366004611b09565b610737565b6040519015158152602001610215565b34801561026f57600080fd5b50600654610283906001600160a01b031681565b6040516001600160a01b039091168152602001610215565b3480156102a757600080fd5b506002545b604051908152602001610215565b3480156102c657600080fd5b506102536102d5366004611b35565b61074e565b3480156102e657600080fd5b506102ac600b5481565b3480156102fc57600080fd5b5060405160128152602001610215565b34801561031857600080fd5b50610253610327366004611b09565b610804565b34801561033857600080fd5b50600754610283906001600160a01b031681565b34801561035857600080fd5b506012546102539062010000900460ff1681565b34801561037857600080fd5b50610253610387366004611b76565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156103b157600080fd5b506102ac600c5481565b3480156103c757600080fd5b5060125461025390610100900460ff1681565b3480156103e657600080fd5b506102ac6103f5366004611b76565b6001600160a01b031660009081526020819052604090205490565b34801561041c57600080fd5b50610425610840565b005b34801561043357600080fd5b50601054610283906001600160a01b031681565b34801561045357600080fd5b506102ac600a5481565b34801561046957600080fd5b506104256108b4565b34801561047e57600080fd5b506005546001600160a01b0316610283565b34801561049c57600080fd5b5061020861094a565b3480156104b157600080fd5b506102536104c0366004611b09565b610959565b3480156104d157600080fd5b506102536104e0366004611b09565b6109f2565b3480156104f157600080fd5b50610425610500366004611b9a565b6109ff565b34801561051157600080fd5b50610425610520366004611b76565b610af0565b34801561053157600080fd5b50610425610540366004611bc1565b610c41565b34801561055157600080fd5b506102ac600d5481565b34801561056757600080fd5b506102ac610576366004611bfa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105ad57600080fd5b506104256105bc366004611c28565b610d4d565b3480156105cd57600080fd5b506102ac60115481565b3480156105e357600080fd5b506104256105f2366004611b76565b610dfe565b34801561060357600080fd5b50610425610612366004611b76565b610ee9565b6009805461062490611c45565b80601f016020809104026020016040519081016040528092919081815260200182805461065090611c45565b801561069d5780601f106106725761010080835404028352916020019161069d565b820191906000526020600020905b81548152906001019060200180831161068057829003601f168201915b505050505081565b6060600380546106b490611c45565b80601f01602080910402602001604051908101604052809291908181526020018280546106e090611c45565b801561072d5780601f106107025761010080835404028352916020019161072d565b820191906000526020600020905b81548152906001019060200180831161071057829003601f168201915b5050505050905090565b6000610744338484611095565b5060015b92915050565b6001600160a01b038316600090815260016020908152604080832033845290915281205460001981146107ee57828110156107e15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6107ee8533858403611095565b6107f98585856111b9565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161074491859061083b908690611c95565b611095565b6005546001600160a01b0316331461086a5760405162461bcd60e51b81526004016107d890611ca8565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146108de5760405162461bcd60e51b81526004016107d890611ca8565b60125462010000900460ff16156109375760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642e000000000000000060448201526064016107d8565b6012805462ffff00191662010100179055565b6060600480546106b490611c45565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156109db5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107d8565b6109e83385858403611095565b5060019392505050565b60006107443384846111b9565b6005546001600160a01b03163314610a295760405162461bcd60e51b81526004016107d890611ca8565b620f4240610a3660025490565b610a409190611cdd565b8111610ab45760405162461bcd60e51b815260206004820152603f60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e3030303125206f6620746f74616c20737570706c790060648201526084016107d8565b60118190556040518181527f7c26bfee26f82e8cb57af48f4019cc64582db6fac7bad778433f10572ae8b145906020015b60405180910390a150565b6005546001600160a01b03163314610b1a5760405162461bcd60e51b81526004016107d890611ca8565b6010546001600160a01b0390811690821603610b895760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c72656164792074686174604482015267206164647265737360c01b60648201526084016107d8565b6001600160a01b038116610bf35760405162461bcd60e51b815260206004820152602b60248201527f4d61726b6574696e672077616c6c65742063616e6e6f7420626520746865207a60448201526a65726f206164647265737360a81b60648201526084016107d8565b601080546001600160a01b0319166001600160a01b0383169081179091556040519081527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b90602001610ae5565b6005546001600160a01b03163314610c6b5760405162461bcd60e51b81526004016107d890611ca8565b6001600160a01b03821660009081526008602052604090205481151560ff909116151503610cee5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b60648201526084016107d8565b6001600160a01b038216600081815260086020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610d775760405162461bcd60e51b81526004016107d890611ca8565b801515601260019054906101000a900460ff16151503610de45760405162461bcd60e51b815260206004820152602260248201527f73776170456e61626c656420616c726561647920617420746869732073746174604482015261329760f11b60648201526084016107d8565b601280549115156101000261ff0019909216919091179055565b6005546001600160a01b03163314610e285760405162461bcd60e51b81526004016107d890611ca8565b6001600160a01b038116610e8d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d8565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f135760405162461bcd60e51b81526004016107d890611ca8565b306001600160a01b03821603610f915760405162461bcd60e51b815260206004820152603760248201527f4f776e65722063616e6e6f7420636c61696d20636f6e7472616374277320626160448201527f6c616e6365206f6620697473206f776e20746f6b656e7300000000000000000060648201526084016107d8565b6001600160a01b038116610fad57610fa933476114c1565b5050565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101a9190611cff565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561106a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108e9190611d18565b5050505b50565b6001600160a01b0383166110f75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107d8565b6001600160a01b0382166111585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107d8565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111df5760405162461bcd60e51b81526004016107d890611d35565b6001600160a01b0382166112055760405162461bcd60e51b81526004016107d890611d7a565b60125462010000900460ff168061123457506001600160a01b03831660009081526008602052604090205460ff165b8061125757506001600160a01b03821660009081526008602052604090205460ff165b6112a35760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016107d8565b806000036112bc576112b783836000611570565b505050565b30600090815260208190526040902054601154811080159081906112e3575060125460ff16155b80156112fc57506007546001600160a01b038581169116145b801561131757506000600f54600e546113159190611c95565b115b801561132a5750601254610100900460ff165b156113da576012805460ff19166001179055600f54600e5460009161134e91611c95565b90506000600b54600a546113629190611c95565b90506000600d54600c546113769190611c95565b905081156113a25760008361138b8488611dbd565b6113959190611cdd565b90506113a0816116c5565b505b80156113cc576000836113b58388611dbd565b6113bf9190611cdd565b90506113ca81611906565b505b50506012805460ff19169055505b6001600160a01b03851660009081526008602052604081205460ff168061141957506001600160a01b03851660009081526008602052604090205460ff165b80611426575060125460ff165b1561143357506000611475565b6007546001600160a01b03908116908716036114525750600e54611475565b6007546001600160a01b03908116908616036114715750600f54611475565b5060005b80156114ae57600060646114898387611dbd565b6114939190611cdd565b905061149f8186611dd4565b94506114ac873083611570565b505b6114b9868686611570565b505050505050565b6000814710156115135760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107d8565b6000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114611560576040519150601f19603f3d011682016040523d82523d6000602084013e611565565b606091505b509095945050505050565b6001600160a01b0383166115965760405162461bcd60e51b81526004016107d890611d35565b6001600160a01b0382166115bc5760405162461bcd60e51b81526004016107d890611d7a565b6001600160a01b038316600090815260208190526040902054818110156116345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107d8565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061166b908490611c95565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116b791815260200190565b60405180910390a350505050565b60006116d2600283611cdd565b905060006116e08284611dd4565b6040805160028082526060820183529293504792600092602083019080368337019050509050308160008151811061171a5761171a611de7565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611773573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117979190611dfd565b816001815181106117aa576117aa611de7565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac947906117f0908790600090869030904290600401611e1a565b600060405180830381600087803b15801561180a57600080fd5b505af192505050801561181b575060015b5060006118288347611dd4565b60065460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201529192506001600160a01b03169063f305d71990839060c40160606040518083038185885af1935050505080156118b4575060408051601f3d908101601f191682019092526118b191810190611e8b565b60015b156118bd575050505b60408051868152602081018390529081018590527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505050505050565b60408051600280825260608201835247926000929190602083019080368337019050509050308160008151811061193f5761193f611de7565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bc9190611dfd565b816001815181106119cf576119cf611de7565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b815291169063791ac94790611a15908690600090869030904290600401611e1a565b600060405180830381600087803b158015611a2f57600080fd5b505af1925050508015611a40575060015b506000611a4d8347611dd4565b601054909150611a66906001600160a01b0316826114c1565b5060408051858152602081018390527f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999910160405180910390a150505050565b600060208083528351808285015260005b81811015611ad357858101830151858201604001528201611ab7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461109257600080fd5b60008060408385031215611b1c57600080fd5b8235611b2781611af4565b946020939093013593505050565b600080600060608486031215611b4a57600080fd5b8335611b5581611af4565b92506020840135611b6581611af4565b929592945050506040919091013590565b600060208284031215611b8857600080fd5b8135611b9381611af4565b9392505050565b600060208284031215611bac57600080fd5b5035919050565b801515811461109257600080fd5b60008060408385031215611bd457600080fd5b8235611bdf81611af4565b91506020830135611bef81611bb3565b809150509250929050565b60008060408385031215611c0d57600080fd5b8235611c1881611af4565b91506020830135611bef81611af4565b600060208284031215611c3a57600080fd5b8135611b9381611bb3565b600181811c90821680611c5957607f821691505b602082108103611c7957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561074857610748611c7f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082611cfa57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611d1157600080fd5b5051919050565b600060208284031215611d2a57600080fd5b8151611b9381611bb3565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808202811582820484141761074857610748611c7f565b8181038181111561074857610748611c7f565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611e0f57600080fd5b8151611b9381611af4565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e6a5784516001600160a01b031683529383019391830191600101611e45565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611ea057600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f6214a9dabf5ff188105d0a49a4c96479aad4ba8fb859d452d12c8a91883ce0f64736f6c63430008130033

Deployed Bytecode Sourcemap

8374:8840:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8605:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4285:100;;;;;;;;;;;;;:::i;5199:169::-;;;;;;;;;;-1:-1:-1;5199:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5199:169:0;1023:187:1;8457:41:0;;;;;;;;;;-1:-1:-1;8457:41:0;;;;-1:-1:-1;;;;;8457:41:0;;;;;;-1:-1:-1;;;;;1404:32:1;;;1386:51;;1374:2;1359:18;8457:41:0;1215:228:1;4606:108:0;;;;;;;;;;-1:-1:-1;4694:12:0;;4606:108;;;1594:25:1;;;1582:2;1567:18;4606:108:0;1448:177:1;5376:573:0;;;;;;;;;;-1:-1:-1;5376:573:0;;;;;:::i;:::-;;:::i;8676:34::-;;;;;;;;;;;;;;;;4505:93;;;;;;;;;;-1:-1:-1;4505:93:0;;4588:2;2233:36:1;;2221:2;2206:18;4505:93:0;2091:184:1;5957:215:0;;;;;;;;;;-1:-1:-1;5957:215:0;;;;;:::i;:::-;;:::i;8505:29::-;;;;;;;;;;-1:-1:-1;8505:29:0;;;;-1:-1:-1;;;;;8505:29:0;;;12766:26;;;;;;;;;;-1:-1:-1;12766:26:0;;;;;;;;;;;12246:125;;;;;;;;;;-1:-1:-1;12246:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;12335:28:0;12311:4;12335:28;;;:19;:28;;;;;;;;;12246:125;8719:33;;;;;;;;;;;;;;;;8995:26;;;;;;;;;;-1:-1:-1;8995:26:0;;;;;;;;;;;4722:127;;;;;;;;;;-1:-1:-1;4722:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4823:18:0;4796:7;4823:18;;;;;;;;;;;;4722:127;3474:148;;;;;;;;;;;;;:::i;:::-;;8881:31;;;;;;;;;;-1:-1:-1;8881:31:0;;;;-1:-1:-1;;;;;8881:31:0;;;8636:33;;;;;;;;;;;;;;;;12801:175;;;;;;;;;;;;;:::i;3260:79::-;;;;;;;;;;-1:-1:-1;3325:6:0;;-1:-1:-1;;;;;3325:6:0;3260:79;;4393:104;;;;;;;;;;;;;:::i;6180:413::-;;;;;;;;;;-1:-1:-1;6180:413:0;;;;;:::i;:::-;;:::i;4857:175::-;;;;;;;;;;-1:-1:-1;4857:175:0;;;;;:::i;:::-;;:::i;15303:304::-;;;;;;;;;;-1:-1:-1;15303:304:0;;;;;:::i;:::-;;:::i;12379:379::-;;;;;;;;;;-1:-1:-1;12379:379:0;;;;;:::i;:::-;;:::i;11948:290::-;;;;;;;;;;-1:-1:-1;11948:290:0;;;;;:::i;:::-;;:::i;8759:34::-;;;;;;;;;;;;;;;;5040:151;;;;;;;;;;-1:-1:-1;5040:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5156:18:0;;;5129:7;5156:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5040:151;15116:179;;;;;;;;;;-1:-1:-1;15116:179:0;;;;;:::i;:::-;;:::i;8921:34::-;;;;;;;;;;;;;;;;3630:244;;;;;;;;;;-1:-1:-1;3630:244:0;;;;;:::i;:::-;;:::i;11475:465::-;;;;;;;;;;-1:-1:-1;11475:465:0;;;;;:::i;:::-;;:::i;8605:22::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4285:100::-;4339:13;4372:5;4365:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4285:100;:::o;5199:169::-;5282:4;5299:39;2663:10;5322:7;5331:6;5299:8;:39::i;:::-;-1:-1:-1;5356:4:0;5199:169;;;;;:::o;5376:573::-;-1:-1:-1;;;;;5560:19:0;;5516:4;5560:19;;;:11;:19;;;;;;;;2663:10;5560:33;;;;;;;;-1:-1:-1;;5608:37:0;;5604:265;;5690:6;5670:16;:26;;5662:79;;;;-1:-1:-1;;;5662:79:0;;4661:2:1;5662:79:0;;;4643:21:1;4700:2;4680:18;;;4673:30;4739:34;4719:18;;;4712:62;-1:-1:-1;;;4790:18:1;;;4783:38;4838:19;;5662:79:0;;;;;;;;;5785:57;5794:6;2663:10;5835:6;5816:16;:25;5785:8;:57::i;:::-;5881:36;5891:6;5899:9;5910:6;5881:9;:36::i;:::-;-1:-1:-1;5937:4:0;;5376:573;-1:-1:-1;;;;5376:573:0:o;5957:215::-;2663:10;6045:4;6094:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6094:34:0;;;;;;;;;;6045:4;;6062:80;;6085:7;;6094:47;;6131:10;;6094:47;:::i;:::-;6062:8;:80::i;3474:148::-;3387:6;;-1:-1:-1;;;;;3387:6:0;2663:10;3387:22;3379:67;;;;-1:-1:-1;;;3379:67:0;;;;;;;:::i;:::-;3565:6:::1;::::0;3544:40:::1;::::0;3581:1:::1;::::0;-1:-1:-1;;;;;3565:6:0::1;::::0;3544:40:::1;::::0;3581:1;;3544:40:::1;3595:6;:19:::0;;-1:-1:-1;;;;;;3595:19:0::1;::::0;;3474:148::o;12801:175::-;3387:6;;-1:-1:-1;;;;;3387:6:0;2663:10;3387:22;3379:67;;;;-1:-1:-1;;;3379:67:0;;;;;;;:::i;:::-;12864:14:::1;::::0;;;::::1;;;12863:15;12855:52;;;::::0;-1:-1:-1;;;12855:52:0;;5693:2:1;12855:52:0::1;::::0;::::1;5675:21:1::0;5732:2;5712:18;;;5705:30;5771:26;5751:18;;;5744:54;5815:18;;12855:52:0::1;5491:348:1::0;12855:52:0::1;12918:14;:21:::0;;-1:-1:-1;;12950:18:0;;;;;12801:175::o;4393:104::-;4449:13;4482:7;4475:14;;;;;:::i;6180:413::-;2663:10;6273:4;6317:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6317:34:0;;;;;;;;;;6370:35;;;;6362:85;;;;-1:-1:-1;;;6362:85:0;;6046:2:1;6362:85:0;;;6028:21:1;6085:2;6065:18;;;6058:30;6124:34;6104:18;;;6097:62;-1:-1:-1;;;6175:18:1;;;6168:35;6220:19;;6362:85:0;5844:401:1;6362:85:0;6483:67;2663:10;6506:7;6534:15;6515:16;:34;6483:8;:67::i;:::-;-1:-1:-1;6581:4:0;;6180:413;-1:-1:-1;;;6180:413:0:o;4857:175::-;4943:4;4960:42;2663:10;4984:9;4995:6;4960:9;:42::i;15303:304::-;3387:6;;-1:-1:-1;;;;;3387:6:0;2663:10;3387:22;3379:67;;;;-1:-1:-1;;;3379:67:0;;;;;;;:::i;:::-;15418:9:::1;15402:13;4694:12:::0;;;4606:108;15402:13:::1;:25;;;;:::i;:::-;15390:9;:37;15382:113;;;::::0;-1:-1:-1;;;15382:113:0;;6674:2:1;15382:113:0::1;::::0;::::1;6656:21:1::0;6713:2;6693:18;;;6686:30;6752:34;6732:18;;;6725:62;6823:33;6803:18;;;6796:61;6874:19;;15382:113:0::1;6472:427:1::0;15382:113:0::1;15506:18;:30:::0;;;15554:45:::1;::::0;1594:25:1;;;15554:45:0::1;::::0;1582:2:1;1567:18;15554:45:0::1;;;;;;;;15303:304:::0;:::o;12379:379::-;3387:6;;-1:-1:-1;;;;;3387:6:0;2663:10;3387:22;3379:67;;;;-1:-1:-1;;;3379:67:0;;;;;;;:::i;:::-;12493:15:::1;::::0;-1:-1:-1;;;;;12493:15:0;;::::1;12473:35:::0;;::::1;::::0;12465:87:::1;;;::::0;-1:-1:-1;;;12465:87:0;;7106:2:1;12465:87:0::1;::::0;::::1;7088:21:1::0;7145:2;7125:18;;;7118:30;7184:34;7164:18;;;7157:62;-1:-1:-1;;;7235:18:1;;;7228:38;7283:19;;12465:87:0::1;6904:404:1::0;12465:87:0::1;-1:-1:-1::0;;;;;12571:30:0;::::1;12563:85;;;::::0;-1:-1:-1;;;12563:85:0;;7515:2:1;12563:85:0::1;::::0;::::1;7497:21:1::0;7554:2;7534:18;;;7527:30;7593:34;7573:18;;;7566:62;-1:-1:-1;;;7644:18:1;;;7637:41;7695:19;;12563:85:0::1;7313:407:1::0;12563:85:0::1;12659:15;:34:::0;;-1:-1:-1;;;;;;12659:34:0::1;-1:-1:-1::0;;;;;12659:34:0;::::1;::::0;;::::1;::::0;;;12711:39:::1;::::0;1386:51:1;;;12711:39:0::1;::::0;1374:2:1;1359:18;12711:39:0::1;1215:228:1::0;11948:290:0;3387:6;;-1:-1:-1;;;;;3387:6:0;2663:10;3387:22;3379:67;;;;-1:-1:-1;;;3379:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12042:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;:40;::::1;;:28;::::0;;::::1;:40;;::::0;12034:94:::1;;;::::0;-1:-1:-1;;;12034:94:0;;7927:2:1;12034:94:0::1;::::0;::::1;7909:21:1::0;7966:2;7946:18;;;7939:30;8005:34;7985:18;;;7978:62;-1:-1:-1;;;8056:18:1;;;8049:40;8106:19;;12034:94:0::1;7725:406:1::0;12034:94:0::1;-1:-1:-1::0;;;;;12139:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;12139:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;12196:34;;1163:41:1;;;12196:34:0::1;::::0;1136:18:1;12196:34:0::1;;;;;;;11948:290:::0;;:::o;15116:179::-;3387:6;;-1:-1:-1;;;;;3387:6:0;2663:10;3387:22;3379:67;;;;-1:-1:-1;;;3379:67:0;;;;;;;:::i;:::-;15207:8:::1;15192:23;;:11;;;;;;;;;;;:23;;::::0;15184:70:::1;;;::::0;-1:-1:-1;;;15184:70:0;;8338:2:1;15184:70:0::1;::::0;::::1;8320:21:1::0;8377:2;8357:18;;;8350:30;8416:34;8396:18;;;8389:62;-1:-1:-1;;;8467:18:1;;;8460:32;8509:19;;15184:70:0::1;8136:398:1::0;15184:70:0::1;15265:11;:22:::0;;;::::1;;;;-1:-1:-1::0;;15265:22:0;;::::1;::::0;;;::::1;::::0;;15116:179::o;3630:244::-;3387:6;;-1:-1:-1;;;;;3387:6:0;2663:10;3387:22;3379:67;;;;-1:-1:-1;;;3379:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3719:22:0;::::1;3711:73;;;::::0;-1:-1:-1;;;3711:73:0;;8741:2:1;3711:73:0::1;::::0;::::1;8723:21:1::0;8780:2;8760:18;;;8753:30;8819:34;8799:18;;;8792:62;-1:-1:-1;;;8870:18:1;;;8863:36;8916:19;;3711:73:0::1;8539:402:1::0;3711:73:0::1;3821:6;::::0;3800:38:::1;::::0;-1:-1:-1;;;;;3800:38:0;;::::1;::::0;3821:6:::1;::::0;3800:38:::1;::::0;3821:6:::1;::::0;3800:38:::1;3849:6;:17:::0;;-1:-1:-1;;;;;;3849:17:0::1;-1:-1:-1::0;;;;;3849:17:0;;;::::1;::::0;;;::::1;::::0;;3630:244::o;11475:465::-;3387:6;;-1:-1:-1;;;;;3387:6:0;2663:10;3387:22;3379:67;;;;-1:-1:-1;;;3379:67:0;;;;;;;:::i;:::-;11571:4:::1;-1:-1:-1::0;;;;;11554:22:0;::::1;::::0;11546:90:::1;;;::::0;-1:-1:-1;;;11546:90:0;;9148:2:1;11546:90:0::1;::::0;::::1;9130:21:1::0;9187:2;9167:18;;;9160:30;9226:34;9206:18;;;9199:62;9297:25;9277:18;;;9270:53;9340:19;;11546:90:0::1;8946:419:1::0;11546:90:0::1;-1:-1:-1::0;;;;;11651:21:0;::::1;11647:127;;11689:52;11697:10;11719:21;11689:29;:52::i;:::-;;11475:465:::0;:::o;11647:127::-:1;11846:35;::::0;-1:-1:-1;;;11846:35:0;;11875:4:::1;11846:35;::::0;::::1;1386:51:1::0;11811:5:0;;11784:17:::1;::::0;-1:-1:-1;;;;;11846:20:0;::::1;::::0;::::1;::::0;1359:18:1;;11846:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11892:40;::::0;-1:-1:-1;;;11892:40:0;;11912:10:::1;11892:40;::::0;::::1;9733:51:1::0;9800:18;;;9793:34;;;11828:53:0;;-1:-1:-1;;;;;;11892:19:0;::::1;::::0;::::1;::::0;9706:18:1;;11892:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11535:405;;3457:1;11475:465:::0;:::o;7987:380::-;-1:-1:-1;;;;;8123:19:0;;8115:68;;;;-1:-1:-1;;;8115:68:0;;10290:2:1;8115:68:0;;;10272:21:1;10329:2;10309:18;;;10302:30;10368:34;10348:18;;;10341:62;-1:-1:-1;;;10419:18:1;;;10412:34;10463:19;;8115:68:0;10088:400:1;8115:68:0;-1:-1:-1;;;;;8202:21:0;;8194:68;;;;-1:-1:-1;;;8194:68:0;;10695:2:1;8194:68:0;;;10677:21:1;10734:2;10714:18;;;10707:30;10773:34;10753:18;;;10746:62;-1:-1:-1;;;10824:18:1;;;10817:32;10866:19;;8194:68:0;10493:398:1;8194:68:0;-1:-1:-1;;;;;8275:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8327:32;;1594:25:1;;;8327:32:0;;1567:18:1;8327:32:0;;;;;;;7987:380;;;:::o;12984:2124::-;-1:-1:-1;;;;;13081:18:0;;13073:68;;;;-1:-1:-1;;;13073:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13160:16:0;;13152:64;;;;-1:-1:-1;;;13152:64:0;;;;;;;:::i;:::-;13235:14;;;;;;;;:43;;-1:-1:-1;;;;;;13253:25:0;;;;;;:19;:25;;;;;;;;13235:43;:70;;;-1:-1:-1;;;;;;13282:23:0;;;;;;:19;:23;;;;;;;;13235:70;13227:107;;;;-1:-1:-1;;;13227:107:0;;11908:2:1;13227:107:0;;;11890:21:1;11947:2;11927:18;;;11920:30;11986:26;11966:18;;;11959:54;12030:18;;13227:107:0;11706:348:1;13227:107:0;13358:6;13368:1;13358:11;13354:93;;13386:28;13402:4;13408:2;13412:1;13386:15;:28::i;:::-;12984:2124;;;:::o;13354:93::-;13502:4;13453:28;4823:18;;;;;;;;;;;13560;;13536:42;;;;;;;13595:33;;-1:-1:-1;13620:8:0;;;;13619:9;13595:33;:69;;;;-1:-1:-1;13651:13:0;;-1:-1:-1;;;;;13645:19:0;;;13651:13;;13645:19;13595:69;:124;;;;;13718:1;13699:16;;13681:15;;:34;;;;:::i;:::-;:38;13595:124;:152;;;;-1:-1:-1;13736:11:0;;;;;;;13595:152;13591:895;;;13774:8;:15;;-1:-1:-1;;13774:15:0;13785:4;13774:15;;;13843:16;;13825:15;;13774:8;;13825:34;;;:::i;:::-;13806:53;;13874:22;13919:18;;13899:17;;:38;;;;:::i;:::-;13874:63;;13952:22;13997:18;;13977:17;;:38;;;;:::i;:::-;13952:63;-1:-1:-1;14036:18:0;;14032:183;;14075:23;14141:8;14101:37;14124:14;14101:20;:37;:::i;:::-;:48;;;;:::i;:::-;14075:74;;14168:31;14183:15;14168:14;:31::i;:::-;14056:159;14032:183;14247:18;;14243:189;;14286:23;14352:8;14312:37;14335:14;14312:20;:37;:::i;:::-;:48;;;;:::i;:::-;14286:74;;14379:37;14400:15;14379:20;:37::i;:::-;14267:165;14243:189;-1:-1:-1;;14458:8:0;:16;;-1:-1:-1;;14458:16:0;;;-1:-1:-1;13591:895:0;-1:-1:-1;;;;;14531:25:0;;14498:18;14531:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;14560:23:0;;;;;;:19;:23;;;;;;;;14531:52;:64;;;-1:-1:-1;14587:8:0;;;;14531:64;14527:333;;;-1:-1:-1;14625:1:0;14527:333;;;14656:13;;-1:-1:-1;;;;;14656:13:0;;;14648:21;;;;14644:216;;-1:-1:-1;14699:15:0;;14644:216;;;14742:13;;-1:-1:-1;;;;;14742:13:0;;;14736:19;;;;14732:128;;-1:-1:-1;14785:16:0;;14732:128;;;-1:-1:-1;14847:1:0;14732:128;14876:14;;14872:183;;14907:12;14946:3;14923:19;14932:10;14923:6;:19;:::i;:::-;14922:27;;;;:::i;:::-;14907:42;-1:-1:-1;14973:13:0;14907:42;14973:6;:13;:::i;:::-;14964:22;;15001:42;15017:4;15031;15038;15001:15;:42::i;:::-;14892:163;14872:183;15067:33;15083:4;15089:2;15093:6;15067:15;:33::i;:::-;13062:2046;;;12984:2124;;;:::o;2258:285::-;2337:4;2386:6;2361:21;:31;;2353:73;;;;-1:-1:-1;;;2353:73:0;;12567:2:1;2353:73:0;;;12549:21:1;12606:2;12586:18;;;12579:30;12645:31;12625:18;;;12618:59;12694:18;;2353:73:0;12365:353:1;2353:73:0;2440:12;2458:9;-1:-1:-1;;;;;2458:14:0;2480:6;2458:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2439:52:0;;2258:285;-1:-1:-1;;;;;2258:285:0:o;6601:614::-;-1:-1:-1;;;;;6741:20:0;;6733:70;;;;-1:-1:-1;;;6733:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6822:23:0;;6814:71;;;;-1:-1:-1;;;6814:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6922:17:0;;6898:21;6922:17;;;;;;;;;;;6958:23;;;;6950:74;;;;-1:-1:-1;;;6950:74:0;;13135:2:1;6950:74:0;;;13117:21:1;13174:2;13154:18;;;13147:30;13213:34;13193:18;;;13186:62;-1:-1:-1;;;13264:18:1;;;13257:36;13310:19;;6950:74:0;12933:402:1;6950:74:0;-1:-1:-1;;;;;7060:17:0;;;:9;:17;;;;;;;;;;;7080:22;;;7060:42;;7124:20;;;;;;;;:30;;7096:6;;7060:9;7124:30;;7096:6;;7124:30;:::i;:::-;;;;;;;;7189:9;-1:-1:-1;;;;;7172:35:0;7181:6;-1:-1:-1;;;;;7172:35:0;;7200:6;7172:35;;;;1594:25:1;;1582:2;1567:18;;1448:177;7172:35:0;;;;;;;;6722:493;6601:614;;;:::o;15615:916::-;15674:12;15689:10;15698:1;15689:6;:10;:::i;:::-;15674:25;-1:-1:-1;15710:17:0;15730:13;15674:25;15730:6;:13;:::i;:::-;15839:16;;;15853:1;15839:16;;;;;;;;15710:33;;-1:-1:-1;15781:21:0;;15756:22;;15839:16;;;;;;;;;;-1:-1:-1;15839:16:0;15815:40;;15884:4;15866;15871:1;15866:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15866:23:0;;;:7;;;;;;;;;;:23;;;;15910:15;;:22;;;-1:-1:-1;;;15910:22:0;;;;:15;;;;;:20;;:22;;;;;15866:7;;15910:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15900:4;15905:1;15900:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15900:32:0;;;:7;;;;;;;;;:32;15949:15;;:189;;-1:-1:-1;;;15949:189:0;;:15;;;:66;;:189;;16030:4;;15949:15;;16065:4;;16092;;16112:15;;15949:189;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15945:205;16170:18;16191:38;16215:14;16191:21;:38;:::i;:::-;16246:15;;:205;;-1:-1:-1;;;16246:205:0;;16319:4;16246:205;;;15186:34:1;15236:18;;;15229:34;;;16246:15:0;15279:18:1;;;15272:34;;;15322:18;;;15315:34;16403:6:0;15365:19:1;;;15358:44;16425:15:0;15418:19:1;;;15411:35;16170:59:0;;-1:-1:-1;;;;;;16246:15:0;;:31;;16170:59;;15120:19:1;;16246:205:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16246:205:0;;;;;;;;-1:-1:-1;;16246:205:0;;;;;;;;;;;;:::i;:::-;;;16242:221;;;;;;;16480:43;;;15970:25:1;;;16026:2;16011:18;;16004:34;;;16054:18;;;16047:34;;;16480:43:0;;15958:2:1;15943:18;16480:43:0;;;;;;;15663:868;;;;;15615:916;:::o;16539:672::-;16692:16;;;16706:1;16692:16;;;;;;;;16634:21;;16609:22;;16692:16;16706:1;16692:16;;;;;;;;;;-1:-1:-1;16692:16:0;16668:40;;16737:4;16719;16724:1;16719:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16719:23:0;;;:7;;;;;;;;;;:23;;;;16763:15;;:22;;;-1:-1:-1;;;16763:22:0;;;;:15;;;;;:20;;:22;;;;;16719:7;;16763:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16753:4;16758:1;16753:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16753:32:0;;;:7;;;;;;;;;:32;16802:15;;:196;;-1:-1:-1;;;16802:196:0;;:15;;;:66;;:196;;16883:11;;16802:15;;16925:4;;16952;;16972:15;;16802:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16798:212;17022:18;17043:38;17067:14;17043:21;:38;:::i;:::-;17102:15;;17022:59;;-1:-1:-1;17094:46:0;;-1:-1:-1;;;;;17102:15:0;17022:59;17094:34;:46::i;:::-;-1:-1:-1;17158:45:0;;;16266:25:1;;;16322:2;16307:18;;16300:34;;;17158:45:0;;16239:18:1;17158:45:0;;;;;;;16598:613;;;16539:672;:::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;1630:456::-;1707:6;1715;1723;1776:2;1764:9;1755:7;1751:23;1747:32;1744:52;;;1792:1;1789;1782:12;1744:52;1831:9;1818:23;1850:31;1875:5;1850:31;:::i;:::-;1900:5;-1:-1:-1;1957:2:1;1942:18;;1929:32;1970:33;1929:32;1970:33;:::i;:::-;1630:456;;2022:7;;-1:-1:-1;;;2076:2:1;2061:18;;;;2048:32;;1630:456::o;2488:247::-;2547:6;2600:2;2588:9;2579:7;2575:23;2571:32;2568:52;;;2616:1;2613;2606:12;2568:52;2655:9;2642:23;2674:31;2699:5;2674:31;:::i;:::-;2724:5;2488:247;-1:-1:-1;;;2488:247:1:o;2740:180::-;2799:6;2852:2;2840:9;2831:7;2827:23;2823:32;2820:52;;;2868:1;2865;2858:12;2820:52;-1:-1:-1;2891:23:1;;2740:180;-1:-1:-1;2740:180:1:o;2925:118::-;3011:5;3004:13;2997:21;2990:5;2987:32;2977:60;;3033:1;3030;3023:12;3048:382;3113:6;3121;3174:2;3162:9;3153:7;3149:23;3145:32;3142:52;;;3190:1;3187;3180:12;3142:52;3229:9;3216:23;3248:31;3273:5;3248:31;:::i;:::-;3298:5;-1:-1:-1;3355:2:1;3340:18;;3327:32;3368:30;3327:32;3368:30;:::i;:::-;3417:7;3407:17;;;3048:382;;;;;:::o;3435:388::-;3503:6;3511;3564:2;3552:9;3543:7;3539:23;3535:32;3532:52;;;3580:1;3577;3570:12;3532:52;3619:9;3606:23;3638:31;3663:5;3638:31;:::i;:::-;3688:5;-1:-1:-1;3745:2:1;3730:18;;3717:32;3758:33;3717:32;3758:33;:::i;3828:241::-;3884:6;3937:2;3925:9;3916:7;3912:23;3908:32;3905:52;;;3953:1;3950;3943:12;3905:52;3992:9;3979:23;4011:28;4033:5;4011:28;:::i;4074:380::-;4153:1;4149:12;;;;4196;;;4217:61;;4271:4;4263:6;4259:17;4249:27;;4217:61;4324:2;4316:6;4313:14;4293:18;4290:38;4287:161;;4370:10;4365:3;4361:20;4358:1;4351:31;4405:4;4402:1;4395:15;4433:4;4430:1;4423:15;4287:161;;4074:380;;;:::o;4868:127::-;4929:10;4924:3;4920:20;4917:1;4910:31;4960:4;4957:1;4950:15;4984:4;4981:1;4974:15;5000:125;5065:9;;;5086:10;;;5083:36;;;5099:18;;:::i;5130:356::-;5332:2;5314:21;;;5351:18;;;5344:30;5410:34;5405:2;5390:18;;5383:62;5477:2;5462:18;;5130:356::o;6250:217::-;6290:1;6316;6306:132;;6360:10;6355:3;6351:20;6348:1;6341:31;6395:4;6392:1;6385:15;6423:4;6420:1;6413:15;6306:132;-1:-1:-1;6452:9:1;;6250:217::o;9370:184::-;9440:6;9493:2;9481:9;9472:7;9468:23;9464:32;9461:52;;;9509:1;9506;9499:12;9461:52;-1:-1:-1;9532:16:1;;9370:184;-1:-1:-1;9370:184:1:o;9838:245::-;9905:6;9958:2;9946:9;9937:7;9933:23;9929:32;9926:52;;;9974:1;9971;9964:12;9926:52;10006:9;10000:16;10025:28;10047:5;10025:28;:::i;10896:401::-;11098:2;11080:21;;;11137:2;11117:18;;;11110:30;11176:34;11171:2;11156:18;;11149:62;-1:-1:-1;;;11242:2:1;11227:18;;11220:35;11287:3;11272:19;;10896:401::o;11302:399::-;11504:2;11486:21;;;11543:2;11523:18;;;11516:30;11582:34;11577:2;11562:18;;11555:62;-1:-1:-1;;;11648:2:1;11633:18;;11626:33;11691:3;11676:19;;11302:399::o;12059:168::-;12132:9;;;12163;;12180:15;;;12174:22;;12160:37;12150:71;;12201:18;;:::i;12232:128::-;12299:9;;;12320:11;;;12317:37;;;12334:18;;:::i;13472:127::-;13533:10;13528:3;13524:20;13521:1;13514:31;13564:4;13561:1;13554:15;13588:4;13585:1;13578:15;13604:251;13674:6;13727:2;13715:9;13706:7;13702:23;13698:32;13695:52;;;13743:1;13740;13733:12;13695:52;13775:9;13769:16;13794:31;13819:5;13794:31;:::i;13860:980::-;14122:4;14170:3;14159:9;14155:19;14201:6;14190:9;14183:25;14227:2;14265:6;14260:2;14249:9;14245:18;14238:34;14308:3;14303:2;14292:9;14288:18;14281:31;14332:6;14367;14361:13;14398:6;14390;14383:22;14436:3;14425:9;14421:19;14414:26;;14475:2;14467:6;14463:15;14449:29;;14496:1;14506:195;14520:6;14517:1;14514:13;14506:195;;;14585:13;;-1:-1:-1;;;;;14581:39:1;14569:52;;14676:15;;;;14641:12;;;;14617:1;14535:9;14506:195;;;-1:-1:-1;;;;;;;14757:32:1;;;;14752:2;14737:18;;14730:60;-1:-1:-1;;;14821:3:1;14806:19;14799:35;14718:3;13860:980;-1:-1:-1;;;13860:980:1:o;15457:306::-;15545:6;15553;15561;15614:2;15602:9;15593:7;15589:23;15585:32;15582:52;;;15630:1;15627;15620:12;15582:52;15659:9;15653:16;15643:26;;15709:2;15698:9;15694:18;15688:25;15678:35;;15753:2;15742:9;15738:18;15732:25;15722:35;;15457:306;;;;;:::o

Swarm Source

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