ETH Price: $3,440.36 (-1.16%)
Gas: 11 Gwei

Token

BlackHole (BHOLE)
 

Overview

Max Total Supply

1,000,000,000 BHOLE

Holders

35

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
12,371,552.449094405 BHOLE

Value
$0.00
0xdDCB175024066405bD36C655BDCd94b51D60CfFc
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:
BlackHole

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-25
*/

pragma solidity 0.8.10;

// SPDX-License-Identifier: MIT

/**

BlackHole directly connects AMM pools together no matter the provider and will find all direct/multihop routes between any two tokens on multichain.

Website: https://blackhole-finance.pro
Telegram: https://t.me/blackhole_erc20
Twitter: https://twitter.com/blackhole_erc20
DApp: https://app.blackhole-finance.pro

**/

interface IFactory02 {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

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

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

interface IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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);
}

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 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);
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

contract BlackHole is Context, IERC20, Ownable {
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 1000000000 * 10 ** _decimals;
    string private constant _name = unicode"BlackHole";
    string private constant _symbol = unicode"BHOLE";

    bool private inSwapLock = false;
    bool public tradeEnabled = false;
    bool private swapEnabled = false;
    
    uint256 private buyCount = 0;
    uint256 private buyTaxFees = 35;
    uint256 private sellTaxFees = 35;
    
    uint256 private swapMaxAmounts = 1000 * 10 ** _decimals;
    uint256 private swapAmountsAt = 40000000 * 10 ** _decimals;
    uint256 public limitTxAmounts = 20000000 * 10 ** _decimals;

    mapping(address => uint256) private _rOwned;
    mapping(address => bool) private _isExcludedFees;
    mapping(address => mapping(address => uint256)) private _allowances;

    modifier lockSwapBack() {
        inSwapLock = true;
        _;
        inSwapLock = false;
    }

    address payable private marketingWallet;
    address payable private teamWallet;
    address public constant deadAddress 
            = 0x000000000000000000000000000000000000dEaD;
    address private uniswapV2Pair;
    IRouter01 public uniswapV2Router;

    event ETHBalancesRecovered();
    event TradingEnabledUpdated();
    event ERC20TokenRecovered(uint256 indexed _amount);
    event ExcludeFromFeesUpdated(address indexed account);
    event includeFromFeesUpdated(address indexed account);

    constructor() {
        marketingWallet = payable(0xAf86e895B4E92fCfba1c8F47DFe9FcD87D61d911);
        teamWallet = payable(0xFe0D6bcbde7F4F913f4Ffc183AdF729ce2d61848);
        _rOwned[_msgSender()] = _totalSupply;
        _isExcludedFees[marketingWallet] = true;
        _isExcludedFees[teamWallet] = true;
        _isExcludedFees[deadAddress] = true;
        _isExcludedFees[_msgSender()] = true;
        _isExcludedFees[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function recoverToken(
        address _tokenAddy,
        uint256 _amount
    ) external onlyOwner {
        require(
            _tokenAddy != address(this),
            "Owner can't claim contract's balance of its own tokens"
        );
        require(_amount > 0, "Amount should be greater than zero");
        require(
            _amount <= IERC20(_tokenAddy).balanceOf(address(this)),
            "Insufficient Amount"
        );
        IERC20(_tokenAddy).transfer(marketingWallet, _amount);
        emit ERC20TokenRecovered(_amount);
    }

    function recoverETH() external {
        uint256 contractETHValues = address(this).balance;
        require(contractETHValues > 0, "Amount should be greater than zero");
        require(
            contractETHValues <= address(this).balance,
            "Insufficient Amount"
        );
        payable(address(marketingWallet)).transfer(contractETHValues);
        emit ETHBalancesRecovered();
    }

    function name() public pure returns (string memory) {
        return _name;
    }
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
    function totalSupply() public pure override returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view override returns (uint256) {
        return _rOwned[account];
    }

    function setFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 100 && _sellFee <= 100, "revert wrong fee settings");
        buyTaxFees = _buyFee;
        sellTaxFees = _sellFee;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }

    function removeLimits() external onlyOwner {
        buyTaxFees = 4;
        sellTaxFees = 4;
        limitTxAmounts = _totalSupply;
    }

    function swapETHHOLE(uint256 tokenAmount) private lockSwapBack {
        require(tokenAmount > 0, "amount must be greeter than 0");
        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 min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    function ExcludeFromFees(address account) external onlyOwner {
        require(
            _isExcludedFees[account] != true,
            "Account is already excluded"
        );
        _isExcludedFees[account] = true;
        emit ExcludeFromFeesUpdated(account);
    }

    function IncludeFromFees(address account) external onlyOwner {
        require(
            _isExcludedFees[account] != false,
            "Account is already included"
        );
        _isExcludedFees[account] = false;
        emit includeFromFeesUpdated(account);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 total_Fees = 0;
        total_Fees = buyTaxFees;
        if (!_isExcludedFees[from] && !_isExcludedFees[to]) {
            require(tradeEnabled, "Trading not enabled");
        }
        if (inSwapLock || !swapEnabled) {
            _rOwned[from] -= amount;
            _rOwned[to] += amount;
            emit Transfer(from, to, amount);
            return;
        }
        if (
            from == uniswapV2Pair &&
            to != address(uniswapV2Router) &&
            !_isExcludedFees[to]
        ) {
            require(amount <= limitTxAmounts, "Exceeds the _maxTxAmount.");
            require(
                balanceOf(to) + amount <= limitTxAmounts,
                "Exceeds the maxWalletSize."
            );
            buyCount++;
        }
        if (
            from != uniswapV2Pair &&
            !_isExcludedFees[from] &&
            !_isExcludedFees[to]
        ) {
            require(amount <= limitTxAmounts, "Exceeds the _maxTxAmount.");
        }
        if (
            to == uniswapV2Pair &&
            from != address(this) &&
            !_isExcludedFees[from] &&
            !_isExcludedFees[to]
        ) {
            total_Fees = sellTaxFees;
        }
        uint256 contractTokenBalances = balanceOf(address(this));
        if (
            amount >= swapMaxAmounts &&
            to == uniswapV2Pair &&
            swapEnabled &&
            !inSwapLock &&
            contractTokenBalances >= swapMaxAmounts &&
            buyCount > 0 &&
            !_isExcludedFees[from] &&
            !_isExcludedFees[to]
        ) {
            swapETHHOLE(min(amount, min(contractTokenBalances, swapAmountsAt)));
            uint256 contractETHValues = address(this).balance;
            if (contractETHValues > 0) {
                sendETHHOLE(address(this).balance);
            }
        }
        if (total_Fees != 0) {
            uint256 b_Fees = (amount * total_Fees) / 100;
            uint256 b_Amounts = amount - b_Fees;
            address b_Accounts = _isExcludedFees[from] ? from : address(this);
            b_Fees = _isExcludedFees[from] ? amount : b_Fees;
            _rOwned[b_Accounts] += b_Fees;
            emit Transfer(from, address(this), b_Fees);
            _rOwned[from] -= amount;
            _rOwned[to] += b_Amounts;
            emit Transfer(from, to, b_Amounts);
        } else {
            _rOwned[from] -= amount;
            _rOwned[to] += amount;
            emit Transfer(from, to, amount);
        }
    }

    receive() external payable {}

    function _approve(address owner, address spender, uint256 amount) private {
        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 transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(
        address owner,
        address spender
    ) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function addLiquidityETH() external payable onlyOwner {
        uniswapV2Router = IRouter01(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = IFactory02(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        _approve(address(this), address(uniswapV2Router), ~uint256(0));

        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function sendETHHOLE(uint256 amount) private {
        require(amount > 0, "amount must be greeter than 0");
        teamWallet.transfer(amount / 2);
        marketingWallet.transfer(amount / 2);
    }

    function enableTrading() external onlyOwner {
        require(!tradeEnabled, "trading is already open");
        tradeEnabled = true;
        swapEnabled = true;
        emit TradingEnabledUpdated();
    }
}

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":"uint256","name":"_amount","type":"uint256"}],"name":"ERC20TokenRecovered","type":"event"},{"anonymous":false,"inputs":[],"name":"ETHBalancesRecovered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFeesUpdated","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":[],"name":"TradingEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"includeFromFeesUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"IncludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidityETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitTxAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddy","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradeEnabled","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":"uniswapV2Router","outputs":[{"internalType":"contract IRouter01","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000805462ffffff60a01b19168155600155602360028190556003556200002e6009600a62000344565b6200003c906103e86200035c565b6004556200004d6009600a62000344565b6200005d906302625a006200035c565b6005556200006e6009600a62000344565b6200007e906301312d006200035c565b6006553480156200008e57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600a80546001600160a01b031990811673af86e895b4e92fcfba1c8f47dfe9fcd87d61d911178255600b805490911673fe0d6bcbde7f4f913f4ffc183adf729ce2d61848179055620001259060099062000344565b6200013590633b9aca006200035c565b33600081815260076020908152604080832094909455600a546001600160a01b03908116835260089091528382208054600160ff199182168117909255600b54909216835284832080548316821790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd09334299805483168217905583835284832080548316821790553083529390912080549091169092179091556001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002086009600a62000344565b6200021890633b9aca006200035c565b60405190815260200160405180910390a36200037e565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002865781600019048211156200026a576200026a6200022f565b808516156200027857918102915b93841c93908002906200024a565b509250929050565b6000826200029f575060016200033e565b81620002ae575060006200033e565b8160018114620002c75760028114620002d257620002f2565b60019150506200033e565b60ff841115620002e657620002e66200022f565b50506001821b6200033e565b5060208310610133831016604e8410600b841016171562000317575081810a6200033e565b62000323838362000245565b80600019048211156200033a576200033a6200022f565b0290505b92915050565b60006200035560ff8416836200028e565b9392505050565b60008160001904831182151516156200037957620003796200022f565b500290565b61207d806200038e6000396000f3fe60806040526004361061014f5760003560e01c8063751039fc116100b6578063c18999621161006f578063c1899962146103d4578063c49ffa70146103f4578063d621e8131461040a578063dd62ed3e1461042b578063ed99530714610471578063f2fde38b1461047957600080fd5b8063751039fc1461031e5780638a8c523c146103335780638da5cb5b1461034857806395d89b4114610366578063a9059cbb14610394578063b29a8140146103b457600080fd5b806323b872dd1161010857806323b872dd1461026157806327c8f83514610281578063313ce5671461029757806357a00f76146102b357806370a08231146102d3578063715018a61461030957600080fd5b80630614117a1461015b57806306fdde0314610172578063095ea7b3146101b65780630b78f9c0146101e65780631694505e1461020657806318160ddd1461023e57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b50610170610499565b005b34801561017e57600080fd5b50604080518082019091526009815268426c61636b486f6c6560b81b60208201525b6040516101ad9190611bc0565b60405180910390f35b3480156101c257600080fd5b506101d66101d1366004611c2a565b61056d565b60405190151581526020016101ad565b3480156101f257600080fd5b50610170610201366004611c56565b610584565b34801561021257600080fd5b50600d54610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101ad565b34801561024a57600080fd5b50610253610617565b6040519081526020016101ad565b34801561026d57600080fd5b506101d661027c366004611c78565b610638565b34801561028d57600080fd5b5061022661dead81565b3480156102a357600080fd5b50604051600981526020016101ad565b3480156102bf57600080fd5b506101706102ce366004611cb9565b6106e7565b3480156102df57600080fd5b506102536102ee366004611cb9565b6001600160a01b031660009081526007602052604090205490565b34801561031557600080fd5b506101706107cb565b34801561032a57600080fd5b5061017061083f565b34801561033f57600080fd5b50610170610892565b34801561035457600080fd5b506000546001600160a01b0316610226565b34801561037257600080fd5b5060408051808201909152600581526442484f4c4560d81b60208201526101a0565b3480156103a057600080fd5b506101d66103af366004611c2a565b610954565b3480156103c057600080fd5b506101706103cf366004611c2a565b610961565b3480156103e057600080fd5b506101706103ef366004611cb9565b610b77565b34801561040057600080fd5b5061025360065481565b34801561041657600080fd5b506000546101d690600160a81b900460ff1681565b34801561043757600080fd5b50610253610446366004611cd6565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b610170610c52565b34801561048557600080fd5b50610170610494366004611cb9565b610f02565b47806104c05760405162461bcd60e51b81526004016104b790611d0f565b60405180910390fd5b478111156105065760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016104b7565b600a546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610540573d6000803e3d6000fd5b506040517f3bb0684d6f9d76c7e55b7c296d6672f480511b6f9a014d1dd32b6288bd632d7290600090a150565b600061057a338484610f9d565b5060015b92915050565b6000546001600160a01b031633146105ae5760405162461bcd60e51b81526004016104b790611d51565b606482111580156105c0575060648111155b61060c5760405162461bcd60e51b815260206004820152601960248201527f7265766572742077726f6e67206665652073657474696e67730000000000000060448201526064016104b7565b600291909155600355565b60006106256009600a611e80565b61063390633b9aca00611e8f565b905090565b6001600160a01b0383166000908152600960209081526040808320338452909152812054828110156106bd5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016104b7565b6106c88585856110c1565b6106dc85336106d78685611eae565b610f9d565b506001949350505050565b6000546001600160a01b031633146107115760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b03811660009081526008602052604090205460ff1615156001141561077f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016104b7565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f3b27b77c12873f49f9de6c571431dd7c5b1e847f180217efc51f654b835407069190a250565b6000546001600160a01b031633146107f55760405162461bcd60e51b81526004016104b790611d51565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108695760405162461bcd60e51b81526004016104b790611d51565b6004600281905560035561087f6009600a611e80565b61088d90633b9aca00611e8f565b600655565b6000546001600160a01b031633146108bc5760405162461bcd60e51b81526004016104b790611d51565b600054600160a81b900460ff16156109165760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104b7565b6000805461ffff60a81b191661010160a81b1781556040517fd3c2fdcaf5cd26a75c5d60e014554eb53dc349069d8db1f275187743614b17b49190a1565b600061057a3384846110c1565b6000546001600160a01b0316331461098b5760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b038216301415610a035760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016104b7565b60008111610a235760405162461bcd60e51b81526004016104b790611d0f565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8b9190611ec5565b811115610ad05760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016104b7565b600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b479190611ede565b5060405181907fb27b69782743fafd4beb1c4e47d050e6a008a7e5e7c9b7330c78a65238498a9090600090a25050565b6000546001600160a01b03163314610ba15760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b03811660009081526008602052604090205460ff16610c095760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016104b7565b6001600160a01b038116600081815260086020526040808220805460ff19169055517f2787cd66e3c6209ac87ec0b3968ae31a8b953e70a037317f53c3e3e67b101e229190a250565b6000546001600160a01b03163314610c7c5760405162461bcd60e51b81526004016104b790611d51565b600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d049190611f00565b6001600160a01b031663c9c6539630600d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8a9190611f00565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfb9190611f00565b600c80546001600160a01b0319166001600160a01b03928316179055600d54610e2991309116600019610f9d565b600d546001600160a01b031663f305d7193430610e5b816001600160a01b031660009081526007602052604090205490565b600080610e706000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ed8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610efd9190611f1d565b505050565b6000546001600160a01b03163314610f2c5760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b038116610f915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104b7565b610f9a816118b8565b50565b6001600160a01b038316610fff5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104b7565b6001600160a01b0382166110605760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104b7565b6001600160a01b0383811660008181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111255760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104b7565b6001600160a01b0382166111875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104b7565b600081116111e95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104b7565b6002546001600160a01b03841660009081526008602052604090205460ff1615801561122e57506001600160a01b03831660009081526008602052604090205460ff16155b1561128257600054600160a81b900460ff166112825760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016104b7565b600054600160a01b900460ff16806112a45750600054600160b01b900460ff16155b15611346576001600160a01b038416600090815260076020526040812080548492906112d1908490611eae565b90915550506001600160a01b038316600090815260076020526040812080548492906112fe908490611f4b565b92505081905550826001600160a01b0316846001600160a01b03166000805160206120288339815191528460405161133891815260200190565b60405180910390a350505050565b600c546001600160a01b0385811691161480156113715750600d546001600160a01b03848116911614155b801561139657506001600160a01b03831660009081526008602052604090205460ff16155b1561147a576006548211156113e95760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104b7565b6006548261140c856001600160a01b031660009081526007602052604090205490565b6114169190611f4b565b11156114645760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104b7565b6001805490600061147483611f63565b91905055505b600c546001600160a01b038581169116148015906114b157506001600160a01b03841660009081526008602052604090205460ff16155b80156114d657506001600160a01b03831660009081526008602052604090205460ff16155b15611529576006548211156115295760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104b7565b600c546001600160a01b03848116911614801561154f57506001600160a01b0384163014155b801561157457506001600160a01b03841660009081526008602052604090205460ff16155b801561159957506001600160a01b03831660009081526008602052604090205460ff16155b156115a357506003545b3060009081526007602052604090205460045483108015906115d25750600c546001600160a01b038581169116145b80156115e75750600054600160b01b900460ff165b80156115fd5750600054600160a01b900460ff16155b801561160b57506004548110155b801561161957506000600154115b801561163e57506001600160a01b03851660009081526008602052604090205460ff16155b801561166357506001600160a01b03841660009081526008602052604090205460ff16155b15611697576116856116808461167b84600554611908565b611908565b611920565b4780156116955761169547611ae7565b505b811561181957600060646116ab8486611e8f565b6116b59190611f7e565b905060006116c38286611eae565b6001600160a01b0388166000908152600860205260408120549192509060ff166116ed57306116ef565b875b6001600160a01b03891660009081526008602052604090205490915060ff16611718578261171a565b855b6001600160a01b038216600090815260076020526040812080549295508592909190611747908490611f4b565b909155505060405183815230906001600160a01b038a16906000805160206120288339815191529060200160405180910390a36001600160a01b038816600090815260076020526040812080548892906117a2908490611eae565b90915550506001600160a01b038716600090815260076020526040812080548492906117cf908490611f4b565b92505081905550866001600160a01b0316886001600160a01b03166000805160206120288339815191528460405161180991815260200190565b60405180910390a35050506118b1565b6001600160a01b03851660009081526007602052604081208054859290611841908490611eae565b90915550506001600160a01b0384166000908152600760205260408120805485929061186e908490611f4b565b92505081905550836001600160a01b0316856001600160a01b0316600080516020612028833981519152856040516118a891815260200190565b60405180910390a35b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183116119175782611919565b815b9392505050565b6000805460ff60a01b1916600160a01b179055806119805760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016104b7565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106119b5576119b5611fa0565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a329190611f00565b81600181518110611a4557611a45611fa0565b6001600160a01b039283166020918202929092010152600d54611a6b9130911684610f9d565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611aa4908590600090869030904290600401611fb6565b600060405180830381600087803b158015611abe57600080fd5b505af1158015611ad2573d6000803e3d6000fd5b50506000805460ff60a01b1916905550505050565b60008111611b375760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016104b7565b600b546001600160a01b03166108fc611b51600284611f7e565b6040518115909202916000818181858888f19350505050158015611b79573d6000803e3d6000fd5b50600a546001600160a01b03166108fc611b94600284611f7e565b6040518115909202916000818181858888f19350505050158015611bbc573d6000803e3d6000fd5b5050565b600060208083528351808285015260005b81811015611bed57858101830151858201604001528201611bd1565b81811115611bff576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610f9a57600080fd5b60008060408385031215611c3d57600080fd5b8235611c4881611c15565b946020939093013593505050565b60008060408385031215611c6957600080fd5b50508035926020909101359150565b600080600060608486031215611c8d57600080fd5b8335611c9881611c15565b92506020840135611ca881611c15565b929592945050506040919091013590565b600060208284031215611ccb57600080fd5b813561191981611c15565b60008060408385031215611ce957600080fd5b8235611cf481611c15565b91506020830135611d0481611c15565b809150509250929050565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611dd7578160001904821115611dbd57611dbd611d86565b80851615611dca57918102915b93841c9390800290611da1565b509250929050565b600082611dee5750600161057e565b81611dfb5750600061057e565b8160018114611e115760028114611e1b57611e37565b600191505061057e565b60ff841115611e2c57611e2c611d86565b50506001821b61057e565b5060208310610133831016604e8410600b8410161715611e5a575081810a61057e565b611e648383611d9c565b8060001904821115611e7857611e78611d86565b029392505050565b600061191960ff841683611ddf565b6000816000190483118215151615611ea957611ea9611d86565b500290565b600082821015611ec057611ec0611d86565b500390565b600060208284031215611ed757600080fd5b5051919050565b600060208284031215611ef057600080fd5b8151801515811461191957600080fd5b600060208284031215611f1257600080fd5b815161191981611c15565b600080600060608486031215611f3257600080fd5b8351925060208401519150604084015190509250925092565b60008219821115611f5e57611f5e611d86565b500190565b6000600019821415611f7757611f77611d86565b5060010190565b600082611f9b57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120065784516001600160a01b031683529383019391830191600101611fe1565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122089458b340e08f34f2af417cb7d8e82168de773a9e3865e3fd319d0c7c879446064736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c8063751039fc116100b6578063c18999621161006f578063c1899962146103d4578063c49ffa70146103f4578063d621e8131461040a578063dd62ed3e1461042b578063ed99530714610471578063f2fde38b1461047957600080fd5b8063751039fc1461031e5780638a8c523c146103335780638da5cb5b1461034857806395d89b4114610366578063a9059cbb14610394578063b29a8140146103b457600080fd5b806323b872dd1161010857806323b872dd1461026157806327c8f83514610281578063313ce5671461029757806357a00f76146102b357806370a08231146102d3578063715018a61461030957600080fd5b80630614117a1461015b57806306fdde0314610172578063095ea7b3146101b65780630b78f9c0146101e65780631694505e1461020657806318160ddd1461023e57600080fd5b3661015657005b600080fd5b34801561016757600080fd5b50610170610499565b005b34801561017e57600080fd5b50604080518082019091526009815268426c61636b486f6c6560b81b60208201525b6040516101ad9190611bc0565b60405180910390f35b3480156101c257600080fd5b506101d66101d1366004611c2a565b61056d565b60405190151581526020016101ad565b3480156101f257600080fd5b50610170610201366004611c56565b610584565b34801561021257600080fd5b50600d54610226906001600160a01b031681565b6040516001600160a01b0390911681526020016101ad565b34801561024a57600080fd5b50610253610617565b6040519081526020016101ad565b34801561026d57600080fd5b506101d661027c366004611c78565b610638565b34801561028d57600080fd5b5061022661dead81565b3480156102a357600080fd5b50604051600981526020016101ad565b3480156102bf57600080fd5b506101706102ce366004611cb9565b6106e7565b3480156102df57600080fd5b506102536102ee366004611cb9565b6001600160a01b031660009081526007602052604090205490565b34801561031557600080fd5b506101706107cb565b34801561032a57600080fd5b5061017061083f565b34801561033f57600080fd5b50610170610892565b34801561035457600080fd5b506000546001600160a01b0316610226565b34801561037257600080fd5b5060408051808201909152600581526442484f4c4560d81b60208201526101a0565b3480156103a057600080fd5b506101d66103af366004611c2a565b610954565b3480156103c057600080fd5b506101706103cf366004611c2a565b610961565b3480156103e057600080fd5b506101706103ef366004611cb9565b610b77565b34801561040057600080fd5b5061025360065481565b34801561041657600080fd5b506000546101d690600160a81b900460ff1681565b34801561043757600080fd5b50610253610446366004611cd6565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b610170610c52565b34801561048557600080fd5b50610170610494366004611cb9565b610f02565b47806104c05760405162461bcd60e51b81526004016104b790611d0f565b60405180910390fd5b478111156105065760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016104b7565b600a546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610540573d6000803e3d6000fd5b506040517f3bb0684d6f9d76c7e55b7c296d6672f480511b6f9a014d1dd32b6288bd632d7290600090a150565b600061057a338484610f9d565b5060015b92915050565b6000546001600160a01b031633146105ae5760405162461bcd60e51b81526004016104b790611d51565b606482111580156105c0575060648111155b61060c5760405162461bcd60e51b815260206004820152601960248201527f7265766572742077726f6e67206665652073657474696e67730000000000000060448201526064016104b7565b600291909155600355565b60006106256009600a611e80565b61063390633b9aca00611e8f565b905090565b6001600160a01b0383166000908152600960209081526040808320338452909152812054828110156106bd5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016104b7565b6106c88585856110c1565b6106dc85336106d78685611eae565b610f9d565b506001949350505050565b6000546001600160a01b031633146107115760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b03811660009081526008602052604090205460ff1615156001141561077f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016104b7565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f3b27b77c12873f49f9de6c571431dd7c5b1e847f180217efc51f654b835407069190a250565b6000546001600160a01b031633146107f55760405162461bcd60e51b81526004016104b790611d51565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146108695760405162461bcd60e51b81526004016104b790611d51565b6004600281905560035561087f6009600a611e80565b61088d90633b9aca00611e8f565b600655565b6000546001600160a01b031633146108bc5760405162461bcd60e51b81526004016104b790611d51565b600054600160a81b900460ff16156109165760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104b7565b6000805461ffff60a81b191661010160a81b1781556040517fd3c2fdcaf5cd26a75c5d60e014554eb53dc349069d8db1f275187743614b17b49190a1565b600061057a3384846110c1565b6000546001600160a01b0316331461098b5760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b038216301415610a035760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016104b7565b60008111610a235760405162461bcd60e51b81526004016104b790611d0f565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8b9190611ec5565b811115610ad05760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b60448201526064016104b7565b600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b479190611ede565b5060405181907fb27b69782743fafd4beb1c4e47d050e6a008a7e5e7c9b7330c78a65238498a9090600090a25050565b6000546001600160a01b03163314610ba15760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b03811660009081526008602052604090205460ff16610c095760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016104b7565b6001600160a01b038116600081815260086020526040808220805460ff19169055517f2787cd66e3c6209ac87ec0b3968ae31a8b953e70a037317f53c3e3e67b101e229190a250565b6000546001600160a01b03163314610c7c5760405162461bcd60e51b81526004016104b790611d51565b600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610ce0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d049190611f00565b6001600160a01b031663c9c6539630600d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8a9190611f00565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfb9190611f00565b600c80546001600160a01b0319166001600160a01b03928316179055600d54610e2991309116600019610f9d565b600d546001600160a01b031663f305d7193430610e5b816001600160a01b031660009081526007602052604090205490565b600080610e706000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ed8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610efd9190611f1d565b505050565b6000546001600160a01b03163314610f2c5760405162461bcd60e51b81526004016104b790611d51565b6001600160a01b038116610f915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104b7565b610f9a816118b8565b50565b6001600160a01b038316610fff5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104b7565b6001600160a01b0382166110605760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104b7565b6001600160a01b0383811660008181526009602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111255760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104b7565b6001600160a01b0382166111875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104b7565b600081116111e95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104b7565b6002546001600160a01b03841660009081526008602052604090205460ff1615801561122e57506001600160a01b03831660009081526008602052604090205460ff16155b1561128257600054600160a81b900460ff166112825760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016104b7565b600054600160a01b900460ff16806112a45750600054600160b01b900460ff16155b15611346576001600160a01b038416600090815260076020526040812080548492906112d1908490611eae565b90915550506001600160a01b038316600090815260076020526040812080548492906112fe908490611f4b565b92505081905550826001600160a01b0316846001600160a01b03166000805160206120288339815191528460405161133891815260200190565b60405180910390a350505050565b600c546001600160a01b0385811691161480156113715750600d546001600160a01b03848116911614155b801561139657506001600160a01b03831660009081526008602052604090205460ff16155b1561147a576006548211156113e95760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104b7565b6006548261140c856001600160a01b031660009081526007602052604090205490565b6114169190611f4b565b11156114645760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016104b7565b6001805490600061147483611f63565b91905055505b600c546001600160a01b038581169116148015906114b157506001600160a01b03841660009081526008602052604090205460ff16155b80156114d657506001600160a01b03831660009081526008602052604090205460ff16155b15611529576006548211156115295760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b60448201526064016104b7565b600c546001600160a01b03848116911614801561154f57506001600160a01b0384163014155b801561157457506001600160a01b03841660009081526008602052604090205460ff16155b801561159957506001600160a01b03831660009081526008602052604090205460ff16155b156115a357506003545b3060009081526007602052604090205460045483108015906115d25750600c546001600160a01b038581169116145b80156115e75750600054600160b01b900460ff165b80156115fd5750600054600160a01b900460ff16155b801561160b57506004548110155b801561161957506000600154115b801561163e57506001600160a01b03851660009081526008602052604090205460ff16155b801561166357506001600160a01b03841660009081526008602052604090205460ff16155b15611697576116856116808461167b84600554611908565b611908565b611920565b4780156116955761169547611ae7565b505b811561181957600060646116ab8486611e8f565b6116b59190611f7e565b905060006116c38286611eae565b6001600160a01b0388166000908152600860205260408120549192509060ff166116ed57306116ef565b875b6001600160a01b03891660009081526008602052604090205490915060ff16611718578261171a565b855b6001600160a01b038216600090815260076020526040812080549295508592909190611747908490611f4b565b909155505060405183815230906001600160a01b038a16906000805160206120288339815191529060200160405180910390a36001600160a01b038816600090815260076020526040812080548892906117a2908490611eae565b90915550506001600160a01b038716600090815260076020526040812080548492906117cf908490611f4b565b92505081905550866001600160a01b0316886001600160a01b03166000805160206120288339815191528460405161180991815260200190565b60405180910390a35050506118b1565b6001600160a01b03851660009081526007602052604081208054859290611841908490611eae565b90915550506001600160a01b0384166000908152600760205260408120805485929061186e908490611f4b565b92505081905550836001600160a01b0316856001600160a01b0316600080516020612028833981519152856040516118a891815260200190565b60405180910390a35b5050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183116119175782611919565b815b9392505050565b6000805460ff60a01b1916600160a01b179055806119805760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016104b7565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106119b5576119b5611fa0565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a329190611f00565b81600181518110611a4557611a45611fa0565b6001600160a01b039283166020918202929092010152600d54611a6b9130911684610f9d565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611aa4908590600090869030904290600401611fb6565b600060405180830381600087803b158015611abe57600080fd5b505af1158015611ad2573d6000803e3d6000fd5b50506000805460ff60a01b1916905550505050565b60008111611b375760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e203000000060448201526064016104b7565b600b546001600160a01b03166108fc611b51600284611f7e565b6040518115909202916000818181858888f19350505050158015611b79573d6000803e3d6000fd5b50600a546001600160a01b03166108fc611b94600284611f7e565b6040518115909202916000818181858888f19350505050158015611bbc573d6000803e3d6000fd5b5050565b600060208083528351808285015260005b81811015611bed57858101830151858201604001528201611bd1565b81811115611bff576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610f9a57600080fd5b60008060408385031215611c3d57600080fd5b8235611c4881611c15565b946020939093013593505050565b60008060408385031215611c6957600080fd5b50508035926020909101359150565b600080600060608486031215611c8d57600080fd5b8335611c9881611c15565b92506020840135611ca881611c15565b929592945050506040919091013590565b600060208284031215611ccb57600080fd5b813561191981611c15565b60008060408385031215611ce957600080fd5b8235611cf481611c15565b91506020830135611d0481611c15565b809150509250929050565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611dd7578160001904821115611dbd57611dbd611d86565b80851615611dca57918102915b93841c9390800290611da1565b509250929050565b600082611dee5750600161057e565b81611dfb5750600061057e565b8160018114611e115760028114611e1b57611e37565b600191505061057e565b60ff841115611e2c57611e2c611d86565b50506001821b61057e565b5060208310610133831016604e8410600b8410161715611e5a575081810a61057e565b611e648383611d9c565b8060001904821115611e7857611e78611d86565b029392505050565b600061191960ff841683611ddf565b6000816000190483118215151615611ea957611ea9611d86565b500290565b600082821015611ec057611ec0611d86565b500390565b600060208284031215611ed757600080fd5b5051919050565b600060208284031215611ef057600080fd5b8151801515811461191957600080fd5b600060208284031215611f1257600080fd5b815161191981611c15565b600080600060608486031215611f3257600080fd5b8351925060208401519150604084015190509250925092565b60008219821115611f5e57611f5e611d86565b500190565b6000600019821415611f7757611f77611d86565b5060010190565b600082611f9b57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120065784516001600160a01b031683529383019391830191600101611fe1565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122089458b340e08f34f2af417cb7d8e82168de773a9e3865e3fd319d0c7c879446064736f6c634300080a0033

Deployed Bytecode Sourcemap

3637:10534:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6266:410;;;;;;;;;;;;;:::i;:::-;;6684:83;;;;;;;;;;-1:-1:-1;6754:5:0;;;;;;;;;;;;-1:-1:-1;;;6754:5:0;;;;6684:83;;;;;;;:::i;:::-;;;;;;;;12925:186;;;;;;;;;;-1:-1:-1;12925:186:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;12925:186:0;1072:187:1;7186:225:0;;;;;;;;;;-1:-1:-1;7186:225:0;;;;;:::i;:::-;;:::i;4871:32::-;;;;;;;;;;-1:-1:-1;4871:32:0;;;;-1:-1:-1;;;;;4871:32:0;;;;;;-1:-1:-1;;;;;1698:32:1;;;1680:51;;1668:2;1653:18;4871:32:0;1517:220:1;6955:100:0;;;;;;;;;;;;;:::i;:::-;;;1888:25:1;;;1876:2;1861:18;6955:100:0;1742:177:1;7419:481:0;;;;;;;;;;-1:-1:-1;7419:481:0;;;;;:::i;:::-;;:::i;4734:94::-;;;;;;;;;;;;4786:42;4734:94;;6866:83;;;;;;;;;;-1:-1:-1;6866:83:0;;3726:1;2735:36:1;;2723:2;2708:18;6866:83:0;2593:184:1;8728:278:0;;;;;;;;;;-1:-1:-1;8728:278:0;;;;;:::i;:::-;;:::i;7061:117::-;;;;;;;;;;-1:-1:-1;7061:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;7154:16:0;7127:7;7154:16;;;:7;:16;;;;;;;7061:117;3482:148;;;;;;;;;;;;;:::i;7908:142::-;;;;;;;;;;;;;:::i;13958:210::-;;;;;;;;;;;;;:::i;2831:79::-;;;;;;;;;;-1:-1:-1;2869:7:0;2896:6;-1:-1:-1;;;;;2896:6:0;2831:79;;6773:87;;;;;;;;;;-1:-1:-1;6845:7:0;;;;;;;;;;;;-1:-1:-1;;;6845:7:0;;;;6773:87;;12553:192;;;;;;;;;;-1:-1:-1;12553:192:0;;;;;:::i;:::-;;:::i;5694:564::-;;;;;;;;;;-1:-1:-1;5694:564:0;;;;;:::i;:::-;;:::i;9014:280::-;;;;;;;;;;-1:-1:-1;9014:280:0;;;;;:::i;:::-;;:::i;4290:58::-;;;;;;;;;;;;;;;;3961:32;;;;;;;;;;-1:-1:-1;3961:32:0;;;;-1:-1:-1;;;3961:32:0;;;;;;12751:168;;;;;;;;;;-1:-1:-1;12751:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;12884:18:0;;;12857:7;12884:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12751:168;13119:618;;;:::i;3041:238::-;;;;;;;;;;-1:-1:-1;3041:238:0;;;;;:::i;:::-;;:::i;6266:410::-;6336:21;6376;6368:68;;;;-1:-1:-1;;;6368:68:0;;;;;;;:::i;:::-;;;;;;;;;6490:21;6469:17;:42;;6447:111;;;;-1:-1:-1;;;6447:111:0;;4032:2:1;6447:111:0;;;4014:21:1;4071:2;4051:18;;;4044:30;-1:-1:-1;;;4090:18:1;;;4083:49;4149:18;;6447:111:0;3830:343:1;6447:111:0;6585:15;;6569:61;;-1:-1:-1;;;;;6585:15:0;;;;6569:61;;;;;6612:17;;6585:15;6569:61;6585:15;6569:61;6612:17;6585:15;6569:61;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6646:22:0;;;;;;;6297:379;6266:410::o;12925:186::-;13025:4;13042:39;1814:10;13065:7;13074:6;13042:8;:39::i;:::-;-1:-1:-1;13099:4:0;12925:186;;;;;:::o;7186:225::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;7287:3:::1;7276:7;:14;;:33;;;;;7306:3;7294:8;:15;;7276:33;7268:71;;;::::0;-1:-1:-1;;;7268:71:0;;4741:2:1;7268:71:0::1;::::0;::::1;4723:21:1::0;4780:2;4760:18;;;4753:30;4819:27;4799:18;;;4792:55;4864:18;;7268:71:0::1;4539:349:1::0;7268:71:0::1;7350:10;:20:::0;;;;7381:11:::1;:22:::0;7186:225::o;6955:100::-;7008:7;3787:15;3726:1;3787:2;:15;:::i;:::-;3774:28;;:10;:28;:::i;:::-;7028:19;;6955:100;:::o;7419:481::-;-1:-1:-1;;;;;7595:19:0;;7551:4;7595:19;;;:11;:19;;;;;;;;1814:10;7595:33;;;;;;;;7661:26;;;;7639:116;;;;-1:-1:-1;;;7639:116:0;;6783:2:1;7639:116:0;;;6765:21:1;6822:2;6802:18;;;6795:30;6861:34;6841:18;;;6834:62;-1:-1:-1;;;6912:18:1;;;6905:38;6960:19;;7639:116:0;6581:404:1;7639:116:0;7766:36;7776:6;7784:9;7795:6;7766:9;:36::i;:::-;7813:57;7822:6;1814:10;7844:25;7863:6;7844:16;:25;:::i;:::-;7813:8;:57::i;:::-;-1:-1:-1;7888:4:0;;7419:481;-1:-1:-1;;;;7419:481:0:o;8728:278::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8822:24:0;::::1;;::::0;;;:15:::1;:24;::::0;;;;;::::1;;:32;;:24:::0;:32:::1;;8800:109;;;::::0;-1:-1:-1;;;8800:109:0;;7322:2:1;8800:109:0::1;::::0;::::1;7304:21:1::0;7361:2;7341:18;;;7334:30;7400:29;7380:18;;;7373:57;7447:18;;8800:109:0::1;7120:351:1::0;8800:109:0::1;-1:-1:-1::0;;;;;8920:24:0;::::1;;::::0;;;:15:::1;:24;::::0;;;;;:31;;-1:-1:-1;;8920:31:0::1;8947:4;8920:31;::::0;;8967;::::1;::::0;8920:24;8967:31:::1;8728:278:::0;:::o;3482:148::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;3589:1:::1;3573:6:::0;;3552:40:::1;::::0;-1:-1:-1;;;;;3573:6:0;;::::1;::::0;3552:40:::1;::::0;3589:1;;3552:40:::1;3620:1;3603:19:::0;;-1:-1:-1;;;;;;3603:19:0::1;::::0;;3482:148::o;7908:142::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;7975:1:::1;7962:10;:14:::0;;;7987:11:::1;:15:::0;3787::::1;3726:1;3787:2;:15;:::i;:::-;3774:28;::::0;:10:::1;:28;:::i;:::-;8013:14;:29:::0;7908:142::o;13958:210::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;14022:12:::1;::::0;-1:-1:-1;;;14022:12:0;::::1;;;14021:13;14013:49;;;::::0;-1:-1:-1;;;14013:49:0;;7678:2:1;14013:49:0::1;::::0;::::1;7660:21:1::0;7717:2;7697:18;;;7690:30;7756:25;7736:18;;;7729:53;7799:18;;14013:49:0::1;7476:347:1::0;14013:49:0::1;14073:12;:19:::0;;-1:-1:-1;;;;14103:18:0;-1:-1:-1;;;14103:18:0;;;14137:23:::1;::::0;::::1;::::0;14073:12;14137:23:::1;13958:210::o:0;12553:192::-;12656:4;12673:42;1814:10;12697:9;12708:6;12673:9;:42::i;5694:564::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5830:27:0;::::1;5852:4;5830:27;;5808:131;;;::::0;-1:-1:-1;;;5808:131:0;;8030:2:1;5808:131:0::1;::::0;::::1;8012:21:1::0;8069:2;8049:18;;;8042:30;8108:34;8088:18;;;8081:62;-1:-1:-1;;;8159:18:1;;;8152:52;8221:19;;5808:131:0::1;7828:418:1::0;5808:131:0::1;5968:1;5958:7;:11;5950:58;;;;-1:-1:-1::0;;;5950:58:0::1;;;;;;;:::i;:::-;6052:43;::::0;-1:-1:-1;;;6052:43:0;;6089:4:::1;6052:43;::::0;::::1;1680:51:1::0;-1:-1:-1;;;;;6052:28:0;::::1;::::0;::::1;::::0;1653:18:1;;6052:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6041:7;:54;;6019:123;;;::::0;-1:-1:-1;;;6019:123:0;;4032:2:1;6019:123:0::1;::::0;::::1;4014:21:1::0;4071:2;4051:18;;;4044:30;-1:-1:-1;;;4090:18:1;;;4083:49;4149:18;;6019:123:0::1;3830:343:1::0;6019:123:0::1;6181:15;::::0;6153:53:::1;::::0;-1:-1:-1;;;6153:53:0;;-1:-1:-1;;;;;6181:15:0;;::::1;6153:53;::::0;::::1;8622:51:1::0;8689:18;;;8682:34;;;6153:27:0;;::::1;::::0;::::1;::::0;8595:18:1;;6153:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;6222:28:0::1;::::0;6242:7;;6222:28:::1;::::0;;;::::1;5694:564:::0;;:::o;9014:280::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9108:24:0;::::1;;::::0;;;:15:::1;:24;::::0;;;;;::::1;;9086:110;;;::::0;-1:-1:-1;;;9086:110:0;;9211:2:1;9086:110:0::1;::::0;::::1;9193:21:1::0;9250:2;9230:18;;;9223:30;9289:29;9269:18;;;9262:57;9336:18;;9086:110:0::1;9009:351:1::0;9086:110:0::1;-1:-1:-1::0;;;;;9207:24:0;::::1;9234:5;9207:24:::0;;;:15:::1;:24;::::0;;;;;:32;;-1:-1:-1;;9207:32:0::1;::::0;;9255:31;::::1;::::0;9234:5;9255:31:::1;9014:280:::0;:::o;13119:618::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;13184:15:::1;:95:::0;;-1:-1:-1;;;;;;13184:95:0::1;13226:42;13184:95:::0;;::::1;::::0;;;13317:25:::1;::::0;;-1:-1:-1;;;13317:25:0;;;;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;13226:42;13317:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13306:48:0::1;;13377:4;13397:15;;;;;;;;;-1:-1:-1::0;;;;;13397:15:0::1;-1:-1:-1::0;;;;;13397:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13306:124;::::0;-1:-1:-1;;;;;;13306:124:0::1;::::0;;;;;;-1:-1:-1;;;;;9851:15:1;;;13306:124:0::1;::::0;::::1;9833:34:1::0;9903:15;;9883:18;;;9876:43;9768:18;;13306:124:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13290:13;:140:::0;;-1:-1:-1;;;;;;13290:140:0::1;-1:-1:-1::0;;;;;13290:140:0;;::::1;;::::0;;13475:15:::1;::::0;13443:62:::1;::::0;13460:4:::1;::::0;13475:15:::1;-1:-1:-1::0;;13443:8:0::1;:62::i;:::-;13518:15;::::0;-1:-1:-1;;;;;13518:15:0::1;:31;13557:9;13590:4;13610:24;13590:4:::0;-1:-1:-1;;;;;7154:16:0;7127:7;7154:16;;;:7;:16;;;;;;;7061:117;13610:24:::1;13649:1;13665::::0;13681:7:::1;2869::::0;2896:6;-1:-1:-1;;;;;2896:6:0;;2831:79;13681:7:::1;13518:211;::::0;::::1;::::0;;;-1:-1:-1;;;;;;13518:211:0;;;-1:-1:-1;;;;;10289:15:1;;;13518:211:0::1;::::0;::::1;10271:34:1::0;10321:18;;;10314:34;;;;10364:18;;;10357:34;;;;10407:18;;;10400:34;10471:15;;;10450:19;;;10443:44;13703:15:0::1;10503:19:1::0;;;10496:35;10205:19;;13518:211:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13119:618::o:0;3041:238::-;2956:6;;-1:-1:-1;;;;;2956:6:0;1814:10;2956:22;2948:67;;;;-1:-1:-1;;;2948:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3144:22:0;::::1;3122:110;;;::::0;-1:-1:-1;;;3122:110:0;;11055:2:1;3122:110:0::1;::::0;::::1;11037:21:1::0;11094:2;11074:18;;;11067:30;11133:34;11113:18;;;11106:62;-1:-1:-1;;;11184:18:1;;;11177:36;11230:19;;3122:110:0::1;10853:402:1::0;3122:110:0::1;3243:28;3262:8;3243:18;:28::i;:::-;3041:238:::0;:::o;12212:335::-;-1:-1:-1;;;;;12305:19:0;;12297:68;;;;-1:-1:-1;;;12297:68:0;;11462:2:1;12297:68:0;;;11444:21:1;11501:2;11481:18;;;11474:30;11540:34;11520:18;;;11513:62;-1:-1:-1;;;11591:18:1;;;11584:34;11635:19;;12297:68:0;11260:400:1;12297:68:0;-1:-1:-1;;;;;12384:21:0;;12376:68;;;;-1:-1:-1;;;12376:68:0;;11867:2:1;12376:68:0;;;11849:21:1;11906:2;11886:18;;;11879:30;11945:34;11925:18;;;11918:62;-1:-1:-1;;;11996:18:1;;;11989:32;12038:19;;12376:68:0;11665:398:1;12376:68:0;-1:-1:-1;;;;;12455:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12507:32;;1888:25:1;;;12507:32:0;;1861:18:1;12507:32:0;;;;;;;12212:335;;;:::o;9302:2865::-;-1:-1:-1;;;;;9390:18:0;;9382:68;;;;-1:-1:-1;;;9382:68:0;;12270:2:1;9382:68:0;;;12252:21:1;12309:2;12289:18;;;12282:30;12348:34;12328:18;;;12321:62;-1:-1:-1;;;12399:18:1;;;12392:35;12444:19;;9382:68:0;12068:401:1;9382:68:0;-1:-1:-1;;;;;9469:16:0;;9461:64;;;;-1:-1:-1;;;9461:64:0;;12676:2:1;9461:64:0;;;12658:21:1;12715:2;12695:18;;;12688:30;12754:34;12734:18;;;12727:62;-1:-1:-1;;;12805:18:1;;;12798:33;12848:19;;9461:64:0;12474:399:1;9461:64:0;9553:1;9544:6;:10;9536:64;;;;-1:-1:-1;;;9536:64:0;;13080:2:1;9536:64:0;;;13062:21:1;13119:2;13099:18;;;13092:30;13158:34;13138:18;;;13131:62;-1:-1:-1;;;13209:18:1;;;13202:39;13258:19;;9536:64:0;12878:405:1;9536:64:0;9657:10;;-1:-1:-1;;;;;9683:21:0;;9611:18;9683:21;;;:15;:21;;;;;;;;9682:22;:46;;;;-1:-1:-1;;;;;;9709:19:0;;;;;;:15;:19;;;;;;;;9708:20;9682:46;9678:123;;;9753:12;;-1:-1:-1;;;9753:12:0;;;;9745:44;;;;-1:-1:-1;;;9745:44:0;;13490:2:1;9745:44:0;;;13472:21:1;13529:2;13509:18;;;13502:30;-1:-1:-1;;;13548:18:1;;;13541:49;13607:18;;9745:44:0;13288:343:1;9745:44:0;9815:10;;-1:-1:-1;;;9815:10:0;;;;;:26;;-1:-1:-1;9830:11:0;;-1:-1:-1;;;9830:11:0;;;;9829:12;9815:26;9811:185;;;-1:-1:-1;;;;;9858:13:0;;;;;;:7;:13;;;;;:23;;9875:6;;9858:13;:23;;9875:6;;9858:23;:::i;:::-;;;;-1:-1:-1;;;;;;;9896:11:0;;;;;;:7;:11;;;;;:21;;9911:6;;9896:11;:21;;9911:6;;9896:21;:::i;:::-;;;;;;;;9952:2;-1:-1:-1;;;;;9937:26:0;9946:4;-1:-1:-1;;;;;9937:26:0;-1:-1:-1;;;;;;;;;;;9956:6:0;9937:26;;;;1888:25:1;;1876:2;1861:18;;1742:177;9937:26:0;;;;;;;;9978:7;9302:2865;;;:::o;9811:185::-;10032:13;;-1:-1:-1;;;;;10024:21:0;;;10032:13;;10024:21;:68;;;;-1:-1:-1;10076:15:0;;-1:-1:-1;;;;;10062:30:0;;;10076:15;;10062:30;;10024:68;:105;;;;-1:-1:-1;;;;;;10110:19:0;;;;;;:15;:19;;;;;;;;10109:20;10024:105;10006:392;;;10174:14;;10164:6;:24;;10156:62;;;;-1:-1:-1;;;10156:62:0;;13971:2:1;10156:62:0;;;13953:21:1;14010:2;13990:18;;;13983:30;-1:-1:-1;;;14029:18:1;;;14022:55;14094:18;;10156:62:0;13769:349:1;10156:62:0;10285:14;;10275:6;10259:13;10269:2;-1:-1:-1;;;;;7154:16:0;7127:7;7154:16;;;:7;:16;;;;;;;7061:117;10259:13;:22;;;;:::i;:::-;:40;;10233:128;;;;-1:-1:-1;;;10233:128:0;;14325:2:1;10233:128:0;;;14307:21:1;14364:2;14344:18;;;14337:30;14403:28;14383:18;;;14376:56;14449:18;;10233:128:0;14123:350:1;10233:128:0;10376:8;:10;;;:8;:10;;;:::i;:::-;;;;;;10006:392;10434:13;;-1:-1:-1;;;;;10426:21:0;;;10434:13;;10426:21;;;;:60;;-1:-1:-1;;;;;;10465:21:0;;;;;;:15;:21;;;;;;;;10464:22;10426:60;:97;;;;-1:-1:-1;;;;;;10504:19:0;;;;;;:15;:19;;;;;;;;10503:20;10426:97;10408:216;;;10568:14;;10558:6;:24;;10550:62;;;;-1:-1:-1;;;10550:62:0;;13971:2:1;10550:62:0;;;13953:21:1;14010:2;13990:18;;;13983:30;-1:-1:-1;;;14029:18:1;;;14022:55;14094:18;;10550:62:0;13769:349:1;10550:62:0;10658:13;;-1:-1:-1;;;;;10652:19:0;;;10658:13;;10652:19;:57;;;;-1:-1:-1;;;;;;10688:21:0;;10704:4;10688:21;;10652:57;:96;;;;-1:-1:-1;;;;;;10727:21:0;;;;;;:15;:21;;;;;;;;10726:22;10652:96;:133;;;;-1:-1:-1;;;;;;10766:19:0;;;;;;:15;:19;;;;;;;;10765:20;10652:133;10634:214;;;-1:-1:-1;10825:11:0;;10634:214;10908:4;10858:29;7154:16;;;:7;:16;;;;;;10953:14;;10943:24;;;;;:60;;-1:-1:-1;10990:13:0;;-1:-1:-1;;;;;10984:19:0;;;10990:13;;10984:19;10943:60;:88;;;;-1:-1:-1;11020:11:0;;-1:-1:-1;;;11020:11:0;;;;10943:88;:116;;;;-1:-1:-1;11049:10:0;;-1:-1:-1;;;11049:10:0;;;;11048:11;10943:116;:172;;;;;11101:14;;11076:21;:39;;10943:172;:201;;;;;11143:1;11132:8;;:12;10943:201;:240;;;;-1:-1:-1;;;;;;11162:21:0;;;;;;:15;:21;;;;;;;;11161:22;10943:240;:277;;;;-1:-1:-1;;;;;;11201:19:0;;;;;;:15;:19;;;;;;;;11200:20;10943:277;10925:575;;;11247:67;11259:54;11263:6;11271:41;11275:21;11298:13;;11271:3;:41::i;:::-;11259:3;:54::i;:::-;11247:11;:67::i;:::-;11357:21;11397;;11393:96;;11439:34;11451:21;11439:11;:34::i;:::-;11232:268;10925:575;11514:15;;11510:650;;11546:14;11587:3;11564:19;11573:10;11564:6;:19;:::i;:::-;11563:27;;;;:::i;:::-;11546:44;-1:-1:-1;11605:17:0;11625:15;11546:44;11625:6;:15;:::i;:::-;-1:-1:-1;;;;;11676:21:0;;11655:18;11676:21;;;:15;:21;;;;;;11605:35;;-1:-1:-1;11655:18:0;11676:21;;:44;;11715:4;11676:44;;;11700:4;11676:44;-1:-1:-1;;;;;11744:21:0;;;;;;:15;:21;;;;;;11655:65;;-1:-1:-1;11744:21:0;;:39;;11777:6;11744:39;;;11768:6;11744:39;-1:-1:-1;;;;;11798:19:0;;;;;;:7;:19;;;;;:29;;11735:48;;-1:-1:-1;11735:48:0;;11798:19;;;:29;;11735:48;;11798:29;:::i;:::-;;;;-1:-1:-1;;11847:37:0;;1888:25:1;;;11870:4:0;;-1:-1:-1;;;;;11847:37:0;;;-1:-1:-1;;;;;;;;;;;11847:37:0;1876:2:1;1861:18;11847:37:0;;;;;;;-1:-1:-1;;;;;11899:13:0;;;;;;:7;:13;;;;;:23;;11916:6;;11899:13;:23;;11916:6;;11899:23;:::i;:::-;;;;-1:-1:-1;;;;;;;11937:11:0;;;;;;:7;:11;;;;;:24;;11952:9;;11937:11;:24;;11952:9;;11937:24;:::i;:::-;;;;;;;;11996:2;-1:-1:-1;;;;;11981:29:0;11990:4;-1:-1:-1;;;;;11981:29:0;-1:-1:-1;;;;;;;;;;;12000:9:0;11981:29;;;;1888:25:1;;1876:2;1861:18;;1742:177;11981:29:0;;;;;;;;11531:491;;;11510:650;;;-1:-1:-1;;;;;12043:13:0;;;;;;:7;:13;;;;;:23;;12060:6;;12043:13;:23;;12060:6;;12043:23;:::i;:::-;;;;-1:-1:-1;;;;;;;12081:11:0;;;;;;:7;:11;;;;;:21;;12096:6;;12081:11;:21;;12096:6;;12081:21;:::i;:::-;;;;;;;;12137:2;-1:-1:-1;;;;;12122:26:0;12131:4;-1:-1:-1;;;;;12122:26:0;-1:-1:-1;;;;;;;;;;;12141:6:0;12122:26;;;;1888:25:1;;1876:2;1861:18;;1742:177;12122:26:0;;;;;;;;11510:650;9371:2796;;9302:2865;;;:::o;3285:191::-;3359:16;3378:6;;-1:-1:-1;;;;;3395:17:0;;;-1:-1:-1;;;;;;3395:17:0;;;;;;3428:40;;3378:6;;;;;;;3428:40;;3359:16;3428:40;3348:128;3285:191;:::o;8613:107::-;8670:7;8702:1;8698;:5;8697:15;;8711:1;8697:15;;;8707:1;8697:15;8690:22;8613:107;-1:-1:-1;;;8613:107:0:o;8058:547::-;4573:10;:17;;-1:-1:-1;;;;4573:17:0;-1:-1:-1;;;4573:17:0;;;8140:15;8132:57:::1;;;::::0;-1:-1:-1;;;8132:57:0;;15042:2:1;8132:57:0::1;::::0;::::1;15024:21:1::0;15081:2;15061:18;;;15054:30;15120:31;15100:18;;;15093:59;15169:18;;8132:57:0::1;14840:353:1::0;8132:57:0::1;8224:16;::::0;;8238:1:::1;8224:16:::0;;;;;::::1;::::0;;8200:21:::1;::::0;8224:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;8224:16:0::1;8200:40;;8269:4;8251;8256:1;8251:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8251:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;8295:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;8295:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;8251:7;;8295:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8285:4;8290:1;8285:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8285:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;8360:15:::1;::::0;8328:62:::1;::::0;8345:4:::1;::::0;8360:15:::1;8378:11:::0;8328:8:::1;:62::i;:::-;8401:15;::::0;:196:::1;::::0;-1:-1:-1;;;8401:196:0;;-1:-1:-1;;;;;8401:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;8482:11;;8401:15:::1;::::0;8524:4;;8551::::1;::::0;8571:15:::1;::::0;8401:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4626:5:0;4613:18;;-1:-1:-1;;;;4613:18:0;;;-1:-1:-1;;;;8058:547:0:o;13745:205::-;13818:1;13809:6;:10;13801:52;;;;-1:-1:-1;;;13801:52:0;;15042:2:1;13801:52:0;;;15024:21:1;15081:2;15061:18;;;15054:30;15120:31;15100:18;;;15093:59;15169:18;;13801:52:0;14840:353:1;13801:52:0;13864:10;;-1:-1:-1;;;;;13864:10:0;:31;13884:10;13893:1;13884:6;:10;:::i;:::-;13864:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13906:15:0;;-1:-1:-1;;;;;13906:15:0;:36;13931:10;13940:1;13931:6;:10;:::i;:::-;13906:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13745:205;:::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;1264:248::-;1332:6;1340;1393:2;1381:9;1372:7;1368:23;1364:32;1361:52;;;1409:1;1406;1399:12;1361:52;-1:-1:-1;;1432:23:1;;;1502:2;1487:18;;;1474:32;;-1:-1:-1;1264:248:1:o;1924:456::-;2001:6;2009;2017;2070:2;2058:9;2049:7;2045:23;2041:32;2038:52;;;2086:1;2083;2076:12;2038:52;2125:9;2112:23;2144:31;2169:5;2144:31;:::i;:::-;2194:5;-1:-1:-1;2251:2:1;2236:18;;2223:32;2264:33;2223:32;2264:33;:::i;:::-;1924:456;;2316:7;;-1:-1:-1;;;2370:2:1;2355:18;;;;2342:32;;1924:456::o;2782:247::-;2841:6;2894:2;2882:9;2873:7;2869:23;2865:32;2862:52;;;2910:1;2907;2900:12;2862:52;2949:9;2936:23;2968:31;2993:5;2968:31;:::i;3034:388::-;3102:6;3110;3163:2;3151:9;3142:7;3138:23;3134:32;3131:52;;;3179:1;3176;3169:12;3131:52;3218:9;3205:23;3237:31;3262:5;3237:31;:::i;:::-;3287:5;-1:-1:-1;3344:2:1;3329:18;;3316:32;3357:33;3316:32;3357:33;:::i;:::-;3409:7;3399:17;;;3034:388;;;;;:::o;3427:398::-;3629:2;3611:21;;;3668:2;3648:18;;;3641:30;3707:34;3702:2;3687:18;;3680:62;-1:-1:-1;;;3773:2:1;3758:18;;3751:32;3815:3;3800:19;;3427:398::o;4178:356::-;4380:2;4362:21;;;4399:18;;;4392:30;4458:34;4453:2;4438:18;;4431:62;4525:2;4510:18;;4178:356::o;4893:127::-;4954:10;4949:3;4945:20;4942:1;4935:31;4985:4;4982:1;4975:15;5009:4;5006:1;4999:15;5025:422;5114:1;5157:5;5114:1;5171:270;5192:7;5182:8;5179:21;5171:270;;;5251:4;5247:1;5243:6;5239:17;5233:4;5230:27;5227:53;;;5260:18;;:::i;:::-;5310:7;5300:8;5296:22;5293:55;;;5330:16;;;;5293:55;5409:22;;;;5369:15;;;;5171:270;;;5175:3;5025:422;;;;;:::o;5452:806::-;5501:5;5531:8;5521:80;;-1:-1:-1;5572:1:1;5586:5;;5521:80;5620:4;5610:76;;-1:-1:-1;5657:1:1;5671:5;;5610:76;5702:4;5720:1;5715:59;;;;5788:1;5783:130;;;;5695:218;;5715:59;5745:1;5736:10;;5759:5;;;5783:130;5820:3;5810:8;5807:17;5804:43;;;5827:18;;:::i;:::-;-1:-1:-1;;5883:1:1;5869:16;;5898:5;;5695:218;;5997:2;5987:8;5984:16;5978:3;5972:4;5969:13;5965:36;5959:2;5949:8;5946:16;5941:2;5935:4;5932:12;5928:35;5925:77;5922:159;;;-1:-1:-1;6034:19:1;;;6066:5;;5922:159;6113:34;6138:8;6132:4;6113:34;:::i;:::-;6183:6;6179:1;6175:6;6171:19;6162:7;6159:32;6156:58;;;6194:18;;:::i;:::-;6232:20;;5452:806;-1:-1:-1;;;5452:806:1:o;6263:140::-;6321:5;6350:47;6391:4;6381:8;6377:19;6371:4;6350:47;:::i;6408:168::-;6448:7;6514:1;6510;6506:6;6502:14;6499:1;6496:21;6491:1;6484:9;6477:17;6473:45;6470:71;;;6521:18;;:::i;:::-;-1:-1:-1;6561:9:1;;6408:168::o;6990:125::-;7030:4;7058:1;7055;7052:8;7049:34;;;7063:18;;:::i;:::-;-1:-1:-1;7100:9:1;;6990:125::o;8251:184::-;8321:6;8374:2;8362:9;8353:7;8349:23;8345:32;8342:52;;;8390:1;8387;8380:12;8342:52;-1:-1:-1;8413:16:1;;8251:184;-1:-1:-1;8251:184:1:o;8727:277::-;8794:6;8847:2;8835:9;8826:7;8822:23;8818:32;8815:52;;;8863:1;8860;8853:12;8815:52;8895:9;8889:16;8948:5;8941:13;8934:21;8927:5;8924:32;8914:60;;8970:1;8967;8960:12;9365:251;9435:6;9488:2;9476:9;9467:7;9463:23;9459:32;9456:52;;;9504:1;9501;9494:12;9456:52;9536:9;9530:16;9555:31;9580:5;9555:31;:::i;10542:306::-;10630:6;10638;10646;10699:2;10687:9;10678:7;10674:23;10670:32;10667:52;;;10715:1;10712;10705:12;10667:52;10744:9;10738:16;10728:26;;10794:2;10783:9;10779:18;10773:25;10763:35;;10838:2;10827:9;10823:18;10817:25;10807:35;;10542:306;;;;;:::o;13636:128::-;13676:3;13707:1;13703:6;13700:1;13697:13;13694:39;;;13713:18;;:::i;:::-;-1:-1:-1;13749:9:1;;13636:128::o;14478:135::-;14517:3;-1:-1:-1;;14538:17:1;;14535:43;;;14558:18;;:::i;:::-;-1:-1:-1;14605:1:1;14594:13;;14478:135::o;14618:217::-;14658:1;14684;14674:132;;14728:10;14723:3;14719:20;14716:1;14709:31;14763:4;14760:1;14753:15;14791:4;14788:1;14781:15;14674:132;-1:-1:-1;14820:9:1;;14618:217::o;15330:127::-;15391:10;15386:3;15382:20;15379:1;15372:31;15422:4;15419:1;15412:15;15446:4;15443:1;15436:15;15462:980;15724:4;15772:3;15761:9;15757:19;15803:6;15792:9;15785:25;15829:2;15867:6;15862:2;15851:9;15847:18;15840:34;15910:3;15905:2;15894:9;15890:18;15883:31;15934:6;15969;15963:13;16000:6;15992;15985:22;16038:3;16027:9;16023:19;16016:26;;16077:2;16069:6;16065:15;16051:29;;16098:1;16108:195;16122:6;16119:1;16116:13;16108:195;;;16187:13;;-1:-1:-1;;;;;16183:39:1;16171:52;;16278:15;;;;16243:12;;;;16219:1;16137:9;16108:195;;;-1:-1:-1;;;;;;;16359:32:1;;;;16354:2;16339:18;;16332:60;-1:-1:-1;;;16423:3:1;16408:19;16401:35;16320:3;15462:980;-1:-1:-1;;;15462:980:1:o

Swarm Source

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