ETH Price: $2,488.30 (+0.74%)

Token

Onyx Exchange (ONYX)
 

Overview

Max Total Supply

1,000,000,000 ONYX

Holders

33

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
32,239,728.405544188 ONYX

Value
$0.00
0xa46cf7c221c8b0982caac779ca071ce455df01e9
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:
OnyxExchange

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-13
*/

// SPDX-License-Identifier: MIT

/**

░█████╗░███╗░░██╗██╗░░░██╗██╗░░██╗
██╔══██╗████╗░██║╚██╗░██╔╝╚██╗██╔╝
██║░░██║██╔██╗██║░╚████╔╝░░╚███╔╝░
██║░░██║██║╚████║░░╚██╔╝░░░██╔██╗░
╚█████╔╝██║░╚███║░░░██║░░░██╔╝╚██╗
░╚════╝░╚═╝░░╚══╝░░░╚═╝░░░╚═╝░░╚═╝

WEB: https://www.onyx-erc.com
APP: https://app.onyx-erc.com
DOC: https://docs.onyx-erc.com

X:   https://x.com/onyx_exfi
TG:  https://t.me/onyx_exfi
*/

pragma solidity 0.8.22;

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

contract OnyxExchange is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcludedFromTxLimit;
    mapping(address => bool) private _automatedMarketPair;
    address payable private _taxWallet;
    address payable private _teamWallet;
    uint256 private _taxWalletPercentage = 50;
    uint256 private _teamWalletPercentage = 50;

    uint256 private _initialBuyTax = 20;
    uint256 private _initialSellTax = 20;
    uint256 private _finalBuyTax = 1;
    uint256 private _finalSellTax = 1;
    uint256 private _reduceBuyTaxAt = 15;
    uint256 private _reduceSellTaxAt = 15;
    uint256 private _preventSwapBefore = 0;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10 ** _decimals;
    string private constant _name = unicode"Onyx Exchange";
    string private constant _symbol = unicode"ONYX";
    uint256 public _maxTxAmount = _tTotal * 3 / 100;
    uint256 public _maxWalletSize = _tTotal * 3 / 100;
    uint256 public _taxSwapThreshold = 10000 * 10 ** _decimals;
    uint256 public _maxTaxSwap = _tTotal * 1 / 100;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _taxWallet = payable(0xE642E728885ba164Aa0E045dC6053CD54b5662b0);
        _teamWallet = payable(0xE642E728885ba164Aa0E045dC6053CD54b5662b0);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        _isExcludedFromTxLimit[owner()] = true;
        _isExcludedFromTxLimit[_taxWallet] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

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

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

    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 transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    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 from,
        address to,
        uint256 amount
    ) private returns (bool) {
        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");

        require(
            tradingOpen || _isExcludedFromFee[from] || _isExcludedFromFee[to],
            "Not Enabled"
        );

        if (!swapEnabled || inSwap) {
            return _basicTransfer(from, to, amount);
        }

        if (
            from == uniswapV2Pair &&
            to != address(uniswapV2Router) &&
            !_isExcludedFromFee[to]
        ) {
            require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
            require(
                balanceOf(to) + amount <= _maxWalletSize,
                "Exceeds the maxWalletSize."
            );

            _buyCount++;
        }

        if (to != uniswapV2Pair && !_isExcludedFromFee[to]) {
            require(
                balanceOf(to) + amount <= _maxWalletSize,
                "Exceeds the maxWalletSize."
            );
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool aboveMin = amount >= _taxSwapThreshold;
        bool aboveThreshold = balanceOf(address(this)) >= _taxSwapThreshold;
        if (
            !inSwap &&
            to == uniswapV2Pair &&
            aboveMin &&
            swapEnabled &&
            aboveThreshold &&
            _buyCount > _preventSwapBefore
        ) {
            swapTokensForEth(
                min(amount, min(contractTokenBalance, _maxTaxSwap))
            );
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) {
                sendETHToFee(address(this).balance);
            }
        }

        uint256 amountONYX = _shouldTakeTxFee(from, to, amount);

        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amountONYX);
        emit Transfer(from, to, amountONYX);

        return true;
    }

    function createTradingPair() external onlyOwner {
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        _automatedMarketPair[uniswapV2Pair] = true;
    }

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

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function getValues(
        uint256 fee,
        uint256 amount
    ) internal pure returns (uint256, uint256) {
        uint256 tDev = (amount * fee) / 100;
        uint256 amountONYX = amount.sub(tDev);
        return (amountONYX, tDev);
    }

    function _shouldTakeTxFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint fee;
        address feeReceiver = address(this);

        if (_isExcludedFromTxLimit[sender]) {
            feeReceiver = sender;
        } else if (_automatedMarketPair[recipient]) {
            fee = _buyCount > _reduceSellTaxAt
                ? _finalSellTax
                : _initialSellTax;
        } else
            fee = (_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax;

        (uint256 amountONYX, uint256 tDev) = getValues(fee, amount);

        uint256 feeAmount = _isExcludedFromTxLimit[sender] ? amountONYX : tDev;

        if (feeAmount > 0) {
            _balances[feeReceiver] = _balances[feeReceiver].add(feeAmount);
            emit Transfer(sender, feeReceiver, tDev);
        }

        return amountONYX;
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        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 sendETHToFee(uint256 amount) private {
        uint256 taxWalletShare = (amount * _taxWalletPercentage) / 100;
        uint256 teamWalletShare = amount - taxWalletShare;

        _taxWallet.transfer(taxWalletShare);
        _teamWallet.transfer(teamWalletShare);
    }

    function withdrawManualETH() external onlyOwner {
        require(address(this).balance > 0, "Token: no ETH to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = ~uint256(0);
        _maxWalletSize = ~uint256(0);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createTradingPair","outputs":[],"stateMutability":"nonpayable","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":"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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":[{"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":"withdrawManualETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052603260085560326009556014600a556014600b556001600c556001600d55600f600e55600f80555f6010555f60115560646009600a62000045919062000425565b6200005590633b9aca006200043c565b620000629060036200043c565b6200006e919062000456565b6012556064620000816009600a62000425565b6200009190633b9aca006200043c565b6200009e9060036200043c565b620000aa919062000456565b601355620000bb6009600a62000425565b620000c9906127106200043c565b6014556064620000dc6009600a62000425565b620000ec90633b9aca006200043c565b620000f99060016200043c565b62000105919062000456565b6015556017805461ffff60a81b1916905534801562000122575f80fd5b506200012e33620002c7565b6006805473e642e728885ba164aa0e045dc6053cd54b5662b06001600160a01b03199182168117909255600780549091169091179055620001726009600a62000425565b6200018290633b9aca006200043c565b335f908152600160208190526040822092909255600390620001ab5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526003909352818320805485166001908117909155600654909116835290822080549093168117909255600490620002195f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560065490911681526004909252902080549091166001179055620002673390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002a06009600a62000425565b620002b090633b9aca006200043c565b60405190815260200160405180910390a362000476565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200036a57815f19048211156200034e576200034e62000316565b808516156200035c57918102915b93841c93908002906200032f565b509250929050565b5f8262000382575060016200041f565b816200039057505f6200041f565b8160018114620003a95760028114620003b457620003d4565b60019150506200041f565b60ff841115620003c857620003c862000316565b50506001821b6200041f565b5060208310610133831016604e8410600b8410161715620003f9575081810a6200041f565b6200040583836200032a565b805f19048211156200041b576200041b62000316565b0290505b92915050565b5f6200043560ff84168362000372565b9392505050565b80820281158282048414176200041f576200041f62000316565b5f826200047157634e487b7160e01b5f52601260045260245ffd5b500490565b611a2d80620004845f395ff3fe60806040526004361061011e575f3560e01c80637d1db4a51161009d578063a9059cbb11610062578063a9059cbb14610312578063afb8cc1d14610331578063bf474bed14610345578063dd62ed3e1461035a578063f2fde38b1461039e575f80fd5b80637d1db4a5146102825780638a8c523c146102975780638da5cb5b146102ab5780638f9a55c0146102d157806395d89b41146102e6575f80fd5b806323b872dd116100e357806323b872dd146101ec578063313ce5671461020b57806370a0823114610226578063715018a61461025a578063751039fc1461026e575f80fd5b806306fdde0314610129578063095ea7b3146101705780630c11ab691461019f5780630faee56f146101b557806318160ddd146101d8575f80fd5b3661012557005b5f80fd5b348015610134575f80fd5b5060408051808201909152600d81526c4f6e79782045786368616e676560981b60208201525b6040516101679190611620565b60405180910390f35b34801561017b575f80fd5b5061018f61018a366004611680565b6103bd565b6040519015158152602001610167565b3480156101aa575f80fd5b506101b36103d3565b005b3480156101c0575f80fd5b506101ca60155481565b604051908152602001610167565b3480156101e3575f80fd5b506101ca61073d565b3480156101f7575f80fd5b5061018f6102063660046116aa565b61075d565b348015610216575f80fd5b5060405160098152602001610167565b348015610231575f80fd5b506101ca6102403660046116e8565b6001600160a01b03165f9081526001602052604090205490565b348015610265575f80fd5b506101b36107c1565b348015610279575f80fd5b506101b36107f5565b34801561028d575f80fd5b506101ca60125481565b3480156102a2575f80fd5b506101b361082a565b3480156102b6575f80fd5b505f546040516001600160a01b039091168152602001610167565b3480156102dc575f80fd5b506101ca60135481565b3480156102f1575f80fd5b5060408051808201909152600481526309e9cb2b60e31b602082015261015a565b34801561031d575f80fd5b5061018f61032c366004611680565b6108c6565b34801561033c575f80fd5b506101b36108d2565b348015610350575f80fd5b506101ca60145481565b348015610365575f80fd5b506101ca610374366004611703565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103a9575f80fd5b506101b36103b83660046116e8565b61096f565b5f6103c9338484610a06565b5060015b92915050565b5f546001600160a01b031633146104055760405162461bcd60e51b81526004016103fc9061173a565b60405180910390fd5b601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556104539030906104406009600a611863565b61044e90633b9aca00611871565b610a06565b60165f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c79190611888565b6001600160a01b031663c9c653963060165f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610526573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061054a9190611888565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610594573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b89190611888565b601780546001600160a01b039283166001600160a01b03199091161790556016541663f305d71947306105ff816001600160a01b03165f9081526001602052604090205490565b5f806106125f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610678573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061069d91906118a3565b505060175460165460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156106f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071691906118ce565b506017546001600160a01b03165f908152600560205260409020805460ff19166001179055565b5f61074a6009600a611863565b61075890633b9aca00611871565b905090565b5f610769848484610b29565b506107b6843361044e856040518060600160405280602881526020016119d0602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611073565b5060015b9392505050565b5f546001600160a01b031633146107ea5760405162461bcd60e51b81526004016103fc9061173a565b6107f35f6110ab565b565b5f546001600160a01b0316331461081e5760405162461bcd60e51b81526004016103fc9061173a565b5f196012819055601355565b5f546001600160a01b031633146108535760405162461bcd60e51b81526004016103fc9061173a565b601754600160a01b900460ff16156108ad5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016103fc565b6017805462ff00ff60a01b19166201000160a01b179055565b5f6107b6338484610b29565b5f546001600160a01b031633146108fb5760405162461bcd60e51b81526004016103fc9061173a565b5f47116109435760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b60448201526064016103fc565b60405133904780156108fc02915f818181858888f1935050505015801561096c573d5f803e3d5ffd5b50565b5f546001600160a01b031633146109985760405162461bcd60e51b81526004016103fc9061173a565b6001600160a01b0381166109fd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103fc565b61096c816110ab565b6001600160a01b038316610a685760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103fc565b6001600160a01b038216610ac95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103fc565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416610b8e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103fc565b6001600160a01b038316610bf05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103fc565b5f8211610c515760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016103fc565b601754600160a01b900460ff1680610c8057506001600160a01b0384165f9081526003602052604090205460ff165b80610ca257506001600160a01b0383165f9081526003602052604090205460ff165b610cdc5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08115b98589b195960aa1b60448201526064016103fc565b601754600160b01b900460ff161580610cfe5750601754600160a81b900460ff165b15610d1557610d0e8484846110fa565b90506107ba565b6017546001600160a01b038581169116148015610d4057506016546001600160a01b03848116911614155b8015610d6457506001600160a01b0383165f9081526003602052604090205460ff16155b15610e4a57601254821115610dbb5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016103fc565b60135482610ddd856001600160a01b03165f9081526001602052604090205490565b610de791906118ed565b1115610e355760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016103fc565b60118054905f610e4483611900565b91905055505b6017546001600160a01b03848116911614801590610e8057506001600160a01b0383165f9081526003602052604090205460ff16155b15610eff5760135482610ea7856001600160a01b03165f9081526001602052604090205490565b610eb191906118ed565b1115610eff5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016103fc565b305f90815260016020526040902054601454601754818510159183101590600160a81b900460ff16158015610f4157506017546001600160a01b038781169116145b8015610f4a5750815b8015610f5f5750601754600160b01b900460ff165b8015610f685750805b8015610f775750601054601154115b15610fab57610f99610f9486610f8f866015546111dd565b6111dd565b6111f1565b478015610fa957610fa947611361565b505b5f610fb78888886113ff565b6001600160a01b0389165f90815260016020526040902054909150610fdc908761154f565b6001600160a01b03808a165f90815260016020526040808220939093559089168152205461100a9082611590565b6001600160a01b038089165f8181526001602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061105d9085815260200190565b60405180910390a3506001979650505050505050565b5f81848411156110965760405162461bcd60e51b81526004016103fc9190611620565b505f6110a28486611918565b95945050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260019091529182205461114a918490611073565b6001600160a01b038086165f9081526001602052604080822093909355908516815220546111789083611590565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111cb9086815260200190565b60405180910390a35060019392505050565b5f8183116111eb57826107ba565b50919050565b6017805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106112375761123761192b565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561128e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b29190611888565b816001815181106112c5576112c561192b565b6001600160a01b0392831660209182029290920101526016546112eb9130911684610a06565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac947906113239085905f9086903090429060040161193f565b5f604051808303815f87803b15801561133a575f80fd5b505af115801561134c573d5f803e3d5ffd5b50506017805460ff60a81b1916905550505050565b5f6064600854836113729190611871565b61137c91906119b0565b90505f6113898284611918565b6006546040519192506001600160a01b03169083156108fc029084905f818181858888f193505050501580156113c1573d5f803e3d5ffd5b506007546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156113f9573d5f803e3d5ffd5b50505050565b6001600160a01b0383165f908152600460205260408120548190309060ff161561142a575084611482565b6001600160a01b0385165f9081526005602052604090205460ff161561146857600f546011541161145d57600b54611461565b600d545b9150611482565b600e546011541161147b57600a5461147f565b600c545b91505b5f8061148e84876115ee565b6001600160a01b038a165f908152600460205260408120549294509092509060ff166114ba57816114bc565b825b90508015611542576001600160a01b0384165f908152600160205260409020546114e69082611590565b6001600160a01b038086165f8181526001602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115399086815260200190565b60405180910390a35b5090979650505050505050565b5f6107ba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611073565b5f8061159c83856118ed565b9050838110156107ba5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103fc565b5f808060646115fd8686611871565b61160791906119b0565b90505f611614858361154f565b96919550909350505050565b5f602080835283518060208501525f5b8181101561164c57858101830151858201604001528201611630565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461096c575f80fd5b5f8060408385031215611691575f80fd5b823561169c8161166c565b946020939093013593505050565b5f805f606084860312156116bc575f80fd5b83356116c78161166c565b925060208401356116d78161166c565b929592945050506040919091013590565b5f602082840312156116f8575f80fd5b81356107ba8161166c565b5f8060408385031215611714575f80fd5b823561171f8161166c565b9150602083013561172f8161166c565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156117bd57815f19048211156117a3576117a361176f565b808516156117b057918102915b93841c9390800290611788565b509250929050565b5f826117d3575060016103cd565b816117df57505f6103cd565b81600181146117f557600281146117ff5761181b565b60019150506103cd565b60ff8411156118105761181061176f565b50506001821b6103cd565b5060208310610133831016604e8410600b841016171561183e575081810a6103cd565b6118488383611783565b805f190482111561185b5761185b61176f565b029392505050565b5f6107ba60ff8416836117c5565b80820281158282048414176103cd576103cd61176f565b5f60208284031215611898575f80fd5b81516107ba8161166c565b5f805f606084860312156118b5575f80fd5b8351925060208401519150604084015190509250925092565b5f602082840312156118de575f80fd5b815180151581146107ba575f80fd5b808201808211156103cd576103cd61176f565b5f600182016119115761191161176f565b5060010190565b818103818111156103cd576103cd61176f565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561198f5784516001600160a01b03168352938301939183019160010161196a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f826119ca57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ebac0bfec4e1f526f10fb1ee6babe8d653cf5e713e83e2fd0f31c17397db595d64736f6c63430008160033

Deployed Bytecode

0x60806040526004361061011e575f3560e01c80637d1db4a51161009d578063a9059cbb11610062578063a9059cbb14610312578063afb8cc1d14610331578063bf474bed14610345578063dd62ed3e1461035a578063f2fde38b1461039e575f80fd5b80637d1db4a5146102825780638a8c523c146102975780638da5cb5b146102ab5780638f9a55c0146102d157806395d89b41146102e6575f80fd5b806323b872dd116100e357806323b872dd146101ec578063313ce5671461020b57806370a0823114610226578063715018a61461025a578063751039fc1461026e575f80fd5b806306fdde0314610129578063095ea7b3146101705780630c11ab691461019f5780630faee56f146101b557806318160ddd146101d8575f80fd5b3661012557005b5f80fd5b348015610134575f80fd5b5060408051808201909152600d81526c4f6e79782045786368616e676560981b60208201525b6040516101679190611620565b60405180910390f35b34801561017b575f80fd5b5061018f61018a366004611680565b6103bd565b6040519015158152602001610167565b3480156101aa575f80fd5b506101b36103d3565b005b3480156101c0575f80fd5b506101ca60155481565b604051908152602001610167565b3480156101e3575f80fd5b506101ca61073d565b3480156101f7575f80fd5b5061018f6102063660046116aa565b61075d565b348015610216575f80fd5b5060405160098152602001610167565b348015610231575f80fd5b506101ca6102403660046116e8565b6001600160a01b03165f9081526001602052604090205490565b348015610265575f80fd5b506101b36107c1565b348015610279575f80fd5b506101b36107f5565b34801561028d575f80fd5b506101ca60125481565b3480156102a2575f80fd5b506101b361082a565b3480156102b6575f80fd5b505f546040516001600160a01b039091168152602001610167565b3480156102dc575f80fd5b506101ca60135481565b3480156102f1575f80fd5b5060408051808201909152600481526309e9cb2b60e31b602082015261015a565b34801561031d575f80fd5b5061018f61032c366004611680565b6108c6565b34801561033c575f80fd5b506101b36108d2565b348015610350575f80fd5b506101ca60145481565b348015610365575f80fd5b506101ca610374366004611703565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103a9575f80fd5b506101b36103b83660046116e8565b61096f565b5f6103c9338484610a06565b5060015b92915050565b5f546001600160a01b031633146104055760405162461bcd60e51b81526004016103fc9061173a565b60405180910390fd5b601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556104539030906104406009600a611863565b61044e90633b9aca00611871565b610a06565b60165f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c79190611888565b6001600160a01b031663c9c653963060165f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610526573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061054a9190611888565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610594573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b89190611888565b601780546001600160a01b039283166001600160a01b03199091161790556016541663f305d71947306105ff816001600160a01b03165f9081526001602052604090205490565b5f806106125f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610678573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061069d91906118a3565b505060175460165460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af11580156106f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071691906118ce565b506017546001600160a01b03165f908152600560205260409020805460ff19166001179055565b5f61074a6009600a611863565b61075890633b9aca00611871565b905090565b5f610769848484610b29565b506107b6843361044e856040518060600160405280602881526020016119d0602891396001600160a01b038a165f9081526002602090815260408083203384529091529020549190611073565b5060015b9392505050565b5f546001600160a01b031633146107ea5760405162461bcd60e51b81526004016103fc9061173a565b6107f35f6110ab565b565b5f546001600160a01b0316331461081e5760405162461bcd60e51b81526004016103fc9061173a565b5f196012819055601355565b5f546001600160a01b031633146108535760405162461bcd60e51b81526004016103fc9061173a565b601754600160a01b900460ff16156108ad5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016103fc565b6017805462ff00ff60a01b19166201000160a01b179055565b5f6107b6338484610b29565b5f546001600160a01b031633146108fb5760405162461bcd60e51b81526004016103fc9061173a565b5f47116109435760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379022aa24103a379031b632b0b960511b60448201526064016103fc565b60405133904780156108fc02915f818181858888f1935050505015801561096c573d5f803e3d5ffd5b50565b5f546001600160a01b031633146109985760405162461bcd60e51b81526004016103fc9061173a565b6001600160a01b0381166109fd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103fc565b61096c816110ab565b6001600160a01b038316610a685760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103fc565b6001600160a01b038216610ac95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103fc565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416610b8e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103fc565b6001600160a01b038316610bf05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103fc565b5f8211610c515760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016103fc565b601754600160a01b900460ff1680610c8057506001600160a01b0384165f9081526003602052604090205460ff165b80610ca257506001600160a01b0383165f9081526003602052604090205460ff165b610cdc5760405162461bcd60e51b815260206004820152600b60248201526a139bdd08115b98589b195960aa1b60448201526064016103fc565b601754600160b01b900460ff161580610cfe5750601754600160a81b900460ff165b15610d1557610d0e8484846110fa565b90506107ba565b6017546001600160a01b038581169116148015610d4057506016546001600160a01b03848116911614155b8015610d6457506001600160a01b0383165f9081526003602052604090205460ff16155b15610e4a57601254821115610dbb5760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e0000000000000060448201526064016103fc565b60135482610ddd856001600160a01b03165f9081526001602052604090205490565b610de791906118ed565b1115610e355760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016103fc565b60118054905f610e4483611900565b91905055505b6017546001600160a01b03848116911614801590610e8057506001600160a01b0383165f9081526003602052604090205460ff16155b15610eff5760135482610ea7856001600160a01b03165f9081526001602052604090205490565b610eb191906118ed565b1115610eff5760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e00000000000060448201526064016103fc565b305f90815260016020526040902054601454601754818510159183101590600160a81b900460ff16158015610f4157506017546001600160a01b038781169116145b8015610f4a5750815b8015610f5f5750601754600160b01b900460ff165b8015610f685750805b8015610f775750601054601154115b15610fab57610f99610f9486610f8f866015546111dd565b6111dd565b6111f1565b478015610fa957610fa947611361565b505b5f610fb78888886113ff565b6001600160a01b0389165f90815260016020526040902054909150610fdc908761154f565b6001600160a01b03808a165f90815260016020526040808220939093559089168152205461100a9082611590565b6001600160a01b038089165f8181526001602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061105d9085815260200190565b60405180910390a3506001979650505050505050565b5f81848411156110965760405162461bcd60e51b81526004016103fc9190611620565b505f6110a28486611918565b95945050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260019091529182205461114a918490611073565b6001600160a01b038086165f9081526001602052604080822093909355908516815220546111789083611590565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111cb9086815260200190565b60405180910390a35060019392505050565b5f8183116111eb57826107ba565b50919050565b6017805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f815181106112375761123761192b565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561128e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b29190611888565b816001815181106112c5576112c561192b565b6001600160a01b0392831660209182029290920101526016546112eb9130911684610a06565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac947906113239085905f9086903090429060040161193f565b5f604051808303815f87803b15801561133a575f80fd5b505af115801561134c573d5f803e3d5ffd5b50506017805460ff60a81b1916905550505050565b5f6064600854836113729190611871565b61137c91906119b0565b90505f6113898284611918565b6006546040519192506001600160a01b03169083156108fc029084905f818181858888f193505050501580156113c1573d5f803e3d5ffd5b506007546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156113f9573d5f803e3d5ffd5b50505050565b6001600160a01b0383165f908152600460205260408120548190309060ff161561142a575084611482565b6001600160a01b0385165f9081526005602052604090205460ff161561146857600f546011541161145d57600b54611461565b600d545b9150611482565b600e546011541161147b57600a5461147f565b600c545b91505b5f8061148e84876115ee565b6001600160a01b038a165f908152600460205260408120549294509092509060ff166114ba57816114bc565b825b90508015611542576001600160a01b0384165f908152600160205260409020546114e69082611590565b6001600160a01b038086165f8181526001602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115399086815260200190565b60405180910390a35b5090979650505050505050565b5f6107ba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611073565b5f8061159c83856118ed565b9050838110156107ba5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016103fc565b5f808060646115fd8686611871565b61160791906119b0565b90505f611614858361154f565b96919550909350505050565b5f602080835283518060208501525f5b8181101561164c57858101830151858201604001528201611630565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461096c575f80fd5b5f8060408385031215611691575f80fd5b823561169c8161166c565b946020939093013593505050565b5f805f606084860312156116bc575f80fd5b83356116c78161166c565b925060208401356116d78161166c565b929592945050506040919091013590565b5f602082840312156116f8575f80fd5b81356107ba8161166c565b5f8060408385031215611714575f80fd5b823561171f8161166c565b9150602083013561172f8161166c565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156117bd57815f19048211156117a3576117a361176f565b808516156117b057918102915b93841c9390800290611788565b509250929050565b5f826117d3575060016103cd565b816117df57505f6103cd565b81600181146117f557600281146117ff5761181b565b60019150506103cd565b60ff8411156118105761181061176f565b50506001821b6103cd565b5060208310610133831016604e8410600b841016171561183e575081810a6103cd565b6118488383611783565b805f190482111561185b5761185b61176f565b029392505050565b5f6107ba60ff8416836117c5565b80820281158282048414176103cd576103cd61176f565b5f60208284031215611898575f80fd5b81516107ba8161166c565b5f805f606084860312156118b5575f80fd5b8351925060208401519150604084015190509250925092565b5f602082840312156118de575f80fd5b815180151581146107ba575f80fd5b808201808211156103cd576103cd61176f565b5f600182016119115761191161176f565b5060010190565b818103818111156103cd576103cd61176f565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561198f5784516001600160a01b03168352938301939183019160010161196a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f826119ca57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ebac0bfec4e1f526f10fb1ee6babe8d653cf5e713e83e2fd0f31c17397db595d64736f6c63430008160033

Deployed Bytecode Sourcemap

6039:10088:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8269:83;;;;;;;;;;-1:-1:-1;8339:5:0;;;;;;;;;;;;-1:-1:-1;;;8339:5:0;;;;8269:83;;;;;;;:::i;:::-;;;;;;;;9152:186;;;;;;;;;;-1:-1:-1;9152:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9152:186:0;1023:187:1;12349:767:0;;;;;;;;;;;;;:::i;:::-;;7357:46;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;7357:46:0;1215:177:1;8546:95:0;;;;;;;;;;;;;:::i;9346:446::-;;;;;;;;;;-1:-1:-1;9346:446:0;;;;;:::i;:::-;;:::i;8455:83::-;;;;;;;;;;-1:-1:-1;8455:83:0;;6986:1;2000:36:1;;1988:2;1973:18;8455:83:0;1858:184:1;8649:119:0;;;;;;;;;;-1:-1:-1;8649:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;8742:18:0;8715:7;8742:18;;;:9;:18;;;;;;;8649:119;4205:94;;;;;;;;;;;;;:::i;15997:127::-;;;;;;;;;;;;;:::i;7182:47::-;;;;;;;;;;;;;;;;13124:169;;;;;;;;;;;;;:::i;3896:87::-;;;;;;;;;;-1:-1:-1;3942:7:0;3969:6;3896:87;;-1:-1:-1;;;;;3969:6:0;;;2445:51:1;;2433:2;2418:18;3896:87:0;2299:203:1;7236:49:0;;;;;;;;;;;;;;;;8360:87;;;;;;;;;;-1:-1:-1;8432:7:0;;;;;;;;;;;;-1:-1:-1;;;8432:7:0;;;;8360:87;;8776:192;;;;;;;;;;-1:-1:-1;8776:192:0;;;;;:::i;:::-;;:::i;15800:189::-;;;;;;;;;;;;;:::i;7292:58::-;;;;;;;;;;;;;;;;8976:168;;;;;;;;;;-1:-1:-1;8976:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;9109:18:0;;;9082:7;9109:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8976:168;4307:229;;;;;;;;;;-1:-1:-1;4307:229:0;;;;;:::i;:::-;;:::i;9152:186::-;9252:4;9269:39;3452:10;9292:7;9301:6;9269:8;:39::i;:::-;-1:-1:-1;9326:4:0;9152:186;;;;;:::o;12349:767::-;3942:7;3969:6;-1:-1:-1;;;;;3969:6:0;3452:10;4117:23;4109:68;;;;-1:-1:-1;;;4109:68:0;;;;;;;:::i;:::-;;;;;;;;;12408:15:::1;:104:::0;;-1:-1:-1;;;;;;12408:104:0::1;12459:42;12408:104:::0;;::::1;::::0;;;12523:58:::1;::::0;12540:4:::1;::::0;7045:15:::1;6986:1;7045:2;:15;:::i;:::-;7029:31;::::0;:13:::1;:31;:::i;:::-;12523:8;:58::i;:::-;12626:15;;;;;;;;;-1:-1:-1::0;;;;;12626:15:0::1;-1:-1:-1::0;;;;;12626:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12608:55:0::1;;12686:4;12706:15;;;;;;;;;-1:-1:-1::0;;;;;12706:15:0::1;-1:-1:-1::0;;;;;12706:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12608:131;::::0;-1:-1:-1;;;;;;12608:131:0::1;::::0;;;;;;-1:-1:-1;;;;;5429:15:1;;;12608:131:0::1;::::0;::::1;5411:34:1::0;5481:15;;5461:18;;;5454:43;5346:18;;12608:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12592:13;:147:::0;;-1:-1:-1;;;;;12592:147:0;;::::1;-1:-1:-1::0;;;;;;12592:147:0;;::::1;;::::0;;12750:15:::1;::::0;::::1;:31;12789:21;12834:4;12854:24;12834:4:::0;-1:-1:-1;;;;;8742:18:0;8715:7;8742:18;;;:9;:18;;;;;;;8649:119;12854:24:::1;12893:1;12909::::0;12925:7:::1;3942::::0;3969:6;-1:-1:-1;;;;;3969:6:0;;3896:87;12925:7:::1;12750:223;::::0;::::1;::::0;;;-1:-1:-1;;;;;;12750:223:0;;;-1:-1:-1;;;;;5867:15:1;;;12750:223:0::1;::::0;::::1;5849:34:1::0;5899:18;;;5892:34;;;;5942:18;;;5935:34;;;;5985:18;;;5978:34;6049:15;;;6028:19;;;6021:44;12947:15:0::1;6081:19:1::0;;;6074:35;5783:19;;12750:223:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12991:13:0::1;::::0;13022:15:::1;::::0;12984:71:::1;::::0;-1:-1:-1;;;12984:71:0;;-1:-1:-1;;;;;13022:15:0;;::::1;12984:71;::::0;::::1;6605:51:1::0;-1:-1:-1;;6672:18:1;;;6665:34;12991:13:0;::::1;::::0;-1:-1:-1;12984:29:0::1;::::0;6578:18:1;;12984:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13087:13:0::1;::::0;-1:-1:-1;;;;;13087:13:0::1;13066:35;::::0;;;:20:::1;:35;::::0;;;;:42;;-1:-1:-1;;13066:42:0::1;13104:4;13066:42;::::0;;12349:767::o;8546:95::-;8599:7;7045:15;6986:1;7045:2;:15;:::i;:::-;7029:31;;:13;:31;:::i;:::-;8619:14;;8546:95;:::o;9346:446::-;9478:4;9495:36;9505:6;9513:9;9524:6;9495:9;:36::i;:::-;-1:-1:-1;9542:220:0;9565:6;3452:10;9613:138;9669:6;9613:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9613:19:0;;;;;;:11;:19;;;;;;;;3452:10;9613:33;;;;;;;;;;:37;:138::i;9542:220::-;-1:-1:-1;9780:4:0;9346:446;;;;;;:::o;4205:94::-;3942:7;3969:6;-1:-1:-1;;;;;3969:6:0;3452:10;4117:23;4109:68;;;;-1:-1:-1;;;4109:68:0;;;;;;;:::i;:::-;4270:21:::1;4288:1;4270:9;:21::i;:::-;4205:94::o:0;15997:127::-;3942:7;3969:6;-1:-1:-1;;;;;3969:6:0;3452:10;4117:23;4109:68;;;;-1:-1:-1;;;4109:68:0;;;;;;;:::i;:::-;-1:-1:-1;;16051:12:0::1;:26:::0;;;16088:14:::1;:28:::0;15997:127::o;13124:169::-;3942:7;3969:6;-1:-1:-1;;;;;3969:6:0;3452:10;4117:23;4109:68;;;;-1:-1:-1;;;4109:68:0;;;;;;;:::i;:::-;13188:11:::1;::::0;-1:-1:-1;;;13188:11:0;::::1;;;13187:12;13179:48;;;::::0;-1:-1:-1;;;13179:48:0;;7194:2:1;13179:48:0::1;::::0;::::1;7176:21:1::0;7233:2;7213:18;;;7206:30;7272:25;7252:18;;;7245:53;7315:18;;13179:48:0::1;6992:347:1::0;13179:48:0::1;13238:11;:18:::0;;-1:-1:-1;;;;13267:18:0;-1:-1:-1;;;13267:18:0;;;13124:169::o;8776:192::-;8879:4;8896:42;3452:10;8920:9;8931:6;8896:9;:42::i;15800:189::-;3942:7;3969:6;-1:-1:-1;;;;;3969:6:0;3452:10;4117:23;4109:68;;;;-1:-1:-1;;;4109:68:0;;;;;;;:::i;:::-;15891:1:::1;15867:21;:25;15859:60;;;::::0;-1:-1:-1;;;15859:60:0;;7546:2:1;15859:60:0::1;::::0;::::1;7528:21:1::0;7585:2;7565:18;;;7558:30;-1:-1:-1;;;7604:18:1;;;7597:52;7666:18;;15859:60:0::1;7344:346:1::0;15859:60:0::1;15930:51;::::0;15938:10:::1;::::0;15959:21:::1;15930:51:::0;::::1;;;::::0;::::1;::::0;;;15959:21;15938:10;15930:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15800:189::o:0;4307:229::-;3942:7;3969:6;-1:-1:-1;;;;;3969:6:0;3452:10;4117:23;4109:68;;;;-1:-1:-1;;;4109:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4410:22:0;::::1;4388:110;;;::::0;-1:-1:-1;;;4388:110:0;;7897:2:1;4388:110:0::1;::::0;::::1;7879:21:1::0;7936:2;7916:18;;;7909:30;7975:34;7955:18;;;7948:62;-1:-1:-1;;;8026:18:1;;;8019:36;8072:19;;4388:110:0::1;7695:402:1::0;4388:110:0::1;4509:19;4519:8;4509:9;:19::i;9800:335::-:0;-1:-1:-1;;;;;9893:19:0;;9885:68;;;;-1:-1:-1;;;9885:68:0;;8304:2:1;9885:68:0;;;8286:21:1;8343:2;8323:18;;;8316:30;8382:34;8362:18;;;8355:62;-1:-1:-1;;;8433:18:1;;;8426:34;8477:19;;9885:68:0;8102:400:1;9885:68:0;-1:-1:-1;;;;;9972:21:0;;9964:68;;;;-1:-1:-1;;;9964:68:0;;8709:2:1;9964:68:0;;;8691:21:1;8748:2;8728:18;;;8721:30;8787:34;8767:18;;;8760:62;-1:-1:-1;;;8838:18:1;;;8831:32;8880:19;;9964:68:0;8507:398:1;9964:68:0;-1:-1:-1;;;;;10043:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10095:32;;1361:25:1;;;10095:32:0;;1334:18:1;10095:32:0;;;;;;;9800:335;;;:::o;10143:2198::-;10255:4;-1:-1:-1;;;;;10280:18:0;;10272:68;;;;-1:-1:-1;;;10272:68:0;;9112:2:1;10272:68:0;;;9094:21:1;9151:2;9131:18;;;9124:30;9190:34;9170:18;;;9163:62;-1:-1:-1;;;9241:18:1;;;9234:35;9286:19;;10272:68:0;8910:401:1;10272:68:0;-1:-1:-1;;;;;10359:16:0;;10351:64;;;;-1:-1:-1;;;10351:64:0;;9518:2:1;10351:64:0;;;9500:21:1;9557:2;9537:18;;;9530:30;9596:34;9576:18;;;9569:62;-1:-1:-1;;;9647:18:1;;;9640:33;9690:19;;10351:64:0;9316:399:1;10351:64:0;10443:1;10434:6;:10;10426:64;;;;-1:-1:-1;;;10426:64:0;;9922:2:1;10426:64:0;;;9904:21:1;9961:2;9941:18;;;9934:30;10000:34;9980:18;;;9973:62;-1:-1:-1;;;10051:18:1;;;10044:39;10100:19;;10426:64:0;9720:405:1;10426:64:0;10525:11;;-1:-1:-1;;;10525:11:0;;;;;:39;;-1:-1:-1;;;;;;10540:24:0;;;;;;:18;:24;;;;;;;;10525:39;:65;;;-1:-1:-1;;;;;;10568:22:0;;;;;;:18;:22;;;;;;;;10525:65;10503:126;;;;-1:-1:-1;;;10503:126:0;;10332:2:1;10503:126:0;;;10314:21:1;10371:2;10351:18;;;10344:30;-1:-1:-1;;;10390:18:1;;;10383:41;10441:18;;10503:126:0;10130:335:1;10503:126:0;10647:11;;-1:-1:-1;;;10647:11:0;;;;10646:12;;:22;;-1:-1:-1;10662:6:0;;-1:-1:-1;;;10662:6:0;;;;10646:22;10642:94;;;10692:32;10707:4;10713:2;10717:6;10692:14;:32::i;:::-;10685:39;;;;10642:94;10774:13;;-1:-1:-1;;;;;10766:21:0;;;10774:13;;10766:21;:68;;;;-1:-1:-1;10818:15:0;;-1:-1:-1;;;;;10804:30:0;;;10818:15;;10804:30;;10766:68;:108;;;;-1:-1:-1;;;;;;10852:22:0;;;;;;:18;:22;;;;;;;;10851:23;10766:108;10748:396;;;10919:12;;10909:6;:22;;10901:60;;;;-1:-1:-1;;;10901:60:0;;10672:2:1;10901:60:0;;;10654:21:1;10711:2;10691:18;;;10684:30;10750:27;10730:18;;;10723:55;10795:18;;10901:60:0;10470:349:1;10901:60:0;11028:14;;11018:6;11002:13;11012:2;-1:-1:-1;;;;;8742:18:0;8715:7;8742:18;;;:9;:18;;;;;;;8649:119;11002:13;:22;;;;:::i;:::-;:40;;10976:128;;;;-1:-1:-1;;;10976:128:0;;11156:2:1;10976:128:0;;;11138:21:1;11195:2;11175:18;;;11168:30;11234:28;11214:18;;;11207:56;11280:18;;10976:128:0;10954:350:1;10976:128:0;11121:9;:11;;;:9;:11;;;:::i;:::-;;;;;;10748:396;11166:13;;-1:-1:-1;;;;;11160:19:0;;;11166:13;;11160:19;;;;:46;;-1:-1:-1;;;;;;11184:22:0;;;;;;:18;:22;;;;;;;;11183:23;11160:46;11156:207;;;11275:14;;11265:6;11249:13;11259:2;-1:-1:-1;;;;;8742:18:0;8715:7;8742:18;;;:9;:18;;;;;;;8649:119;11249:13;:22;;;;:::i;:::-;:40;;11223:128;;;;-1:-1:-1;;;11223:128:0;;11156:2:1;11223:128:0;;;11138:21:1;11195:2;11175:18;;;11168:30;11234:28;11214:18;;;11207:56;11280:18;;11223:128:0;10954:350:1;11223:128:0;11424:4;11375:28;8742:18;;;:9;:18;;;;;;11467:17;;11592:6;;11457:27;;;;;-1:-1:-1;;11517:45:0;;-1:-1:-1;;;11592:6:0;;;;11591:7;:43;;;;-1:-1:-1;11621:13:0;;-1:-1:-1;;;;;11615:19:0;;;11621:13;;11615:19;11591:43;:68;;;;;11651:8;11591:68;:96;;;;-1:-1:-1;11676:11:0;;-1:-1:-1;;;11676:11:0;;;;11591:96;:127;;;;;11704:14;11591:127;:174;;;;;11747:18;;11735:9;;:30;11591:174;11573:509;;;11792:101;11827:51;11831:6;11839:38;11843:20;11865:11;;11839:3;:38::i;:::-;11827:3;:51::i;:::-;11792:16;:101::i;:::-;11937:21;11977:22;;11973:98;;12020:35;12033:21;12020:12;:35::i;:::-;11777:305;11573:509;12094:18;12115:34;12132:4;12138:2;12142:6;12115:16;:34::i;:::-;-1:-1:-1;;;;;12180:15:0;;;;;;:9;:15;;;;;;12094:55;;-1:-1:-1;12180:27:0;;12200:6;12180:19;:27::i;:::-;-1:-1:-1;;;;;12162:15:0;;;;;;;:9;:15;;;;;;:45;;;;12234:13;;;;;;;:29;;12252:10;12234:17;:29::i;:::-;-1:-1:-1;;;;;12218:13:0;;;;;;;:9;:13;;;;;;;:45;;;;12279:30;;;;;;;;;;12298:10;1361:25:1;;1349:2;1334:18;;1215:177;12279:30:0;;;;;;;;-1:-1:-1;12329:4:0;;10143:2198;-1:-1:-1;;;;;;;10143:2198:0:o;2018:224::-;2138:7;2174:12;2166:6;;;;2158:29;;;;-1:-1:-1;;;2158:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2198:9:0;2210:5;2214:1;2210;:5;:::i;:::-;2198:17;2018:224;-1:-1:-1;;;;;2018:224:0:o;4544:173::-;4600:16;4619:6;;-1:-1:-1;;;;;4636:17:0;;;-1:-1:-1;;;;;;4636:17:0;;;;;;4669:40;;4619:6;;;;;;;4669:40;;4600:16;4669:40;4589:128;4544:173;:::o;13301:401::-;13465:90;;;;;;;;;;;-1:-1:-1;;;13465:90:0;;;;;;;;-1:-1:-1;;;;;13465:17:0;;13428:4;13465:17;;;:9;:17;;;;;;;:90;;13501:6;;13465:21;:90::i;:::-;-1:-1:-1;;;;;13445:17:0;;;;;;;:9;:17;;;;;;:110;;;;13589:20;;;;;;;:32;;13614:6;13589:24;:32::i;:::-;-1:-1:-1;;;;;13566:20:0;;;;;;;:9;:20;;;;;;;:55;;;;13637:35;;;;;;;;;;13665:6;1361:25:1;;1349:2;1334:18;;1215:177;13637:35:0;;;;;;;;-1:-1:-1;13690:4:0;13301:401;;;;;:::o;14903:107::-;14960:7;14992:1;14988;:5;14987:15;;15001:1;14987:15;;;-1:-1:-1;14997:1:0;14980:22;-1:-1:-1;14903:107:0:o;15018:483::-;7637:6;:13;;-1:-1:-1;;;;7637:13:0;-1:-1:-1;;;7637:13:0;;;15120:16:::1;::::0;;15134:1:::1;15120:16:::0;;;;;::::1;::::0;;-1:-1:-1;;15120:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15120:16:0::1;15096:40;;15165:4;15147;15152:1;15147:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15147:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;15191:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;15191:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;15147:7;;15191:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15181:4;15186:1;15181:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15181:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;15256:15:::1;::::0;15224:62:::1;::::0;15241:4:::1;::::0;15256:15:::1;15274:11:::0;15224:8:::1;:62::i;:::-;15297:15;::::0;:196:::1;::::0;-1:-1:-1;;;15297:196:0;;-1:-1:-1;;;;;15297:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;15378:11;;15297:15:::1;::::0;15420:4;;15447::::1;::::0;15467:15:::1;::::0;15297:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;7673:6:0;:14;;-1:-1:-1;;;;7673:14:0;;;-1:-1:-1;;;;15018:483:0:o;15509:283::-;15566:22;15625:3;15601:20;;15592:6;:29;;;;:::i;:::-;15591:37;;;;:::i;:::-;15566:62;-1:-1:-1;15639:23:0;15665;15566:62;15665:6;:23;:::i;:::-;15701:10;;:35;;15639:49;;-1:-1:-1;;;;;;15701:10:0;;:35;;;;;15721:14;;15701:10;:35;:10;:35;15721:14;15701:10;:35;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15747:11:0;;:37;;-1:-1:-1;;;;;15747:11:0;;;;:37;;;;;15768:15;;15747:11;:37;:11;:37;15768:15;15747:11;:37;;;;;;;;;;;;;;;;;;;;;15555:237;;15509:283;:::o;13970:925::-;-1:-1:-1;;;;;14190:30:0;;14099:7;14190:30;;;:22;:30;;;;;;14099:7;;14168:4;;14190:30;;14186:341;;;-1:-1:-1;14251:6:0;14186:341;;;-1:-1:-1;;;;;14279:31:0;;;;;;:20;:31;;;;;;;;14275:252;;;14345:16;;14333:9;;:28;:96;;14414:15;;14333:96;;;14381:13;;14333:96;14327:102;;14275:252;;;14479:15;;14467:9;;:27;14466:61;;14513:14;;14466:61;;;14498:12;;14466:61;14460:67;;14275:252;14541:18;14561:12;14577:22;14587:3;14592:6;14577:9;:22::i;:::-;-1:-1:-1;;;;;14632:30:0;;14612:17;14632:30;;;:22;:30;;;;;;14540:59;;-1:-1:-1;14540:59:0;;-1:-1:-1;14612:17:0;14632:30;;:50;;14678:4;14632:50;;;14665:10;14632:50;14612:70;-1:-1:-1;14699:13:0;;14695:163;;-1:-1:-1;;;;;14754:22:0;;;;;;:9;:22;;;;;;:37;;14781:9;14754:26;:37::i;:::-;-1:-1:-1;;;;;14729:22:0;;;;;;;:9;:22;;;;;;;:62;;;;14811:35;;;;;;;;;;14841:4;1361:25:1;;1349:2;1334:18;;1215:177;14811:35:0;;;;;;;;14695:163;-1:-1:-1;14877:10:0;;13970:925;-1:-1:-1;;;;;;;13970:925:0:o;1874:136::-;1932:7;1959:43;1963:1;1966;1959:43;;;;;;;;;;;;;;;;;:3;:43::i;1687:179::-;1745:7;;1777:5;1781:1;1777;:5;:::i;:::-;1765:17;;1806:1;1801;:6;;1793:46;;;;-1:-1:-1;;;1793:46:0;;13255:2:1;1793:46:0;;;13237:21:1;13294:2;13274:18;;;13267:30;13333:29;13313:18;;;13306:57;13380:18;;1793:46:0;13053:351:1;13710:252:0;13806:7;;;13867:3;13851:12;13860:3;13851:6;:12;:::i;:::-;13850:20;;;;:::i;:::-;13835:35;-1:-1:-1;13881:18:0;13902:16;:6;13835:35;13902:10;:16::i;:::-;13881:37;13949:4;;-1:-1:-1;13710:252:0;;-1:-1:-1;;;;13710:252:0: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;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:356::-;3102:2;3084:21;;;3121:18;;;3114:30;3180:34;3175:2;3160:18;;3153:62;3247:2;3232:18;;2900:356::o;3261:127::-;3322:10;3317:3;3313:20;3310:1;3303:31;3353:4;3350:1;3343:15;3377:4;3374:1;3367:15;3393:416;3482:1;3519:5;3482:1;3533:270;3554:7;3544:8;3541:21;3533:270;;;3613:4;3609:1;3605:6;3601:17;3595:4;3592:27;3589:53;;;3622:18;;:::i;:::-;3672:7;3662:8;3658:22;3655:55;;;3692:16;;;;3655:55;3771:22;;;;3731:15;;;;3533:270;;;3537:3;3393:416;;;;;:::o;3814:806::-;3863:5;3893:8;3883:80;;-1:-1:-1;3934:1:1;3948:5;;3883:80;3982:4;3972:76;;-1:-1:-1;4019:1:1;4033:5;;3972:76;4064:4;4082:1;4077:59;;;;4150:1;4145:130;;;;4057:218;;4077:59;4107:1;4098:10;;4121:5;;;4145:130;4182:3;4172:8;4169:17;4166:43;;;4189:18;;:::i;:::-;-1:-1:-1;;4245:1:1;4231:16;;4260:5;;4057:218;;4359:2;4349:8;4346:16;4340:3;4334:4;4331:13;4327:36;4321:2;4311:8;4308:16;4303:2;4297:4;4294:12;4290:35;4287:77;4284:159;;;-1:-1:-1;4396:19:1;;;4428:5;;4284:159;4475:34;4500:8;4494:4;4475:34;:::i;:::-;4545:6;4541:1;4537:6;4533:19;4524:7;4521:32;4518:58;;;4556:18;;:::i;:::-;4594:20;;3814:806;-1:-1:-1;;;3814:806:1:o;4625:140::-;4683:5;4712:47;4753:4;4743:8;4739:19;4733:4;4712:47;:::i;4770:168::-;4843:9;;;4874;;4891:15;;;4885:22;;4871:37;4861:71;;4912:18;;:::i;4943:251::-;5013:6;5066:2;5054:9;5045:7;5041:23;5037:32;5034:52;;;5082:1;5079;5072:12;5034:52;5114:9;5108:16;5133:31;5158:5;5133:31;:::i;6120:306::-;6208:6;6216;6224;6277:2;6265:9;6256:7;6252:23;6248:32;6245:52;;;6293:1;6290;6283:12;6245:52;6322:9;6316:16;6306:26;;6372:2;6361:9;6357:18;6351:25;6341:35;;6416:2;6405:9;6401:18;6395:25;6385:35;;6120:306;;;;;:::o;6710:277::-;6777:6;6830:2;6818:9;6809:7;6805:23;6801:32;6798:52;;;6846:1;6843;6836:12;6798:52;6878:9;6872:16;6931:5;6924:13;6917:21;6910:5;6907:32;6897:60;;6953:1;6950;6943:12;10824:125;10889:9;;;10910:10;;;10907:36;;;10923:18;;:::i;11309:135::-;11348:3;11369:17;;;11366:43;;11389:18;;:::i;:::-;-1:-1:-1;11436:1:1;11425:13;;11309:135::o;11449:128::-;11516:9;;;11537:11;;;11534:37;;;11551:18;;:::i;11714:127::-;11775:10;11770:3;11766:20;11763:1;11756:31;11806:4;11803:1;11796:15;11830:4;11827:1;11820:15;11846:980;12108:4;12156:3;12145:9;12141:19;12187:6;12176:9;12169:25;12213:2;12251:6;12246:2;12235:9;12231:18;12224:34;12294:3;12289:2;12278:9;12274:18;12267:31;12318:6;12353;12347:13;12384:6;12376;12369:22;12422:3;12411:9;12407:19;12400:26;;12461:2;12453:6;12449:15;12435:29;;12482:1;12492:195;12506:6;12503:1;12500:13;12492:195;;;12571:13;;-1:-1:-1;;;;;12567:39:1;12555:52;;12662:15;;;;12627:12;;;;12603:1;12521:9;12492:195;;;-1:-1:-1;;;;;;;12743:32:1;;;;12738:2;12723:18;;12716:60;-1:-1:-1;;;12807:3:1;12792:19;12785:35;12704:3;11846:980;-1:-1:-1;;;11846:980:1:o;12831:217::-;12871:1;12897;12887:132;;12941:10;12936:3;12932:20;12929:1;12922:31;12976:4;12973:1;12966:15;13004:4;13001:1;12994:15;12887:132;-1:-1:-1;13033:9:1;;12831:217::o

Swarm Source

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